我有两个硬盘,每个硬盘都有一个主分区,每个硬盘都安装了各自的 Ubuntu 18.04
sda1 40gb
sdb1 512gb
sdb1 的唯一目的是保存 sda1 的压缩备份,通常计算机从 sda1 启动和运行。
我想要完成的任务(通过 SSH konsole)是将启动设备从 sda1 更改为 sdb1,然后发出重新启动命令,这样当它重新启动时 sdb1 会加载其 ubuntu 副本,接下来我可以创建 sda1 的备份映像并将其作为压缩映像文件存储在 sdb1 上,创建备份映像后,我会将启动驱动器更改回 sda1。
本练习的目的是能够在将 sda1 卸载到 sdb1 时仅使用 SSH 创建 sda1 的备份映像。
我熟悉在 bios 中更改启动设备,或从拇指驱动器启动以创建备份,我试图在不与计算机进行任何物理交互的情况下实现我的目标。(如果出现问题,我确实有物理访问权限)
我已尝试更改 /etc/fstab 中的 UUID 条目以指向 sdb1 的 UUID,但 grub/fstab 仍在启动/重启时加载 sda1。
答案1
如果你使用 EFI 启动,你可以使用以下方式临时设置下一个启动目标sudo efibootmgr -n <boot number>
首先使用以下方法检查启动列表
$ sudo efibootmgr
BootCurrent: 0000
Timeout: 10 seconds
BootOrder: 0000,0004,2001,2002,2003
Boot0000* ubuntu
Boot0003* Windows Boot Manager
Boot0004* Windows Boot Manager
Boot2001* EFI USB Device
Boot2002* EFI DVD/CDROM
Boot2003* EFI Network
$ sudo efibootmgr -n 4
BootNext: 0004
BootCurrent: 0000
Timeout: 10 seconds
BootOrder: 0000,0004,2001,2002,2003
Boot0000* ubuntu
Boot0003* Windows Boot Manager
Boot0004* Windows Boot Manager
Boot2001* EFI USB Device
Boot2002* EFI DVD/CDROM
Boot2003* EFI Network
该更改仅影响下一次启动,因此再次重启后它将恢复到原始启动顺序。
(BIOS 设置来自 Xekon 的帖子)
对于 BIOS 系统,最好的解决方案是grub 重新启动它允许一次性启动不同的 grub 条目。
首先我们必须对 grub 进行一些设置以便它与 grub-reboot 配合:
sudo nano /etc/default/grub
GRUB_DEFAULT=saved
GRUB_TIMEOUT=2
ctrl+x 保存并退出
sudo grub-set-default 0
sudo update-grub
现在启动时,查看 grub 条目,它是基于 0 的,对我来说,我有:
0 Ubuntu
1 Advanced options for Ubuntu
2 Ubuntu 18.04.1 LTS (18.04) (on /dev/sdb1)
3 Advanced options for Ubuntu 18.04.1 LTS (18.04) (on /dev/sdb1)
所以我的默认值是 0(/dev/sda1 上的 Ubuntu),2(/dev/sdb1 上的 Ubuntu)是我在第二个硬盘上安装的另一个 ubuntu。
因此,在启动到 /dev/sda1 时执行以下操作将允许我一次启动到 /dev/sdb1:
sudo grub-reboot 2
sudo reboot
然后我可以在 /dev/sda1 上执行备份或恢复,然后只需发出 sudo reboot,然后重新启动到 /dev/sda1
答案2
对于 UEFI 系统,请参阅 Bernard Wei 的文章
对于 BIOS 系统,最好的解决方案是grub 重新启动它允许一次性启动不同的 grub 条目。
首先我们必须对 grub 进行一些设置以便它与 grub-reboot 配合:
sudo nano /etc/default/grub
GRUB_DEFAULT=saved
GRUB_TIMEOUT=2
ctrl+x 保存并退出
sudo grub-set-default 0
sudo update-grub
现在启动时,查看 grub 条目,它是基于 0 的,对我来说,我有:
0 Ubuntu
1 Advanced options for Ubuntu
2 Ubuntu 18.04.1 LTS (18.04) (on /dev/sdb1)
3 Advanced options for Ubuntu 18.04.1 LTS (18.04) (on /dev/sdb1)
所以我的默认值是 0(/dev/sda1 上的 Ubuntu),2(/dev/sdb1 上的 Ubuntu)是我在第二个硬盘上安装的另一个 ubuntu。
因此,在启动到 /dev/sda1 时执行以下操作将允许我一次启动到 /dev/sdb1:
sudo grub-reboot 2
sudo reboot
然后我可以在 /dev/sda1 上执行备份或恢复,然后只需发出 sudo reboot,然后重新启动到 /dev/sda1
答案3
如果您安装了两个或更多 Linux 操作系统,您可以通过更改 /efi/EFI/ubuntu/grub.cfg 文件中的 UUID 来更改启动分区:
- 列出 UUID:
sudo blkid |egrep 'ext4|EFI'
/dev/nvme0n1p5: UUID="5794351c-6f04-4564-a25f-6026ed8090af" TYPE="ext4"
dev/nvme0n1p1: UUID="5636-6FB1" TYPE="vfat" PARTLABEL="EFI system partition"
/dev/nvme0n1p6: UUID="2978fb8c-5a4d-4a71-9376-f6a6c9c3f9e8" TYPE="ext4"
- 更新 /efi/EFI/ubuntu/grub.cfg 文件中的 UUID:
sudo mkdir /efi
sudo mount /dev/nvme0n1p1 /efi
sudo sed -i 's/2978fb8c-5a4d-4a71-9376-f6a6c9c3f9e8/5794351c-6f04-4564-a25f-6026ed8090af/' /efi/EFI/ubuntu/grub.cfg