答案1
无需 USB 即可启动 Ubuntu Live
使用 Windows 磁盘管理来缩小您的 Windows 分区。
将 Ubuntu ISO 放在您的 /home 分区上或将 swap 暂时更改为 ext4 然后将其放在那里。
将以下菜单项添加到
/etc/grub.d/40_custom
。
菜单项
menuentry "isoname ISO" {
rmmod tpm
set root=(hdX,Y)
set isofile="/[path]/[name].iso"
loopback loop $isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile toram fsck.mode=skip --
initrd (loop)/casper/initrd
}
其中 hdX 是磁盘,Y 是 ISO 位置的分区号。
[path]是ISO文件的路径,[name]是ISO文件的名称。
运行
sudo update-grub
将菜单项添加到 grub.cfg。关机并重启。
从 GRUB 菜单中选择“isoname ISO”。 (如果您的 ISO 位于您正在更改的分区上,则可能需要启动 toram)。
如果需要,您可以使用
sudo umount -lrf /isodevice
它来卸载 iso 设备。
您将可以像从 Live USB 启动一样访问 GParted。
答案2
我对 CS Cameron 的回答非常感兴趣,并渴望在我的某些机器上尝试一下。那个答案中的代码对我来说不起作用。rmmod tpm 行生成了一个非致命错误,所以我删除了它。我下载的 GParted iso 中没有 /casper 目录。但是有一个 /live 目录,我发现将“casper”条目更改为“live”是必要的。/live 包含 vmlinuz 和 initrd.img。这让我获得了大部分成功,各种搜索都抛出了“toram=filesystem.squashfs”以以这种方式启动其他 iso。然后我发现了这个GParted 网站链接使用以下代码并进行一些修改:
menuentry "GParted ISO" {
set root=(hd0,msdos1)
set isofile="/path/gparted.iso"
loopback loop $isofile
linux (loop)/live/vmlinuz boot=live union=overlay username=user components noswap ip=net.ifnames=0 toram=filesystem.squashfs findiso=$isofile
initrd (loop)/live/initrd.img
}
这在旧版 Ubuntu 20.04 和 Arch 上对我有用。我还没有在 UEFI/GPT 机器上尝试过,我预计会有所不同。我发现我必须从代码中删除“vga=788”,因为它已被弃用。在这两台机器上,我都将 iso 放在我的主目录中并将其重命名为“gparted.iso”。Ubuntu 机器有一个分区,因此路径是 /home/user/gparted.iso。Arch 机器有单独的 / 和 /home 分区,因此路径更短为 /user/gparted.iso
另一件至关重要的事情是找到 root=(hdX,Y) 的正确参数。您可以从 grub 菜单中找到这些参数,只需按 c 进入命令模式,然后按 ls 列出分区,再按 ls (hdX,Y)/ 列出该分区顶层的内容,这有助于识别。Y 可以是一个数字或类似 msdos1 的内容。
答案3
我会选择 CSCameron 的答案,但也可以选择在 grub 命令行中输入这些条目……但在紧要关头:
如果可用/可行,您还可以将驱动器从目标机器移到另一台 Linux 机器并正常启动并进行更改...然后删除...
反过来也是可能的,但是图形驱动程序可能会发挥作用,通过将驱动器从另一台 Linux 机器带到目标机器并覆盖正常启动并进行更改。