发布于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文件:
- Ubuntu 16.04(Xenial Xerus)
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
- Ubuntu 18.04(Bionic Beaver)
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
- Ubuntu 20.04(Focal Fossa):链接跟前面的版本是有变化的,似乎再往以后的版本就不再提供netboot的安装方式了。而在Ubuntu Netboot Images的页面也没有列出20.04版本的链接。
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的文章(以及里面链接的文章)也可以参考:《#旁门左道# 阿里云轻应用上网络安装系统的方法》。