由于 Oracle Cloud 没有 Debian 操作系统,只有 CentOS/Oracle/Ubuntu,这非常不方便,所以,这里介绍如何将 Ubuntu 更换成 Debian。
创建实例就不用介绍了,注意创建实例的时候一定要把 SSH 公钥上传上去,否则创建完了登录不上是一件非常麻烦的事情。
下面教程开始。
一 开启 Oracle 的 VNC 连接
1.1 创建控制台连接
首先打开要更换系统的实例的「实例详细信息」,页面往下拉找到「控制台连接」,然后点「创建控制台连接」按钮。
如图所示:
1.2 上传 SSH 公钥
然后点“或浏览。”把 SSH 公钥上传上去,当然直接粘贴 SSH 公钥也行,然后点创建控制台连接。
如图所示:
1.3 复制 VNC 连接
创建完成状态变成“活动”后,点后面的三个点菜单按钮,然后点「复制 Linux/Mac 的 VNC 连接」选项。
注:因为我的设备是 MAC,所以我选的这个。如果是 Windows 的话,需要点“复制 Windows 的 VNC 连接”按钮,会复制一个 Powershell 命令到剪贴板,但我没有 Windows 电脑,所以不多介绍,请自行摸索。
1.4 编辑刚复制的命令并粘贴到终端
复制出来的命令还不能使用,需要编辑一下,将 SSH 私钥文件指定一下,示例:
PS: 这又臭又长的 OCID 真难受。:(
ssh -i ~/.ssh/demo.key -o ProxyCommand=’ssh -W %h:%p -i ~/.ssh/demo.key -p 443 ocid1.instanceconsoleconnection.oc1.ap-seoul-1.anuwgljrmykpnwqcs41asaj4a6yxxqnx4wpgmryqa5jfy5fqayb7atu3zy3q@instance-console.ap-seoul-1.oraclecloud.com’ -N -L localhost:5900:ocid1.instance.oc1.ap-seoul-1.anuwgljrmykpnwqckervah11rehmuimvmnlfu7ru7tyd2rfipf6xweyk571b:5900 ocid1.instance.oc1.ap-seoul-1.anuwgljrmykpnwqckervah11rehmuimvmnlfu7ru7tyd2rfipf6xweyk571b
将编辑完的命令粘贴到 MAC 的「终端」里,然后输入 yes,
终端输出示例如下:
kane@kanes-Mac .ssh % ssh -i ~/.ssh/demo.key -o ProxyCommand=’ssh -W %h:%p -i ~/.ssh/demo.key -p 443 ocid1.instanceconsoleconnection.oc1.ap-seoul-1.anuwgljrmykpnwqcs41asaj4a6yxxqnx4wpgmryqa5jfy5fqayb7atu3zy3q@instance-console.ap-seoul-1.oraclecloud.com’ -N -L localhost:5900:ocid1.instance.oc1.ap-seoul-1.anuwgljrmykpnwqckervah11rehmuimvmnlfu7ru7tyd2rfipf6xweyk571b:5900 ocid1.instance.oc1.ap-seoul-1.anuwgljrmykpnwqckervah11rehmuimvmnlfu7ru7tyd2rfipf6xweyk571b
The authenticity of host ‘ocid1.instance.oc1.ap-seoul-1.anuwgljrmykpnwqckervah11rehmuimvmnlfu7ru7tyd2rfipf6xweyk571b ()’ can’t be established.
RSA key fingerprint is SHA256:VicVSvgp966cIPCUcW4jzP40QUI1Z30TwCNCcE0LR2g.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added ‘ocid1.instance.oc1.ap-seoul-1.anuwgljrmykpnwqckervah11rehmuimvmnlfu7ru7tyd2rfipf6xweyk571b’ (RSA) to the list of known hosts.
这时候终端一直会定在这里,这样 VNC 转发就连接好了,不要关终端。
1.5 打开 VNC Viewer 并连接到实例
打开 VNC Viewer,地址栏输入 localhost:5900
并回车。
将会提示 VNC 未加密,不用管它,直接点「continue」。
如图所示:
这样 VNC 连接就开启好了,接下来进行下一步操作。
二 设置 netboot 引导
1.1 登录实例的 ssh 并替换文件
直接登录 SSH 把 Ubuntu 的 vmlinuz 和 initrd.img 替换为 netboot 的就行,连编辑 grub.cfg 都不用。虽然不改 grub.cfg 的话,安装界面会是黑色的,但不影响在线安装。
cd /boot wget https://mirrors.xtom.com.hk/debian/dists/stable/main/installer-amd64/current/images/netboot/debian-installer/amd64/initrd.gz wget https://mirrors.xtom.com.hk/debian/dists/stable/main/installer-amd64/current/images/netboot/debian-installer/amd64/linux ln -sf linux vmlinuz ln -sf initrd.gz initrd.img
1.2 重启并在线安装系统
直接执行 reboot 命令重启或者在「实例详细信息」中执行「重新引导」,重启完了以后 VNC 可能会底下显示 _ 卡一段时间,耐心等等就行。
安装过程我就省略掉了,不会的可以网上找找。
需要注意的是,在分区那个步骤里,一定一定一定要创建一个 EFI 分区并擦空,大小 512MB 就行,否则将会无法开机。Oracle Cloud 是 EFI 引导的。
1.3 手动选择 grubx64.efi 引导
因为 Oracle Cloud 的 EFI 是弱支持,安装完 Debian 还是不能直接开机,会卡在 EFI Shell 里,这样我们先手动选择 grubx64.efi 引导进入 Debian 系统。
输入如下命令:
fs0: cd EFI\debian grubx64.efi
如图所示:
1.4 修复 EFI 引导
进入系统后,切换到 root 用户执行如下命令:
apt install sudo -y cd /boot/efi/EFI mkdir boot cp debian/grubx64.efi boot/bootx64.efi
告知 grub 确保备选 bootloader 是最新版:
echo "grub-efi-amd64 grub2/force_efi_extra_removable boolean true" | sudo debconf-set-selections
重启设备,就行了。EFI 已经修复完成。
参考链接:
https://wiki.debian.org/GrubEFIReinstall
https://www.logilab.org/blogentry/6546148
评论前必须登录!
立即登录 注册