在VPS上安装安同OS
前言
之前的文章里,简单介绍了一下这款来自国内开源社区的安同 OS。于是我想着把服务器也换成安同 OS(本站已完成更换)。
但是安同 OS 作为一个小众的,非主流的 Linux 发行版,并没有被各种云服务商和 VPS 商家所支持。然后很多商家又没有提供自定义 ISO 安装镜像的功能。所以我们只能想一些办法来手动安装。
进入恢复系统
我们需要使用脚本 reinstall。
这个脚本可以用来快速从网络重装 VPS 的系统, 以及启动一个 Alpine 恢复系统。
首先下载脚本。
# 国外服务器
curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh || wget -O reinstall.sh $_
# 国内服务器
curl -O https://www.ghproxy.cc/https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh || wget -O reinstall.sh $_
然后用命令进入恢复系统。
bash reinstall.sh alpine --hold=1
之后会提示输入 root 用户的密码,默认为 123@@@
。输入密码后,就会开始安装,然后会提示。
***** INFO *****
alpine 3.20
Username: root
Password: 你的密码
Reboot to start Alpine Live OS.
这时重启服务器,系统就会进入 Alpine 恢复系统并开启 SSH,可以使用 SSH 连入恢复系统。
磁盘分区
这一部分需要根据不同机器的不同情况来看,请结合自身情况对比教程使用。
首先用 fdisk -l
命令输出一下服务器中的磁盘和分区信息。
# 输出信息如下
localhost:~# fdisk -l
Disk /dev/vda: 30 GB, 32212254720 bytes, 62914560 sectors
123361 cylinders, 255 heads, 2 sectors/track
Units: sectors of 1 * 512 = 512 bytes
Device Boot StartCHS EndCHS StartLBA EndLBA Sectors Size Id Type
/dev/vda1 * 4,4,1 1023,254,2 2048 60814975 60812928 28.9G 83 Linux
/dev/vda2 1023,254,2 1023,254,2 60814976 62912127 2097152 1024M 83 Linux
可以看到我的服务器上有一块硬盘 /dev/vda
,容量 30GB,并且有两个分区 /dev/vda1
和 /dev/vda2
。
然后使用 fdisk /dev/vda
命令,操作这块磁盘。
# 输出信息如下
localhost:~# fdisk /dev/vda
The number of cylinders for this disk is set to 123361.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help):
输入 o
然后回车,这一步是把分区表设置为 mbr 以用于支持 bios 启动。
# 输出信息如下
Command (m for help): o
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that the previous content
won't be recoverable.
The number of cylinders for this disk is set to 123361.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help):
然后输入 n
,创建分区。
# 输出信息如下
Command (m for help): n
Partition type
p primary partition (1-4)
e extended
然后输入 p
,创建主要分区。
# 输出信息如下
Command (m for help): n
Partition type
p primary partition (1-4)
e extended
p
Partition number (1-4):
这里输入数字 1
,创建编号 1 的分区,后面的直接默认回车就可以了,这样分区是默认把整块硬盘分区成一个分区。如果你有什么特殊要求,就根据自己的情况操作自行操作吧,我这里就不多说了。
注意: 这里的磁盘起始扇区(First sector)不要输入的太小,我的另一台服务器默认是 32,结果太小了导致 grub 引导无法安装,可以直接写 128 以用于容纳 grub 引导。
# 输出信息如下
Command (m for help): n
Partition type
p primary partition (1-4)
e extended
p
Partition number (1-4): 1
First sector (63-62914559, default 63):
Using default value 63
Last sector or +size{,K,M,G,T} (63-62914559, default 62914559):
Using default value 62914559
Command (m for help):
最后输入 w
,把分区表写入硬盘。
# 输出信息如下
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table
然后我们可以通过 fdisk -l
再检查一下当前的分区信息。
fdisk -l
# 输出信息如下
localhost:~# fdisk -l
Disk /dev/vda: 30 GB, 32212254720 bytes, 62914560 sectors
62415 cylinders, 16 heads, 63 sectors/track
Units: sectors of 1 * 512 = 512 bytes
Device Boot StartCHS EndCHS StartLBA EndLBA Sectors Size Id Type
/dev/vda1 0,1,1 1023,15,63 63 62914559 62914497 29.9G 83 Linux
这里可以看到我现在只有一个分区 /dev/vda1
了,并且容量也来到了 29.9G。
接下来要格式化分区,需要安装一个工具包(因为 Alpine 的恢复系统默认不包含这个包)。
apk add e2fsprogs
然后执行命令格式化分区。
mkfs.ext4 /dev/vda1
# 输出信息如下
localhost:~# mkfs.ext4 /dev/vda1
mke2fs 1.47.0 (5-Feb-2023)
Creating filesystem with 7864312 4k blocks and 1966080 inodes
Filesystem UUID: 70560126-a846-4c5b-be20-2a5e7e50a2b2
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
这样就格式化完成了,我们可以去安装系统了。
安装安同 OS
这一步主要参考 AOSC OS 手动安装指南
我们首先要把分区挂载到系统里。
首先使用 df -h
查看挂载信息。
df -h
# 输出信息如下
localhost:~# df -h
Filesystem Size Used Available Use% Mounted on
devtmpfs 10.0M 44.0K 10.0M 0% /dev
shm 989.9M 0 989.9M 0% /dev/shm
tmpfs 1.9G 36.3M 1.9G 2% /
tmpfs 396.0M 60.0K 395.9M 0% /run
/dev/loop0 19.4M 19.4M 0 100% /.modloop
我们把刚刚建立的分区挂载到 /mnt
目录上。
mount -t ext4 /dev/vda1 /mnt
然后再用 df -h
查看一下挂载信息。
df -h
# 输出信息如下
localhost:~# df -h
Filesystem Size Used Available Use% Mounted on
devtmpfs 10.0M 44.0K 10.0M 0% /dev
shm 989.9M 0 989.9M 0% /dev/shm
tmpfs 1.9G 44.1M 1.9G 2% /
tmpfs 396.0M 64.0K 395.9M 0% /run
/dev/loop0 19.4M 19.4M 0 100% /.modloop
/dev/vda1 29.4G 2.0M 27.8G 0% /mnt
可以看到我们的 /dev/vda1
分区已经挂载到了 /mnt
目录。
然后我们进入 /mnt
目录,下载并解压系统包(如果是 arm 的服务器请下载 arm 的系统包)。
cd /mnt && \
wget https://releases.aosc.io/os-amd64/server/aosc-os_server_20240916_amd64.tar.xz && \
tar --numeric-owner -pxvf aosc-os_server_20240916_amd64.tar.xz && \
rm aosc-os_server_20240916_amd64.tar.xz
解压后需要使用 chroot
进入环境,官方的说明是使用 /mnt/usr/bin/arch-chroot
进入环境,但是不知道是恢复镜像的问题还是哪里的问题,直接用 /mnt/usr/bin/arch-chroot
命令会提示 not found
。
所以我们需要手动挂载三个目录,然后再使用系统的 chroot
命令进入环境。
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt /bin/bash
执行命令成功的话,你会看到你的 shell
界面变成了下面这样。
(ssh)root@localhost [ / ] #
这就说明进入环境成功了。
在 chroot
环境里,运行 update-initramfs
,创建 RAM Disk
。
update-initramfs
# 输出信息如下
(ssh)root@localhost [ / ] # update-initramfs
** Generating initrd (Initialization RAM Disk) for 1 kernel versions ...
6.10.10-aosc-main Successfully generated initrd.
6.10.10-aosc-main /usr/bin/dracut: line 1049: /sys/module/firmware_class/parameters/path: No such file or directory
** Updating GRUB for the new kernel...
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.10.10-aosc-main
Found initrd image: /boot/intel-ucode.img /boot/initramfs-6.10.10-aosc-main.img
Adding boot menu entry for UEFI Firmware Settings ...
done
然后配置 grub
引导,因为我们已经使用了 mbr
分区表,所以使用 bios 引导的配置。
grub-install --target=i386-pc /dev/vda
# 输出信息如下
(ssh)root@localhost [ / ] # grub-install --target=i386-pc /dev/vda
Installing for i386-pc platform.
Installation finished. No error reported.
grub-mkconfig -o /boot/grub/grub.cfg
# 输出信息如下
(ssh)root@localhost [ / ] # grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.10.10-aosc-main
Found initrd image: /boot/intel-ucode.img /boot/initramfs-6.10.10-aosc-main.img
Adding boot menu entry for UEFI Firmware Settings ...
done
这样引导就添加完成了。
系统初始化配置
创建用户
由于安同 OS 默认没有用户,所以我们需要手动添加一个用户。
# 添加用户
useradd -m -s /bin/bash 用户名
# 添加用户到用户组
usermod -a -G audio,cdrom,video,wheel 用户名
# 给用户添加全名
chfn -f "用户全名" 用户名
# 设置用户的密码
passwd 用户名
启用 Root 账户(可选)
使用 passwd
命令给 root
用户添加密码。
passwd root
设置时区
大多数用户我觉得应该都会设置北京时间的。
ln -svf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
完成
这之后只要从 chroot
环境中退出来,再执行 reboot
重启服务器后,你就能体验到安同 OS 啦。
退出 chroot
环境需要按下 ctrl
+a
再按下 ctrl
+d
。
其他问题
网络配置
我用的 VPS 系统重装之后需要手动配置网络。安装系统后需要用管理后台的 VNC 界面,连入服务器。然后使用 nmtui
配置网络。
忘记添加账户
我在操作的时候忘记添加账户,也没有启用 root 账户,直接重启了,结果导致无法登入服务器。
还是用 VNC 连入服务器。在启动到 grub 画面时,选中选项 AOSC,按下键盘 e
,然后在开头为 linux
的行,最后添加 init=/bin/bash
,然后按 ctrl
+x
就能进入系统并且获得一个没有密码的 root
权限 shell。在这里可以创建用户,修改 root 密码。
装上就能用,用了都说好——安同OS 已是最新文章
谢谢大佬!
Not大佬,纯纯的萌新。