为什么想写 Arch 如何安装(为什么要重复造轮子)
Arch Linux 如何优秀不用笔者赘述,可以参考 操作系统推荐:Arch Linux,但 Arch 的默认安装方式为纯命令行手动安装,也因此劝退了大量初学者。作为一款优秀的 Linux 发行版,Arch 拥有非常活跃的社区,也有团队基于 Arch 二次开发得到对新手更友好的拥有图形化安装界面的发行版 Manjaro,这是借助 Manjaro 安装 Arch 的方法 使用 manjaro 安装 archlinux。对了解 Linux 的人来说,参照事无巨细的 Arch Wiki 一步一步敲命令可以很顺利的把 Arch 装起来,但笔者发现 Arch Wiki 的介绍可能过于详尽,部分内容需要引用其他文档,同时提供了多种选项,整体连续性欠佳,容易遗漏步骤,上手难度依然较高,故笔者决定基于 Arch Wiki 进行修改与精简,同时规避了一部分笔者安装系统时遇到的问题,将 Arch 的安装过程用相对连贯的方式记录下来,并从 Arch Wiki 提供的分支中选择最适合新手的选项,从而方便新手上手 Arch Linux。
这是笔者第一次写教程类文章,同时笔者学习 Linux 的时间也不长,本文也是从适合初学者的角度出发。受限于水平,疏漏与错误恐在所难免,敬请门友不吝赐教。
Linux 小知识
- 一切皆文件,安装过程需要对一些文件进行修改,对新手友好的文件编辑器
nano
已内置在 live 中 - 如果执行一个命令后没有任何反馈,这是好事,这意味着命令正确执行
安装环境
Hyper-V 第 2 代虚拟机,4C4G,关闭安全启动(非常重要),正常网络连接。
实机安装过程与虚拟机基本相同,建议从虚拟机开始练手。
警告: 本方法仅适用于单系统。
安装前的准备
启动到 live 环境
加载镜像文件,并将光盘启动设置为第一启动项(若创建虚拟机时就添加镜像文件该步骤自动完成),启动虚拟机,选择 Arch Linux install medium 并按 Enter 进入 live 环境。
当出现如上界面时说明成功启动到 live 环境。
对于中国大陆用户而言控制台键盘布局和字体无需修改,故跳过。
验证引导模式
此处检查 UEFI 位数,输入以下指令(注意,控制台自带#号,只需输入其后内容)。
# cat /sys/firmware/efi/fw_platform_size
一般而言命令结果为 64
,即系统是以 UEFI 模式引导且使用 64 位 x64 UEFI。
连接到互联网
一般能正常连接网络,建议用 ping 检查网络连接:
# ping archlinux.org
若能正常收发包并返回时延则说明网络正常,按 Ctrl+C
结束任务
更新系统时间
使用 timedatectl 确保系统时间是准确的:
# timedatectl
创建硬盘分区
系统如果识别到计算机的内置硬盘、U 盘或者移动硬盘等类型磁盘,就会将其分配为一个块设备,使用 fdisk 查看。
# fdisk -l(此处为小写字母 l)
结果中以 rom
、loop
或者 airoot
结尾的设备可以被忽略。结果中以 rpbm
、boot0
或者 boot1
结尾的 mmcblk*
设备也可以被忽略。
此处以下分区是必须的:
- 一个根分区,挂载在根目录
/
下 - 一个 EFI 系统分区用于引导系统启动,约 512MB
以下分区可选:
- SWAP 分区,交换空间,相当于虚拟内存,不少于 512MB,根据实际情况确定
使用 cfdisk 修改分区表
# cfdisk
选择要分区的磁盘(sda),随后进入以下界面:
上下方向键选择分区,左右方向键选择功能。
选择 New
并回车,输入 512M
并回车,出现第一个分区,路径为 /dev/sda1
,容量为 512MB。选择 Type
并回车,选择EFI System
并回车,此时分区类型修改为 EFI 系统分区。将光标移动到Free space
,选择 New
并回车,将剩余容量全部分给根分区,分区类型默认为 Linux 文件系统,此时界面为:
选择 Write
并回车,输入 yes
并回车保存分区表,选择 Quit
并回车退出。
此时 /dev/sda1
为EFI 系统分区 ,/dev/sda2
为linux 系统根分区 。
建议再次使用# fdisk -l
检查分区表是否被正常修改。
格式化分区
此处有 sda1 和 sda2 两个分区需要被格式化。
将 sda1 格式化为 fat32:
# mkfs.fat -F 32 /dev/sda1
将 sda2 格式化为 ext4:
# mkfs.ext4 /dev/sda2
挂载分区
此处提供一种典型的挂载方式。
将根分区挂载到 /mnt
:
# mount /dev/sda2 /mnt
将 EFI 分区挂载到 /mnt/boot
:
// 此处添加了 --mkdir 以创建 /mnt/boot 挂载点
# mount --mkdir /dev/sda1 /mnt/boot
开始安装系统
修改镜像站
系统的文件 /etc/pacman.d/mirrorlist
中定义了软件包会从哪个镜像站下载,列表中越靠前的镜像站有越高的优先级。此处笔者选择将清华的镜像站设置为最高优先级。
# nano /etc/pacman.d/mirrorlist
将Server =
https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
添加到列表最前方,按 Ctrl+O
然后回车保存,按 Ctrl+X
退出。
输入以下命令更新:
# pacman -Sy
安装必须的软件包
使用 pacstrap 脚本,安装 base 包 软件包和 Linux 内核以及常规硬件的固件:
# pacstrap -K /mnt base linux linux-firmware
配置系统
生成 fstab 文件
通过以下命令生成 fstab 文件:
# genfstab -U /mnt >> /mnt/etc/fstab
强烈建议在执行完以上命令后,检查一下生成的 /mnt/etc/fstab
文件是否正确:
# nano /mnt/etc/fstab
chroot 到新安装的系统
通过以下命令 chroot 到新安装的系统:
# arch-chroot /mnt
安装 nano 和 networkmanager
为新安装的系统安装 nano 和 networkmanager:
# pacman -S nano networkmanager
之后会用到。
设置时区
通过以下命令设置时区(上海):
# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
然后运行 hwclock 以生成 /etc/adjtime
:
# hwclock --systohc
这个命令假定已设置硬件时间为 UTC 时间。
区域和本地化设置
程序和库如果需要本地化文本,都依赖区域设置,后者明确规定了地域、货币、时区日期的格式、字符排列方式和其他本地化标准。
需要设置这两个文件:locale.gen
与 locale.conf
。
使用 nano
编辑 /etc/locale.gen
,然后取消掉en_US.UTF-8 UTF-8
和zh_CN.UTF-8 UTF-8
前的注释(#)。
接着执行 locale-gen
以生成 locale 信息:
# locale-gen
然后创建 locale.conf
文件,并编辑设定 LANG 变量:
# nano /etc/locale.conf
// 以下为需要输入文件的内容
LANG=en_US.UTF-8
提示:
也可以将系统 locale 设置为 en_GB.UTF-8,具有以下优点:
-
系统的 log 会用英文显示,这样更容易判断和处理问题;
-
进入桌面环境后以 24 小时制显示时间;
-
LibreOffice 等办公软件的纸张尺寸会默认为 A4 而非 Letter(US);
-
可尽量避免不必要且可能造成处理麻烦的英制单位。
如需这样设置,需要在编辑 /etc/locale.gen
时同时取消掉en_GB.UTF-8 UTF-8
前的注释。
警告: 并不推荐在此时设置任何中文 locale,这可能会导致 tty 上中文显示为方块。
设置 root 密码
使用以下命令设置 root 密码:
# passwd
创建密码并回车,重复密码并回车。
安装引导程序
GRUB(GRand Unified Bootloader,大一统启动加载器),是一个引导加载程序。
注意: 在本小节内容中,
esp
表示 EFI 系统分区(ESP)的挂载点,即上文提到的 /mnt/boot
。此时已经 chroot 进 /mnt
中的系统,故本小节中的 esp
为 /boot
。
首先安装软件包 grub 包 和 efibootmgr 包。其中“GRUB”是启动引导器,“efibootmgr”被 GRUB 脚本用来将启动项写入 NVRAM。
# pacman -S grub efibootmgr
执行下面的命令来将 GRUB EFI 应用 grubx64.efi
安装到 esp/EFI/GRUB/
,并将其模块安装到 /boot/grub/x86_64-efi/
。
# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
安装后,需要生成主配置文件 /boot/grub/grub.cfg
,使用 grub-mkconfig 工具来生成:
# grub-mkconfig -o /boot/grub/grub.cfg
警告: 这是安装的最后一步也是至关重要的一步,请按上述指引正确安装好引导加载程序后再重新启动。否则计算机重新启动后将无法正常进入系统。
重新启动计算机
输入 exit
或按 Ctrl+D
退出 chroot 环境。
最后,通过执行 reboot
重启系统,systemd 将自动卸载仍然挂载的任何分区。这时候不要忘记移除安装介质,然后使用 root 账户登录到新系统。
安装后的工作
使用 root 账户登录到新系统后,发现无法上网,此时需要启动 NetworkManager 并设置其开机自启动。
// 启动 NetworkManager(注意大小写)
# systemctl start NetworkManager
// 设置开机自启动
# systemctl enable NetworkManager
创建非特权账户、图形用户界面的安装、声音管理、触摸板支持等系统管理教程和后期工作
后面有时间再补吧,参见 建议阅读 - Arch Linux 中文维基。
当然耍帅还是要的。