image

云服务器系统切换到ArchLinux

  • WORDS 3431

将云服务器的系统切换到ArchLinux

在使用云服务器时,系统只能使用由云服务器厂商打包制作好的系统。由于我一直是使用的ArchLinux,非常喜欢它的滚动更新(在生产环境不可能用,个人server无所谓了)。之前每一次给云服务器重装的时候都会参考着ArchLinux Wiki来操作,这次将操作记录下来,做一个简单的备份。

安装前准备

系统推荐 Centos8、Debian10 以上

# 1. 下载ArchLinux的 Bootstrap镜像 地址 https://archlinux.org/download/
# 下载到 /tmp 目录
wget -P /tmp https://mirror.umd.edu/archlinux/iso/2023.02.01/archlinux-bootstrap-x86_64.tar.gz

# 2. 解压 解压后会得到一个 root.x86_64 的文件夹
cd /tmp
tar -zxvf archlinux-bootstrap-x86_64.tar.gz

# 3. 将这个目录与自身绑定
mount --bind /tmp/root.x86_64 /tmp/root.x86_64

# 4. 修改软件包安装源 国内推荐中科大源
# Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
vim root.x86_64/etc/pacman.d/mirrorlist 

进入chroot环境

利用引导镜像中的可执行文件启动 chroot环境

/tmp/root.x86_64/bin/arch-chroot /tmp/root.x86_64/

初始化 pacman的安装密钥,让我们可以安装软件

pacman-key --init
pacman-key --populate archlinux

安装一下自己需要的软件,比如 vim编辑器。

# 更新软件包源数据
pacman -Syy
# 安装vim编辑器
pacman -S vim

删除原系统

由于是云服务器我们不能对原系统进行重装,只能将原系统的硬盘挂载到chroot环境后删除系统内的文件夹。

首先需要挂载原系统所在的分区

# 我这里是 /dev/vda1 挂载到当前环境下的 /mnt 分区
mount /dev/vda1 /mnt

进入 /mnt目录,删除除了 tmpdevprocrunsys几个目录外的全部文件夹。一旦删除后如果安装 ArchLinux失败,那么只能去云服务器控制台重装系统。

cd /mnt
rm -rf ...

安装ArchLinux

安装系统

现在就可以按照官方Wiki的教程进行安装了,由于我们的网络和硬盘都是不可更改的,直接从官方教程 安装必需的软件包这一步开始即可。

# 这里安装的路径 /mnt 一定要选择刚才硬盘挂载的路径
pacstrap /mnt base base-devel linux linux-firmware vim

生成自动挂载配置

用以下命令生成 fstab 文件 (用 -U-L 选项设置 UUID 或卷标):

genfstab -U /mnt >> /mnt/etc/fstab

# 检查一下文件是否正确
cat /mnt/etc/fstab

强烈建议在执行完以上命令后,检查一下生成的 /mnt/etc/fstab 文件是否正确。

进入新系统

使用 arch-chroot /mnt到新安装的系统

某些系统可能会遇到下面这个错误,先把 /mnt/etc/resolv.conf删除,成功切换到新系统后再手动添加上。

# 先删除
rm -rf /mnt/etc/resolv.conf
# 切换到新系统后再添加
vim /etc/resolv.conf

nameserver 223.5.5.5
nameserver 8.8.8.8
mount: /mnt/etc/resolv.conf: mount(2) system call failed: No such file or directory.
       dmesg(1) may have more information after failed mount system call.
==> ERROR: failed to setup resolv.conf

配置新系统

安装软件包

由于新系统啥也没有,需要先安装一下后面需要用到的软件包

pacman -S wget curl nano amd-ucode intel-ucode

修改时区

修改为 Asia/Shanghai上海时区

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

运行 hwclock以生成 /etc/dajtime

hwclock --systohc

本地化配置

编辑 /etc/locale.gen,然后取消掉 en_US.UTF-8 UTF-8 和其他需要的区域设置前的注释

接着执行 locale-gen 以生成 locale 信息

vim /etc/locale.gen
locale-gen

创建 locale.conf文件,并编辑设置 LANG变量

vim /etc/locale.conf
# 用于系统log的显示语言 推荐 en_US
LANG=en_US.UTF-8

网络配置

配置主机名

vim /etc/hostname

myhostname(主机名)

配置网络 host文件

vim /etc/hosts

127.0.0.1        localhost
::1              localhost
127.0.1.1        myhostname.localdomain        myhostname

安装网络管理软件,我使用 network-manager使用 dhcpcd也可

# 安装
pacman -S networkmanager
# 设置开机启动
systemctl enable NetworkManager

生成启动镜像

mkinitcpio -P

用户设置

ArchLinux不推荐日常使用 root账户,创建一个用于日常使用的普通账户

先设置 Root账户密码

passwd

再创建一个普通权限账户

useradd -m lisang
# 为普通账户设置密码
passwd lisang

SSH远程访问

为了服务器第一次重启后不需要区控制台用 vnc访问,可以先配置一下 ssh,便于开机后直接远程访问

# 安装 openssh
pacman -S openssh
# 设置开机启动
systemctl enable sshd
# 服务器第一次开机后可能普通用户无法远程访问 修改一下配置文件设置ssh可以通过root账户访问 担心安全问题的话 后面可以关掉
vim /etc/ssh/sshd_config
# 找到配置文件中的 PermitRootLogin 项  取消注释 把后面的值更改为 yes
PermitRootLogin yes

GRUB启动

我的云服务器没有单独的 EFI分区,也就是没有采用 UEFI启动,所以配置很简单

安装 GRUB软件包

pacman -S grub

安装 GRUB到硬盘

# 这里的 /dev/vda 为硬盘 不是硬盘上的分区
grub-install --target=i386-pc /dev/vda

# 提示 Installation finished. No error reported. 即表示安装完成 没有错误发生

生成 GRUB配置文件

 grub-mkconfig -o /boot/grub/grub.cfg
 
 # 配置完后 建议查看一下 /boot/grub/grub.cfg 配置文件 看看有没有当前系统的引导项
 cat /boot/grub/grub.cfg

安装后的配置

以上步骤都做完后,需要去服务器控制台重启一下服务器。重启完成后,不出意外的话是可以通过 SSH远程连接的

关联文章

0 条评论