我正在尝试更新我的 live usb 上的 grub 但出现以下错误:
ubuntu@ubuntu:~$ sudo update-grub
/usr/sbin/grub-probe: error: failed to get canonical path of `/cow'.
有什么想法吗?我在网上找到的任何东西都没有用。
这是我的挂载点的详细信息:
/cow 872M 62M 766M 8% /
udev 930M 4.0K 930M 1% /dev
tmpfs 189M 1.1M 188M 1% /run
/dev/sdb1 1.9G 1.9G 31M 99% /cdrom # <- this is the USB I'm using
/dev/loop0 939M 939M 0 100% /rofs
none 4.0K 0 4.0K 0% /sys/fs/cgroup
tmpfs 942M 4.0K 942M 1% /tmp
none 5.0M 0 5.0M 0% /run/lock
none 942M 76K 942M 1% /run/shm
none 100M 44K 100M 1% /run/user
答案1
你不能update-grub
使用具有持久性的 liveUSB。你必须修改配置文件其他运行 Linux 的计算机(或 Windows,如果您对 Cygwin 有良好的命令行知识)。
使用 /cow(在您的设置中,USB 上的 Casper 文件系统被挂载为 /)运行update-grub
时,它会尝试更新根分区的 grub 条目,而对于 liveUSB,这实际上并不是 grub 运行的位置。它从 /cow 以外的设备运行,然后更改为 /cow 以供您使用。
表面上,您可以chroot
进入/rofs
循环设备(循环意味着文件系统位于文字文件中而不是物理磁盘中),因为update-grub
在那里运行实际上会更新用于运行 liveUSB 环境的文件的 grub。
不幸的是,这里使用的映像无法更新,因为它是只写安装的(应该是这样!您不希望临时文件系统自行修改)。我建议您尝试使用两个 USB,一个用于实时磁盘,另一个用于安装。确保断开所用计算机的硬盘驱动器,以避免 grub(或更糟的是,您要安装的整个 linux 系统)安装在已经存在的引导加载程序上。
来源:我一直在徒劳地尝试做我想象中你正在尝试做的事情,并且在此过程中学到了很多东西。