我经常遇到需要运行实时发行版才能执行某些操作的情况(例如调整主启动分区的大小)。通常的流程是找到一个我没有用于其他用途的 USB 驱动器,从中创建一个实时 USB,然后启动它。问题通常出在“找到一个我没有用于其他用途的 USB”。我最近在想,是否有办法在不使用 USB 的情况下启动实时发行版。我知道您可以使用内核选项toram
完全在 RAM 中运行。这让我想知道是否可以使用一些 GRUB 魔法直接从 RAM 启动系统,而无需使用 USB。
答案1
/etc/grub.d/40_custom
我的文件中有一个菜单项,我可以通过该菜单项激活sudo update-grub
它来启动 Lubuntu iso 文件。
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry "Lubuntu 18.04.1 Desktop iso" {
set isofile="/lubuntu-18.04.1-desktop-amd64.iso"
loopback loop (hd0,1)$isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
initrd (loop)/casper/initrd.lz
}
这按预期工作,但即使我使用启动选项toram
(在“linux”行的末尾)将其推入 RAM,它也不会让我卸载存储 iso 文件的分区,该分区安装在/isodevice
。
我将 iso 文件存储在已安装系统的根分区中,因此这意味着我无法使用仅在目标分区卸载时才起作用的工具来修改或修复它。
有可能将 iso 文件存储在单独的分区中,该分区未被安装的操作系统使用这样,您就可以使用从 iso 文件启动的实时系统来编辑已安装操作系统的分区。
因此
(hd0,1)
修改loopback loop (hd0,1)$isofile
指向那个单独的分区。
如果内部驱动器中有交换分区,而您想要编辑它,则必须将其交换掉
sudo swapoff /dev/sdxn
其中 x 是设备字母,n 是分区号