知其所以然:在 VirtualBox 里安装 Arch Linu
本文的写作目的不只是提供一个流水线式的 Arch Linux 的安装步骤,更希望通过一些简单的讲解使各位了解一些基本的 Linux 系统知识。即 “知其然,知其所以然。”
在 VirtualBox 中安装 Arch Linux 的主要步骤如下:
- 准备 VirtualBox。
- 磁盘分区。
- 分区格式化。
- 配置安装包镜像源。
- 挂载分区并安装系统。
- 生成 fstab 文件。
- 配置系统选项。
- 安装 Boot Loader。
1. 准备 VirtualBox (VBox)
- 在 VBox 中建立虚拟机项目,选择适合你的电脑的配置参数。我选择的是:处理器核心 x2、内存 2 GB、显存 128 MB、硬盘空间 100 GB(动态分配)。
- 在 VBox 中选择:设置 -> 存储 -> IDE 控制器中加载 Arch Linux 光盘镜像。
- 在 设置 -> 系统 -> 启动顺序 里,选择光盘优先启动。启动系统,出现如下启动画面:
- 选择 Boot Arch Linux,开始安装系统(注意我安装的是32位的 Arch Linux)。
2. 磁盘分区与格式化
以 root 身份登录系统。
第一次以 root 身份登陆
使用 lsblk 命令来查看当前的分区状况:
使用 **lsblk** 命令查看分区情况这里大小为 102 GB 的 sda 就是未分区、未格式化的原始硬盘空间。其它部分是光盘启动的 Arch Linux 系统的分区部分,可忽略。
分区工具:使用官方指南中的 parted 工具和常用的 fdisk 工具都可以。这里使用有交互界面的 cfdisk 工具。注意为了后续 Boot Loader 的安装方便,我们选择使用传统的 MBR 分区表方案。所以在进入 cfdisk 之后,首先选择 dos 选项,即使用 MBR 分区表方案。
使用 New 选项新建分区,手动输入分区大小。我的分区方案为:启动分区 (boot) 250 MB,交换分区 (swap) 2.2 GB (稍大于虚拟机的内存容量),根目录 ("/") 分区 99.6 GB,结果如下图所示。(你也可以为 "/home" 目录建立单独的分区,方法与建立根目录分区类似,不再赘述。)
**cfdisk** 中的3分区方案Arch Linux 社区中文安装指南中有如下警告:
cfdisk 创建的第一个分区起始位置是63扇区而不是通常的2048扇区。这将会在 SSD 和使用高级格式化(4k 扇区)的设备上造成性能问题。
现在看来至少在使用 VBox 安装 Linux 时可以忽略该警告,因为第一个分区的起始扇区确实是 2048 而不是 63。因此也就不会发生 “因为硬盘没有 4 K 扇区对齐而导致性能问题”。
将 sda1 设为启动分区 (bootable) ,将全部改动写入分区表 (write 选项,输入 yes,回车),然后退出 (quit) cfdisk 工具。
使用 lsblk 命令查询分区状况如下,分区成功!
3. 分区格式化
首先,格式化启动与根目录分区:
mkfs.ext4 /dev/sda1
mkfs.ext4 /dev/sda3
然后格式化交换分区
mkswap /dev/sda2
同时开启交换分区,为下面的 fstab 写入做好准备 (后文详述)。
swapon /dev/sda2
4. 配置安装包镜像源
现在可以先 ping 一下网络,VBox 应该已经自动配置了联网。
ping -c 3 114.114.114.114
因为系统安装过程中要下载软件安装包,所以选择在国内的镜像源可以大大加快软件下载和安装的进度。我选择了速度较快的浙大、中科大和 163 的镜像源。Arch Linux 镜像源的状态可以在这里查看。
使用 nano 文本编辑器对镜像源列表进行编辑:
nano /etc/pacman.d/mirrorlist
在文件中服务器列表的开头部分添加:
## China
Server = http://mirrors.zju.edu.cn/archlinux/$repo/os/$arch
Server = http://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
Server = http://mirrors.163.com/archlinux/$repo/os/$arch
编辑完后的文件如下图所示:
编辑后的镜像源列表
文件编辑之后使用 Ctrl+x 进行保存(连续输入:Ctrl+x,y,回车;或者Ctrl+x,n,回车:放弃保存)。
在本机同步镜像源数据库,输入:
pacman -Syy
5. 挂载分区并安装系统
到现在为止,我们的所有操作都是在光盘启动的 Linux 系统中进行的。下面要将真正的 Linux 系统文件安装到虚拟机的硬盘中。前文中进行了分区与格式化之后的硬盘分区,首先要经过“挂载” (mount) 操作,才能够供我们访问。
首先挂载根目录:
mount /dev/sda3 /mnt
在根目录中创建启动目录 (boot),并挂载它:
mkdir -p /mnt/boot
mount /dev/sda1 /mnt/boot
回到根目录,现在终于可以把系统文件安装到我们刚才创建的硬盘分区中去了。Arch Linux 团队为此准备了专门的脚本工具 pacstrap,执行下面的命令以安装系统文件:
pacstrap /mnt base base-devel
其中 /mnt 是当前根目录所在的挂载点,base 包中是最基本的 Linux 系统文件, base-devel 包中包含了一些常用的开发工具,建议同时安装两个包。
6. 生成 fstab 文件
为了让系统能够在每次重启之后自动挂载各个分区(包括交换分区),我们需要把当前的分区挂载方式写入到一个叫做 fstab 的文件中去。执行下面的脚本命令,生成 Linux 系统需要的 fstab 文件:
genfstab -U -p /mnt >> /mnt/etc/fstab
记得检查 fstab 文件的内容,以确保万无一失。
fstab 文件内容more /mnt/etc/fstab
7. 配置系统选项
因为还没有正确安装 Boot Loader,所以现在我们还不能重新启动系统。好在 Arch Linux 团队提供的 arch-chroot 工具可以让我们暂时登录到已经安装好的 Linux 系统中去开始系统配置。执行命令:
arch-chroot /mnt
注意提示符变为 sh-4.3#,我们已经成功登陆刚刚安装的 Arch Linux 系统,执行 ls -al 试试:
下面首先对 Linux 系统的 locale (读作[ləʊˈkɑːl)进行配置。Linux 的 locale 文件中储存了与“本地化”相关的诸如时间格式、货币单位、语言编码之类的信息,通过 locale 配置,可以使 Linux 更符合我们的使用习惯。使用 nano 编辑/etc/locale.gen文件:
nano /etc/locale.gen
移除一行之前的 "#" 符号(即取消注释)来选择你需要的locale。我的选择是:
en_US.UTF-8 UTF-8
zh_CN.GBK GBK
zh_CN.UTF-8 UTF-8
zh_TW.UTF-8 UTF-8
包含了美语英文 UTF-8 编码,简体中文 GBK 与 UTF-8 编码,以及繁体中文的 UTF-8 编码。
使用 locale-gen 命令来生成 locale 信息:
locale-gen
创建 locale.conf 并选择要使用的本地化选项 (使用 echo xxx > yyy 的命令,可以把 echo 命令的输出内容即 xxx 重定向到 yyy 文件中去,这与使用 nano 编辑器对 yyy 文件进行编辑效果相同,只是更快捷):
echo LANG=en_US.UTF-8 > /etc/locale.conf
注意中文安装指导提醒:
不推荐在此设置任何中文locale,或导致tty乱码。
设定时区:
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
设置硬件时间为UTC模式,以免在时区和夏令时调整时产生错误(注意 systohc 和 utc 之前都是两个 "-" 符号):
hwclock —systohc —utc
设定主机名:
echo 你的主机名 > /etc/hostname
设置 root 密码:
passwd
从光盘启动的 Arch Linux 可以联网是因为启动光盘自动进行了网络配置。现在我们来为新系统进行网络配置。输入 ip a 命令,查看当前的网络连接,记下当前网络接口的名称:enp0s3
查看当前的网络连接ip a
在网络配置目录中,创建 my_network 文件,拷贝 dhcp 样本文件的设置即可。
cp /etc/netctl/examples/ethernet-dhcp /etc/netctl/my_network
修改 my_network 文件 Interface 字段,把当前网络接口的名称写入即可。
修改 Interface 为enp0s3
把 my_network 作为默认网络配置。
netctl enable my_network
8. 安装 Boot Loader
电脑开机之后,处理器会到固定的位置去读取磁盘内容,这个“固定的位置”一般就在磁盘的最开始位置。放在这个位置的软件,就叫做 Boot Loader,它的作用是为处理器指明操作系统的安装位置,使得处理器可以进一步的读取并执行操作系统。
下载 Grub Boot Loader,将其安装到 Arch Linux 被安装到的 硬盘中 (sda),然后生成启动所需要的 grub 文件。
pacman -S grub
grub-install --target=i386-pc --recheck /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
安装后的命令行输出如下所示:
安装 Grub Boot Loader 工具
下面从安装的 Linux 中退出,卸载刚才挂载的文件系统,然后关机。这样原始 Arch Linux 的安装就完成了。
exit
umount /mnt/boot
umount /mnt
poweroff
移除光盘镜像,重新启动系统:
移除 VBox 加载的光盘镜像
Tada... Welcome to bare bone Arch Linux!欢迎来到荒凉的无主之地。
重新启动,root 登陆注:个人知识能力有限,难免有遗漏、错误的地方,欢迎大家通过评论与我交流。