arch Linux 虚拟机安装
1 镜像下载地址
https://mirrors.aliyun.com/archlinux/iso/
下载如下文件
archlinux-20xx.xx.xx-x86_64.iso
为确保下载的文件没有损坏,需要计算文件的 SHA256 值。
在 Windows 系统中,打开镜像所在文件夹。按住 SHIFT
键的同时右键空白处,点击“在此处打开 PowerShell”。在打开的 PowerShell 窗口中,输入
certutil -hashfile .\archlinux-20xx.xx.xx-x86_64.iso SHA256 #请将 2023.xx.xx 替换为镜像名中的日期
请在 Arch Linux 下载页中找到 sha256sums.txt 文件,对照其中的 SHA256 值(或者参考下面列出的文件信息)。如果和上述命令输出的值相同,说明文件没有损坏;如果不同,请重新下载。
截至本文最后一次更新,最新的文件信息是
292269ba9bf8335b6a885921a00d311cdc1dcbe9a1375f297f7f3ecfe31c36a7 archlinux-2023.10.14-x86_64.iso
292269ba9bf8335b6a885921a00d311cdc1dcbe9a1375f297f7f3ecfe31c36a7 archlinux-x86_64.iso
ed7b918e08d543e77757aee43d3cdddf2aa9a0747077b52661ea9cbb02cf8e3a archlinux-bootstrap-2023.10.14-x86_64.tar.gz
ed7b918e08d543e77757aee43d3cdddf2aa9a0747077b52661ea9cbb02cf8e3a archlinux-bootstrap-x86_64.tar.gz
2 使用 VirtualBox 安装
新建一个虚拟机
设置虚拟机
最后点击完成后启动虚拟机
3 更新系统时钟
在互联网连接之后,systemd-timesyncd 服务将自动校准系统时间。请输入如下命令确定时间的准确性。
timedatectl
时间可能以 UTC +0000 时区显示,比北京时间慢 8 小时。这是正常现象,无需调整。如果时间不准确,请使用 date 命令手动设置时间。
date MMDDhhmmYY # 如 date 0531080023 可以将时间设定为 2023 年 5 月 31 日 08:00
4 磁盘分区
磁盘分区表
挂载点 | 分区 | 分区类型 | 建议大小 | 备注 |
---|---|---|---|---|
/mnt/boot | /dev/sda1 或/dev/nvme0n1p1 | EFI System | 512 MiB | ESP 分区 |
/mnt | /dev/sda2 或/dev/nvme0n1p2 | Linux x86-64 root | 100 GiB(至少 30 GiB) | Arch Linux 的根分区 |
/mnt/home | /dev/sda3 或/dev/nvme0n1p3 | Linux home | 剩余磁盘空间 | Arch Linux 的 home 分区 |
官网的安装手册中还有 swap 分区:
swap 交换分区的作用:当系统物理 RAM 内存不够用时,系统会将 RAM 里的低访问频率的内存对象放置到 swap 分区中。故 swap 分区访问速度要远慢于物理内存。
首先使用 lsblk
或 fdisk -l
查看分区信息。
我们使用的分区工具是 fdisk,首先让我们通过查看帮助,学习一下 fdisk 的用法。
root@archiso ~ # fdisk /dev/sda # 输入 fdisk 设备名,进入 fdisk 操作环境
Welcome to fdisk (util-linux 2.xx).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command. # 输入写入命令之前,硬盘不会被改动
Command (m for help): m # 输入 m 获取帮助
Help:
…
Generic
d delete a partition # 输入 d 删除分区
n add a new partition # 输入 n 创建分区
p print the partition table # 输入 p 打印分区表
t change a partition type # 输入 t 改变分区类型
…
Save & Exit
w write table to disk and exit # 输入 w 写入并退出(写入后不可撤销,请谨慎使用)
q quit without saving changes # 输入 q 不保存退出
…
Create a new label
g create a new empty GPT partition table # 输入 g 创建 GPT 分区表
…
现在请输入 Ctrl+C
,退出 fdisk 操作环境。
我们现在正式进行磁盘分区。首先需要创建 GPT 分区表;随后依次创建分区,并修改分区类型;最后保存并退出。请参考以下分区过程,按照您的分区方案进行分区。
root@archiso ~ # fdisk /dev/sda # 请将 sda 更换为您的设备名,如 nvme0n1
Welcome to fdisk (util-linux 2.xx).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): g # 输入 g 创建新的 GPT 分区表(请勿遗忘此步,否则您的硬盘将是 MBR 格式)
Created a new GPT disklabel (GUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
Command (m for help): n # 输入 n 创建新的分区,这个分区将是 EFI 分区
Partition number (1-128, default 1): # 分区编号保持默认,直接按 Enter
First sector (2048-125829086, default 2048): # 第一个扇区,保持默认
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-125829086, default 125827071): +512M # 创建 512MiB 大小的分区
Created a new partition 1 of type 'Linux filesystem' and of size 512 MiB.
Partition #1 contains a vfat signature.
Do you want to remove the signature? [Y]es/[N]o: Y # 清除已有的签名,如果是全新的硬盘,则没有此步
The signature will be removed by a write command.
Command (m for help): t # 输入 t 改变分区类型,请勿遗忘此步
Selected partition 1
Partition type or alias (type L to list all): 1 # 输入 1 代表 EFI 类型
Changed type of partition 'Linux filesystem' to 'EFI System'.
Command (m for help): n # 创建第二个分区,用作根分区
Partition number (2-128, default 2): # 保持默认
First sector (1050624-125829086, default 1050624): # 保持默认
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1050624-125829086, default 125827071): +100G # 创建 100 GiB 大小的根分区,您可以根据自己的硬盘空间决定根分区的大小
Created a new partition 2 of type 'Linux filesystem' and of size 100 GiB.
Partition #2 contains a ntfs signature.
Do you want to remove the signature? [Y]es/[N]o: Y
The signature will be removed by a write command.
Command (m for help): t # 输入 t 改变分区类型,请勿遗忘此步
Partition number (1-2, default 2): # 保持默认
Partition type or alias (type L to list all): 23 # 输入 23 代表 Linux root (x86-64) 类型
Changed type of partition 'Linux filesystem' to 'Linux root (x86-64)'.
Command (m for help): n # 创建第三个分区,用作 home 分区
Partition number (3-128, default 3): # 保持默认
First sector (42993664-125829086, default 42993664): # 保持默认
Last sector, +/-sectors or +/-size{K,M,G,T,P} (42993664-125829086, default 125827071): #保持默认,将剩余空间全部分给 home 分区
Created a new partition 3 of type 'Linux filesystem' and of size 39.5 GiB.
Command (m for help): t # 输入 t 改变分区类型
Partition number (1-3, default 3):
Partition type or alias (type L to list all): 42 # 输入 42 代表 Linux home 类型
Changed type of partition 'Linux filesystem' to 'Linux home'.
Command (m for help): p # 输入 p 打印分区表,请检查分区是否有误,如果有误,请输入 q 直接退出
Disk /dev/sda: 60 GiB, 64424509440 bytes, 125829120 sectors
Disk model: xxx
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Device Start End Sectors Size Type
/dev/sda1 2048 1050623 1048576 512M EFI System
/dev/sda2 1050624 42993663 41943040 100G Linux root (x86-64)
/dev/sda3 42993664 125827071 82833408 39.5G Linux home
Filesystem/RAID signature on partition 1 will be wiped.
Filesystem/RAID signature on partition 2 will be wiped.
Command (m for help): w # 输入 w 写入分区表,该操作不可恢复
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
5 分区格式化
创建好的分区必须格式化为一种文件系统,Linux 上常见的文件系统有 ext4,btrfs,xfs 等。第一次安装的读者,建议使用 ext4 文件系统。btrfs 提供子卷、写时复制、压缩、快照等高级功能,适合更加熟练的用户。
5.1 全新安装 Arch Linux 的分区格式化
使用 mkfs.ext4 将您的根分区格式化为 ext4 文件系统。请将 /dev/sda2 更换为您的 root 分区名。
mkfs.ext4 /dev/sda2
使用 mkfs.ext4 将您的 home 分区格式化为 ext4 文件系统。请将 /dev/sda3 更换为您的 home 分区名。
mkfs.ext4 /dev/sda3
使用 mkfs.fat 将您的 EFI 分区格式化为 FAT32 文件系统。请将 /dev/sda1 更换为您的 EFI 分区名。
mkfs.fat -F 32 /dev/sda1
6 挂载分区
6.1 全新安装 Arch Linux 的挂载分区
使用 mount[17] 将根分区挂载在 /mnt 目录下。挂载需要遵循一定的顺序,要先挂载根分区,请注意。
请将 /dev/sda2 更换为您的 root 分区名,可能是 /dev/nvme0n1p2。
mount /dev/sda2 /mnt
随后,使用 mount --mkdir 创建 /mnt/boot 目录,并将 EFI 分区挂载在 /mnt/boot 目录下。请将 /dev/sda1 更换为您的 EFI 分区名,可能是 /dev/nvme0n1p1。
mount --mkdir /dev/sda1 /mnt/boot
此处,也可以使用 /mnt/efi 作为挂载点,这需要引导程序的配合,具体的区别见 ArchWiki[18]。
最后,挂载 home 分区。请将 /dev/sda5 更换为您的 home 分区名,可能是 /dev/nvme0n1p3。
mount --mkdir /dev/sda3 /mnt/home
7 安装基础包
终于到了安装环节。我们使用 pacstrap 安装 base,linux,linux-firmware 三个软件包,它们分别是基础包组,linux 内核和驱动程序。此外,如果您使用 2019 年及以后生产的笔记本电脑,可能需要安装 sof-firmware,否则可能没有声音[27]。
Arch linux 官方提供了 linux,linux-lts,linux-zen,linux-hardened 内核[28],但是对于初学者,只推荐使用 linux 内核。
pacstrap -K /mnt base linux linux-firmware
此命令需要一段时间执行。执行完毕后请检查输出,不应出现任何 ERROR。如果出现,请重新执行命令。如果反复报错,可以寻求他人的帮助。
如果报告“验证软件包错误”,可以尝试以下方法,然后重新安装。
pacman-key --init # 初始化密钥环
pacman-key --populate
pacman -Sy archlinux-keyring # 更新 archlinux-keyring
8 chroot
我们使用 arch-chroot 工具切换到新安装的系统,以后的操作就可以在新安装的系统中完成了。
arch-chroot /mnt
9 时区
我们设置时区的软链接。在中国的读者请使用上海时间,在其他地区的读者可以在输入“/usr/share/zoneinfo/”之后按下Tab
键查看可选的时区。
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
然后,设置硬件时间。
hwclock --systohc
10 本地化
我们将设置 locale,locale 决定了系统的语言和格式,包括终端显示哪种语言,数字、时间和货币以哪国的格式显示等等。
首先使用 Arch Linux 强大的包管理器 pacman 安装两个软件包。包管理器 pacman 是 Arch Linux 的核心特征之一,可以自动解决依赖问题,十分方便。它具有强大的功能,不过现在只需要学习安装软件包的方法。使用 pacman 安装软件包需要利用 -S(–sync)选项,这个选项的意思是同步的数据库,请初学者牢记。
pacman -S vim terminus-font
vim 是著名的文本编辑器,而 terminus-font 是终端字体。我们输入以下命令,利用 vim 编辑 /etc/locale.gen。
vim /etc/locale.gen
vim 的功能也十分强大,在这里笔者只解释用到的功能,其他功能在下一篇文章中介绍。如果您想提前学习 vim 的使用方法,请查看菜鸟教程[32]。
首先输入“/
”,进入搜索功能,输入“en_US.UTF-8”,我们找到了以下一行。
#en_US.UTF-8 UTF-8
按下Enter
,此时光标的位置在这一行的“e”的位置。按方向左键,再输入“x
”,将这一行开头的“#”删除。
en_US.UTF-8 UTF-8
再一次输入“/
”,进入搜索功能,输入“zh_CN.UTF-8”,按下Enter
。按方向左键,再输入“x
”,将“#”删除。
zh_CN.UTF-8 UTF-8
随后输入“:
”,进入命令模式,输入“wq
”,按下Enter
,保存并退出 vim 软件环境。
接下来,输入如下命令,生成 locale。
locale-gen
我们再使用 vim 创建并编辑 locale.conf,设置 locale。
vim /etc/locale.conf
这是一个空文件。进入 vim 程序环境时,默认进入了命令模式,此时无法插入字符。我们首先按下“i
”键,进入插入模式。请输入如下字符。
LANG=en_US.UTF-8
然后按 Esc
,退出插入模式。再输入“:
”,进入命令模式,输入“wq
”,按下Enter
,保存并退出 vim 软件环境。
最后,我们创建并编辑 vconsole.conf,设置终端的默认字体。我们已经在安装开始时设置过终端字体,但是重启之后设置将失效,为了让设置永久生效,我们需要把设置写在文件中。请输入如下命令。
vim /etc/vconsole.conf
请用相同的方法输入如下字符,请在“FONT=
”后面输入您在第 7 节设置终端字体时选择的字体,保存并退出。
FONT=ter-132b
11 网络配置
请编辑 hostname[33] 文件,设置主机名,这将成为您计算机的名字。这篇文章[34]为设置主机名提供了一些建议。
[root@archiso ~]# vim /etc/hostname
----------------------------------
我的主机名
然后,请安装一个网络管理器,笔者推荐使用 NetworkManager。
pacman -S networkmanager
NetworkManager 附带一个守护程序。在 Arch Linux 中,守护程序由 systemd 管理。systemd 是非常重要的系统程序,我们在下一篇文章中会详细介绍它的用法。现在我们使用 systemd 设置 NetworkManager 开机自动启动。
systemctl enable NetworkManager.service
12 root 密码
root 用户是 Linux 系统中权限最高的用户,有些敏感的操作必须通过 root 用户进行,比如使用 pacman。我们之前进行所有的操作也都是以 root 用户进行的。也正是因为 root 的权限过高,如果使用不当会造成安全问题,所以我们在下一篇文章中会新建一个普通用户来进行日常的操作。在这里我们需要为 root 用户设置一个密码。[35]
请输入如下命令设置 root 密码。
[root@archiso ~]# passwd
New password: # 请输入密码,这里不会显示“*”,这是正常现象
Retype new password:
passwd: password updated successfully
13 Arch Linux 单系统的引导加载程序安装
首先,安装必要的软件包。
pacman -S grub efibootmgr
安装 GRUB 到计算机。
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
如果您在挂载分区时,将 esp 分区挂载到了 /efi 或者 /boot/efi,请在 --efi-directory 选项中作相应变动。如果您完全按照本教程操作,就不用作改变。
如果报告
Installation finished. No error reported.
说明安装成功,可以执行以下步骤。否则请检查错误。
最后生成 GRUB 配置,即可。
grub-mkconfig -o /boot/grub/grub.cfg
14 安装后配置
root 用户的权限过高,造成对系统灾难性的损坏的风险因此较高,我们因此新建一个用户:
useradd -m -G wheel username
将其中的 username 改为你要的名字,比如
useradd -m -G wheel jiewei
执行
passwd username
来设置密码,与先前设置 root 密码一样。
不使用 root 时如何获得 root 权限呢?需要在命令前加上 sudo,而 sudo 也需要先安装:
pacman -S sudo
之后来配置 sudo 使所有用户都能使用;执行
ln -s /usr/bin/vim /usr/bin/vi
和
visudo
进入 Vim 编辑器,找到
# %wheel ALL=(ALL) ALL
一行,把「#」去掉,保存退出。
配置好之后执行
reboot
来重启。重启之后我们就可以使用新创建的用户;输入用户名和密码,进入系统。
15 额外安装
15.1 安装常用软件包
基础开发包
sudo pacman -S base base-devel make git
安装yay
对于本指南,我使用了稳定版。现在,进入 /opt
目录并克隆 git 仓库。
cd /opt
sudo git clone https://aur.archlinux.org/yay.git
更改源目录的所有者。将 debugpoint
替换为你的用户名。
sudo chown -R debugpoint:users ./yay
如果你不知道用户或组,可以使用以下示例查找用户和组。
id debugpoint
进入目录并编译。
cd yay
makepkg -si
这样就完成了 Arch Linux 中 Yay 的安装。
go换源
Yay 是 “Yet Another Yogurt” 的缩写(LCTT 校注:Yogurt 是另外一个已经停止维护的 AUR 助手)。从技术上讲,它是用 Go 编程语言 编写的 pacman 封装器和 AUR 助手。它是当今最流行的 Arch 用户仓库(AUR) 助手。使用 Yay,你可以利用庞大的 Arch 用户软件包库并轻松编译和安装任何软件。
但是由于 go 语言的仓库在国外,我们在安装 Yay 时可能会面临网络问题而导致安装缓慢或无法安装,这时我们就需要将 go 的默认源换至国内源
echo "export GO111MODULE=on" >> ~/.profile
echo "export GOPROXY=https://goproxy.cn" >> ~/.profile
source ~/.profile
安装zsh
yay -S zsh
更改默认终端
chsh -s /bin/zsh
或者编辑/etc/passwd
文件,修改用户名后面的默认Shell
即可。
安装oh-my-zsh-git
archlinuxcn源有打好的包,或者使用AUR
安装。
yay -S oh-my-zsh-git
默认配置
cp /usr/share/oh-my-zsh/zshrc ~/.zshrc
这时候打开终端软件,应该就会默认进入zsh
了。
15.2 dwm、st
安装准备
# 安装xorg依赖
sudo pacman -S xorg xorg-xinit
# xorg-xinit和配置文件有关
# 下载一个壁纸包(可选)
sudo pacman -S archlinux-wallpaper
# 下载的壁纸在
/usr/share/backgrounds/archlinux/
# 用壁纸要安装feh看图工具,用来设置壁纸
sudo pacman -S feh
# 安装sudo
sudo pacman -S sudo
# 安装git
sudo pacman -S git
拉取 dwm 和 st 源码
# 搞个src文件夹方便管理
cd && mkdir src && cd src
# 拉取dwm源码
git clone https://git.suckless.org/dwm
# 我还拉取了st(终端),dmenu
git clone https://git.suckless.org/st
git clone https://git.suckless.org/dmenu
安装
- cd 到对应目录
- 使用 make clean install 安装