在aliyun VPS上装archlinux
朋友7ji说他在aliyun VPS上刷了archlinux,我一整个大受震撼。
看了7Ji’s Blog之后,我的脑海里就是这张图:
这篇博客基本上是照着7ji那篇写的,主要目的是记录一下指令方便以后速查。他那边详细讲解的部分我这就没多写,推荐先去看他那篇博客。
下载工具系统
wget https://mirrors.aliyun.com/archlinux/iso/latest/archlinux-x86_64.iso
blkid archlinux-x86_64.iso
# 输出类似于:archlinux-x86_64.iso: BLOCK_SIZE="2048" UUID="2023-12-01-15-40-55-00" LABEL="ARCH_202312" TYPE="iso9660" PTUUID="99a0587f" PTTYPE="dos"
# 记录一下其中的LABEL
sudo mv archlinux-x86_64.iso /archiso
# isoinfo -d -i /archiso
修改Bootloader,下次引导拉起工具系统
借这次机会好好看了下grub Manual,还是比较受用的。
grub的配置文件包括/etc/default/grub
(保存控制变量)和/etc/grub.d/
下的所有文件(保存启动项)。使用grub-mkconfig
读取这两处的配置信息写入/boot/grub/grub.cfg
。当然也不是说不能直接改grub.cfg
,毕竟人家官方教程有写:
those who feel that it would be easier to write grub.cfg directly are encouraged to do so
虽然我一般不敢直接改/boot/grub/grub.cfg
,但7ji写好了配置我就直接抄了:
menuentry "ArchISO (x86_64)" {
insmod iso9660
set isofile=/archiso
loopback lo0 $isofile
linux (lo0)/arch/boot/x86_64/vmlinuz-linux archisolabel=ARCH_202312 img_dev=/dev/vda3 img_loop=$isofile copytoram=y
initrd (lo0)/arch/boot/x86_64/initramfs-linux.img
}
# 记得改archisolabel为上文查看iso文件得到的LABEL
注意到传递给内核参数有一个copytoram=y
,就是说内核复制到ram中使用,因此之后可以擦除整个硬盘而不担心内核运行出问题。
这里menuentry放的位置也有讲究,grub默认会将光标悬停在第一个选项,超时后自动选择第一项。所以如果把这段配置放在第一个menuentry,下次启动不需要在grub页面选择,自动就会进入该项。(如此操作坏处是,一旦配置有问题,得能进grub拉起旧系统,不然只能重装)
重启,启动后擦除硬盘,重新分区
sudo reboot
# 启动后进入工具系统
工具系统启动后,已经可以开始随意擦写硬盘了,先从分区表开始。
用parted /dev/sdX print
查看了一下原本的分区是GPT分区。但7ji的说法是因为之后分区文件系统用btrfs,只需要一个分区,所以为了最大化空间利用,所以装了Single-partition MSDOS table。
行吧,虽然也没差多少空间,但他确实没说错。
echo -e 'label: dos\nstart=2048' | sfdisk /dev/vda
一个分区,也不用再分区了,直接格式化
mkfs.btrfs /dev/vda1
然后照抄7ji的subvolume划分
mount /dev/vda1 /mnt
cd /mnt
for subvol in root home var swap; do
btrfs subvolume create @${subvol}
done
chattr +C @{var,swap}
cd @swap
btrfs filesystem mkswapfile -s 4G swapfile
cd /
umount /mnt
全部挂载
mount /dev/vda1 /mnt -o subvol=@root
for subvol in home var swap; do
mount /dev/vda1 /mnt/${subvol} -o subvol=@${subvol} --mkdir
done
swapon /mnt/swap/swapfile
安装新系统
剩下的就没啥说的了,码一下我用的代码。
vim /etc/pacman.d/mirrorlist
# aliyun VPS就用aliyun镜像
# Server = http://mirrors.cloud.aliyuncs.com/archlinux/$repo/os/$arch
pacstrap /mnt base linux-hardened grub btrfs-progs vim sudo openssh nftables
genfstab -U /mnt >> /mnt/etc/fstab
arch-chroot /mnt
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc
vim /etc/locale.gen
# 取消en_US.UTF-8 UTF-8行前注释符
locale-gen
vim /etc/locale.conf
# 写入LANG=en_US.UTF-8
vim /etc/hostname
# 写入随便什么hostname
useradd -ms /bin/bash -G wheel lapherder
passwd lapherder
visudo
# 取消%wheel ALL=(ALL:ALL) ALL行前注释符
vim /etc/ssh/sshd_config
#配置sshd
grub-install /dev/vda
grub-mkconfig -o /boot/grub/grub.cfg
vim /etc/systemd/network/20-vpc.network
#写入:
#[Match]
# Name=ens*
#
# [Network]
# DHCP=ipv4
ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
systemctl enable sshd systemd-{network,resolve}d nftables
# 取下挂载
reboot