将现有 Linux 系统替换安装为 Arch Linux

在前文 Arch Linux 从零开始安装 里就提到过我把服务器上的系统在线替换安装成了 Arch Linux,拖了这么久终于有时间来整理一下折腾过程,在这里简单记录一下。

本文所涉及的内容在 Arch Wiki 中也有相关教程,可以对照查看:Install Arch Linux from existing Linux

环境要求

博主自己初次测试时用的是阿里云的轻量服务器,原系统(标题中的“现有 Linux 系统”)是 Debian 9 。

考虑到我们并没有太多的操作需要在原系统中进行,所以原系统是啥应该影响不大,唯一的要求就是如果在云服务器上操作的话必须要能够通过网页进行 vnc 连接(在配置网络管理器、ssh 之前需要重启,但此时网络环境还没弄好,重启后就无法再通过 ssh 连上服务器了)。

启动 chroot 环境

和从镜像安装 Arch Linux 一样,我们的安装操作首先要做的就是进入一个“最小化的安装环境”。这里我们通过官方提供的引导镜像启动一个 chroot 环境以满足这一要求。

首先从 Arch Linux 的镜像站点下载引导镜像文件(名字一般是 archlinux-bootstrap-YYYY.MM.DD-x86_64.tar.gz 的形式)到 /tmp 目录下。为了加快下载速度,我这里是从中科大的镜像源下载的:

1
2
cd /tmp
wget http://mirrors.ustc.edu.cn/archlinux/iso/2020.01.01/archlinux-bootstrap-2020.01.01-x86_64.tar.gz

下载之后解压可以得到一个名为 root.x86_64 的文件夹:

1
tar xzvf archlinux-bootstrap-2020.01.01-x86_64.tar.gz

然后我们通过 mount --bind 命令将这个文件夹与自己连接起来,这一步主要是为了让我们在进入 chroot 环境后能够使用使用 pacman 安装软件。

1
mount --bind /tmp/root.x86_64 /tmp/root.x86_64

在进入 chroot 环境后需要安装一些软件用于后续系统的安装,而引导镜像中不包含任何编辑软件,所以我们最好提前利用原系统上的编辑软件修改好引导镜像中使用的镜像源。

1
vim /tmp/root.x86_64/etc/pacman.d/mirrorlist

去除自己想用的镜像源前面的 # 号即可启用(默认是全部注释掉了的,至少需启用一个)。

之后利用引导镜像中的可执行文件 /tmp/root.x86_64/bin/arch-chroot 将我们的引导镜像目录 /tmp/root.x86_64/ 启动为 chroot 环境(感觉有点绕…)

1
/tmp/root.x86_64/bin/arch-chroot /tmp/root.x86_64/

不出意外的话此时就成功进入了从我们下载的引导镜像启动的 chroot 环境。

使用 chroot 环境

进入 chroot 环境其实就相当于我们使用镜像安装时的“启动到 live 环境”这一步,这个环境已经拥有了安装系统所必需的软件包,下面介绍具体的安装操作。

初始化 pacman 密钥

在这个 chroot 环境中我们是可以使用 pacman 安装软件的,但在那之前需要先初始化一下 pacman 的密钥:

1
2
pacman-key --init
pacman-key --populate archlinux

初始化完成之后你就可以随意安装自己需要的软件了,我这里只安装一个了 vim 编辑器:

1
2
pacman -Syy
pacman -S vim

抹除原系统

首先将我们原系统所在的分区(我这里是 /dev/vda1 )挂载到当前系统(chroot 环境)的 /mnt 目录下:

1
mount /dev/vda1 /mnt

需要注意的是,我们无法对原系统所在的硬盘重新分区(重新分区后需要格式化,而我们现在所在的 chroot 环境还依赖着 /tmp/root.x86_64 目录下的文件),所以这里挂载的分区就是我们用来安装新系统的分区。

注意:到这一步我们的原系统还是安全的,你可以随时使用 exit 退出 chroot 环境,但是一旦执行了下面的步骤就再也无法回头了,要么成功,要么重装,请谨慎操作!!!

接下来进入 /mnt 目录,将除了 tmpdevprocrunsys 几个目录外的其他所有文件/文件夹全部删掉:

1
2
cd /mnt
rm -rf ......

安装新系统

再接下来我们就可以按照正常安装 Arch Linux 的步骤开始安装我们的新系统了。

具体操作参见 Arch Linux 从零开始安装 ,从“安装系统”这一步开始一直到“配置 GRUB 引导”(包括配置 GRUB 引导这一步)。

重启系统

在配置好 GRUB 引导之后我们的系统安装就已经基本完成了,这时候需要重启一下机器,正式启动我们新安装好的 Arch Linux 系统。

由于 chroot 环境没有重启权限,原系统中的文件又已经被我们全删掉了,所以只能通过断电来“硬重启”(云服务器可以通过服务商的控制台重启)。

若无意外的话重新启动的就是我们新安装好的 Arch Linux 系统了。此时还没有进行网络配置,机器无法联网,所以云服务器需要通过控制台的 vnc 连接来完成后续的步骤(阿里云轻量服务器就是后台的救援连接)

配置网络

配置网络的步骤跟我们正常安装时的操作一模一样,详见 Arch Linux 从零开始安装 的“网络配置”部分,这里不再赘述。

配置 SSH 连接

首先使用 pacman -Syy 更新一下软件包数据库,然后安装 openssh,启动 ssh 服务并设置开机自启:

1
2
3
pacman -S openssh
systemctl start sshd
systemctl enable sshd

最后我们修改一下配置文件允许 root 用户登录(openssh 现在默认禁止 root 用户登录):

1
vim /etc/ssh/sshd_config

#PermitRootLogin prohibit-password 这一行修改为 PermitRootLogin yes 后保存即可。

全部弄好之后重启一下就能够使用 ssh 工具连接机器了,接下来就可以尽情的定制属于自己的 Arch Linux 啦!