Featured image of post 利用Bootstrap从已有的Linux发行版上安装ArchLinux

利用Bootstrap从已有的Linux发行版上安装ArchLinux

朋友送了一台vps,第一个想法当然是换个Arch

准备

备份

  • 网络相关信息(如子网,IP地址,网卡名,网关)
  • 主机名(hostname /etc/hosts
  • DNS服务器(/etc/resolv.conf
  • SSH 密钥
  • Grub配置
  • 硬件信息(/etc/modules.conf

推荐备份完整的/etc

思考是否应该手动安装

自动化不一定是脚本小子,只是为了避免不必要的麻烦

  • vps2arch 可以全程自动化操作,虽然年久失修

另外,如需lvm你可以直接按上面的脚本或者找别的教程了,原因竟是我没弄过

我还是不确定行不行,要不你试试吧,寄了别找我

正式开始

下载Bootstrap

(按实际情况修改时间及镜像,可参考Archlinux Downloads

1
2
cd /tmp
wget https://geo.mirror.pkgbuild.com/iso/xxxx.xx.xx/archlinux-bootstrap-x86_64.tar.gz

校验

1
2
3
wget https://geo.mirror.pkgbuild.com/iso/xxxx.xx.xx/sha256sums.txt
cat ...
sha256sum

释放bootstrap

1
tar xzf archlinux-bootstrap-*-x86_64.tar.gz --numeric-owner

IMPORTANT:编辑/tmp/root.x86_64/etc/pacman.d/mirrorlist选择镜像源

准备resolv.conf

1
2
rm /tmp/root.x86_64/etc/resolv.conf
cp /etc/resolv.conf /tmp/root.x86_64/etc/

进入chroot

1
2
3
mount --bind /tmp/root.x86_64 /tmp/root.x86_64
mount --bind /boot/efi "/tmp/root.x86_64/boot/efi" # 挂载efi
/tmp/root.x86_64/bin/arch-chroot /tmp/root.x86_64/
  1. 若提示FATAL: kernel too old应更新系统内核
  2. 若不支持--fork--pid请参考ArchLinux Wiki,或尝试更新系统

在执行lsblk确认无误后,挂载磁盘,删掉旧系统

1
2
mount /dev/sda /mnt
rm -r ...

若使用LVM,则将对应的逻辑卷挂载到对应的目录,举个例子:mount /dev/lv/root /mnt

IMPORTANT: 以下目录:/dev, /sys, /run, /tmp, /proc 不应删除
这感觉,简直是rm -rf /*


使用chroot环境

pacman-key 初始化

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

安装软件包

1
2
3
pacman -Syu
pacstrap /mnt base linux linux-firmware
pacman -S vim man-pages mandb texinfo grub openssh lvm2

生成fstab

1
genfstab /mnt >> /etc/fstab

本地化

  • /etc/locale.gen
1
2
en_US.UTF-8
zh_CN.UTF-8
1
locale-gen
  • /etc/locale.conf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN.UTF-8:en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=zh_CN.UTF-8
LC_TIME=zh_CN.UTF-8
LC_COLLATE=en_US.UTF-8
LC_MONETARY=zh_CN.UTF-8
LC_MESSAGES=zh_CN.UTF-8
LC_PAPER=zh_CN.UTF-8
LC_NAME=zh_CN.UTF-8
LC_ADDRESS=zh_CN.UTF-8
LC_TELEPHONE=zh_CN.UTF-8
LC_MEASUREMENT=zh_CN.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=

时区

1
2
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # UTC +8
hwclock --systohc

设置密码

1
passwd

开启网络、ssh

  • 编辑/etc/systemd/network/default.network
1
2
3
4
5
6
[Match]
Name=eth0 #改为你的网卡名

[Network]
Gateway=114.145.114.145 #你的网关
Address=114.145.114.137/24 #你的子网
  • 使用systemd启用服务
1
2
systemctl enable systemd-networkd
systemctl enable sshd

准备引导

1
2
3
mount /dev/sda1 /boot/efi
grub-install --target=x86_64-efi --efi-directory=/boot/efi
grub-mkconfig -o /boot/grub/grub.cfg

IMPORTANT:在不支持efi的情况下

1
grub-install --target=i386-pc --recheck --force /dev/sda

Done !

现在,重启系统,就能看到Arch Linux的字样了
啥?咋重启,好问题

怎么重启

  • 先尝试rebootinit 6shutdown -r等,如果无效(有效才有鬼了)再进行下面的步骤
  • 确保所有数据写入硬盘
1
sync
  1. 利用内核参数
  • 激活Magic System Request Key
1
echo 1 > /proc/sys/kernel/sysrq  
  • 重启
1
echo "b" > /proc/sysrq-trigger
  1. 暴力重启
    包括但不限于,断电,强行关机,服务器控制面板等

参考资料

  1. Arch Linux Wiki Install Arch Linux from existing Linux
    中文页面貌似已过期
  2. Arch Linux Wiki Installation Guide
Licensed under CC BY-SA 4.0
最后更新于 2023-11-30 05:04 UTC