如何从 Linux 操作系统内部替换它

如何从 Linux 操作系统内部替换它

我使用的 Nebula 服务器只能安装内核为 4.4.0-210-generic 的 Ubuntu 16.04。

我希望在我的实例上安装较新版本的 Linux。

虚拟化

我尝试在 Ubuntu 中创建虚拟机(使用 libvirt),但收到消息:

ERROR Host does not support any virtualization options

但是,当我检查时lscpu我得到:

Virtualisation:        VT-x

使用 grub 和另一个带有可安装 ISO 的磁盘

所以后来我想我可以尝试从内部手动替换整个操作系统。

我有权为实例创建新驱动器。

所以我添加了一个16GB的驱动器

$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   16G  0 disk 
├─sda1   8:1    0  2,9G  0 part 
└─sda2   8:2    0  3,9M  0 part 
sr0     11:0    1  364K  0 rom  
vda    253:0    0  500G  0 disk 
└─vda1 253:1    0  500G  0 part /

并将其制作为 Ubuntu 磁盘

dd if=ubuntu20.04.iso of=/dev/sda

但是,我无权更改启动驱动器。

  • 我的“旧”操作系统驱动器的 ID 为 0
  • 我的新 Ubuntu ISO 驱动器的 ID 为 2

Nebula 配置被硬编码为从 id 0 启动,我无法更改它。

我检查了我的系统目录/boot,发现引导系统是GRUB。

所以我检查了版本

grub-install --version

而且好像是Grub2

grub-install (GRUB) 2.02~beta2-36ubuntu3.32

我想知道是否可以告诉 grub 启动到我的 ubuntu20.04 磁盘,然后在名为 id0 的磁盘上安装vda

只需更换系统中的文件即可更换操作系统。

如果无法运行安装程序,那么我正在考虑手动替换内核和所有操作系统文件。但是,我很确定如果我替换我当前使用的系统的文件,系统将会崩溃 - 但也许有一种方法可以以正确的顺序执行此操作。

答案1

可以在命令行将 Ubuntu 从一个版本升级到更新版本

主要任务是sudo apt install update-manager-core安装更新程序。然后sudo do-release-upgrade

https://www.cyberciti.biz/faq/upgrade-ubuntu-18-04-to-20-04-lts-using-command-line/

答案2

如果您无法按照另一个答案建议的那样更新您的 Ubuntu 安装,您可以通过抓取其磁盘标识符(以(hdX, msdosY)或的形式)将 GRUB 指向您的安装磁盘,并在[1](hdX,gptY)中手动创建一个菜单项/boot/grub/grub-cfg

menuentry "New Ubuntu Install Disk" {
          search --set=root --label GRUB --hint hdX,msdosY
          linux /path/to/vmlinuz #likely in /boot/
          initrd /path/to/initrd #also likely in /boot/
}

另外,也许您对启动顺序的控制比您意识到的更多efibootmgr:(文档)可用于手动更改启动设备。

或者,您可以重新启动并手动输入 GRUB 命令行(使用c),然后从那里启动到安装程序(尽管这是一次性的努力)。有关如何执行此操作的说明这里

[1]https://www.gnu.org/software/grub/manual/grub/grub.html#Multi_002dboot-manual-config

相关内容