这周突然想给我的小平板装一个Arch玩玩。既然有这个想法,那就趁晚上有空来试一试。
小平板的硬盘里有个Windows操作系统。因为比较担心新装的Arch哪天又被突然折腾挂掉,所以打算把Windows的分区缩一缩,装双系统。
1.事前准备
1.1.刻录安装U盘
在启动小平板开工前,先要准备一个装系统用的U盘。
首先去Arch Linux官网获取最新版的安装镜像:https://archlinux.org/download/
然后把它刻录到U盘上。我的U盘装了Ventoy启动器,实际上只要把镜像复制进去就行。
1.2.压缩Windows卷
接下来启动现有的Windows系统,在磁盘管理里面把C盘压缩点空间给即将安装的Arch Linux。
2.安装步骤
准备完成,重启小平板,按F12或者其他对应按键进入启动项选择界面,选择U盘启动,加载Arch安装镜像。
原本打算试试archinstall安装脚本的,鼓捣片刻后发现它目前(2025年11月)似乎不支持LVM分区操作,那就还是用老方法手动安装吧。
2.1.连接无线网
Arch安装镜像启动完成后,先连接网络。
小平板只有无线网卡,因此就通过iwd工具进行连接。
输入iwctl回车,进入其命令行工具。
接着执行device list命令列出现有无线网卡设备。一般来说都叫wlan0。下面的命令就以这个设备名为例。
然后执行station wlan0 scan命令,让无线网卡搜索一下周边的SSID。
搜索完成后,执行station wlan0 get-networks命令,列出搜到的SSID。
从列表中选择自己的SSID进行连接,以叫YourWLAN的SSID为例,命令是station wlan0 connect YourWLAN。
如果有密码,会提示输入密码。
连接上后,可以通过station wlan0 show命令查看无线网连接情况。如果正常连接,就可以通过quit命令退出iwd命令行工具。
2.2.开启SSH
小平板连上网后,就可以用另一台电脑SSH上去操作了。好处是命令可以直接从ArchWiki粘贴,不用手敲。
执行以下命令编辑SSHD配置文件,把PermitRootLogin一行取消注释,并改成PermitRootLogin yes。
nano /etc/ssh/sshd_config
编辑完后,按Ctrl+O并回车保存,按Ctrl+X退出。
配置文件修改完毕,执行以下命令重启SSHD服务。
systemctl restart sshd
最后再执行以下命令给root用户设置个密码,就可以通过SSH连接了。
passwd
2.3.硬盘分区
通过SSH连上小平板,正篇开始。
装系统第一步,先给硬盘分区。执行以下命令看看现有硬盘的设备名字。
lsblk
小平板的输出如下。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 238.5G 0 disk
├─nvme0n1p1 259:1 0 300M 0 part
├─nvme0n1p2 259:2 0 16M 0 part
├─nvme0n1p3 259:3 0 150G 0 part
所以它的设备名就是nvme0n1。现有的3个分区按顺序分别是EFI分区、Windows保留分区、Windows系统的C盘。
这些分区都不需要动到,只要用剩余的空闲空间给新装的Arch分区就行。
执行以下命令进入分区工具。
gdisk /dev/nvme0n1
先创建一个1G的分区,之后挂载到Arch的/boot目录。步骤如下。
按n创建一个新分区。分区号保持默认回车,起始扇区保持默认回车,结束扇区输入+1G回车,分区ID保持默认回车。
剩下的空间我打算创建LVM分区。虽然现在也只是把所有空间都划给了根目录,但是说不定后面会一拍脑袋把比如/opt单独分出来呢。
还是n创建一个新分区。分区号保持默认回车,起始扇区保持默认回车,结束扇区保持默认回车,分区ID输入8e00(Linux LVM)回车。
分区完成后,按p输出分区表。
Number Start (sector) End (sector) Size Code Name
1 4096 618495 300.0 MiB EF00 EFI system partition
2 618496 651263 16.0 MiB 0C01 Microsoft reserved ...
3 651264 315234958 150.0 GiB 0700 Basic data partition
4 315236352 317333503 1024.0 MiB 8300 Linux filesystem
5 317333504 500117503 87.2 GiB 8E00 Linux LVM
看着没问题,就按w保存分区表。
分区完成后,将新建的2个分区格式化或者创建LVM后格式化。
先操作1G的那个分区,直接格式化即可。我选择的是格式化成btrfs文件系统。
mkfs.btrfs /dev/nvme0n1p4
LVM分区就要先创建物理卷,再创建卷组,最后创建逻辑卷了。命令会多几条。我这里只创建了一个逻辑卷(/dev/archvg/root),并把所有空间都给它。
pvcreate /dev/nvme0n1p5 vgcreate archvg /dev/nvme0n1p5 lvcreate -n root -l +100%free archvg mkfs.btrfs /dev/archvg/root
2.4.挂载分区
分区创建格式化完成后,依次挂载到/mnt目录下。
新创建的/dev/archvg/root分区作为系统的根目录分区,直接挂载到/mnt目录。
新创建的/dev/nvme0n1p4分区作为系统的/boot分区,挂载到/mnt/boot目录。
原有的/dev/nvme0n1p1分区作为这块硬盘的EFI分区,需要复用一下,挂载到/mnt/boot/efi目录。
mount /dev/archvg/root /mnt mount /dev/nvme0n1p4 /mnt/boot --mkdir mount /dev/nvme0n1p1 /mnt/boot/efi --mkdir
2.5.调整软件源
在安装系统前,先把软件源调整成比较快一点的。reflector -c选项可以指定某个国家或地区的软件源,方便缩小范围筛选。
mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak reflector -c cn --latest 5 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
2.6.安装基础包
软件源调整完成后,就可以开始装系统了。执行以下命令安装Arch Linux的一些基础包。
pacstrap -K /mnt base linux linux-firmware intel-ucode sof-firmware btrfs-progs lvm2 gdisk networkmanager nano vi vim grub efibootmgr refind bash-completion sudo openssh git fakeroot reflector
这些包的用途如下:
base:Arch Linux基础包
linux:Linux内核
linux-firmware:Linux固件
intel-ucode:Intel微码,如果是AMD的处理器则换成amd-ucode
sof-firmware:音频固件
btrfs-progs:btrfs文件系统相关的工具集
lvm2:LVM相关的工具集
gdisk:分区工具
networkmanager:网络管理工具
nano、vi、vim:命令行编辑器,其实装其中一个就行,但我全都要
grub:Linux引导程序
efibootmgr:UEFI启动项管理工具
refind:同样是个引导程序,其实也可以只装其中一个
bash-completion:Bash Shell命令自动补全工具
sudo:让其他用户以root身份执行命令的工具
openssh:SSH服务端及客户端
git:对我来说只是用来拉取仓库的
fakeroot:编译时模拟root权限的工具
reflector:调整软件源的工具
2.7.生成分区表
执行以下命令给新装的Arch系统生成一个分区表。
genfstab -U /mnt >> /mnt/etc/fstab
2.8.更改根目录
执行以下命令切换根目录到新装的Arch系统根目录下。接下来的操作主要是对新系统的设置。
arch-chroot /mnt
2.9.用户设置
首先给新系统的root用户设置一个密码。
passwd
然后修改/etc/sudoers配置文件。这个文件比较官方的打开方式是下面这个命令,调用的是vi编辑器。
visudo
输入/%wheel回车进行搜索,找到# %wheel ALL=(ALL:ALL) ALL这一行,按Del键删掉行首的井号注释。然后输入:wq回车保存退出。
接下来就能创建带sudo权限的用户了。执行以下命令创建一个叫omega的用户,将该用户加入wheel附加组里。
useradd -m -G wheel omega passwd omega
2.10.主机名设置
给系统起一个主机名。这里就简单一点叫localhost。
echo 'localhost' >> /etc/hostname
2.11.时间设置
调整系统时区,例如调整为UTC+8的时区。
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
将系统时间同步到硬件时钟。对于双系统的环境,会造成Windows和Arch上面的时间不一致。建议通过改Windows注册表的方式进行处理,影响比较小。
hwclock --systohc
顺便也把NTP开一下。
timedatectl set-ntp true
2.12.本地化设置
我比较习惯在装完桌面环境后再调整本地化设置,因此这里就用默认的英文了。
echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen locale-gen echo 'LANG=en_US.UTF-8' >> /etc/locale.conf
虽然在用的键盘是标准英文布局,但还是生成一个键盘布局配置文件吧。
echo 'KEYMAP=us' >> /etc/vconsole.conf
2.13.生成初始RAM文件系统镜像
因为我分区时用了LVM,就要在mkinitcpio.conf配置文件里面加上lvm2的钩子了。执行以下命令编辑该配置文件。
nano /etc/mkinitcpio.conf
按Ctrl+W并输入HOOKS=(回车搜索几次,直到搜到没被注释掉的那一行,在括号里面加上lvm2后按Ctrl+O保存,Ctrl+X退出。
加上钩子后,就可以生成这个初始RAM文件系统镜像了。
mkinitramfs -P
2.14.安装启动器
其实我是想只安装一个refind的,不过为了某些可能并不存在的兼容性,决定还是把惯用的grub2也装上。这样也不用特意改配置文件,就能让2个启动器分别正常工作。
grub-install /dev/nvme0n1 grub-mkconfig -o /boot/grub/grub.cfg refind-install
2.15.配置ZRAM交换空间
配置udev规则生成一个ZRAM分区,作为交换空间使用。小平板的内存大小是16GB,ZRAM分4GB也足够了。
echo 'zram' >> /etc/modules-load.d/zram.conf
echo 'ACTION=="add", KERNEL=="zram0", ATTR{initstate}=="0", ATTR{comp_algorithm}="zstd", ATTR{disksize}="4G", TAG+="systemd"' >> /etc/udev/rules.d/99-zram.rules
echo '/dev/zram0 none swap defaults,discard,pri=100,x-systemd.makefs 0 0' >> /etc/fstab2.16.配置系统启动项
好像装的那些包里面需要开机自启的只有NetworkManager。
systemctl enable NetworkManager
2.17.重启系统
至此,最小安装的Arch Linux算是配置好了。执行以下命令退出chroot环境。
exit
然后重启电脑。
reboot
重启完成后选择启动到Arch系统,就可以进入新装的系统继续折腾了。
3.个人吐槽
这篇文章里面的操作实际上用不着半小时就能搞定,写这篇文章却花了3倍多的时间。
写完后翻了翻上面的内容,感觉这次的Arch装得又新又旧的。
防火墙软件我还没装,后面应该还是会用firewalld,因为它的命令我还记得怎么敲(笑)。
本来还打算接着写桌面环境的安装操作的,看了看篇幅还是在下一篇文章里写吧。
对于文章中提到的双系统时间不一致问题,可以启动到Windows系统里,以管理员权限打开CMD或者PowerShell,粘贴下面的命令,重启一下就可以解决。
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1


0 Comments