安装 Arch Linux 系统(新手向)

898 阅读11分钟

本次安装过程参照官方安装指南进行安装
本次安装旨在安装最小的操作系统和必要工具,其他软件会在后续文章中进行介绍

安装前的准备

如何制作 Arch Linux 启动盘已在中上一篇中进行介绍,这里就不作重复叙述了

启动到Live环境

注意:  Arch Linux 安装镜像不支持安全启动(Secure Boot)。要引导安装介质,需要禁用安全启动。如果需要,可在完成安装后重新配置安全启动

  1. 选择从带有 Arch 安装文件的介质启动,通常是要在计算机开机自检时按下某个按键,一般在启动画面会有提示。具体情况请参考主板说明书。
  2. 当引导加载程序菜单出现时,选择 Arch Linux install medium 并按 Enter 进入安装环境。
    提示: 安装映像在 UEFI 模式下使用 GRUB 引导,在 BIOS 模式下使用 syslinux 引导。请参阅 README.bootparams 获取 引导参数 列表。

控制台键盘布局

控制台键盘布局默认为 us(美式键盘)。列出所有可用的键盘布局,可以使用:

# ls /usr/share/kbd/keymaps/**/*.map.gz

如果您想要更改键盘布局,可以将相应文件名添加进 loadkeys,但请省略路径和扩展名。比如,要添加德语键盘布局:

# loadkeys de-latin1

一般默认键盘设置为us(美式键盘)

验证引导模式

上一篇 中已经教了大家如何在windows下查看引导模式。
如果要在当前安装过程中验证引导模式,请用下列命令行出 efivars 目录:

# ls /sys/firmware/efi/efivars

如果命令结果显示了目录且没有报告错误,则系统以 UEFI 模式引导。 如果目录不存在,则系统可能以 BIOS 模式 (或 CSM 模式) 引导。如果系统未以您想要的模式引导启动,请参考您的主板说明书。

连接到互联网

要在 Live 环境中配置网络连接,请跟随以下步骤:

  • 确保系统已经启用了网络接口,用 ip-link 检查:

    # ip link
    

    此时一般会提示三个选项:
    lo:全称loopback,是回环地址,一般被分配到127.0.0.1地址上,用于本机通信,经过内核处理后直接返回,不会在任何网络中出现。
    enp3s0:网卡名,如果有多块网卡,会有多个类似这种名称的网卡。
    wlan0:无线网卡的设备名。

注意:如果连接到wifi,请记住你的wlan0名称。

  • 对于无线局域网(Wi-Fi)和无线广域网(WWAN),请确保网卡未被 [rfkill]禁用。
    $ rfkill list
    
    如果发现列出的设备中有参数为no则将其依次设为启用
    $ rfkill unblock 0
    $ rfkill unblock 1
    $ rfkill unblock 2
    $ rfkill unblock 3
    
    上面的0、1、2、3为列出设备的编号
    再次执行rfkill list查看是否有被禁用的。
  • 要连接到网络:

    • 有线以太网 —— 连接网线。
    • WiFi —— 使用 [iwctl]验证无线网络。
      1. 要进入交互式提示符(interactive prompt),执行:

        $ iwctl
        

        然后交互式提示符就会以 [iwd]# 前缀显示出来了。

      2. 首先,如果不知道你的网络设备名称,请列出所有 WiFi 设备:

        [iwd]# device list
        
      3. 如果列出设备的Powered选项参数为off则说明被[rfkill]禁用,查看上面如何解除[rfkill]禁用:

      4. 始扫描网络(注意:这个命令不会输出任何内容),执行:

        [iwd]# station wlan0 scan
        

        注意: 此处的wlan0为上文列出的无线网卡的设备名,后文中的wlan0也是如此

      5. 列出所有可用的网络:

        [iwd]# station wlan0 get-networks
        
      6. 最后,要连接到一个网络:

        [iwd]# station wlan0 connect wifi名称
        

        enter后输入密码即可,如果输入的wifi名称与密码正确即可正常接入互联网

    • ~~ 移动宽带调制解调器(移动网卡) - 使用 mmcli 实用程序连接到移动网络。~~
      此方法不常用,在此不做介绍
  • 配置网络连接:
    如果您是通过wifi连接或者网线直连的可直接用ping命令进行验证验证
    • DHCP:对于有线以太网、无线局域网(WLAN)和无线广域网(WWAN)网络接口来说,动态 IP 地址和 DNS 服务器分配(由 systemd-networkd 和 systemd-resolved 提供功能)能够开箱即用。
    • 静态 IP 地址:按照静态 IP 地址进行操作。
  • 用 [ping]检查网络连接:
    ctrl+c退出iwctl
    # ping www.baidu.com
    

注意:  默认情况下,安装映像已预配置好并启用了 systemd-networkdsystemd-resolvediwd 和 ModemManager。但已经安装好了的系统并非如此。

更新系统时间

在 Live 环境中 systemd-timesyncd 默认启用,创建互联网连接后,时间将自动同步。

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

# timedatectl status

注意: 此时显示的是美国时间,不是大陆时间,在后续设置时区时会进行调整

建立硬盘分区

系统如果识别到磁盘,就会将其分配为一个块设备,如 /dev/sda/dev/nvme0n1 或 /dev/mmcblk0。这里使用cfdisk工具进行分区设置

# cfdisk 
  1. cfdisk后,可以查看当面设备被分区的情况,先将已经分好的区删除
    通过上下左右键选择要操作的分区,然后通过最下的Delete键进行删除

  2. 将之还原为一整块空的磁盘后,便可按照下面分区示例进行分区设置
    点击New后输入要分配的空间大小,之后选择Type设置分区的类型
    EFI分区的的Type为EFI System
    swap分区的Type为Linux swap
    其他设为默认的linux filesystem即可
    分配完之后选择write,然后根据提示输入yes将设置的分区写入磁盘,选择quit退出cfdisk界面

分区示例

image.png

此时我的硬盘(sda)被我分为了三个区,分别是:
/dev/sda1 Type类型为:EFI System
/dev/sda2 Type类型为:Linux Swap
/dev/sda3 Type类型为:Linux filesystem

格式化分区

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

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

# mkfs.ext4 /dev/sda3(这里的sda3是上面分区时你指定的根分区的名称)

如果创建了交换分区,请使用 mkswap 将其初始化:

# mkswap /dev/sda2(交换空间分区)

注意:  对于堆叠式块设备(stacked block devices)请使用恰当的块设备路径替换上文中的 /dev/ sda 处。

如果你要创建一个 EFI 系统分区,使用 mkfs.fat 将其格式化为 Fat32。

警告:  只有在分区步骤中创建 EFI 系统分区时才需要格式化。如果这个磁盘上已经有一个 EFI 系统分区了,将它重新格式化会破坏其他已安装操作系统的引导加载程序。

# mkfs.fat -F 32 /dev/sda1(EFI 系统分区) 

挂载分区

将根磁盘卷挂载到 /mnt,例如:

# mount /dev/sda3(根分区) /mnt

然后使用 mkdir 创建其他剩余的挂载点(比如 /mnt/boot)并按层级顺序挂载其相应的磁盘卷。

提示: 使用 --mkdir 选项运行 mount 来创建指定的挂载点。或者,先使用 mkdir 创建挂载点再挂载。

注意:  挂载分区一定要遵循顺序,先挂载根(root)分区(到 /mnt),再挂载引导(boot)分区(到 /mnt/boot 或 /mnt/efi,如果单独分出来了的话),最后再挂载其他分区。否则您可能遇到安装完成后无法启动系统的问题。参见 en:Talk:Installation guide#Clarify root mount

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

# mount --mkdir /dev/sda1(EFI 系统分区) /mnt/boot

如果创建了交换空间卷,请使用 swapon 启用它:

# swapon /dev/sda2(交换空间分区)

稍后 genfstab 将自动检测挂载的文件系统和交换空间。

挂载完成后建议使用fdisk -f命令查看设置是否正确

安装

选择镜像

文件 /etc/pacman.d/mirrorlist 定义了软件包会从哪个镜像下载。在 LiveCD 启动的系统上,在连接到互联网后,reflector 会通过选择 20 个最新同步的 HTTPS 镜像并按下载速率对其进行排序来更新镜像列表。

在列表中越前的镜像在下载软件包时有越高的优先权。您或许想检查一下文件,看看是否满意。如果不满意,可以相应的修改 /etc/pacman.d/mirrorlist 文件,并将地理位置最近的镜像源挪到文件的头部,同时也应该考虑一些其他标准。

这个文件接下来还会被 pacstrap 拷贝到新系统里,所以请确保设置正确

安装必需的软件包

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

# pacstrap -K /mnt base base-devel linux linux-firmware

配置系统

Fstab

用以下命令生成 fstab 文件 (用 -U 或 -L 选项设置 UUID 或卷标):
此命令会将挂载信息载入系统

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

复查一下 /mnt/etc/fstab 确保没有错误

cat /mnt/etc/fstab

Chroot

chroot 到新安装的系统:

# arch-chroot /mnt

提示: 此处使用的是arch-chroot而不是直接使用chroot,注意不要输错。

时区

要设置时区

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

提示: 以要设置为上海时区为例,请运行 # ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

然后运行 hwclock 生成 /etc/adjtime以校准时间:

# hwclock --systohc

这个命令假定已设置硬件时间为 UTC 时间。详细信息请查看 系统时间#时间标准

本地化

程序和库如果需要本地化文本,都依赖区域设置,后者明确规定了地域、货币、时区日期的格式、字符排列方式和其他本地化标准。

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

编辑 /etc/locale.gen,然后取消掉 en_US.UTF-8 UTF-8 和其他需要的区域设置前的注释(#)。

# pacman -Sy (更新)
# pacman -S neovim (下载nvim)
# sudo nvim /etc/locale.gen (这里需要先了解下nvim如何使用)

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

# locale-gen

然后创建 locale.conf 文件,并 编辑设定 LANG 变量,比如:

# touch /etc/locale.conf
# nvim /etc/locale.conf (然后写入:LANG=en_US.UTF-8,此处的设置要与上面一致)

网络配置

创建 [hostname] 文件:

# touch /etc/hostname
# nvim /etc/hostname (这里写入你的网络名称,任意即可)

安装合适的网络管理软件

# pacman -s networkmanager (用于设置网络)
# systemctl enable NetworkManager (开机自启)

Initramfs (这一步建议跳过,让他默认生成)

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

对于 LVM、 系统加密 或 RAID 等分区配置,请修改 mkinitcpio.conf 并用以下命令重新创建一个 Initramfs:

# mkinitcpio -P

Root 密码

设置 Root 密码

# passwd

新建一个用户

# useradd -m kay (这里新建的用户名为kay)
# passwd kay (设置kay用户密码)
# nvim /etc/sudoers (设置kay用户sudo权限,不然无法使用sudo)
  在root ALL=(ALL:ALLALL下方写入
    kay ALL=(ALL:ALLALL

安装引导程序

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

如果有 Intel 或 AMD 的 CPU,请另外启用微码更新。

警告:  这是安装的最后一步也是至关重要的一步,请按上述指引正确安装好引导加载程序后再重新启动。否则重启后将无法正常进入系统。

# pacman -S grub efibootmgr amd-ucode # 如果是intel就装intel-ucode
# mkdir /boot/grub
# nvim /etc/default/grub  (取消最后一行的注释)
# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB  (安装GRUB)
# grub-mkconfig -o /boot/grub/grub.cfg  (生成GURBU配置文件)

重启

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

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

安装后的工作

这将在后续文件中进行介绍