云服务器安装ArchLinux手把手指南
不能再详细的指南
阅读时间 2 分钟
前言(废话)
服务器上 Arch 有什么好处?
- 好用
- 丰富的软件仓库
- 更快的软件更新
- 详细的 Arch Wiki
学会更多骚操作
无脑上 Arch 就完事儿
Change Log
2021-11-14 更新:移除了不需要的 tmpfs 部分
服务器配置
- Ubuntu 18.04 (其实内核 3.4+的系统都可以啦)
- 阿里云和腾讯云轻量服务器实测通过
- Google Cloud Platform 可能是因为奇怪的安全策略,尝试了一下没有成功…
大致操作
1. 下载 Arch 官方 ISO 镜像
先更新 apt 软件仓库
然后安装tmux和aria2
- 为防止网络波动导致会话结束,用
tmux创建一个虚拟终端,在tmux中运行的软件即使 ssh 链接断开也不会结束 aria2:命令行 BiTtorrent 下载器
浏览器打开 Arch 的官方下载页面,找到 BitTorrent 的下载方式
右击该链接,点击“复制该链接的地址”
回到 ssh 会话中输入
aria2c "https://www.archlinux.org/releng/releases/2020.08.01/torrent/"
10M/s 速度还行还行
速度慢的话,去阿里云的防火墙页面检查一下有没有开发传入 BT 连接
下载完成,当前目录下多了两个文件
运行 tmux 进入一个新的会话
顺带一提,tmux 是非常好用的工具,可以花几分钟学习一下 Tmux使用手册 | louis blog
2. 挂载并 chroot 到 sfs 目录中
为了避免待会格式化磁盘时,把磁盘上的 ArchLinux ISO 数据干掉,我们先把要用到的东西都放到内存盘中:
mkdir /tmpfs
mount -t tmpfs tmpfs /tmpfs -O size=1400M # 根据你的实际可用空间调整
mkdir iso:iso 文件的挂载点mkdir sfs:sfs 文件的挂载点mkdir space:用于扩容 sfsmkdir work:最终我们会在这个 live 环境里工作!mount /root/archlinux-2020.08.01-x86_64.iso iso挂载咱下载好的 ISO 文件到当前目录的iso文件夹中mount iso/arch/x86_64/airootfs.sfs sfs将airootfs.sfs文件挂载到sfs文件夹中
用 df -hT 能看到 sfs 挂载点的占用是 100%,没有剩余空间写入新数据。如果直接 chroot sfs 的话 live 环境不能正常工作,所以咱要整点骚操作扩容一下这个 sfs
运行 mount overlay work -t overlay -o lowerdir=sfs,upperdir=space,workdir=work
简单理解为,把 sfs 的文件和 space 的空组合起来,呈现在 work 里。
因为原本,sfs 是一个占用 100% 的设备,space 属于一个有剩余空间的磁盘,所以组合之后,work 里既有 sfs 的文件,又有剩余空间了。
因为使用普通的 chroot,切过去之后 dev 等目录是空的,无法正常安装系统,所以要借助 arch-install-scripts 这个包里的 arch-chroot 脚本
cp work/usr/bin/arch-chroot ./:将脚本复制到当前目录下./arch-chroot work:chroot 到 work 目录中
确定一下咱要安装的磁盘是哪一块。咱的机器是 /dev/vda 这个磁盘,只有一个 /dev/vda1 分区。很显然 /dev/vda1 就是系统所在的分区。
3. 删除磁盘上的文件,然后像安装 Arch 一样安装 Arch
mount /dev/vda1 /mnt挂载分区,进入,并删除 除了run, tmpfs, media, proc, sys, dev, tmp, root 文件夹和 swapfile 的其他所有内容。这些文件夹里存放的不是常规文件,是系统运行时产生的设备和进程文件。
要注意哦~,删掉之后,就不要退出 chroot 环境回到最原始的系统辣,因为最原始的系统上啥都没了,退出去就回不来了啊啊啊啊(惨痛的教训),exit 前慎重慎重再慎重
关于格式化
由于磁盘分区还在被原有的系统内核使用中,所以无法卸载并重新格式化
由于磁盘空间已经全部分配完,ext4 又不支持在线缩减分区(只支持在线扩容分区),
所以缩减分区,建立新分区,安装系统到新分区,从新分区启动,格式化旧分区这种骚操作不存在
所以咱做的就只能是删掉原分区里的文件,然后直接开始安装
2021-11-14 打脸更新:在 makeinitcpio 中添加 resize2fs,在 initcpio 中调整 ext4 分区大小。将 Arch 装载新划分出的空间中。再将格式化原分区,把 Arch 移回去,扩容分区。如此把服务器磁盘变成了 btrfs。
先开个新坑(咕咕
开始安装软件包
如果出现 DNS 解析错误,可能是
/etc/resolve.conf文件被删掉了(arch-chroot 使用这个文件)。可以新建一个并且内容填入nameserver 8.8.8.8
pacman-key --init:初始化 pacman 密钥pacman-key --populate archlinux:导入 archlinux 密钥pacstrap /mnt base base-devel linux linux-firmware:安装基本软件包
关于必装软件包
dhcpcd或networkmanager或其他网络管理器:用于管理网络、自动获取 ip 地址openssh:用于启动 `sshd 服务,远程连接服务器
关于必要配置
systemctl enable dhcpcd或systemctl enable NetworkManager:开机自动启动网络systemctl enable sshd:开机自动启动ssh服务visudo编辑哪些用户组可以使用sudouseradd username -m -G wheel:因为 Arch 默认禁止 root 用户通过 ssh 使用密码登录,所以此处需要新建用户。新建一个名为username的账户,-m表示给用户新建一个家目录,-G wheel表示将用户加入wheel组,该组内成员可以使用sudo命令。passwd:修改自己的密码passwd username:修改username用户的密码(忘记设置密码就是直接白给)
注意事项
对照 Arch 官方 wiki 安装教程,避免遗漏安装步骤
- 剩下的日期,locale 配置与生成,时间,镜像源,LANG,主机名,hosts,生成 fstab,引导软件配置都和正常安装没啥差别
- 如果发现服务器无法正常启动,可以在阿里云网页版服务器控制台进入救援模式
- 折腾系统之前被分好重要数据
- 不是所有服务器都能按照此类方法安装,例如 Google Cloud Platform 就有类似 Secure Boot 的保护,并且
/etc/resolv.conf还有特殊保护?(具体原理不是很清楚ㄟ ww)