四次元科技
科技、动漫、生活、学习以及一切

在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 密码。

# # # #





评论
2024年12月3日 下午4:36

谢谢大佬!

2024年12月9日 下午3:50

Not大佬,纯纯的萌新。

添加新评论
发表回复