如何從 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

相關內容