ArchLinux安装教程
目录
安装前的准备
获取安装映像
访问 下载 页面,并根据需要的引导方式,获取 ISO 文件或 netboot 映像以及相应的 GnuPG 签名。
验证签名
建议使用前先验证所下载文件的签名,特别是从 HTTP 镜像源 下载的文件,因为 HTTP 连接一般来说容易遭到拦截而 提供恶意镜像。
在一台已经安装 GnuPG 的系统上,可通过下载 PGP 签名 (在 下载 页面的 Checksums 下方) 到 ISO 文件所在的路径,然后用以下方式 验证签名:
$ gpg --keyserver-options auto-key-retrieve --verify archlinux-*version*-x86_64.iso.sig
另外,在一台已经安装 Arch Linux 的计算机上可通过以下方式验证:
$ pacman-key -v archlinux-*version*-x86_64.iso.sig
注意:
若安装映像是从镜像站点下载,而不是从 archlinux.org 下载的话,否则签名可伪造。
这种情况下,请确保用来解码签名的公钥是被另一个可信的密钥签署。
gpg
命令将会输出公钥的指纹。另一种验证签名的方法是确保公钥的指纹等于其中一位签署了 ISO 文件 Arch Linux 开发者的指纹。
准备安装介质
安装映像可通过 USB 闪存盘、光盘和带 PXE 的网络提供给目标机器:请使用适合自己的映像准备安装介质。
启动到 Live 环境
注意:
Arch Linux 安装镜像不支持安全启动(Secure Boot)。
要引导安装媒介,需要 禁用安全启动。
若需要,可在完成安装后重新配置 安全启动。
-
选择从带有 Arch 安装文件的媒介启动,通常是要在 计算机开机自检 时按下某个按键,一般在启动画面会有提示。具体情况请参考主板说明书。
-
当引导加载程序菜单出现时,选择 Arch Linux install medium 并按
Enter
进入安装环境。提示:
控制台键盘布局
控制台键盘布局默认为 us
(美式键盘映射)。
列出所有可用的键盘布局,可使用:
# ls /usr/share/kbd/keymaps/**/*.map.gz
若想要更改键盘布局,可将相应文件名添加进 loadkeys
(1),但请省略路径和扩展名。
比如,要添加德语键盘布局:
# loadkeys de-latin1
控制台字体 位于 /usr/share/kbd/consolefonts/
目录中,设置方式请参考 setfont(8)。
验证引导模式
要验证引导模式,请用下列命令列出 efivars 目录:
# ls /sys/firmware/efi/efivars
若命令结果显示了目录且没有报告错误,则系统以 UEFI 模式引导。
若目录不存在,则系统可能以 BIOS 模式 (或 CSM 模式) 引导。
若系统未以想要的模式引导启动,请参考主板说明书。
连接到互联网
要在 Live 环境中配置网络连接,请跟随以下步骤:
-
确保系统已经启用了网络接口,用 ip-link(8) 检查:
# ip link
对于无线局域网(Wi-Fi)和无线广域网(WWAN),请确保网卡未被 rfkill 禁用。
-
要连接到网络:
-
有线以太网 —— 连接网线。
-
WiFi —— 使用 iwctl 验证无线网络。
-
iwd
软件包提供了客户端程序iwctl
、守护程序iwd
和 WiFi 监控工具iwmon
。启动/启用iwd.service
以便可使用iwctl
对其进行控制。可使用如下命令启动iwctl
的守护程序iwd
:# systemctl start iwd
亦或使用如下命令启动
iwctl
的守护程序iwd
:# systemctl start iwd.service
要进入交互式提示符(interactive prompt),执行:
$ iwctl
然后交互式提示就会以
[iwd]#
前缀显示出来了。提示:
iwctl
提示符中,可通过Tab
键自动补全命令和设备名称。要退出交互式提示,按下
Ctrl+d
发送 EOF 信号。可在不进入交互式提示符的情况下,将所有命令当作命令行参数使用。
例如:
iwctl device wlp3s0 show
。连接网络 :
首先,若不知道网络设备名称,请列出所有
WiFi
设备:[iwd]# device list
其次,要扫描网络,执行:
[iwd]# station <device> scan
再次,就可列出所有可用的网络:
[iwd]# station <device> get-networks
最后,要连接到一个网络:
[iwd]# station <device> connect <SSID>
若要求输入网络密码,将会提示用户输入。
此外,连接操作可应用成命令行参数的形式:
$ iwctl --passphrase <passphrase> station <device> connect <SSID>
注意:
-
iwd
会自动将网络密码存储在/var/lib/iwd
目录中,以后就可使用其自动连接记住的网络。 -
要连接 SSID 里带空格的网络,连接时请用双引号将网络名称括起来。
-
iwd 仅支持 8 到 63 位 ASCII 编码字符组成的 PSK 密码。若没有满足要求,会出现下列错误信息:
PMK generation failed. Ensure Crypto Engine is properly configured
。
使用 WPS/WSC 连接网络
若网络配置为可通过按下一个按钮就能进行连接 (Wikipedia:Wi-Fi Protected Setup,WPS,WiFi 保护配置),先检查设备是否能兼容以下配置步骤:
[iwd]# wsc list
其次,假设设备出现在了上面的列表中:
[iwd]# wsc <device> push-button
再次按下路由器上的按钮。
若提前按下按钮,但只要少于两分钟前,以上步骤也是可生效的。
若网络要求验证 PIN 码才能连接,请检查
help
命令的输出,了解如何为wsc
命令提供正确的选项。断开网络连接
要断开网络连接:
[iwd]# station <device> disconnect
显示设备和连接信息
要显示 WiFi 设备详细情况,比如 MAC 地址:
[iwd]# device <device> show
要显示包括 WiFi 设备的连接网络在内的连接状态:
[iwd]# station <device> show
管理已知网络
要列出以前连接过的网络:
[iwd]# known-networks list
要忘记已知的网络:
[iwd]# known-networks <SSID> forget
-
-
-
移动宽带调制解调器(移动网卡) - 使用
mmcli
实用程序连接到移动网络。
-
-
配置网络连接:
DHCP
:对于有线以太网、无线局域网(WLAN)和无线广域网(WWAN)网络接口来说,动态 IP 地址和 DNS 服务器分配(由systemd-networkd
和systemd-resolved
提供机能)能够开箱即用。- 静态 IP 地址:按照静态 IP 地址进行操作。
-
用
ping
命令检查网络连接:# ping archlinux.org
注意:
默认情况下,安装映像已预配置好并启用了
systemd-networkd
、systemd-resolved
、iwd
和ModemManager
。但已经安装好了的系统并非如此。
更新系统时间
使用 timedatectl
(1) 确保系统时间是准确的:
# timedatectl set-ntp true
可使用 timedatectl status
检查服务状态。
建立硬盘分区
系统若识别到磁盘,就会将其分配为一个块设备,如 /dev/sda
、/dev/nvme0n1
或 /dev/mmcblk0
。可使用 lsblk
或者 fdisk
查看:
# fdisk -l
结果中以 rom
、loop
或者 airoot
结尾的设备可被忽略。
对于一个选定的设备,以下分区是必须要有的:
若需要创建多级存储例如 LVM、disk encryption 或 RAID,请在此时完成。
# fdisk /dev/<the_disk_to_be_partitioned(要被分区的磁盘)>
注意:
若想要的磁盘没有显示出来, 确保磁盘控制器未处于RAID模式.
若要启动的磁盘已经有一个EFI系统分区,不要新建
EFI
分区,请使用现有的分区。
亦可使用更为简单的cfdisk
对磁盘进行分区处理,使用命令如下:
# cfdisk /dev/<the_disk_to_be_partitioned(要被分区的磁盘)>
注意:
若在此处误将
GPT
分区与MBR
分区弄错,可使用如下命令进行转换:
GPT
分区转MBR
分区:使用
parted
工具转换,若系统未含有该工具,请先安装后再执行如下命令:# parted -s /dev/<the_disk_to_be_partitioned(要被分区的磁盘)> mklabel msdos
分区示例
UEFI 与 GPT |
|||
---|---|---|---|
挂载点 | 分区 | 分区类型 | 建议大小 |
/mnt/boot 1 |
/dev/*efi_system_partition* |
EFI 系统分区 | 至少 300 MiB |
[SWAP] |
/dev/*swap_partition* |
Linux swap (交换空间) | 大于 512 MiB |
/mnt |
/dev/*root_partition* |
Linux x86-64 根目录 (/) | 剩余空间 |
若使用的引导加载程序能够从根磁盘卷中加载内核和 initramfs
映像,则可使用其他挂载点(例如 /mnt/efi
)。
BIOS 与 MBR |
|||
---|---|---|---|
挂载点 | 分区 | 分区类型 | 建议大小 |
[SWAP] |
/dev/*swap_partition* |
Linux swap (交换空间) | 大于 512 MiB |
/mnt |
/dev/*root_partition* |
Linux | 剩余空间 |
格式化分区
创建分区后,必须使用合适的文件系统对每个新创建的分区进行格式化。
例如,要在根分区 /dev/*root_partition*
上创建一个 Ext4 文件系统,请运行:
# mkfs.ext4 /dev/*root_partition(根分区)*
# mkswap /dev/*swap_partition(交换空间分区)*
注意:
对于堆叠式块设备(stacked block devices)请使用恰当的块设备路径替换上文中的
/dev/**_partition*
处。
若要创建一个 EFI
系统分区,使用 mkfs.fat
(8) 将其格式化为 Fat32
。
警告:
只有在分区步骤中创建 EFI 系统分区时才需要格式化。
若这个磁盘上已经有一个 EFI 系统分区了,重新格式化会破坏其他已安装操作系统的引导加载程序。
# mkfs.fat -F 32 /dev/*efi_system_partition*
挂载分区
将根磁盘卷挂载到 /mnt
,例如:
# mount /dev/*root_partition(根分区)* /mnt
使用 mkdir
(1) 创建其他剩余的挂载点(比如 /mnt/efi
)并挂载其相应的磁盘卷。
提示:
使用
--mkdir
选项运行 mount(8) 来创建指定的挂载点。或者,先使用 mkdir(1) 创建挂载点再挂载。
注意:
挂载分区一定要遵循顺序,先挂载根(root)分区(到
/mnt
),再挂载引导(boot)分区(到/mnt/boot
或/mnt/efi
,若单独分出来了的话),最后再挂载其他分区。否则可能遇到安装完成后无法启动系统的问题。
对于 UEFI
系统,挂载 EFI 系统分区:
# mount /dev/*efi_system_partition* /mnt/boot
# swapon /dev/*swap_partition(交换空间分区)*
稍后 genfstab
(8) 将自动检测挂载的文件系统和交换空间。
安装
选择镜像
文件 /etc/pacman.d/mirrorlist
定义了软件包会从哪个镜像下载。
在 LiveCD 启动的系统上,在连接到互联网后,reflector
会通过选择 20 个最新同步的 HTTPS
镜像并按下载速率对其进行排序来更新镜像列表。
在列表中越前的镜像在下载软件包时有越高的优先权。
或许想检查一下文件,看看是否满意。
若不满意,可相应的修改 /etc/pacman.d/mirrorlist
文件,并将地理位置最近的镜像源挪到文件的头部,同时也应该考虑一些其他标准。
使用如下命令即可将本地速度最快的中国镜像源与世界镜像源添加到最靠前的位置,以提升安装速度:
# reflector -c Worldwide -c China -a 15 -p https -p http --sort rate --save /etc/pacman.d/mirrorlist
这个文件接下来还会被 pacstrap
拷贝到新系统里,所以请确保设置正确。
安装必需的软件包
使用 pacstrap
(8) 脚本,安装 base
软件包和 Linux
内核以及常规硬件的固件:
# pacstrap /mnt base linux linux-firmware
提示:
base
软件包并没有包含 Live
环境中的全部程序。
因此要获得一个功能齐全的基本系统,可能需要安装其他软件包。
特别要考虑安装:
- 管理所用文件系统的用户工具(比如
XFS
和Btrfs
对应的管理工具); - 访问
RAID
或LVM
分区的工具; - 未包含在
linux-firmware
中的额外固件(如用于声卡的sof-firmware
); - 联网所需要的程序 (如
NetworkManager
或dhcpcd
); - 文本编辑器(如:
nano
、vim
等); - 访问
man
和info
页面中文档的工具:man-db
,man-pages
和texinfo
。
要安装其他软件包或软件包组(比如 base-devel
),请将其名字追加到上文的 pacstrap
命令后 (用空格分隔),亦或在 Chroot
进新系统后使用 pacman
手动安装软件包或软件包组。
packages.x86_64
中可可到不同软件包或软件包组间的差异。
以下命令为推荐安装的软件包:
# pacstrap /mnt base base-devel linux linux-firmware dhcpcd iwd vim sudo bash-completion nano net-tools openssh man
若想要相对更稳定的系统,可安装长期支持版本的Linux
内核。
推荐安装的软件包与长期支持版本的Linux
内核安装命令如下:
# pacstrap /mnt base base-devel linux-lts linux-firmware dhcpcd iwd vim sudo bash-completion nano net-tools openssh man
配置系统
Fstab
用以下命令生成 fstab
文件 (用 -U
或 -L
选项设置 UUID 或卷标):
# genfstab -U /mnt >> /mnt/etc/fstab
强烈建议在执行完以上命令后,检查一下生成的 /mnt/etc/fstab
文件是否正确,可使用如下命令进行查看:
# cat /mnt/etc/fstab
亦可使用文本编辑器进行查看,命令如下:
nano
编辑器查看命令:# nano /mnt/etc/fstab
vim
编译器查看命令:# vim /mnt/etc/fstab
默认编辑器查看命令:
# gedit /mnt/etc/fstab
……
Chroot
chroot
到新安装的系统:
# arch-chroot /mnt
编辑AUR
中国源与其他镜像源(可选项)
使用文本编辑器编辑ArchLinuxCN
源与其他镜像源:
使用vim
编辑:
# vim /etc/pacman.conf
使用nano
编辑:
# nano /etc/pacman.conf
使用默认编辑器编辑:
# gedit /etc/pacman.conf
编辑内容如下:
开启32位软件源,将[community]
前面的#
删除掉,最终效果如下:
[community]
Include = /etc/pacman.d/mirrorlist
添加ArchLinuxCN源:
在/etc/pacman.conf
中添加如下内容:
[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
安装 archlinuxcn-keyring
包导入 GPG key
# pacman -S archlinuxcn-keyring
# pacman-key --init
# pacman-key --populate archlinuxcn
添加其他镜像源:
在/etc/pacman.conf
中添加如下内容,以导入blackarch
、arch4edu
、lado.me-audio
源:
[blackarch]
SigLevel = Optional TrustAll
Server = https://mirrors.cloud.tencent.com/blackarch/$repo/os/$arch
[arch4edu]
Server = https://mirrors.tuna.tsinghua.edu.cn/arch4edu/$arch
[lado.me-audio]
SigLevel = Optional TrustAll
Server = https://lado.me/repo/$arch
更新镜像源:
使用如下命令更新导入的镜像源:
# pacman -Sy
时区
要设置时区:
# 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 时间。
本地化
程序和库若需要本地化文本,都依赖区域设置,后者明确规定了地域、货币、时区日期的格式、字符排列方式和其他本地化标准。
需在这两个文件设置:locale.gen
与 locale.conf
。
编辑 /etc/locale.gen
,并取消掉 en_US.UTF-8 UTF-8
和其他需要的 区域设置 前的注释(#
)。
接着执行 locale-gen
以生成 locale
信息:
# locale-gen
创建 locale.conf
(5) 文件,并 编辑设定 LANG 变量,比如:
/etc/locale.conf
LANG=*en_US.UTF-8*
另外对于中文用户:
提示:
用户可自行设置 locale;
将系统 locale 设置为
en_US.UTF-8
,系统的log
就会用英文显示,这样更容易判断和处理问题;
亦可设置为
en_GB.UTF-8
或en_SG.UTF-8
,附带以下优点:
- 进入桌面环境后以 24 小时制显示时间;
- LibreOffice 等办公软件的纸张尺寸会默认为
A4
而非Letter(US)
;- 可尽量避免不必要且可能造成处理麻烦的英制单位。
设置的 LANG 变量需与 locale 设置一致,否则会出现以下错误:
- `Cannot set LC_CTYPE to default locale: No such file or directory`
警告:
不推荐在此设置任何中文
locale
,会导致tty
乱码。
若需要修改 #控制台键盘布局,可编辑 vconsole.conf
(5) 使其长期生效,例如:
/etc/vconsole.conf
KEYMAP=*de-latin1*
网络配置
/etc/hostname
myhostname(主机名)
请接着完成新安装的环境的网络配置,配置过程中可能需要安装合适的网络管理软件。
Initramfs
通常不需要创建新的 initramfs
,因为在执行 pacstrap
时已经安装 linux
,这时已经运行过 mkinitcpio
了。
对于 LVM
、 system encryption
或 RAID
等分区配置,请修改 mkinitcpio.conf
并用以下命令重新创建一个 Initramfs:
# mkinitcpio -P
Root 密码
设置 Root 密码:
# passwd
新建个人用户
使用如下命令,新建一个非root
的个人用户,以提高安全性:
# useradd -m -G wheel -s /bin/bash <用户名>
设置个人用户密码
使用如下命令,设置个人用户的账号密码:
# passwd arch
编辑个人用户权限
若使用vim
,可使用如下命令进行简单设置:
# EDITOR=vim visudo
若使用nano
,则需要修改sudoers
文件,命令如下:
# nano /etc/sudoers
将%wheel
前的#
删除即可,亦可在%wheel
或root
下添加如下内容:
<用户名> ALL=(ALL) ALL
设置网络:
为防止开机后没有网络可用而导致很多功能无法使用,在LiveCD
的Chroot
环境下先设置好网络环境。
-
① 使用如下命令安装网络设置软件:
-
# pacman -S networkmanager dhcpcd iw wpa_supplicant dialog net-tools openssh
-
-
② 使用
systemd
将网络设置为开机自启动:-
# systemctl enable Networkmanager sshd dhcpcd
-
注意:
亦可使用如下命令使得
iwd
开机自启动获取无线网络连接,与上述NetworkManager
功能相同。# systemctl enable iwd
iwd
与NetworkManager
虽可同时运行,但不可同时使用,即,若使用iwd
连接,NetworkManager
则无效。
-
安装引导程序
需要安装 Linux
引导加载程序,才能在安装后启动系统,可使用的的引导程序已在 启动加载器 中列出,请选择一个安装并配置它,GRUB
是最常见的选择。
安装引导软件:
使用如下命令安装用于引导的软件:
# pacman -S grub efibootmgr os-prober
安装微码更新软件:
若有 Intel
或 AMD
的 CPU
,请另外启用 微码 更新。
Intel
微码安装命令如下:
# pacman -S intel-ucode
AMD
微码安装命令如下:
# pacman -S amd-ucode
安装引导:
BIOS
系统引导安装:
根据之前的步骤安装 软件包 grub
。使用如下命令进行引导安装:
# grub-install --target=i386-pc </dev/sdX>
其中 /dev/sdX
是要安装 GRUB
的磁盘(不是分区),比如磁盘 /dev/sda
、/dev/nvme0n1
或者/dev/mmcblk0
,而 不是 分区 `/dev/sda1。
UEFI
系统引导安装:
注意:
不同硬件厂商的 UEFI 实现方式不一样,下面描述的步骤应该可在大部分 UEFI 系统上面正常应用。
对于用了下面的方法却遇到问题的用户,请将在特定的硬件上所遇到的问题的细节,以及可能的解决办法分享出来。
这些案例可添加到页面 GRUB/EFI examples (简体中文) 上面。
本节假设正在 x86_64 系统上安装 GRUB。
- 对于 IA32 (32 位) UEFI 系统(不要和 32 位 CPU 相混淆), 将
x86_64-efi
替换成i386-efi
。
根据如上步骤安装软件包 grub
和 efibootmgr
。
其中“GRUB
”是启动引导器,“efibootmgr
”被 GRUB
脚本用来将启动项写入 NVRAM
。
按照下列步骤将GRUB
安装到硬盘上:
- 挂载
EFI
系统分区。需要注意的是在本节的内容里,把*esp*
替换成ESP
分区挂载点; - 选择一个启动引导器标识,在本例被称为
GRUB
。这将在*esp*/EFI/
中创建一个与标识同名的目录来储存 EFI 二进制文件,而且这个名字还会用于在 UEFI 启动菜单中区分GRUB
启动项; - 执行下面的命令来将 GRUB EFI 应用
grubx64.efi
安装到*esp*/EFI/GRUB/
,并将其模块安装到/boot/grub/x86_64-efi/
。
注意:
确保安装
GRUB
软件包和运行命令的系统是想用GRUB
引导的系统。即,若是通过安装介质引导,则需要
chroot
之后再运行grub-install
。若因某些原因不得不在安装的系统之外运行
grub-install
,则在后面加上--boot-directory=
选项来指定挂载/boot
目录的路径,如--boot-directory=/mnt/boot
。
# grub-install --target=x86_64-efi --efi-directory=*esp* --bootloader-id=GRUB
上述安装完成后 GRUB
的主目录将位于 /boot/grub/
。
注意上述例子中,grub-install
还将在固件启动管理器中创建一个条目,名叫 GRUB
。
若启动项已满,这个命令会执行失败。
需要使用 efibootmgr 来删除不必要的条目。
在配置完成后,记得#生成主配置文件。
提示:
若使用了
--removable
选项,GRUB
将被安装到*esp*/EFI/BOOT/BOOTX64.EFI
(当使用i386-efi
时是*esp*/EFI/BOOT/BOOTIA32.EFI
),此时即使EFI
变量被重设或该驱动器接到其他电脑上,仍可从该驱动器上启动。通常来说,只要像操作
BIOS
设备一样在启动时选择这个驱动器即可。若设备是同时安装了
Windows
的多引导启动,注意Windows
通常会在这里安装一个EFI
可执行程序,该程序的目的是仅重建Windows
的UEFI
启动项。若想在Mac上安装
GRUB
,则必须要使用该选项。
注意:
--efi-directory
和--bootloader-id
是GRUB UEFI
特有的。
--efi-directory
替代了已经废弃的--root-directory
。可能注意到在
grub-install
命令中没有 device_path 选项(如/dev/sda
)。
- 事实上即使提供了 device_path,也会被
GRUB UEFI
安装脚本忽略,因为UEFI
启动加载器不使用MBR
启动代码或启动扇区。
完成安装之后,GRUB 在每次启动的时候载入配置文件 /boot/grub/grub.cfg
。
可使用工具来#生成 grub.cfg,或者可可动#定制 grub.cfg。
生成 grub.cfg
Note:
请记住,每当修改
/etc/default/grub
或者/etc/grub.d/
中的文件之后,都需要再次生成主配置文件。
生成主配置文件
安装后,需要生成主配置文件 /boot/grub/grub.cfg
。
配置文件的生成过程受到 /etc/default/grub
中的选项和 /etc/grub.d/
下脚本的影响。
若未进行额外配置,自动生成程序会在当前启动的系统的根文件系统中侦测配置文件。
所以请确保系统已经启动或者已经通过 chroot
进入。
注意:
默认的文件路径是
/boot/grub/grub.cfg
,而非/boot/grub/i386-pc/grub.cfg
。若在
chroot
或者systemd-nspawn
容器中运行grub-mkconfig
,可能会报grub-probe
无法获取 “canonical path of /dev/sdaX
” 错误而无法正常执行。此时可尝试使用arch-chroot
。若在使用了
LVM
的chroot
环境中安装GRUB
,grub-mkconfig
会无限期挂起。
使用 grub-mkconfig
工具来生成 /boot/grub/grub.cfg
:
# grub-mkconfig -o /boot/grub/grub.cfg
自动生成脚本默认将在生成的配置文件中为所有已安装的 Arch Linux 内核添加条目。
提示:
每次安装或者移除一个内核后,都需要重新运行一次
grub-mkconfig
命令。若要管理多个
GRUB
条目,设置如下:
若安装多个内核,比如说
linux
和linux-lts
,则grub-mkconfig
默认将其分成一组建立一个子菜单,使用如下生成主配置文件命令管理多个启动条目:# grub-mkconfig -o /boot/grub/grub.cfg
若将多个内核启动条目各自分成一个启动条目,则需在
/etc/default/grub
文件里添加如下命令或将其前方#
删除,以回到仅有一个菜单的情形:GRUB_DISABLE_SUBMENU=y
若使用
GRUB
将当前启动项作为默认启动项,则需编辑/etc/default/grub
中GRUB_DEFAULT
选项,内容如下所示:GRUB_DEFAULT=saved
若使得
GRUB
将当前选择的启动项作为默认启动项,则需在/etc/default/grub
文件里添加如下命令或将其前方#
删除:GRUB_SAVEDEFAULT=true
注意:
由于
GRUB
无法对btrfs
进行写入操作,因此仅当/boot
不是btrfs
文件系统的时候才能用。但会生成一个容易误导人的错误信息:“
sparse file not allowed. Press any key to continue.
”注意:
手动添加启动项到
/etc/grub.d/40_custom
或/boot/grub/custom.cfg
中,比如添加Windows
启动项,需要先添加savedefault
选项。若要修改默认菜单条目,设置如下:
可通过修改
/etc/default/grub
中的GRUB_DEFAULT
值来改变默认启动项:① 使用菜单标题:
GRUB_DEFAULT='Advanced options for Arch Linux>Arch Linux, with Linux linux'
② 使用数字编号:
GRUB_DEFAULT="1>2"
注意:
GRUB
启动项序号从0
开始计数,0
代表第一个启动项,也是上述选项的默认值,1
表示第二个启动项,以此类推。主菜单和子菜单项之间用
>
隔开。上面的例子启动的是主菜单项 ‘
Advanced options for Arch Linux
’ 下子菜单的第三项。
若想要添加自定义条目,可编辑 /etc/grub.d/40_custom
文件,然后重新生成 /boot/grub/grub.cfg
。
亦可创建 /boot/grub/custom.cfg
文件然后把条目添加进这里面。
修改 /boot/grub/custom.cfg
文件后不用再运行 grub-mkconfig
程序,因为 /etc/grub.d/41_custom
文件已经在生成的主配置文件中添加了相关的 source
语句来引用 /boot/grub/custom.cfg
。
提示:
/etc/grub.d/40_custom
可用做创建/etc/grub.d/*nn*_custom
文件的模板,其中*nn*
为优先级,规定脚本文件的执行顺序。而脚本文件的执行顺序决定了其所添加的条目在 GRUB 启动菜单中的位置。
*nn*
应当比06
大,以此保证重要的脚本能够优先执行。
探测其他操作系统
想要让 grub-mkconfig
探测其他已经安装的系统并自动把他们添加到启动菜单中,安装 软件包 os-prober 并 挂载 包含其它系统引导程序的磁盘分区。
然后重新运行 grub-mkconfig
。
若得到以下输出:Warning: os-prober will not be executed to detect other bootable partitions
,则需要编辑/etc/default/grub
并取消下面这一行的注释,若没有相应注释的话就在文件末尾添加上:
GRUB_DISABLE_OS_PROBER=false
运行 grub-mkconfig
再试一次。
注意:
分区挂载点并不重要,os-prober读取
mtab
信息来确认并搜索引导程序的位置。记得每次运行
grub-mkconfig
之前都把包含其他操作系统引导程序的分区挂载上,以免这些操作系统的启动项丢失。
提示:
可能想让
grub
记住上次选择的启动项,参见GRUB/Tips and tricks#调用之前的启动条目
警告:
这是安装的最后一步也是至关重要的一步,请按上述指引正确安装好引导加载程序后再重新启动。
否则重启后将无法正常进入系统。
重启
输入 exit
或按 Ctrl+d
退出 chroot 环境。
可选用 umount -R /mnt
手动卸载被挂载的分区:
这有助于发现任何「繁忙」的分区,并通过
fuser
(1) 查找原因。
最后,通过执行 reboot
重启系统,systemd 将自动卸载仍然挂载的任何分区。
不要忘记移除安装介质,然后使用 root 帐户登录到新系统。
安装后的工作
创建非特权帐户、图形用户界面的安装、声音管理、触摸板支持等系统管理教程和后期工作。
非原创,勿转载