给服务器系统换成archlinux
发表于:2023-11-26 |
字数统计: 1.3k | 阅读时长: 5分钟 | 阅读量:

给服务器系统换成archlinux

由于个人喜欢用archlinux,于是决定把服务器也整成archlinux,本文参考于https://nyac.at/posts/cloud-server-arch-linux,复制到这里防止找不到,侵删

下载 RootFS

首先呢我们得有一个 Arch 的 RootFS,也就是一个基本的包括 Arch Linux 根目录下所有文件的文件夹,一会儿要 chroot 进去。为了使用 chroot 这个功能

直接在 Arch 的下载页面 找一个离服务器比较近的镜像源,复制里面 archlinux-bootstrap 开头的 tar.gz 包的地址,下载到服务器的 /tmp 文件夹。其实这个时候可以 cd 到 /tmp 里面把不相关的文件都删掉了

1
2
cd /tmp
wget https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/2023.11.01/archlinux-bootstrap-x86_64.tar.gz

然后自然是要解包这个文件,顺便看看里面都有些啥

1
2
3
tar -xzf arch*
cd root.x86_64
ls
1
bin  boot  dev  etc  home  lib  lib64  mnt  opt  proc  README  root  run  sbin  srv  sys  tmp  usr  var

这里面就像一个装好了的 Linux 的根目录一样,所以说是 RootFS 嘛

进入 chroot 环境

听说需要用 mount --bind 把 RootFS 解包的目录自己与自己链接起来,不然 pacman 会装不了软件。至于要是不知么做会发生什么,咱也没试过,妳们可以自行尝试

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

别急,由于这个 RootFS 包是最简安装,你看它只有 140MB 是吧,它里面甚至连个文本编辑器都没有。所以咱需要在 chroot 之前编辑一下镜像源的文件,启用自己喜欢的镜像源,这样 pacman 才能正常安装系统

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

好啦,现在可以正式进入 chroot 环境啦。不过呢用普通的 chroot 进去之后 /dev 之类的目录会是空的,不可以正常安装系统。要使用 Arch 镜像中的 arch-chroot 脚本,这个脚本会自动执行一些 mount 命令,把设备啊之类的都映射到 chroot 容器里面,咱就可以正常安装系统啦

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

在 chroot 环境中给机器安装 Arch Linux

首先初始化 pacman 的密钥,pacman 就能正常使用啦

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

现在我们已经进入属于 Arch 的世界了,不会再想念原先的 Linux 发行版了。所以现在应该把原先发行版的文件消灭掉。由于我们现在运行的环境就在原先的分区上,所以直接格式化肯定是不行的。需要把原先的分区挂载到现在的系统中,然后把属于原系统的文件删删删

执行lsblk看一下分区

1
2
3
4
5
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 476M 0 part /boot
└─sda2 8:2 0 19.5G 0 part /
1
mount /dev/sda2 /mnt

由于 Linux 系统中“一切皆文件”,像 /dev /proc /run /sys 这些目录都是存储到硬件的映射的,所以不能删。同时,我们工作的目录在 /tmp 下,swapfile (如果有)是我们正在使用的 swap。咱们用 rm -rf 命令,把其余的文件都清除干净

像正常安装 Arch Linux 一样使用 pacstrap 向目标挂载点安装系统底层的软件包,并生成 fstab 挂载配置文件

1
2
pacstrap /mnt base base-devel linux linux-headers linux-firmware vim dhcpcd openssh grub
genfstab -U /mnt > /mnt/etc/fstab

这时候系统安装就已经完成了

进入新系统

再通过 arch-chroot 切换到安装好的系统目录下,进入最后的系统配置和必备程序包的安装

1
arch-chroot /mnt

注意,要是在 chroot 的时候发生与 /etc/resolv.conf 挂载相关的问题,可以先执行

1
umount /etc/resolv.conf

然后再 chroot,进去之后执行

1
echo 'nameserver 1.1.1.1' > /etc/resolv.conf

否则可能会无法解析 IP。如果上面 chroot 时没有出现问题可以跳过这个

首先将时区设置为服务器地区的时间,如北京时间

1
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

开启一下必要的服务,这样重启之后就有网并且能通过 SSH 连上啦

1
2
systemctl enable dhcpcd
systemctl enable sshd

还需要给自己创建一个用户,Arch Linux 默认禁止以 root 身份远程登录。-m 的意思是为用户创建自己的主目录,wheel 是默认能执行 sudo 命令的用户组,可以更改sshd配置或者在root用户下添加ssh公钥登录root用户,具体可以google一下

1
useradd username -m -G wheel

回到 root 用户,保险起见,给 root 以及自己的用户设置好密码,这样要是无法公钥登录还能以密码登录

1
2
passwd root
passwd username

编辑 sudo 配置文件,取消 %wheel ALL=(ALL) NOPASSWD: ALL 这一行的注释

1
visudo

最后创建引导文件,准备重启啦

1
2
grub-install --target=i386-pc /dev/sda1
grub-mkconfig -o /boot/grub/grub.cfg

差不多了,进控制台重启服务器

重启啦

重启回来了,sudo 一下看看是否一切正常,正常的话咱就进 /etc/shadow 删除密码了,只保留私钥登录

启用一下网络时间同步

1
timedatectl set-ntp true

然后,就没有然后啦

上一篇:
MC开服教程
下一篇:
CF workers的一些妙用