您如何运行update-grub?


25

我进入Live CD并激活了Terminal。然后,我键入gksu nautilus以获得对我的根目录的临时访问权。打开“管理器”窗口后,单击“文件系统”并导航到该/etc/default/grub目录。然后我双击了在GRUB文件进行更改TIMEOUTTIMEOUT_QUIET

进行更改后,我保存了文件。然后我回到终端模式并输入:

gksu update-grub

我收到的错误消息是:

找不到用于/的设备(是否已安装/ dev?)

我目前不确定该怎么办。如何运行update-grub以更新更改?在此先感谢您的帮助。请非常详细和具体地回答您,因为我对这种环境是全新的。

Answers:


24

第1阶段-注意:请勿使用Live CD。

  • 在你的Ubuntu打开一个终端(按Ctrl+ Alt+ T在同一时间)
  • 键入gedit admin:///etc/default/grub
    它将运行文本编辑器gedit,如果您使用的是另一个,只需键入它的名称而不是即可gedit
  • 进行所需的更改并保存。
  • 关闭gedit。
    您的终端仍应处于打开状态。
  • 在终端类型中sudo update-grub,等待更新完成。
  • 重新启动计算机。

阶段2-登录系统后

  • 再次打开一个终端(Ctrl+ Alt+ T)。
  • 输入终端 gksu gedit /etc/default/grub
  • 要在启动时查看grub菜单,请
    注释或删除以下行:GRUB_HIDDEN_TIMEOUT=0
    • 要发表评论,请#在此行的开头添加,结果将是#GRUB_HIDDEN_TIMEOUT=0
  • 保存文件。
  • 再次在终端运行sudo update-grub

如果仅在启动时看到grub菜单,则应撤消对文件的更早更改。


感谢您的答复。我要解决的原始问题是无法打开grub菜单。因此,我认为我必须使用Live CD来访问grub配置文件并进行更改。我读到,如果将TIMEOUT更改为10,并将TIMEOUT_QUIT更改为true,则可以访问Grub菜单。引导系统时,按住Shift键。我确实看到GRUB MENU一词突然出现了。因此,在无法使用Live CD访问终端的情况下,我对如何修改GRUB配置文件一无所知。关于如何做到这一点的任何建议?
newbietoubu

我认为耶隆直接回答了这个问题。可能您正在尝试在grub中修改grub菜单???
pfeiffep

2
看到我改进的答案。
jeroen 2013年

6

之所以收到该消息,是因为Live CD无法装载可写文件系统。它仅用于试用Ubuntu或营救损坏的系统。sudo update-grub仅在已安装的Ubuntu版本上执行唯一操作,在该版本中您具有对基础GRUB文件的写访问权限(在Live CD上则没有)。


4
很好的信息,但是OP还想知道他如何才能进行自己想要的更改/etc/default/grub,然后进行update-grub
chaskes 2013年

2

您可以从已安装的Ubuntu Distro上的实时CD中进行update-grub(尽管我认为这可以与任何[基于debian的?] linux distro一起使用。这是“必需的”(可能还有其他方法,但是知道这一方法,我不知道)如果您克隆了驱动器并已经在计算机中安装了新驱动器,那么我根本不在乎。我在这里提到了广泛的克隆,因为从某种意义上说,update-grub步骤是其中的一部分,并且方法也相同此外,通过在克隆上下文中进行搜索也发现了该方法,如果不进行克隆,则可以从中获取所需的信息,从而简化了过程。

我应该在这里证明这一点;重要的是克隆,而不重要的是仅执行update-grub:我仅在BIOS系统上执行此操作。我没有在UEFI系统上尝试过。UEFI系统需要FAT分区来进行引导加载,我还没有测试过该分区是否应该在克隆复制步骤中随身携带。我希望它确实会影响在实时会话期间合成本机grub环境所需的[bind-]安装。

这在此页面上有详细描述:http : //frugaltech.happystoic.com/ssdlinux。我已经使用过这种方法很多次,您可以使用它在ad-infinitum周围交换硬盘。以这种方式交换物理硬盘变得如此微不足道,这很诱人使其成为自己的爱好和/或尝试修复其他人的混乱计算机。

以下可能是对您会发现的有用的解释:

  1. Ctrl+ Alt+ T用于Bash终端,并sudo -s在实时会话期间输入超级用户外壳程序()。

  2. 挂载完整的安装驱动器分区(该分区将(或将成为)您的永久Linux文件系统根目录)。

    2a。如果硬盘驱动器上已存在完整安装,请跳至(2)。如果您正在克隆:[基于您没有进行全新安装的假设,因为在这种情况下,这是完全自动的]如果您在该分区上尚不存在完整安装,那么现在是时候

    rsync -a /existing/linux/filesystem/live-mount-point/ /new/linux/filesystem/live-mount-point/ 
    

    [这些安装点纯粹是针对实时会话环境-在Ubuntu中,它们通常采用“ / media / ubuntu / ???”的形式]将其安装到新驱动器上[partition]。

    2b。其他操作系统的完整安装可以在此处以相同的方式处理。我通常使用基于Windows的资源预先将Windows分区批量复制到新驱动器,但我也使用rsync,它适用于Win XP(假设您支持正确的分区格式,例如ntfs;我认为实时会话媒体通常包含其他格式的支持)。/如果要完全命名目标,请小心拼写,并使用源目录中的结尾 。

  3. 将live /dev/proc/sys目录绑定安装到要使用的[mount]永久完整安装分区上的相应目录。上面链接中详细介绍的脚本通过“ for”语句非常完美地完成了此任务。同样,给定的脚本本身不必作为脚本执行。可以从bash提示符逐行输入。

  4. chroot到永久完整安装分区。完成(3)和(4)之后,系统现在“虚拟地驻留”在您的“最终文件系统”中,并且GRUB将均匀地运行。没有这些步骤,grub会假设您的系统只是一个实时会话,我不知道在那种情况下它会做什么,但是足够多的不是期望的结果,正如上面在该线程中提到的那样。

  5. /dev/sdX与永久安装相对应的(驱动器,不是挂载点)上运行grub-install (或者,如果有多驱动器[,multi-boot]系统,则哪个驱动器将承载GRUB)。这里的灵活性可能取决于您的年份和BIOS。据我所知,运行“ grub-install”对不必要的操作没有任何危害,因此,如果我使用此实时会话方法,则总是这样做。

  6. 运行update-grub,它将好像正在运行的系统嵌套在将来的永久分区中一样,发现您可能拥有的所有内核和可引导操作系统。

  7. 如果尚未物理更换硬盘驱动器,请跳至(5)。否则,请编辑或验证 /new/linux/filesystem/live-mount-point/etc/fstab文件,以确保您的[新]环境正确的文件系统结构。如果您处于此级别,那么您肯定已经知道有关 blkid 为fstab收集UUID的信息。

    恕我直言:您应该始终使用fstab中的UUID(而不是“ dev / sdXY”形式),因为在其自身范围内,它不受物理硬盘驱动器重新配置的影响,而不是要求对UUID值进行字面更新的程度(例如在将来的某个时候,您需要为/ home目录安装一个附加的HDD,等等。这只是最基本,最可靠且不变的方法。

  8. 退出chroot,退出supershell,退出bash,关闭并启动没有实时媒体的系统。您现在应该在您想要的位置。

    重要说明:争鸣 mountchroot是目录(通常挂载点如/mnt/??/media/??)相对应的实时会话。在大多数情况下(即使不是全部情况),完整安装也位于其自己的分区中,因此术语“目录”和“安装点”在这里基本上是同义词。grub-install的参数是“物理驱动器”(通常为/dev/sdX,其中“ X”是与系统中的驱动器,sda,sdb等相对应的字母,它不取决于会话)。

现在您应该完成了。我同时使用此方法以Ubuntu和Puppy的不同排列同时克隆了Windows(XP和7),这并没有让我失望。我认为您可以使用其他发行版的实时媒体(但是我只使用了不同的Ubuntu风格和Mint),只要它们提供了您打算使用的GRUB版本。您可以使用该驱动器来回移动分区,交换驱动器,合并其他操作系统安装,以及在SSD上进行克隆。我只能说它在同一台机器上工作。我认为在以前的完整安装过程中可能已跳过了其他计算机可能需要的驱动程序。我的经验法则是,在计算机中切换驱动器需要此方法,但是在切换带有驱动器的计算机时需要完全安装。

也许有人可以揭穿这个..?


1
欢迎来到Ask Ubuntu! :-) 优秀的第一答案! +1
Fabby
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.