前言
本人对比较喜欢ArchLinux,使用的vps基本对会使用vps2arch脚本,将系统变更为ArchLinux。今天从OracleCloud薅羊毛,得到永久免费vps,自然想安装ArchLinux,但OracleCloud使用的是UEFI启动方式,vps2arch 脚本不再适用,不得不手动安装,特此记录。
实际上,与在已有系统安装ArchLinux类似,区别仅仅是安装位置是原系统所在分区,安装前需删除原系统数据。
前期准备
blkid
1
2
3
| /dev/sda1: LABEL="cloudimg-rootfs" UUID="206a406e-5432-46e5-82b5-66bed63992ba" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="0b4f381f-b07c-435c-8947-0d6e545b4518"
/dev/sda14: PARTUUID="ea7c39ab-f4de-475b-b996-0617a04d4705"
/dev/sda15: LABEL_FATBOOT="UEFI" LABEL="UEFI" UUID="0100-A4A7" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="1307abb3-75dd-4990-82f8-48bb2d69c5da"
|
lsblk
1
2
3
4
5
| NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 46.6G 0 disk
|-sda1 8:1 0 46.5G 0 part /
|-sda14 8:14 0 4M 0 part
`-sda15 8:15 0 106M 0 part /boot
|
创建chroot环境
- 下载并解压bootstrap(因本人选择的大阪机房,所以选择日本的源)
1
2
3
| cd /tmp
wget http://mirrors.cat.net/archlinux/iso/latest/archlinux-bootstrap-2020.12.01-x86_64.tar.gz
tar xzf archlinux-bootstrap-*-x86_64.tar.gz
|
1
| echo 'Server = http://mirrors.cat.net/archlinux/$repo/os/$arch' > root.x86_64/etc/pacman.d/mirrorlist
|
- chroot (这一步操作时会报错,但实际已成功chroot)
1
| /tmp/root.x86_64/bin/arch-chroot /tmp/root.x86_64/
|
使用chroot环境安装系统
1
2
| pacman-key --init
pacman-key --populate archlinux
|
1
2
| mount /dev/sda1 /mnt
mount /dev/sda15 /mnt/boot
|
因为是在原系统上安装AchLinux,所以要删除原系统中的文件,但全删除后系统异常,无法继续安装,所以需保留必要文件。以下目录需保留,其余文件可全部删除。
| 目录/文件 | 说明 |
|---|
| boot | 保留目录即可,内部文件可全部删除 |
| tmp | bootstrap正在使用,不可删除 |
| dev、proc、run、sys | |
| etc/{resolv.conf,fstab} | |
1
| pacstrap /mnt base base-devel linux openssh nano neofetch
|
完善系统
1
2
| ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc
|
1
2
3
| echo 'en_US.UTF-8 UTF-8' > /etc/locale.gen
locale-gen
echo 'LANG=en_US.UTF-8' > /etc/locale.conf
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| echo 'oraclecloud' > /etc/hostname
cat << EOF > /etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.1.1 oraclecloud.localdomain oraclecloud
EOF
cat << EOF > /etc/systemd/network/20-wired.network
[Match]
Name=ens3
[Network]
DHCP=ipv4
EOF
systemctl enable systemd-networkd
|
在 /etc/ssh/sshd_config 变更以下设置
1
2
3
| PermitRootLogin yes
ClientAliveInterval 60
ClientAliveCountMax 360
|
创建 /root/.ssh/authorized_keys 文件,添加个人的 id_rsa.pub ,并设置文件权限为0600。
自启动sshd
本人喜欢 systemd-boot ,所以使用它作为启动引导。
配置 loader.conf 和 arch.conf 文件
1
2
3
4
5
6
7
8
9
10
11
12
| cat << EOF > /boot/loader/loader.conf
timeout 2
default arch
console-mode auto
EOF
cat << EOF > /boot/loader/entries/arch.conf
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root="LABEL=cloudimg-rootfs" rw
EOF
|
进入新系统
连续输入两次 exit 退出到原系统, 然后 reboot 重启,等待几分钟后,重新连接ssh,进入则表明重装成功。
