无法在Live USB上使用参数更新grub。

我已经从一个带有持久选项设置的活动USB(“尝试Ubuntu”)启动了计算机(我使用LiLi创建了一个),以便对我遇到的这个PCIe热插拔问题进行一些测试。
我正在尝试通过这种方式测试一些引导参数(例如在这个问题中)。
sudo nano /etc/default/grub
sudo update-grub

问题是最后一个命令给了我这个:
/usr/sbin/grub-probe: error: failed to get canonical path of /cow.

看起来/ cow 是挂载在/ 上的文件系统,根据:
:~# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/cow             4056896 2840204   1007284  74% /
udev             1525912       4   1525908   1% /dev
tmpfs             613768     844    612924   1% /run
....

有没有办法让我运行update-grub命令?

当运行update-grub时,我遇到了与原帖作者相同的问题。尝试挂载/cow时,出现错误“mount: special device /cow does not exist”。有什么想法吗? - user279868
我在这里使用建议的命令运行grub-mkconfig时出现了错误。https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=736928 - x29a
2个回答

你需要做一些重新挂载和重新映射的工作。
在启动LiveCD后,我们将把Ubuntu分区挂载到/mnt目录下:
sudo mount /dev/sd*# /mnt

如果您的Ubuntu分区更新了,那么/dev/sd*#将被更新。
如果您有一个单独的/boot分区,我们还需要将其挂载到/mnt/boot中:
sudo mount /dev/sd*# /mnt/boot

/dev/sd*#更新为您的/boot分区。

这样应该可以挂载它,并且有足够的访问权限以获取需要的规范路径,但我们可能不需要这个。

最后,只需使用正确的根目录和目标更新grub:

sudo grub-install --root-directory=/mnt /dev/sdX

在这里,/dev/sdX是我们想要安装GRUB的磁盘(而不是分区)。

我不确定我理解你的意思。你所说的“Ubuntu分区”是什么意思?我并不打算更改持久化USB驱动器的引导参数,也不是其他安装的引导参数。 - Nanne
@Nanne 您希望配置GRUB的安装中,挂载在/上的分区。 - nanofarad
我正在使用USB键启动。我想用同一个键重新启动,但是带有不同的参数。只有一个安装程序,就在USB键上。所以我想要配置的安装程序挂载在/目录下。 - Nanne
是的,只要这是一次完整的安装在所说的密钥上。 - nanofarad
嗯,听起来不错,递归挂载 :) .. 我试试看吧 ;) - Nanne
4尝试过这个方法,得到了“尝试将GRUB安装到分区磁盘或分区。这是一个坏主意。 无法嵌入。只能通过使用块列表来安装GRUB在这种设置中。 然而,块列表是不可靠的,不建议使用。”尝试了--force选项,虽然成功安装了,但却破坏了GRUB并导致USB闪存无法启动。这是在14.04版本上发生的。还有其他的想法吗? - DanielSmedegaardBuus
如果sd*#是一个软件RAID阵列,这似乎无法正常工作。 - Cerin
1当我运行最后一个命令时,我收到错误消息:“不会继续使用块列表。”(https://gist.github.com/fe6c7e87c47aa5477c06)。 - emlai
@zenith 这是因为您的磁盘使用了GPT分区。我没有使用这种系统,所以对它的操作和引导加载程序的工作原理并不特别熟悉。 - nanofarad
你救了我一命,老兄!其中/dev/sdX是指磁盘(而非分区)!!! - WesternGun

对我来说,我只需要安装grub。
sudo apt-get update;
sudo apt-get install grub