本篇参考 Arch Linux 官方安装指南
禁用 reflector
reflector 会为你选择速度合适的镜像源
但其结果并不准确
同时会清空配置文件中的内容
对于新人来讲并不适用
我们首先对其进行禁用
1 | systemctl stop reflector.service |
再次确保是否为 UEFI 模式
在一系列的信息刷屏后
可以看到已经以 root 登陆安装系统了
此时可以执行的命令
1 | ls /sys/firmware/efi/efivars |
若输出了一堆东西,即 efi
变量
则说明已在 UEFI
模式
否则请确认你的启动方式是否为 UEFI
连接网络
一般来说,你连接的网络几乎均可以通过 DHCP
的方式来进行 IP 地址
和 DNS
的相关设置
在没有合适网络的情况下,使用 手机的移动热点
也是很方便的选择
如果你的网络环境需要配置静态 IP
和 DNS
请自行参考 Arch Wiki
对于有线连接来说,直接插入网线即可
对于无线连接,则需进行如下操作进行网络连接
无线连接使用 iwctl 命令进行,按照如下步骤进行网络连接
1 | iwctl #执行iwctl命令,进入交互式命令行 |
可以等待几秒等网络建立链接后再进行下面测试网络的操作
1 | ping www.gnu.org |
如果你不能正常连接网络,首先确认系统已经启用网络接口Ⅰ
1 | ip link #列出网络接口信息,如不能联网的设备叫wlan0 |
如果随后看到类似 Operation not possible due to RF-kill
的报错,继续尝试 rfkill
命令来解锁无线网卡
1 | rfkill unblock wifi |
更新系统时钟
1 | timedatectl set-ntp true #将系统时间与网络时间进行同步 |
分区
这里总共设置三个分区,是一个我们认为较为通用的方案
此步骤会清除磁盘中全部内容,请事先确认
- EFI 分区 Ⅱ: /efi 800M
- 根目录: / 100G
- 用户主目录: /home 剩余全部
这里根目录的大小仅为参考
一般来说个人日常使用的 linux 分配 100G 已经够用了
根目录最小建议不小于 50G,根目录过小会造成无法更新系统软件包等问题
首先将磁盘转换为 gpt 类型
这里假设比如你想安装的磁盘名称为 sdx
如果你使用 NVME 的固态硬盘
你看到的磁盘名称可能为 nvme0n1
1 | lsblk #显示分区情况 找到你想安装的磁盘名称 |
接下来使用 cfdisk
命令对磁盘分区。进入 cfdisk
后的操作很直观
用键盘的方向键
、 Tab 键
、 回车键
配合即可操作分配各个分区的大小与格式
一般建议将 EFI 分区
设置为磁盘的第一个分区
据说有些主板如果不将 EFI 设置为第一个分区, 可能
有 不兼容
的问题
其中 EFI 分区
选择 EFI System
类型
其余两个分区选择
Linux filesystem` 类型
1 | cfdisk /dev/sdx #来执行分区操作,分配各个分区大小,类型 |
格式化
建立好分区后,需要对分区用合适的文件系统进行格式化
这里用mkfs.ext4命令格式化根分区与 home 分区
用mkfs.vfat命令格式化 EFI 分区
如下命令中的 sdax 中,x 代表分区的序号
格式化命令要与上一步分区中生成的分区名字对应才可以
磁盘若事先有数据
会提示你: ‘proceed any way?’ 按 y 回车继续即可
1 | mkfs.ext4 /dev/sdax #格式化根目录和home目录的两个分区 |
挂载
在挂载时,挂载是有顺序的,先挂载根分区,再挂载 EFI 分区
这里的 sdax 只是例子,具体根据你自身的实际分区情况来
1 | mount /dev/sdax /mnt |
镜像源的选择
使用如下命令编辑镜像列表
1 | vim /etc/pacman.d/mirrorlist |
其中的首行是将会使用的镜像源
添加中科大或者清华的放在最上面即可
1 | Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch |
如果其速度不佳,可以手动指定其他镜像源。完整的镜像源列表可参考镜像源生成器
这里使用中国境内的镜像源以提高访问速度
然而这存在问题,镜像源(如
ArchLinux 清华镜像源
)以及第三方源(如ArchLinuxCN
)可以知道你的IP
是什么
什么时候更新了系统,什么时候检查了系统,什么时候更新了什么软件,你安装的软件列表是什么
在威权国家
的镜像源维护者
完全有可能根据威权当局
的要求提供这些数据
很多维护者
在网络上几乎是实名上网
的,他们没有任何抵抗能力
进一步的,威权国家
可以根据这些元数据
与你产生的其他元数据
进行比对
从而对你进行进一步
的定位与辨识
简单举一个例子
,要求维护者提供
或监视
安装了v2ray/qv2ray
等软件包的使用者
的IP
,以及安装时间
,以及其全部软件列表
如果你在安装 ArchLinux 时的网络已经处于
代理模式
下
可以选择一个与你代理位置较近
的,非威权国家
的镜像源来使用
如果你在安装 ArchLinux 时的网络环境没有代理
那么在安装结束后,需要尽快更换
一个非威权国家
的镜像源来使用
如下列举一些较为优质的国际源
1 | Server = https://mirror.archlinux.tw/ArchLinux/$repo/os/$arch #东亚地区:台湾/中华民国 |
安装系统
必须的基础包
1 | pacstrap /mnt base base-devel linux linux-headers linux-firmware #base-devel在AUR包的安装是必须的 |
注意
目前需要首先确保等待 pacman-init.service
服务启动后,才能执行 pacstrap
或 pacman
命令安装包
否则会 引发错误
使得安装过程无法进行
使用 systemctl status pacman-init.service
命令来检查当前服务状态
更多内容参考 bbs 中的 帖子
若安装时出现密钥环相关错误,参考此文章 GnuPG-2.1 and the pacman keyring 并执行其中的命令
必须的功能性软件
1 | pacstrap /mnt dhcpcd iwd vim bash-completion #一个有线所需(iwd也需要dhcpcd) 一个无线所需 一个编辑器 一个补全工具 |
生成 fstab 文件
fstab 用来定义磁盘分区
1 | genfstab -U /mnt >> /mnt/etc/fstab |
复查一下 /mnt/etc/fstab 确保没有错误
1 | cat /mnt/etc/fstab |
Change root
把环境切换到 新系统
的 /mnt
下
1 | arch-chroot /mnt |
时区设置
设置时区,在 /etc/localtime
下用 /usr
中合适的时区创建符号连接
如下设置 上海时区
1 | ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime |
随后进行硬件时间设置,将当前的正确 UTC 时间写入硬件时间
1 | hwclock --systohc |
设置 Locale 进行本地化
Locale 决定了 地域
、 货币
、 时区日期的格式
、 字符排列方式
和其他本地化标准
首先使用 vim
编辑 /etc/locale.gen
,去掉 en_US.UTF-8
所在行以及 zh_CN.UTF-8
所在行的注释符号 #
1 | vim /etc/locale.gen |
然后使用如下命令生成 locale
1 | locale-gen |
最后向 /etc/locale.conf
导入内容
1 | echo 'LANG=en_US.UTF-8' > /etc/locale.conf |
设置主机名
首先在 /etc/hostname
设置主机名
1 | vim /etc/hostname |
加入你想为主机取的主机名,这里比如叫 ArchZer0s
接下来在/etc/hosts设置与其匹配的条目
1 | vim /etc/hosts |
加入如下内容
1 | 127.0.0.1 localhost |
某些情况下如不设置主机名
在 KDE
下可能会存在网络情况变更时 无法启动 GUI 应用
的问题
在终端中出现形如 No protocol specified qt.qpa.xcb: could not connect to display
的错误
这种情况较为少见 Ⅲ Ⅳ Ⅴ
为 root 用户设置密码
1 | passwd |
安装微码
1 | pacman -S intel-ucode #Intel |
安装引导程序
1 | pacman -S grub efibootmgr #grub是启动引导器,efibootmgr被 grub 脚本用来将启动项写入 NVRAM。 |
接下来编辑 /etc/default/grub
文件
去掉 GRUB_CMDLINE_LINUX_DEFAULT
一行中最后的 quiet
参数
同时把 log level
的数值从 3
改成 5
这样是为了后续如果出现系统错误,方便排错
同时在同一行加入 nowatchdog
参数
这可以显著提高开关机速度
1 | vim /etc/default/grub |
使用 N 卡的用户需要注意KDE6
默认使用 wayland session
为默认
如果你需要使用 wayland
,则需开启 DRM
同样编辑 /etc/default/grub
文件
在 GRUB_CMDLINE_LINUX_DEFAULT
一行中最后的加入参数 nvidia_drm.modeset=1
最后生成 GRUB 所需的配置文件
1 | grub-mkconfig -o /boot/grub/grub.cfg |
我们在之前的命令中指定了
bootloader-id
为GRUB
这一般不会出现问题
然而在某些主板安装完成后,你会发现没有 nvme 启动条目
这是因为某些主板
的UEFI 固件
在显示UEFI NVRAM
引导条目之前
需要在特定的位置存放可引导文件,不支持自定义
存放efi 文件
Ⅵ
解决方式是使用--removable
参数解决一些主板NVRAM
的兼容性问题
1 | grub-install --target=x86_64-efi --efi-directory=/efi --removable |
除此之外,如果你的主板是一些较老的型号
如 intel 9
系列以下或者 较老 AMD 的主板
它们很可能 不支持
从 nvme 启动系统
虽然可以通过 修改 BIOS
加入 NVME 支持模块来解决
但这不在本文讨论范围内
完成安装
1 | exit # 退回安装环境# |
注意,重启前要先拔掉优盘,否则你重启后还是进安装程序而不是安装好的系统
重启后,开启 dhcp 服务
,即可连接网络
1 | systemctl start dhcpcd #立即启动dhcp |
若为无线链接,则还需要启动 iwd
才可以使用 iwctl
连接网络
1 | systemctl start iwd #立即启动iwd |
到此为止,一个基础的,无 UI 界面
的 Arch Linux
已经安装完成了
ArchLinux 在
2021 年 4 月
在安装镜像中内置了一个安装脚本,提供一些选项,即可快速安装
其和所有一键安装脚本类似,提供自动化,且不灵活的安装过程不建议
使用这种安装脚本,除了不灵活的原因,初学者也无法在这种安装过程中学到任何东西
如果你因为任何原因需要快速启动一个基础的 ArchLinux 环境
,那么可以尝试
此脚本