sparkyvxcx's Blog

Arch Linux Installation Manual

June 24, 2019

1. 基本系统

验证启动模式

如果以在 UEFI 主板上启用 UEFI 模式,Archiso 将会使用 systemd-boot启动 Arch Linux。可以列出 efivars 目录以验证启动模式:

ls /sys/firmware/efi/efivars

更新系统时间

使用 timedatectl(1) 确保系统时间是准确的:

timedatectl set-ntp true

连接到因特网

通过 ip link 查看无线设备名,通常是类似 wlp2s1的设备。

  1. 启用设备:
ip link set wlp56s0f3u4 up
  1. 连接无线网络:
wifi-menu -o
  1. 用 ping 检查网络连接:
ping archlinux.org

建立硬盘分区

磁盘若被系统识别到,就会被分配为一个 块设备,如 /dev/sda 或者 /dev/nvme0n1。可以使用 lsblk -l或者 fdisk -l查看:

lsblk -l

分区示例:

NAME MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0  7:0    0 500.8G  1 loop /run/archiso/sfs/airootfs
sda    8:0    0 223.6G  0 disk
sda1   8:1    0   512M  0 part /mnt/boot/efi
sda2   8:2    0     4G  0 part [SWAP]
sda3   8:3    0    64G  0 part /mnt
sda4   8:4    0    64G  0 part /mnt/opt
sdb5   8:5    0  91.9G  0 part /mnt/home
sdb    8:16   1  14.7G  0 disk
sdc1   8:17   1 119.2G  0 part /run/archiso/bootmnt

开始分区(GPT 硬盘使用 gdisk 分区):

gdisk /dev/sda

第一个分区+512M,第二个分区+4G,第三个分区+64G,第四个分区+64G,第五个分区默认剩下的空间。

格式化分区

格式化第一块分区(挂载点/mnt/boot/EFI):

mkfs.fat -F32 /dev/sda1

初始化交换分区:

mkswap /dev/sda2
swapon /dev/sda2

格式化第三块分区(挂载点/mnt):

mkfs.ext4 /dev/sda3

格式化第四块分区(挂载点/mnt/opt):

mkfs.ext4 /dev/sda4

格式化第五块分区(挂载点/mnt/home):

mkfs.ext4 /dev/sda5

挂载分区

先将根分区挂载到/mnt

mount /dev/sda3 /mnt

创建其他剩余的挂载点:

mkdir -p /mnt/boot/EFI
mkdir /mnt/opt
mkdir /mnt/home

再将 boot 分区挂载到/mnt/boot/EFI

mount /dev/sda1 /mnt/boot/EFI

再将 opt 分区挂载到/mnt/opt

mount /dev/sda4 /mnt/opt

最后将 home 分区挂载到/mnt/home

mount /dev/sda5 /mnt/home

选择镜像:

文件 /etc/pacman.d/mirrorlist 定义了软件包会从哪个 镜像源 下载。在 LiveCD 启动的系统上,所有的镜像都被启用,并且通过他们的同步情况和速度进行了排序。在列表中越前的镜像在下载软件包时有越高的优先权。相应的修改文件 /etc/pacman.d/mirrorlist,并将地理位置最近的镜像源挪到文件的头部,这个文件接下来还会被 pacstrap 拷贝到新系统里,所以请确保设置正确。

vim /etc/pacman.d/mirrorlist

i进入编辑模式,添加:

Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch

ESC 退出编辑模式,按:x保存并退出。

安装基本系统

pacstrap /mnt base base-devel vim git neofetch dialog wpa-supplicant

Fstab

用以下命令生成 fstab 文件 (用 -U-L 选项设置 UUID 或卷标):

genfstab -U /mnt >> /mnt/etc/fstab
vim /mnt/etc/fstab

按i进入编辑模式,把 EFI 分区移动到第一位,SSD 添加参数noatime,discard

修改前:

# Static information about the filesystems.
# See fstab(5) for details.

# <file system>             <mount point>  <type>  <options>  <dump>  <pass>
# /dev/sda3
UUID=81cf250c               /              ext4    rw,relatime 0 1
# /dev/sda1
UUID=52C6-2A8               /boot/EFI      vfat    rw,relatime 0 2
# /dev/sda4
UUID=0222c134               /opt           ext4    rw,relatime 0 2
# /dev/sda5
UUID=8b57951e               /home          ext4    rw,relatime 0 2
# /dev/sda2
UUID=06f8ec54               none           swap    defaults    0 0

修改后:

# Static information about the filesystems.
# See fstab(5) for details.

# <file system>             <mount point>  <type>  <options>  <dump>  <pass>
# /dev/sda1
UUID=52C6-2A8               /boot/EFI      vfat    rw,relatime,noatime,discard 0 2
# /dev/sda3
UUID=81cf250c               /              ext4    rw,relatime,noatime,discard 0 1
# /dev/sda4
UUID=0222c134               /opt           ext4    rw,relatime,noatime,discard 0 2
# /dev/sda5
UUID=8b57951e               /home          ext4    rw,relatime,noatime,discard 0 2
# /dev/sda2
UUID=06f8ec54               none           swap    defaults,noatime,discard    0 0

ESC退出编辑模式,按:x保存并退出。

Chroot

Change root 到新安装的系统:

arch-chroot /mnt

时区

设置 时区

ln -sf /usr/share/zoneinfo/Region/City /etc/localtime

例如:

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

运行 hwclock(8) 以生成 /etc/adjtime

hwclock --systohc

这个命令假定硬件时间已经被设置为 UTC 时间。详细信息请查看 System time#Time standard

本地化

本地化的程序与库若要本地化文本,都依赖 Locale,后者明确规定地域、货币、时区日期的格式、字符排列方式和其他本地化标准等等。在下面两个文件设置:locale.genlocale.conf

/etc/locale.gen 是一个仅包含注释文档的文本文件。指定您需要的本地化类型,只需移除对应行前面的注释符号()即可,建议选择带 UTF-8 的项:

vim /etc/locale.gen
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_TW.UTF-8 UTF-8

/搜索en_US.UTF-8 UTF-8,按i编辑,删除前面的注释符号#

/搜索en_CN.UTF-8 UTF-8,按i编辑,删除前面的注释符号#

/搜索en_TW.UTF-8 UTF-8,按i编辑,删除前面的注释符号#

ESC退出编辑模式,按:x保存并退出。

接着执行:

locale-gen
vim /etc/locale.conf

i编辑,写入LANG=en_US.UTF-8,按ESC退出编辑模式,按:x保存并退出。

网络

创建 hostname 文件:

vim /etc/hostname

i编辑,写入主机名c3po,按ESC退出编辑模式,按:x保存并退出。

添加对应的信息到 hosts(5):

/etc/hosts
127.0.0.1	localhost
::1			localhost
127.0.1.1	c3po.localdomain	c3po

Root 密码

设置 Root 密码

passwd

安装引导程序

pacman -S dosfstools grub efibootmgr amd-ucode
grub-install --target=x86_64-efi --efi-directory=/boot/EFI --bootloader-id=grub
grub-mkconfig -o /boot/grub/grub.cfg

重启系统

输入 exit 或按 Ctrl + D 退出 chroot 环境。

umount -R /mnt 手动卸载被挂载的分区,有助于发现可能任何「繁忙」的分区。

最后,通过执行 reboot 重启系统,systemd 将自动卸载仍然挂载的任何分区。不要忘记移除安装介质,然后使用 root 帐户登录到新系统。

2. 桌面环境(以 Deepin Desktop Environment 为例)

连接到因特网

通过 ip link 查看无线设备名,通常是类似 wlp2s1的设备。

  1. 启用设备:
ip link set wlp56s0f3u4 up
  1. 连接无线网络:
wifi-menu -o
  1. 用 ping 检查网络连接:
ping archlinux.org

添加登录用户

以典型的桌面系统为例,要添加一个名为[用户名]的用户,并使用bash作为登录 shell:

useradd -m -G wheel -s /bin/bash [用户名]

设置用户密码:

passwd [用户名]
visudo

往下翻,找到这一行:

## Uncomment to allow members of group wheel to execute any command
# %wheel ALL=(ALL) ALL

# %wheel ALL=(ALL) ALL前的注释符号#删掉:

## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL) ALL
CtrlS 保存修改,CtrlX 退出。

安装显示服务

pacman -S xorg xorg-server networkmanager

安装 Deepin 桌面环境

pacman -S deepin deepin-extra

配置 lightdm 登录管理器

vim /etc/lightdm/lightdm.conf

找到这一行,按编辑:

#greeter-session=example-gtk-gnome

删掉注释符号#,并改为:

greeter-session=lightdm-deepin-greeter

ESC 退出编辑模式,按:x保存并退出。

启用登录管理器:

systemctl enable lightdm.service

启用网络管理器,重启系统:

systemctl enable NetworkManager.service
reboot

Λrκvxcx

Written by Λrκvxcx, a noob. Follow me on Twitter