VirtualBox 6 安装 ArchLinux 踩坑记录
我翻开 WiKi 一查,这 WiKi 没有年代。歪歪斜斜的每页上都写着「安装教程」几个字,
我横竖睡不着,仔细看了半夜,才从字缝里看出来,满篇上都写着两个字「劝退」!
勿谓言之不预也
本文安装过程基于本文撰写时,ArchWiKi 上的 Installation guide
由于 ArchLinux 更新速度较快,本文只能作为参考,在安装时请以 ArchWiKi 为准
本文是:
- 我在 VirtualBox 上安装 ArchLinux 时的记录
- 安装 ArchLinux 时的参考
本文不是:
- ArchLinux 安装教程
金科律玉的教科书,颐使气指的教师爷
基本过程
- 创建虚拟机:新建虚拟机,调整设置
- 安装前的准备:启动系统镜像,联网,调整时间,硬盘分区及格式化
- 安装系统:挂载分区,选择镜像源,开始安装
- 重启前的配置:生成 fstab 配置,时区配置,本地化配置,网络配置,设置 root 密码,安装、配置引导程序
- 重启后的配置:新建用户,安装桌面环境等
创建虚拟机
新建虚拟机
按正常步骤新建虚拟机,选择「Arch Linux (64-bit)」,内存、硬盘等按需配置
调整设置
「系统」选项卡中勾选「启用 EFI(只针对某些操作系统)」
如果要安装桌面环境,虚拟机设置中「显卡控制器」建议选择「VBoxVGA」,3D 加速和 2D 加速都不要开,无视下面的「发现无效设置」即可
如果选择默认的「VMSVGA」 需要额外手动安装驱动,并且自动分辨率不能正常工作,截至本文撰写时没有找到合适的解决方法
其他设置项按需设置即可,设置完毕后启动虚拟机
安装前的准备
加载 ArchLinux ISO 后会自动启动到安装环境
联网
在默认的「网络地址转换(NAT)」网卡下应该会自动联网,如果没有联网请查阅 ArchWiKi 手动联网
由于要下载必要的软件包,必须正常联网才能继续安装
调整时间
在正常联网的情况下,使用 timedatectl set-ntp true
即可自动校准时间
由于下载时可能需要验证 https 证书,必须正确校准时间才能继续安装
硬盘分区及格式化
使用 fdisk -l
可以查看磁盘信息
VirtualBox 中一般使用 /dev/sda
磁盘
本文使用最简单的分区配置,即:
- 512 MB ESP(EFI 引导分区),fat32
- 剩下的全部 /(根目录),ext4;
没有 swap 分区是因为我喜欢用 systemd-swap 动态管理 swap
硬盘分区
使用 fdisk /dev/sda
进入 fdisk 来编辑 /dev/sda 的分区信息
输入 m 可以查看 fdisk 的帮助
输入 w 写入更改前所有修改均不会保存
- 输入 g 新建一个 GPT 分区表
- 输入 n 建立第一个分区,Partition number 和 First sector 不用填写(使用默认值),Last sector 输入 +512M,依据分区大小自动计算终止扇区
- 重复第 2 步,但不填写 Last sector,将所有的剩余空间分给第二个分区
- 输入 t 修改分区类型,Partition number 输入 1 选择第一个分区,Partition type 输入 1 将类型修改为 EFI System
- 输入 p 检查分区结果
- 确认正确后输入 w 写入更改
硬盘格式化
使用 mkfs.fat -F32 /dev/sda1
将 /dev/sda 磁盘的第一个分区格式化为 FAT32 格式
使用 mkfs.ext4 /dev/sda2
将 /dev/sda 磁盘的第二个分区格式化为 ext4 格式
安装系统
挂载分区
我们将新系统的 / 挂载到 /mnt 来进行相关操作:
- 使用
mount /dev/sda2 /mnt
将 /dev/sda2 分区挂载到 /mnt - 使用
mkdir /mnt/boot
在 /dev/sda2 分区新建 boot 目录 - 使用
mount /dev/sda1 /mnt/boot
将 /dev/sda1 分区挂载到 /mnt/boot
选择镜像源
为了提高软件包的下载速度,选择国内的镜像源来下载
编辑 /etc/pacman.d/mirrorlist
,在其前两行加入
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch |
来使用清华大学和中国科技大学提供的镜像源
开始安装
ArchLinux 本质上是由一个个的软件包组成的,系统的所有组成部分包括内核都是软件包
所以 ArchLinux 的安装本质上就是将系统必须的软件包安装到新系统的根
而 ArchLinux 的软件包本质就是带有安装脚本的压缩包,软件安装的过程简单来说就是按照安装脚本将文件解压到对应的目录
使用 pacstrap 工具即可完成这些操作
pacstrap /mnt base base-devel linux linux-firmware dhcpcd vim |
这条命令将会把 base 元包、base-devel 包组、linux、linux-firmware、dhcpcd、vim 安装到 /mnt
其中 base 元包是系统的必要组成部分(注意:原 base 包组已经被 base 元包替代,其中将不再包含 linux 内核,故需手动安装)
base-devel 包组包含一些重要的工具,比如 sudo 等
dhcpcd 用来以 DHCP 方式获取 IP 等信息进行联网
vim 是我常用的文本编辑器
当然,除 base、linux、linux-firmware 外,其他软件也可以等 chroot 到新系统后再安装
安装需要进行一段时间,请坐和放宽
重启前的配置
目前,ArchLinux 的安装已经结束了,但是这仍然是一个无法启动的系统,还需要进一步的配置
生成 fstab 配置
fstab 文件可用于定义磁盘分区,各种其他块设备或远程文件系统应如何装入文件系统
自动生成 fstab 配置文件
genfstab -U /mnt >> /mnt/etc/fstab |
生成成功后检查 /mnt/etc/fstab
文件是否正确
切换根目录
因为要对新系统进行配置,我们需要先将环境切换到新系统
在 Linux 系统中,可以使用 chroot 将一个目录指定为根目录,但是为了正常使用 chroot 后的系统,往往还需要手动挂载 /dev
、/run
等目录
为了快速的完成这些工作,ArchLinux 提供了 arch-chroot 工具
arch-chroot /mnt |
切换成功后命令提示符会发生明显的变化
时区配置
将时区配置为中国标准时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime |
设置硬件时钟
hwclock --systohc |
本地化配置
在 /etc/locale.gen
中取消 en_US.UTF-8 UTF-8
和 zh_CN.UTF-8 UTF-8
的注释
之后运行 locale-gen
由于还没有安装中文字体,为了避免出现豆腐块,先设置语言为英文
新建 /etc/locale.conf
文件,写入 LANG=en_US.UTF-8
网络配置
新建 /etc/hostname
文件,写入主机名
假设主机名为 myhostname
编辑 /etc/hosts
文件,写入
127.0.0.1 localhost |
设置 root 密码
使用 passwd
命令设置 root 用户密码
安装、配置引导程序
使用 GRUB 作为引导程序
安装引导程序
因为使用 EFI 模式启动,除了 GRUB 本体之外还要安装 efibootmgr
pacman -Syu grub efibootmgr |
将 GRUB 安装到引导分区
grub-install --efi-directory=/boot |
配置引导程序
GRUB 可以自动生成配置文件
grub-mkconfig -o /boot/grub/grub.cfg |
重启
至此,ArchLinux 安装已经完全结束,重启后即可使用
首先,使用 exit
退出 chroot 环境
使用 umount -R /mnt
卸载挂载的分区
由于安装镜像还挂载在光驱上,为了避免重启后进入安装环境,可以先关机 poweroff
将镜像卸载
重启后的配置
以下配置按照个人喜好酌情配置即可
联网
联网并设置开机自动联网
systemctl enable --now dhcpcd |
使用 vim 代替 vi
将 vi 软链接到 vim
ln -s /usr/bin/vim /usr/bin/vi |
新建用户
新建一个用户
useradd -m -G wheel 用户名 |
给新用户设置密码
passwd 用户名 |
赋予新用户新用户 sudo 权限
使用 visudo
来编辑 sudo 的配置,避免因为配置问题导致 sudo 彻底不可用
找到 root ALL=(ALL) ALL
,在其下一行加入 用户名 ALL=(ALL) ALL
并保存
之后可以 exit
后使用新用户登录
桌面环境
安装 KDE Plasma 作为桌面环境
sudo pacman -Syu plasma kde-applications |
KDE Plasma 默认使用 Network Manager 作为网络管理器
启动 Network Manager 并设置开机自动启动 Network Manager
sudo systemctl enable --now NetworkManager |
KDE Plasma 默认使用 SDDM 作为显示管理器
启动 SDDM 并设置开机自动启动 SDDM
sudo systemctl enable --now sddm |
VirtualBox 虚拟机增强功能
要使用共享剪贴板,文件拖放等功能,需要安装增强功能
sudo pacman -Syu virtualbox-guest-utils virtualbox-guest-modules-arch |
安装后重启
添加 ArchlinuxCN 软件源
参考 tuna 的 ArchlinuxCN 镜像使用帮助
安装 yay
yay 包管理器可以方便的安装 AUR 里的软件
sudo pacman -Syu yay |
切换 AUR 镜像来加快下载速度
yay --aururl "https://aur.tuna.tsinghua.edu.cn" --save |
下拉式终端
yay -Syu yakuake |
配置 swap
yay -Syu systemd-swap |
编辑 /etc/systemd/swap.conf
,找到 swapfc_enabled
修改为 swapfc_enabled=1
sudo systemctl enable --now systemd-swap |
本地化
安装中文字体
常用的中文字体有:
- noto-fonts-cjk
- wqy-bitmapfont
- wqy-microhei
- wqy-zenhei
我全都要
yay -Syu noto-fonts-cjk wqy-bitmapfont wqy-microhei wqy-zenhei |
设置系统语言
编辑 /etc/locale.conf
,改为 LANG=zh_CN.UTF-8
并重启
打开「系统设置」中的「区域设置」,在「语言」选项卡中添加语言并应用
在「格式」选项卡中「区域」修改为「中国-简体中文(zh_CN)」并应用
输入法
安装 fcitx 输入法
yay -Syu fcitx-im fcitx-libpinyin fcitx-cloudpinyin kcm-fcitx |
设置环境变量,指定各类程序的输入法为 fcitx
新建 ~/.pam_environment
文件,写入
GTK_IM_MODULE=fcitx |
重启即可
设置代理
由于伟大的虚拟砖混结构建筑物的存在等众所周知的原因,常常需要通过代理服务器来科学的上网
一般宿主机上都有运行代理软件,所以可以直接通过内网使用宿主机的代理软件
首先关机,设置虚拟机,在「网络」选项卡中添加一个「仅主机(Host-Only)网络」
之后开机,使用 ip addr
查看 IP 地址,找到仅主机网络的 IP 地址
如 IP 地址为 192.168.56.111
,则宿主机的 IP 地址为 192.168.56.1
在 ~/.bashrc
文件中加入
export http_proxy="http://192.168.56.1:7890" |
重启当前终端或运行 source ~/.bashrc
即可生效