- 宿主机:Debian sid (非必要,其他 Linux 发行版也行)
- 实验环境:Arch Linux
说明 (关于宿主机):
这里 宿主机
指的是你连接电源进入的第一个操作系统。
- 如果是 Arch Linux,可以跳过本章
- 如果是 macOS 或 Windows,使用这篇 安装虚拟机 代替本章
- 如果是 FreeBSD,以后会介绍它的
Linux 兼容模块
- 其他非 Linux 系统,暂时没想到,先双系统吧
-
下载
Arch Linux
最新的bootstrap
压缩包当前最新为 archlinux-bootstrap-2022.04.01-x86_64.tar.gz
此处建议使用离自己最近的镜像站点下载。
或者使用我打包好的 最小化版本 rootfs.tar.xz,此存档的 Arch Linux 根文件系统只包含 必要软件包 (无内核及开发工具)。
-
解压缩
$ sudo tar xf rootfs.tar.xz
解压后我们将得到一个名为
rootfs
的文件夹,此文件夹稍后用于模拟一个新的根文件系统。注意,此处我们需要提升权限以便解压后的
rootfs
权限正确,并且以后要修改rootfs
里的系统文件也需要root
权限。 -
必要配置
-
从宿主机拷贝一份
resolv.conf
,以便实验环境下能正常解析域名。$ sudo cp /etc/resolv.conf rootfs/etc
-
从宿主机拷贝一份
locale.gen
,待会进入实验环境接着设置。$ sudo cp /etc/locale.gen rootfs/etc
-
配置软件安装源:
$ sudo bash -c 'echo Server = https://mirrors.ustc.edu.cn/archlinux/\$repo/os/\$arch >>rootfs/etc/pacman.d/mirrorlist'
注意,此处使用单引号防止命令在外层被转义。
-
-
进入实验环境
此处使用我已经写好的 Shell Script
$ ROOTFS=rootfs SHELL=bash ./run.sh
此时我们只有
bash
,如果你使用其他Shell
(比如 zsh,fish...),则SHELL=bash
必须被设置。完成上一步的
2
,生成locale
$ locale-gen
同时我们需要调整时区使时间正确 (可以输入
date
确认当前时间是否正确),这里我们使用ln
强制 (-f
) 创建一个符号链接 (-s
)。$ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
-
配置
pacman
尝试安装 基础开发工具:
$ pacman -Syu base-devel
下载完后提示此错误:
警告:找不到公钥环。你执行 'pacman-key --init' 了吗?
接着我们按照警告的提示执行那条命令,但是——
重新安装还是会失败,因为我们在完成初始化之后还应该 重新加载默认密匙。
以下给出完整步骤:
$ pacman-key --init $ pacman-key --populate
不出意外之后再次尝试安装一切顺利。
$ pacman -S base-devel
到此实验环境搭建就告一段落了,🎉
以后我们将会继续使用这个 chroot
的 Arch Linux
环境进行实验,并且会对本节一些令人迷惑的地方进行扩充。
下一个:第 00 章