基于官方指导安装 Arch Linux

Posted 夏沫の浅雨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于官方指导安装 Arch Linux相关的知识,希望对你有一定的参考价值。

写在前面:

本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。


目录



官方 wiki安装中文指导:https://wiki.archlinux.org/title/Installation_guide_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)


最好还是以英文版的为基准,因为 ArchLinux是一个激进的系统,更新比较快,可能刚写完这篇笔记,转头已经有些对应不上了,哈哈哈。

系统镜像

官方镜像下载地址:https://archlinux.org/download/

当然,也可以去各大高校提供的镜像源网站下载。


启动盘制作

1、windows 平台

可以使用 Rufus:https://rufus.ie/zh/

这是一款开源、免费、小巧(1.1mb)纯粹的系统启动盘制作工具。
目前所支持的 ISO镜像如下:

2、Uinx 平台

类 Unix系统可以直接使用 dd 命令来制作启动盘。

dd 命令使用可参考:https://www.runoob.com/linux/linux-comm-dd.html

3、多平台

可以使用开源的 etcher:https://www.balena.io/etcher/


然后本篇文章是基于官方指导的总结分析安装的笔记,如下开始正式安装配置,因为是以官方 wiki安装为指导,所以下面用到的操作的标题将一一对应官方 wiki的标题,没用到的将忽略不写,以及需要增加的将给出说明。目前使用的镜像版本:archlinux-2022.04.01-x86_64.iso


引导安装

Arch 的启动引导过程有两种:BIOSUEFI 系统,这两者的引导过程是完全不同的。在 Arch 中它们的引导加载及区别可看:https://wiki.archlinux.org/title/Arch_boot_process

目前大部分设备的引导方式主要分为 UEFI 引导 + GPT 分区表Bios(LEGACY) 引导 + MBR 分区表 这两种,而在新的机器里大部分都采用了 UEFI/GPT 引导的方式,当然,同时也兼容 BIOS/MBR

UEFI进入:

BIOS进入:

启动安装后,最终界面出现的效果是一样的:


验证引导模式

键入如下命令:(ls:表示列出目录内容;后面的路径可以利用 Tab键 自动补全,即键入命令或文件名的前几个字符,然后按 [Tab] 键)

ls /sys/firmware/efi/efivars

如果命令结果显示了目录且没有报告错误,则系统以 UEFI 模式引导。

如果目录不存在,则系统可能 (注意是可能,并不一定确是 BIOS模式)BIOS 模式 (或 CSM 模式) 引导,如显示:

ls: cannot access '/sys/firmware/efi/efivars': No such file or directory

对于一些不是新的/格式过的磁盘,可能就不太适用了,当然,最好方法就是查看安装的主分区磁盘的属性。


连接到因特网

1、检查网络接口是否启用

ip link

2、连接到网络

  • 有线:连接网线,并保证上级路由有网。
  • 无线:使用 iwctl 验证无线网络,具体操作点击链接查看。

3、配置网络连接

  • 动态:需要支持 DHCP,然后执行以下命令。

    dhcpcd
    
  • 静态:直接按照 静态 IP 地址 这个链接进行操作。

4、检查网络连接

在确认无误完成上面的操作后,通过 PING IP来检查:

ping archlinux.org

note: 关于网络部分的,详情请看 https://wiki.archlinux.org/title/Network_configuration


更新系统时间

执行:

timedatectl set-ntp true

然后正常情况下是并没有输出的,所谓没有消息就是最好的消息,这就是 Linux/Unix系统的设计思想。

最后,执行如下命令来检查服务状态:

timedatectl status

建立硬盘分区

系统如果识别到磁盘,就会将其分配为一个块设备,如 /dev/sda/dev/nvme0n1/dev/mmcblk0 等等。然后可以执行如下命令查看:

fdisk -l

然后,针对不同的引导方式,其分区布局是不一样的,以官方给出的分区为例:

  • UEFI 与 GPT

    挂载点分区分区类型建议大小
    /mnt/boot/dev/efi_system_partitionEFI 系统分区至少 300 MiB
    [SWAP]/dev/swap_partitionLinux swap (交换空间)大于 512 MiB
    /mnt/dev/root_partitionLinux x86-64 根目录 (/)剩余空间
  • BIOS 与 MBR

    挂载点分区分区类型建议大小
    [SWAP]/dev/swap_partitionLinux swap (交换空间)大于 512 MiB
    /mnt/dev/root_partitionLinux x86-64 根目录 (/)剩余空间

    然后在这里拓展一下 MiBMB 这两个单位,MB 是国际单位制 SI 制定的十进制标准单位制,这个 M 是 1000K,而 MiB 是国际电工委员会 IEC 制定的二进制标准,这个 M 是 1024K 。参看:https://physics.nist.gov/cuu/Units/binary.html

  • 其它的布局实例可看:https://wiki.archlinux.org/title/Partitioning_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#%E5%B8%83%E5%B1%80%E7%A4%BA%E4%BE%8B

在了解上面的布局后,然后我们常用的引导方式有 UEFI 引导 + GPT 分区表BIOS(LEGACY) 引导 + MBR 分区表 这两种,所以下面分开说明:

  1. BIOS/MBR

    这种方式相对于另一种比较简单,所以就先说了。

    首先,先来了解一下 [SWAP] 挂载点和 /mnt 挂载点:

    • [SWAP]:swap 分区通常被称为交换分区,这是一块特殊的硬盘空间,即当实际内存(物理内存,可以理解为内存条容量)不够用的时候,操作系统会从内存中取出一部分暂时不用的数据,放在交换分区中,从而为当前运行的程序腾出足够的内存空间(有点类似于 windows系统下的虚拟内存)。也就是说,当内存不够用时,我们使用 swap 分区来临时顶替,等到那些程序要运行时,再从 swap 中恢复保存的数据到内存中。这种 “拆东墙,补西墙” 的方式应用于几乎所有的操作系统中。

      使用 swap 交换分区,显著的优点是,通过操作系统的调度,应用程序实际可以使用的内存空间将远远超过系统的物理内存。

      那么 swap 分区到底设置成多大才最优?少了又觉得不够,多了又感觉浪费,那么我们可以参考 Redhat 官方文档中 关于swap分区大小设置的建议

      物理内存建议的交换空间大小如果开启休眠功能建议的交换空间大小
      ⩽ 2GB内存的2倍内存的3倍
      > 2GB – 8GB等于内存大小内存的2倍
      > 8GB – 64GB至少4G内存的1.5倍
      > 64GB至少4G不建议使用休眠

      最后结合日常使用,一般来说可以按照如下规则设置 swap 大小:

      • 4G以内的物理内存,SWAP 设置为内存的2倍,不超过4G。
      • 4-8G的物理内存,SWAP 等于内存大小。
      • 8-64G 的物理内存,SWAP 设置为8G。
      • 64-256G物理内存,SWAP 设置为16G。
    • /mnt:全称 mount 可直接理解为 “挂载”,用于存放手动挂载的硬件。这部分是根目录/ 下的目录,用来挂载文件系统。

      一般的 Linux根目录展开如下图:

      然后按照官方的说明,是想把将根磁盘卷挂载到 /mnt 目录下,即 /mnt 变成 / 根目录。

    好了,了解完后下面正式开始。

    执行命令:

    fdisk /dev/sdx (sdx可以为sda、sdb等,具体以你实际需要挂载的磁盘名称为准)
    

    接着你就进入了 fdisk 操作环境,为了获取该命令下的操作功能,根据提示输入 m 并回车查看各命令的作用:

    fdisk 操作环境下:

    1、对于一个全新的磁盘(格式化了),输入 o 来创建一个全新的 MBR 分区表(因为这里是 BIOS引导);如果是旧磁盘(要么原本有 MBR 分区表,要么不是 MBR 属性 DOS 的),那对于非 MBR 分区表可能得更改分区表或者格式化,而已有 MBR 分区表的直接执行第 2步。

    2、输入 n 创建一个新的分区,首先会让你选择类型分区,输入 p 选择主分区,回车接着选择分区号,这里一般直接回车使用默认数值,这样可以避免自己定义出现冲突;紧接着选择开始起扇区地址,如果不知道原有区域划分情况,那一般直接回车使用默认数值即可;随后,输入结束扇区地址或者容量大小,这里决定了你为该分区创建的容量大小;我们按照表格顺序创建分区,那这第一个就是 swap 交换分区,例如我分配的是 8G容量,那可以直接输入容量大小:+8G

    3、创建完毕后,可以输入 p 来查看创建的分区。

    4、重复第 2项创建根目录分区和第 3项确认最后的分区信息,至此就有两个分区(对应表格)。

    5、最后输入 w 将之前所有的操作写入磁盘并生效。

  2. UEFI/GPT

    与上一种引导方式相比,根据表格显示,只多了一个 EFI 系统分区,然后了解一下这个挂载点:

    • /mnt/boot:上面说了官方是想把将根磁盘卷挂载到 /mnt 目录下,那这个 boot引导自然就挂载到了新的 /mnt 目录下了。

    在该引导模式下的操作就如下。

    执行命令如下进入 fdisk 操作环境:

    fdisk /dev/sdx (sdx可以为sda、sdb等,具体以你实际需要挂载的磁盘名称为准)
    

    fdisk 操作环境下:

    1、对于一个全新的磁盘(格式化了),这里则输入 g 来创建一个全新的 GPT 分区表(因为到这里是 UEFI引导);同样的如果是旧磁盘那跟上面的 BIOS引导操作差不多,只不过这里是 GPT 属性了。

    2、输入 n 创建一个新的分区,让你选择分区号**(UEFI 比 BIOS 少了类型分区选择)**,这里一般直接回车使用默认数值,这样可以避免自己定义出现冲突;紧接着选择开始起扇区地址,如果不知道原有区域划分情况,那一般直接回车使用默认数值即可;随后,输入结束扇区地址或者容量大小,这里决定了你为该分区创建的容量大小;我们按照表格顺序创建分区,那这第一个就是 /mnt/boot 引导分区,例如我取的是 512MiB容量,那可以直接输入容量大小:+512M

    3、创建完毕后,可以输入 p 来查看创建的分区。

    4、重复第 2项和第 3项两次,分别创建 [SWAP]/mnt,至此就有三个分区(对应表格)。

    5、最后输入 w 将之前所有的操作写入磁盘并生效。


格式化分区

  • EFI系统分区(仅对于 UEFI/GPT引导方式)

    使用 mkfs.fat 命令将其格式化为 Fat32:

    mkfs.fat -F 32 /dev/sdxY (sdxY为上面创建的 EFI 系统分区符)
    
  • swap交换分区

    如果有创建,则请使用 mkswap 命令将其初始化:

    mkswap /dev/sdxY (sdxY为上面创建的交换空间分区符)
    
  • /mnt 根目录分区

    执行以下命令创建一个 Ext4 文件系统:

    mkfs.ext4 /dev/sdxY (sdxY为上面创建的根分区符)
    

挂载分区

1、将根磁盘卷挂载到 /mnt,执行:

mount /dev/sdxY /mnt (把 sdxY替换为上面创建根分区符)

2、如果创建了 swap 交换空间卷,执行:

swapon /dev/sdxY (把 sdxY替换为上面创建的交换空间分区符)

3、对于 UEFI 系统,挂载 EFI 系统分区:

mkdir /mnt/boot
mount /dev/sdxY /mnt/boot (把 sdxY替换为上面创建的 EFI 系统分区符)

选择镜像

文件 /etc/pacman.d/mirrorlist 定义了软件包会从哪个镜像源下载。在列表中越前的镜像在下载软件包时有越高的优先权。

各地区镜像源获取:https://archlinux.org/mirrorlist/ ,然后点击生成:

编辑 /etc/pacman.d/mirrorlist 文件,执行:

vim /etc/pacman.d/mirrorlist

然后进入 VIM 环境,输入 i 进入编辑状态,然后根据上面生成提供的镜像表,选择几个放到文件最顶端,在这里是选择阿里云镜像:

如果其速度不佳,可以手动指定其他镜像源,像中科大或者清华的放在最上面即可:

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

然后,按 Esc 键退出编程,最后输入 :wq 保存退出。

关于 vim 命令的使用,可看:https://www.runoob.com/linux/linux-vim.html


安装必需的软件包

使用 pacstrap 脚本,安装 base 软件包和 Linux 内核以及常规硬件的固件:

pacstrap /mnt base base-devel linux linux-headers linux-firmware (base-devel在 AUR包的安装是必须的)

Fstab配置

生成自动挂载分区的 fstab 文件,执行命令:

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

然后 cat 一下检查生成的 /mnt/etc/fstab 文件是否正确:

cat /mnt/etc/fstab

执行后将显示各分区挂载情况及属性信息。


Chroot配置

Change root 到新安装的系统:

arch-chroot /mnt

执行了这步以后,我们的操作都相当于在磁盘上新装的系统中进行。


时区配置

设置时区:

ln -sf /usr/share/zoneinfo/Region(地区名)/City(城市名) /etc/localtime

eg:以上海为例,执行 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

然后运行 hwclock 以生成 /etc/adjtime

hwclock --systohc

本地化配置

程序和库如果需要本地化文本,则需要根据区域设置 Locale,以明确规定地域、货币、时区日期的格式、字符排列方式和其他本地化标准。

需在这两个文件设置:locale.genlocale.conf

通过前面的 Chroot配置,我们已经处于 chroot 环境下了,这就意味这现在所在的系统中只有一些最基本的包(组件),而 VIM 组件并未包含在里面,这时候就需要自己安装组件包了。利用 Archlinux 下非常强大的包管理工具 pacman,其安装包的命令格式为 pacman -S 包名pacman 会自动检查这个包所需要的其他包(即为依赖)并一起装上。

然后我们安装 VIM 组件,执行:

pacman -S vim

1、利用刚安装的 vim ,编辑 locale.gen 文件:

vim /etc/locale.gen

找到 zh_CN.UTF-8 UTF-8en_US.UTF-8 UTF-8 这两行,去掉注释并保存。

紧接着执行 locale-gen 以生成 locale 信息:

locale-gen

2、然后创建 locale.conf 文件,并 编辑设定 LANG 变量

echo LANG=en_US.UTF-8 > /etc/locale.conf

网络配置

创建 /etc/hostname 文件,并设定的一个 myhostname

echo myhostname > /etc/hostname (myhostname是你想要为该系统设置的名称)

这步在我目前使用的功能里好像没用到。。。

然后,在官方文档中有一条说明:

请注意,目前的 base 不含有任何网络管理工具。对于新安装的系统环境,请接着完成网络配置,配置过程中可能包括要安装合适的网络管理软件。

因此,我们需要安装网络配置管理包(DHCP客户端和 netctl网络管理器):

pacman -S dhcpcd netctl

Root 密码

RootLinux 中具有最高权限帐户,有些敏感的操作必须通过 Root 用户进行,比如使用pacman 命令。

执行以下命令,然后根据提示输入两次密码即可(注意输入是不显示出来):

passwd root

安装引导程序

如果是 Intel 或 AMD 的 CPU,启用 微码 更新:

  • Intel

    pacman -S intel-ucode
    
  • AMD

    pacman -S amd-ucode
    

接着,官方推荐的引导加载是 GRUB (其他的引导加载可看:引导功能比较),因此我们对其安装并配置,不同的引导系统,其操作不一样:

  • BIOS/MBR

    1、安装 grub

    pacman -S grub
    

    2、部署 grub

    grub-install --target=i386-pc /dev/sdx (sdx为要安装 GRUB 的磁盘,注意不是分区)
    
  • UEFI/GPT

    1、安装 grubefibootmgr

    pacman -S grub efibootmgr
    

    2、部署 grub

    grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=GRUB (这里的 esp 替换成挂载点)
    

    像在这里,那就是:

    grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
    

最后,不管是哪个引导方式,都执行第三步:

3、生成配置文件:

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

执行后,最后显示 done 即完成操作。


note:这一步是至关重要的一步,请检查是否正确安装好引导加载程序后再重新启动,否则下次重启后将无法正常进入系统。


重启

最最最后,你需要进行重启来启动已经安装好的系统。

1、输入以下命令退出 chroot 环境:

exit

2、手动取消挂载的分区(这有助于发现任何「繁忙」的分区):

umount -r /mnt/boot
umount -r /mnt

如果挂载了 /mnt/boot,先 umount -r /mnt/boot,再 umount -r /mnt,否则直接 umount /mnt

3、执行重启:

reboot

Other

另外一些比较详细的安装教程:

Arch Linux 安装使用教程

以官方Wiki的方式安装ArchLinux

以上是关于基于官方指导安装 Arch Linux的主要内容,如果未能解决你的问题,请参考以下文章

基于官方指导安装 Arch Linux

Arch linux操作系统安装教程

如何在arch linux系统中安装MongoDB

VMware安装Arch Linux+Gnome桌面

KiCad | Arch LInux安装KiCad 6.0及使用体验

KiCad | Arch LInux安装KiCad 6.0及使用体验