云平台VPS全新安装纯净的官方Ubuntu系统

发布于2020/10/29更新于2024/7/5

在使用国内云平台的VPS时,默认安装的操作系统中总有很多监控的后台服务:有些可能时真的用来监控系统健康的,有些就不好说了。这些东西看起来既不安全,又占资源,即使卸载/删除,也可能无法做到完全清理,不如索性重装个纯净的系统。

这里指到的VPS一般适用于KVM,要排除掉共用系统内核的虚拟技术如OpenVZ这种。这篇日志大部分是参考(其实是备份给自己用)某大神(METO)的一篇文章《服务器安装全新 Ubuntu 18.04》,并加入了对Ubuntu 20.04的支持。实际上这个加入的部分很小啦,后面会提到。

注意:这篇日志为我记录与获取方便而发布;内容中有很多处未涉及严格的考究和对选择的充分讨论,代码部分亦有存在纰漏的可能;请酌情参考,小心使用!

这里的方法要求在云平台可以使用完整的VNC。比如像阿里云轻量服务器的普通VNC就不好用了,需要使用它的救援VNC。另外,根据METO大神的提示,最好将VPS的系统恢复至Debian系,比如Ubuntu 16.04或Debian 9。这篇日志在Ubuntu 16.04/18.04/20.04下应该是都可以实现的;全文以amd64平台为例,其它平台应类似。

准备工作

  • 打开并使用云平台的VNC连接到VPS,最好以root账户登录,免去步步sudo的烦恼。
  • 备份网络配置信息:
    • 使用ip route记录一下网卡配置信息。

下载netboot所需要的最小系统

新建目录/boot/netboot并进入:

mkdir /boot/netboot && cd /boot/netboot

下载对应版本的netboot文件:

wget http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux
wget http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz
wget http://archive.ubuntu.com/ubuntu/dists/bionic/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux
wget http://archive.ubuntu.com/ubuntu/dists/bionic/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz
wget http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/netboot/ubuntu-installer/amd64/linux
wget http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/netboot/ubuntu-installer/amd64/initrd.gz

更新Grub

修改文件/etc/default/grub的内容如下:

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=20
GRUB_DISTRIBUTOR=Ubuntu
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 console=ttyS0,115200 console=tty0 panic=5 crashkernel=auto"
GRUB_TERMINAL="console serial"
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"

更新Grub的配置文件/boot/grub/grub.cfg

update-grub

/boot/grub/grub.cfg文件末尾加入netboot的引导项:

menuentry 'Ubuntu Installer' {
    insmod part_msdos
    insmod part_gpt
    insmod ext2
    set root='(hd0,msdos1)'
    linux /boot/netboot/linux
    initrd /boot/netboot/initrd.gz
}

注意:需要根据/boot所在分区的分区类型和序号适当更改set root=行,可通过fdisk -l查看(可能需要sudo权限)。

在VNC中重启VPS等待出现启动菜单

执行reboot重启VPS。如果VNC界面没有响应,及时重新建立连接。或者可以考虑将Grub超时时间设置长一些:

GRUB_TIMEOUT=30

或者更改默认项目(需要根据当前菜单数量计算一下,从0开始,一般在新系统上新加的是第3个还是第4个来着):

GRUB_DEFAULT=3

进入系统安装过程

如果出现启动菜单选择界面,选择Ubuntu Installer一项就会进入安装界面了。如果一直没有出现安装界面,超时之后应该还是进入了原先的系统,可以考虑将安装项设置为Grub的默认启动项。

至于后面的系统安装内容,可以参考METO大神的原文(带图)。注意的一点是,仍然建议继续安装并使用Grub作为系统引导工具。

这里再稍微提一点,如果不放心,不愿意使用国内的安装源而使用官方,或者国内的VPS在访问Ubuntu的某些节点时发生困难(比如安装程序会从security.ubuntu.com获取PGP key用于验证安装包、下载安装包等被墙),则建议在选择/输入安装源之后,同时配置一个HTTP代理服务器以供使用(比如polipo虽然已经不再被维护更新了,但依然还是轻巧好用)。

结语

感谢METO大神的文章。

另外,这里有篇安装OpenSUSE的文章(以及里面链接的文章)也可以参考:《#旁门左道# 阿里云轻应用上网络安装系统的方法》

Leave a Reply

Your email address will not be published. Required fields are marked *