Arch Linux 是通用 x86-64 GNU/Linux 发行版,并采用滚动升级模式。初始安装的Arch只是一个基本系统,但它有着丰富的软件资源,这也对用户个性化配置系统提供了一个好的平台。
一、安装环境准备
1. 确保处理器是否支持并开启虚拟化技术
参考 Ubuntu KVM 虚拟机安装 第一部分
2. 安装 QEMU+KVM 环境相关软件包
sudo apt install qemu qemu-utils qemu-kvm libvirt-daemon-system virt-manager
3. 安装虚拟机的 UEFI 固件 OVMF
sudo apt install ovmf
4. 配置虚拟机网络连接
这里用 NAT 方式进行网络连接,打开虚拟机系统管理器(virt-manager),添加一个叫做 network 的网络连接,并设置好 IP 地址段
5. 下载 Arch Linux ISO 镜像
下载地址:https://archlinux.org/download/ ,注意找中国的服务器下载。
ps:官方wiki文档有比较详细的安装教程,推荐学习。
二、创建虚拟机
创建虚拟机有 virt-manager 图形化工具安装方式和 virt-install 命令安装方式,这里以命令方式创建:
1.创建一个虚拟机磁盘镜像
$ qemu-img create -f qcow2 archlinux.qcow2 40G
2.创建 Arch Linux 虚拟机
$ sudo virt-install --name archlinux \
--os-variant=archlinux \
--memory 2048 --vcpus 2 \
--disk path=./archlinux.qcow2 \
--cdrom=/media/hollowman/软件/ISO/archlinux-2022.04.01-x86_64.iso \
--boot loader=/usr/share/qemu/OVMF.fd \
--virt-type kvm \
--network network=network,bridge=virbr1
选项说明:
--name # 创建虚拟机的名称
--os-variant # 创建虚拟机的类型
--memory # 虚拟机的内存大小
--vcpus # 虚拟机CPU的数量
--cdrom # 虚拟机的CD,可接ISO镜像路径
--disk # 指定虚拟机硬盘路径
--boot # 指定启动的BIOS,这里直接加载支持 UEFI 启动的固件 OVMF.fd
--virt-type # 选择hypervisor,如kvm、qemu、xen等;可⽤的参数可以通过 virsh capabilities 命令获取
--network # 添加网卡,注意与你们虚拟机创建的网络链接保持一致
virt-install 安装选项太多太杂,且同一个选项的表达方式也有多种,这是我多次测试后选择的能正常支持UEFI启动的安装命令,目前能用,但可能会因 qemu,ovmf,virt 等软件的升级而导致个别命令失效。
三、安装虚拟机
接下来,会可进入 Arch Linux 安装虚拟机系统的界面了,这是一个命令行安装的界面:
(注:命令安装虚拟机会自动通过 virt-viewer 监视器连接,我重新用 virt-manager 打开监视器,这样比较 cool 一些)
注意: 此时的根目录位于加载iso的安装环境(可以看到操作符为:root@archiso~#),并且默认情况下已经预配置好并启用了 systemd-networkd、systemd-resolved、iwd 和 ModemManager。不过,我们需要安装系统的磁盘镜像,此时还没有进行分区,因此还需要进行一些安装操作才能正常使用。
ps:setfont /usr/share/kbd/consolefonts/sun12X22.psfu.gz
可将终端字体设置为更大号。
1.连接网络
ISO 安装环境已经包含的基础的联网功能。如果使用有线网络,会自动通过DHCP自动获取IP地址并接入网络,如果使用无线网络,可以通过iwctl工具来完成网络配置。
如果是有线网络,我们用 ip address
可查看到网络设备的ip地址:
root@archiso~# ip address
可用 ping
检测一下网络连接:
root@archiso~# ping -c 4 archlinux.org
如果是无线网络,可以通过输入iwctl
,进入iwctl工具的命令端来连接网络:
[iwd]# device list #打印无线设备列表
[iwd]# station wlan0 scan #搜索无线网络
[iwd]# station wlan0 get-networks #获取无线网络列表
[iwd]# station wlan0 connect wifiname #链接无线网络
[iwd]# exit #返回主操作符界面
2.更新镜像源列表
archlinux的镜像源位于/etc/pacman.d/mirrorlist
文件中,但要想能获得最快的下载速度,就要将访问速度快的服务器放在最上面。
两种方法:
第一种方法:使用reflector
命令自动生成(推荐)镜像源:
root@archiso~# reflector --country China --age 48 --sort rate --protocol https --save /etc/pacman.d/mirrorlist
第二种方法:直接编辑/etc/pacman.d/mirrorlist
,将指定国产镜像源(如清华的镜像源)添加到最上方
root@archiso~# vim /etc/pacman.d/mirrorlist
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch #将此源添加到最上方
3.同步远程镜像源
root@archiso~# pacman -Syy
4.更新时区并同步系统时间
可通过 timedatectl
命令来实现,注意:这里可不需要设置时区,因为这里同步的是ISO安装环境的时间。
[root@archiso /]# timedatectl set-ntp true #同步时间
[root@archiso /]# timedatectl status #查看时间服务状态,检验是否设置成功
5.建立硬盘分区
用fdisk -l
查看设备,找到磁盘设备名,我这里查看后是/dev/vda
root@archiso~# fdisk -l
archlinux用uefi启动,至少需要三个分区(efi分区,swap交换分区和根分区/)
用fdisk /dev/vda
来对/dev/vda进行分区操作:
root@archiso~# fdisk /dev/vda
这里创建:/dev/vda1:500M,/dev/vda2:2G,/dev/vda3:余下的空间作为根目录,有关交互命令:
交互命令 | 代表的含义 |
---|---|
m | 帮助 |
g | 创建格式的硬盘 |
n | 创建分区 |
w | 保存配置 |
6.格式化分区
root@archiso~# mkfs.vfat -F 32 /dev/vda1 #/dev/vda1创建为vfat格式,作为uefi启动分区
root@archiso~# mkfs.ext4 /dev/vda3 #/dev/vda3创建为ext4格式,作为根分区
root@archiso~# mkswap /dev/vda2 #/dev/vda2创建为交换分区
root@archiso~# swapon /dev/vda2 #启用交换分区
7.挂载分区
root@archiso~# mount /dev/vda3 /mnt #根分区挂在到/mnt目录
root@archiso~# mkdir -p /mnt/boot/efi
root@archiso~# mount /dev/vda1 /mnt/boot/efi #efi分区挂载到/mnt/boot/efi目录
8.安装系统及必需的软件包
注意,这里是用pacstrap
脚本进行安装
root@archiso~# pacstrap /mnt linux linux-firmware linux-headers base base-devel vim bash-completion
安装系统的包组有:linux
、linux-firmware
和linux-headers
必备的软件包组有:基础软件包组base
、 开发包组base-devel
(内含gcc,make,sudo等基础开发包)、 编辑器vim
、代码自动补全的包bash-completion
9.生成fstab文件
用以下命令生成 fstab 文件 (用 -U 或 -L 选项设置 UUID 或卷标):
root@archiso~# genfstab -U /mnt >> /mnt/etc/fstab
强烈建议在执行完以上命令后,检查一下生成的 /mnt/etc/fstab 文件是否正确。
root@archiso~# cat /mnt/etc/fstab
至此,基本的系统已经安装到了磁盘镜像中,只不过这个系统算是最小化安装,需要进行本地化配置、网络配置、个性化安装等操作才可以形成一个可用的个性化系统。
四、系统安装完后的基础配置
1.切换根目录
之前的操作,根目录位于 ISO 的安装环境,而对磁盘镜像系统的一些配置可以切换到其本身根目录(/dev/vda3),也就是 ISO 安装环境的 /mnt 目录。
root@archiso~# arch-chroot /mnt
[root@archiso /]#
注意看,切换root目录后,命令提示符发生了变化。
2.同步远程镜像
因为之前配置过更新镜像源列表,pacstrap安装系统时已经将镜像源列表同时复制到了新系统中,不需要再次配置。
root@archiso~# pacman -Syy
3.设置时区:
第一种方法(推荐):
使用
timedatectl
命令
[root@archiso /]# timedatectl set-timezone Asia/Shanghai #设置时区为上海(东八区)
[root@archiso /]# timedatectl set-ntp true #同步时间
[root@archiso /]# timedatectl status #查看时间服务状态,检验是否设置成功
第二种方法:
格式:
ln -sf /usr/share/zoneinfo/Region(地区名)/City(城市名) /etc/localtime
[root@archiso /]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #将时区设为上海
[root@archiso /]# hwclock --systohc #生成 /etc/adjtime
4.字符编码设置
此时的系统并没有配置字符编码,也就无法正确显示相关字符,因此,需在这两个文件进行设置:locale.gen
与 locale.conf
。
编辑/etc/locale.gen
,然后取消掉 en_US.UTF-8 UTF-8
和 zh_CN.UTF-8 UTF-8
前的注释(#)。
[root@archiso /]# vim /etc/locale.gen
接着执行 locale-gen
以生成 locale 信息:
[root@archiso /]# locale-gen
然后创建 locale.conf
文件,并编辑设定 LANG 变量,比如:
[root@archiso /]# vim /etc/locale.conf
LANG=en_US.UTF-8
将系统 locale 设置为 en_US.UTF-8 ,系统的 log 就会用英文显示,这样更容易判断和处理问题;
设置的 LANG 变量需与 locale 设置一致,否则会出现错误Cannot set LC_CTYPE to default locale: No such file or directory
;
不推荐在此设置任何中文 locale,会导致 tty 乱码。
5.键盘布局修改(一般不需要修改)
制台键盘布局默认为 us(美式键盘映射),如果你的键盘布局不是这个,则需要修改。
列出所有可用的键盘布局,可以使用:
[root@archiso /]# ls /usr/share/kbd/keymaps/**/*.map.gz
如果您想要更改键盘布局,如德语键盘布局(文件名为 sunt5-de-latin1.map.gz
),你只需要将与该键盘布局一致的文件名添加进 loadkeys,但请省略路径和扩展名。
[root@archiso /]# loadkeys de-latin1
6.主机名设置
[root@archiso /]# vim /etc/hostname
hollowman.cn #添加你要设置的主机名
7.Initramfs(一般不需创建)
通常不需要自己创建新的 initramfs,因为在执行 pacstrap 时已经安装 linux,并且已经运行过 mkinitcpio 了,因此,一般来说这一步可略过。
对于 LVM、 system encryption 或 RAID 等分区配置,请修改 mkinitcpio.conf 并用以下命令重新创建一个 Initramfs:
[root@archiso /]# mkinitcpio -P
8.设置Root密码
[root@archiso /]# passwd
9.安装引导程序
只有安装 Linux 引导加载程序,才能在安装后启动系统,可以使用的的引导程序已在 启动加载器 中列出,请选择一个安装并配置它,GRUB (简体中文) 是最常见的选择。
1) 安装软件包 grub
和 efibootmgr
[root@archiso /]# pacman -S grub efibootmgr efivar intel-ucode
2) 用grub-install命令命令将grub引导程序安装(写入)到磁盘镜像:
[root@archiso /]# grub-install --target=x86_64-efi --efi-directory=/boot/efi /dev/vda #或者 grub-install /dev/vda
3) 生成主配置文件
[root@archiso /]# grub-mkconfig -o /boot/grub/grub.cfg
如果需要自定义配置选项,可以先修改/etc/defautl/grub
文件。
警告: 这是安装也至关重要的一步,请按上述步骤正确安更新镜像源列表装好引导加载程序后再重新启动。否则将无法正常进入系统。
10. 安装网络管理工具 networkmanager
并设置为开机启动
[root@archiso /]# pacman -S networkmanager
[root@archiso /]# systemctl enable NetworkManager
11.安装 openssh
服务并设置为开机启动
[root@archiso /]# pacman -S openssh
[root@archiso /]# systemctl enable sshd
五、重启和使用
输入 exit 或按 Ctrl+d 退出磁盘镜像根目录 ,回到 ISO 安装环境
输入 reboot 重启,需移除 ISO,否则仍会从 ISO 启动
接下来,输入用户名 root 和密码,进入安装好的 Arch Linux 系统,就可以进行桌面环境及软件生态的配置了。
六、启动后虚拟机自动进入 UEFI Interactive Shell 怎么办?
虚拟机启动后,自动寻找启动分区(/dev/vda1)下面的 EFI\boot\ 目录下的引导文件(如x86_64平台的引导文件一般为bootx64.efi),而启动分区在 UEFI Interactive Shell 界面一般以 FS0:
的盘符形式存在。
首先,进入 FS0: 盘符
Shell> FS0:
FS0:\>
查看盘符下面的目录应该有EFI目录,接着进入EFI目录,在查看目录内文件
FS0:\> ls
EFI
FS0:\> cd EFI
FS0:\EFI\> ls
不出意外的话,没有发现boot目录,接下来的工作就是创建boot目录,并将arch目录内的grubx64.efi复制到boot目录中并重命名为bootx64.efi
FS0:\EFI\ mkdir boot
FS0:\EFI\ cp EFI\grubx64.efi boot\bootx64.efi
Copying FS0:\EFI\arch\grubx64.efi->FS0:\EFI\boot\bootx64.efi
-[ok]
再次重启就能找到启动文件启动,也就不会进入 UEFI Interactive Shell 了。
我们也可以在 FS0:
目录下直接输入 EFI\arch\grubx64.efi
来启动系统,然后在系统的 /boot/efi/EFI
目录内创建 boot 目录,并完成复制引导文件的工作。最后系统/boot/efi/EFI
目录内的文件应该是这样的:
[root@hollowman ~]# tree /boot/efi/EFI/
/boot/efi/EFI/
├── arch
│ └── grubx64.efi
└── boot
└── bootx64.efi