为什么要这么做
腾讯云的轻量应用服务器不支持自定义镜像安装系统。腾讯云给轻量应用服务器安装的所有的系统都经过腾讯修改。而腾讯云轻量服务器的限制,只能从主硬盘引导启动,所以无法单纯挂载一个硬盘引导启动安装系统。
本文介绍了一种使用GRUB安装自定义镜像绕开限制方法。
步骤
重装服务器
将服务器重装为任意系统,Linux或Windows都可以,不重装也可以。但是无论如何系统内的数据都无法保留,需要提前备份。
准备云硬盘
创建一块云硬盘
点击此处创建一块容量为10G的云硬盘。注意要和服务器在同一地域才能挂载。选择 10G 一个月 高性能运行盘即可,怎么便宜怎么来。
在使用完后这块硬盘可以退回,所以成本只有几毛钱。
挂载云硬盘
进入腾讯云服务器管理界面挂载这块云硬盘。
准备系统镜像
进入救援模式
在管理界面概要中,点击右上角的更多操作的进入救援模式,然后等待服务器进入救援模式。进入这个模式之前推荐将服务器关机。进入救援模式时需要设置一个密码,这个密码需要记住。
当控制台显示救援模式时,表示已经进入了救援模式。
登陆服务器
此文编写时,腾讯云使用CentOS 7.5作为救援模式的系统。这是一个临时系统,可写但所有的写入在系统重启后都会丢失。
启动命令行输入下面的命令和使用上节填入的密码登录服务器。
ssh -p22 root@服务器IP
初始化云硬盘
上章节创建的云硬盘没有初始化,在这里初始化一下。
fdisk /dev/vdb
在
fdisk 中执行以下操作:
- 输入 n,创建新分区
- 选择 p,创建主分区
- 输入分区号 1
- 起始扇区和结束扇区直接按 Enter,使用默认值
- 输入 w,写入分区表并退出
然后格式化分区,最后挂载分区。
mkfs.ext4 /dev/vdb1
mkdir /mnt/iso
mount /dev/vdb1 /mnt/iso
下载系统镜像
cd /mnt/iso/
wget https://dl.rockylinux.org/vault/rocky/9.0/isos/x86_64/Rocky-9.0-x86_64-boot.iso
此处注意使用RockyLinux 9.0,Rocky Linux的最新版本无法使用这种方式启动,所以要先安装9.0系统,然后在系统内升级到最新版即可。如果在此处安装非此系统,也可参考本教程操作。下载速度可能会比较慢,耐心等候即可。
初始化主硬盘
因为腾讯云轻量服务器的限制,只能从主硬盘引导启动。所以我们在这里要在主硬盘上安装一个GRUB用来启动我们下载在云硬盘上的ISO安装镜像。
初始化硬盘
首先创建MBR分区表。
fdisk /dev/vda
进入fdisk交互界面后:
- 输入
o,创建一个新的空的DOS分区表(MBR)。 - 输入
n,创建一个新的分区。 - 选择
p,创建主分区 - 分区号:
1 - 起始扇区:按
Enter - 结束扇区:按
Enter - 输入
w,写入分区表并退出。
然后使用下面的命令初始化文件系统。
mkfs.ext4 /dev/vda1
安装GRUB
执行以下命令安装GRUB:
mkdir -p /mnt/bootdisk
mount /dev/vda1 /mnt/bootdisk
mkdir -p /mnt/bootdisk/boot/grub2
grub2-install --boot-directory=/mnt/bootdisk/boot /dev/vda
配置GRUB
编辑GRUB配置文件vi /mnt/bootdisk/boot/grub2/grub.cfg,然后将一下内容写入文件中:
menuentry "Install Rocky Linux 9.0" {
insmod gzio
insmod part_msdos
insmod part_gpt
insmod ext2
insmod iso9660
insmod loopback
set isofile="/Rocky-9.0-x86_64-boot.iso"
set root=(hd1,msdos1)
loopback loop ($root)$isofile
linux (loop)/images/pxeboot/vmlinuz rd.live.check inst.stage2=hd:LABEL=Rocky-9-0-x86_64-dvd quiet iso-scan/filename=${isofile} inst.repo=https://mirror.nju.edu.cn/rocky-vault/9.0/BaseOS/x86_64/os/
initrd (loop)/images/pxeboot/initrd.img
}
如果上面的步骤没有任何改动和错误,那么通常不需要修改这个配置文件。
需要注意以下几点:
set isofile后接下载的ISO文件的名称hd:LABEL=需要硬盘的有效名称,如果你不知道名称,见附录如何获取镜像的LABEL(hd1,msdos1)意味着是第二个盘的第一个分区,即云硬盘的第一个分区- 如果后续无法正常进入安装系统,则大概率是这里的配置文件的问题
- 如果安装界面异常,可以选择在
linux参数后加上nomodeset强制进入text mode来安装系统
退出救援模式
在确保上述流程全部做完且没有错误输出的时候,在腾讯云的管理界面中选择退出救援模式。等待实例状态从退出救援模式恢复到进入救援模式之前的状态后即退出成功。
安装系统
如果实例处于关机界面,选择开机。
然后在腾讯云的界面上选择VNC连接到服务器。通常会显示一个GRUB菜单Install Rocky Linux 9.0。如果没有显示或显示GRUB命令行,则意味着配置文件可能有错误。需要重新回到救援模式挂载/dev/vda1排查问题。
选择唯一的启动项目,进入到安装界面。在安装之前还会对镜像进行一次验证。如果你选择的是Rocky最新版的镜像,在这里会失败,即使关闭验证也会失败。
如果一切顺利,你会成功进入到系统的安装界面。跟随系统提示安装即可。只要没有开始安装,你都可以关闭系统然后进入救援模式做一些其他操作而不用重新执行以上步骤。如果对于安装系统产生疑问请参考其他教程。
推荐在安装完成系统之后创建一个系统快照,即使系统出现问题,也不需要重新跟随本教程走一遍。
销毁云硬盘
在系统成功安装完成之后,你需要打开腾讯云的云硬盘管理界面并解除挂载云硬盘并销毁然后退还云硬盘。如果你是首次退回则不需要收取费用,否则会收取几毛钱的费用。
扩展阅读
除了安装RockyLinux 9版本的系统之外,你还可以安装RockyLinux 8。只需要替换前文提到的一些信息即可。
腾讯云有自己的镜像站,可供系统安装完成之后使用。但是安装过程中使用的所有外部镜像地址最好遵循本教程。
这个网站列出了所有的镜像站列表,你可以在上面找到离你最近的Rocky Linux Vault镜像站,只有这类镜像站才提供老版本的镜像包。
安装过程中如果提示源不可用之类的错误信息,可以手动设置源链接:https://mirror.nju.edu.cn/rocky-vault/9.0/BaseOS/x86_64/os/或其他Rocky Linux Vault镜像站。
除了使用本文提到的方式以外,还可以使用网上现成的安装系统的脚本安装系统,例如使用 bin456789/reinstall。
附录
如何获取镜像的LABEL
安装isoinfo工具
yum install genisoimage
获取卷标(LABEL):
isoinfo -d -i /path/to/your.iso | grep 'Volume id'