ArchLinux安装教程

简介: 根据ArchLinux官方教程进行安装,并使用iwctl进行无线网络连接,访问 下载 页面,并根据需要的引导方式,获取 ISO 文件或 netboot 映像以及相应的 GnuPG 签名。建议使用前先验证所下载文件的签名,特别是从 HTTP 镜像源 下载的文件,因为 HTTP 连接一般来说容易遭到拦截而 提供恶意镜像。在一台已经安装 GnuPG 的系统上,可通过下载 PGP 签名 (在 下载 页面的 Checksums 下方) 到 ISO 文件所在的路径,然后用以下方式 验证签名:

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)。

要引导安装媒介,需要 禁用安全启动

若需要,可在完成安装后重新配置 安全启动

  1. 选择从带有 Arch 安装文件的媒介启动,通常是要在 计算机开机自检 时按下某个按键,一般在启动画面会有提示。具体情况请参考主板说明书。
  2. 当引导加载程序菜单出现时,选择 Arch Linux install medium 并按 Enter 进入安装环境。

提示:

安装映像在 UEFI 模式下使用 GRUB 引导,在 BIOS 模式下使用 syslinux 引导。

  1. 将会以 root 身份登录进一个虚拟控制台,默认的 ShellZsh

若想一边安装,一边使用 Lynx 查看本指南,可使用 Alt+*箭头*快捷键切换不同的控制台。

编辑配置文件,可使用 mcedit(1)nanovim

控制台键盘布局

控制台键盘布局默认为 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
  • 对于无线局域网(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-networkdsystemd-resolved 提供机能)能够开箱即用。
  • 静态 IP 地址:按照静态 IP 地址进行操作。
  • ping 命令检查网络连接:
# ping archlinux.org

注意:

默认情况下,安装映像已预配置好并启用了 systemd-networkdsystemd-resolvediwdModemManager

但已经安装好了的系统并非如此。

更新系统时间

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

# timedatectl set-ntp true

可使用 timedatectl status 检查服务状态。

建立硬盘分区

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

# fdisk -l

结果中以 romloop 或者 airoot 结尾的设备可被忽略。

对于一个选定的设备,以下分区是必须要有的:

若需要创建多级存储例如 LVMdisk encryptionRAID,请在此时完成。

请使用 fdiskparted 修改分区表。例如:

# fdisk /dev/<the_disk_to_be_partitioned(要被分区的磁盘)>

注意:

亦可使用更为简单的cfdisk对磁盘进行分区处理,使用命令如下:

# cfdisk /dev/<the_disk_to_be_partitioned(要被分区的磁盘)>

注意

若在此处误将GPT分区与MBR分区弄错,可使用如下命令进行转换:

GPT分区转MBR分区:

使用parted工具转换,若系统未含有该工具,请先安装后再执行如下命令:

# parted -s /dev/<the_disk_to_be_partitioned(要被分区的磁盘)> mklabel msdos

分区示例

UEFIGPT
挂载点 分区 分区类型 建议大小
/mnt/boot1 /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)。

BIOSMBR
挂载点 分区 分区类型 建议大小
[SWAP] /dev/*swap_partition* Linux swap (交换空间) 大于 512 MiB
/mnt /dev/*root_partition* Linux 剩余空间

格式化分区

创建分区后,必须使用合适的文件系统对每个新创建的分区进行格式化。

例如,要在根分区 /dev/*root_partition* 上创建一个 Ext4 文件系统,请运行:

# mkfs.ext4 /dev/*root_partition(根分区)*

若创建了交换分区,请使用 mkswap(8) 将其初始化:

# 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(8) 启用它:

# 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

提示:

  • 可将 linux 替换为内核页面中介绍的其他内核软件包。
  • 在虚拟机或容器中安装时,可不安装固件软件包。

base 软件包并没有包含 Live 环境中的全部程序。

因此要获得一个功能齐全的基本系统,可能需要安装其他软件包。

特别要考虑安装:

安装其他软件包或软件包组(比如 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中添加如下内容,以导入blackarcharch4edulado.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.genlocale.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-8en_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*

网络配置

创建hostname 文件:

/etc/hostname
myhostname(主机名)

请接着完成新安装的环境的网络配置,配置过程中可能需要安装合适的网络管理软件。

Initramfs

通常不需要创建新的 initramfs*,因为在执行 *pacstrap 时已经安装 linux,这时已经运行过 mkinitcpio 了。

对于 LVMsystem encryptionRAID 等分区配置,请修改 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前的#删除即可,亦可在%wheelroot下添加如下内容:

<用户名>    ALL=(ALL)    ALL

设置网络:

为防止开机后没有网络可用而导致很多功能无法使用,在LiveCDChroot环境下先设置好网络环境。

  • ① 使用如下命令安装网络设置软件:
# pacman -S networkmanager dhcpcd iw wpa_supplicant dialog net-tools openssh
  • ② 使用systemd将网络设置为开机自启动:
# systemctl enable Networkmanager sshd dhcpcd

注意:

亦可使用如下命令使得iwd开机自启动获取无线网络连接,与上述NetworkManager功能相同。

# systemctl enable iwd

iwdNetworkManager虽可同时运行,但不可同时使用,即,若使用iwd连接,NetworkManager则无效。

安装引导程序

需要安装 Linux 引导加载程序,才能在安装后启动系统,可使用的的引导程序已在 启动加载器 中列出,请选择一个安装并配置它,GRUB 是最常见的选择。

安装引导软件:

使用如下命令安装用于引导的软件:

# pacman -S grub efibootmgr os-prober

安装微码更新软件:

若有 IntelAMDCPU,请另外启用 微码 更新。

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

根据如上步骤安装软件包 grubefibootmgr

其中“GRUB”是启动引导器,“efibootmgr”被 GRUB 脚本用来将启动项写入 NVRAM

按照下列步骤将GRUB安装到硬盘上:

  1. 挂载 EFI 系统分区。需要注意的是在本节的内容里,把 *esp* 替换成ESP分区挂载点;
  2. 选择一个启动引导器标识,在本例被称为 GRUB。这将在 *esp*/EFI/ 中创建一个与标识同名的目录来储存 EFI 二进制文件,而且这个名字还会用于在 UEFI 启动菜单中区分 GRUB 启动项;
  3. 执行下面的命令来将 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 可执行程序,该程序的目的是仅重建WindowsUEFI启动项。

若想在Mac上安装GRUB,则必须要使用该选项。

注意:

  • --efi-directory--bootloader-idGRUB 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
  • 若在使用了 LVMchroot 环境中安装 GRUBgrub-mkconfig 会无限期挂起。

使用 grub-mkconfig 工具来生成 /boot/grub/grub.cfg

# grub-mkconfig -o /boot/grub/grub.cfg

自动生成脚本默认将在生成的配置文件中为所有已安装的 Arch Linux 内核添加条目。

提示:

  • 每次安装或者移除一个内核后,都需要重新运行一次 grub-mkconfig 命令。
  • 若要管理多个 GRUB 条目,设置如下:
  • 若安装多个内核,比如说 linuxlinux-lts,则 grub-mkconfig 默认将其分成一组建立一个子菜单,使用如下生成主配置文件命令管理多个启动条目:
# grub-mkconfig -o /boot/grub/grub.cfg
  • 若将多个内核启动条目各自分成一个启动条目,则需在 /etc/default/grub 文件里添加如下命令或将其前方#删除,以回到仅有一个菜单的情形:
GRUB_DISABLE_SUBMENU=y
  • 若使用GRUB将当前启动项作为默认启动项,则需编辑 /etc/default/grubGRUB_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 帐户登录到新系统。

安装后的工作

创建非特权帐户、图形用户界面的安装、声音管理、触摸板支持等系统管理教程和后期工作。

相关文章
|
4月前
|
Linux C语言
linux yum安装ffmpeg 图文详解
linux yum安装ffmpeg 图文详解
367 0
|
11月前
arm-linux-gcc的下载与安装步骤
arm-linux-gcc的下载与安装步骤
841 2
|
Ubuntu Linux C++
Ubuntu20.4配置arm交叉编译环境
我是在虚拟机中配置的,如果你的嵌入式设备足够完成自己的编译,可以不考虑虚拟机的。
752 0
|
17天前
|
Ubuntu Linux 开发工具
ubuntu linux搭建lvgl
ubuntu linux搭建lvgl
21 6
|
1月前
|
Ubuntu Linux Shell
【linux】PetaLinux 2024.1安装笔记
【linux】PetaLinux 2024.1安装笔记
78 0
|
9月前
|
存储 监控 Ubuntu
Linux下sysstat安装使用图文详解
Linux下sysstat安装使用图文详解
295 0
Linux下sysstat安装使用图文详解
|
Ubuntu Linux Android开发
Termux安装完整版Linux(Ubuntu)详细步骤
Termux是一款在Android系统上运行的终端模拟器,可以让用户在手机上运行Linux命令行工具和应用程序。本文将介绍如何在Termux中安装完整版Linux(Ubuntu)。
2313 0
|
Ubuntu NoSQL Linux
linux0.11+Bochs环境搭建和使用
linux0.11+Bochs环境搭建和使用
|
安全 关系型数据库 MySQL
Arch Linux LAMP环境搭建
LAMP环境指的是Linux系统下的web开发环境,由Linux操作系统、Apache服务器,MySQL数据库、PHP语言环境组成
194 0
Arch Linux LAMP环境搭建
|
Linux 网络安全 虚拟化
Arch Linux安装与初体验
Arch Linux安装与初体验
478 0
Arch Linux安装与初体验