“卧榻之侧,岂容他人鼾睡”
众所周知,各大云服务器厂商都会在自己的镜像里内置各种 “Agent”,一般来说,这些 Agent 都是起到一个监控运行,帮你重置密码的作用。但有句古话说的好:卧榻之侧,岂容他人鼾睡,所以,给 VPS 更换自己喜欢的系统成为了一个势在必行的操作。这里就简单介绍一下怎么在 VPS 上安装 openSUSE(Legacy Grub)。
相比于 GitHub 上的 VPS2Arch, 其他发行版的镜像就没有说有这种一键式的脚本了,所以我们要借助 netboot.xyz 的帮助。netboot.xyz 是一个可以通过 Bios/Grub 启动的 PXE 引导工具。你可以在其中选择你需要的系统镜像引导并安装,这就大大降低了从给 VPS 换系统的难度,要不然就只能自己做镜像 dd 进 VPS 的盘了。
准备工作
- 需要有
- 一台可以 VNC 的 VPS(Centos 系统)
- 相应系统的国内镜像源 (建议选择你 VPS 运营商的镜像源)
- 白天时间,晚上除非你不想睡觉了
- 需要查看
-
/sys/firmware/efi/
是否存在 (确定是否是 UEFI 启动)
-
开始
-
首先调节 Grub 菜单的超时时间
sed -i "/GRUB_TIMEOUT/cGRUB_TIMEOUT=60" /etc/default/grub
-
重启,打开 vnc,在菜单界面按 c 进入命令行
ls # 查看驱动器 set root=(<ls 显示出来的结果>) # 选定硬盘 一般格式为 (hdX,msdosX) 或者 (hdX,gptX) ls / # 查看磁盘目录确定你的/boot 目录所在分区
-
重启,进系统,开始处理启动项
-
先处理需要加载的项
cd /boot wget https://boot.netboot.xyz/ipxe/netboot.xyz.lkrn
-
编写用于加载项的 initrd 文件,名字无所谓
## 首先 vi /boot/netboot.initrd ## 然后输入 #! ipxe imgfree dhcp chain --autofree https://boot.netboot.xyz ## 保存退出
-
处理 Grub 菜单
vi /etc/grub.d/40_custom ## 输入如下 menuentry 'netboot' { set root='hd0,msdos1' ## 这里写之前找到的/boot 所在的分区 Linux16 /boot/netboot.xyz.lkrn initrd16 /boot/netboot.initrd } ## 保存退出
-
-
重新生成 grub 文件
grub2-mkconfig -o /boot/grub2/grub.cfg
妥了,下一步整起
安装系统
如果你是国外的 vps,直接选择 Installer 下面的发行版就行了,这里着重讲述下 openSUSE。因为 openSUSE 的 repo 问题比较特殊,所以需要额外处理一下。
实际上,netboot.xyz 在你选择 installer 后,下一步是去 Web 上拉对应的 iPXE 脚本。iPXE 脚本中定义了软件源与参数。由于 d.o.o 的自身的问题和国内网络环境的问题,走官方提供的脚本肯定死路一条。幸好 netboot.xyz 还提供了 iPXE Shell,得以让我们可以手动引导安装。
- 安装步骤
-
在 grub 菜单中选择 netboot,进入然后选择 iPXE Shell
-
一条一回车,输入以下内容,安装选用了 openSUSE 官方 wiki 描述的远程安装方式 (SSH 安装)
# 如果你要安装 TW,输入 set dir tumbleweed/repo/oss # 如果你要安装 leap,输入 set opensuse_base_dir distribution/leap set version 15.3 # 这里写你想装的版本 set dir ${opensuse_base_dir}/${version}/repo/oss ##### 以下为通用内容 ##### set netsetup netsetup=dhcp set opensuse_mirror http://opentuna.cn/opensuse imgfree kernel ${opensuse_mirror}/${dir}/boot/x86_64/loader/linux initrd ${opensuse_mirror}/${dir}/boot/x86_64/loader/initrd imgargs linux ${netsetup} install=${opensuse_mirror}/${dir} initrd=initrd noapic useSSH=1 SSHpassword="pa33w0rd" ## 密码随便,如果启动的时候 kernel panic,去掉 noapic 再试一次 boot
-
在输入了 boot 回车之后,安装程序就会开始引导了,在引导完成后,会提示你连接,那么就打开你本机的终端 (kde/gnome 的随你便),然后:
ssh -X root@ 你的 ip 地址 yast.ssh
然后 YaST 就会启动,熟悉的安装界面就出来了,装就完事
-
注
- 这么装界面会有点卡
- 安装的时候别手闲选启用 online repo
- 尽量选择一个你不会重启,不会关机,不会断网的时间,虽然安装只有 2G 但是还是很慢,怎么说也得有个 1 小时 +(我睡着了,我也不知道)
- 如果你发现他装完后,VNC 上还是处在一个提示让你链接 SSH 的地方,不要慌,你这会什么
shutdown
,poweroff
,reboot
,init 2
都用不了。在你 ssh 链接的窗口再输入yast.ssh
, 打开窗口后直接 abort,他就自己重启了。 - 装完记得打个快照/镜像