我在计算机上多次安装 Ubuntu,每次都重新安装 GRUB。这是否意味着我有多个 GRUB 副本占用空间?如果是这样,我应该如何安全地删除多余的副本?
如果这有帮助的话:
elementary@elementary:~$ grub --version
The program 'grub' is currently not installed. You can install it by typing:
sudo apt-get install grub
elementary@elementary:~$ grub-mkconfig --version
grub-mkconfig (GRUB) 1.99-21ubuntu3.10
elementary@elementary:~$
答案1
这是否意味着我有多个 GRUB 副本占用空间?
不,grub 将其自身的大部分安装到根文件系统分区中(请参阅 的子目录/boot
),因此,如果“多次安装”意味着覆盖一个又一个安装,那么这也将全部被覆盖。 EFI/GPT 系统使用一些额外的隐藏空间,但这些空间也总是会被覆盖(驱动器上不会有超过一个这样的空间)。
需要明确的是:如果你的机器上只有一个现有的 Linux,现在停止阅读。
但是,如果您的意思是在单独的现有分区上有多个并行安装,那么它们确实都有单独的副本,即使只使用最后一个安装的副本(确保您确定是哪一个, 明显地)。删除不用的可能就可以了。一个简单的测试是将grub2
和efi
子目录/boot
暂时移动到到一个单独的分区然后尝试启动该系统。
我应该如何安全地删除多余的副本?
使用发行版包管理器,应该没有任何东西依赖于它,尽管它可能是单独的部分(grub、grub-efi、grub-tools、grub-themes)。如果您不使用包管理器,它最终可能会在稍后作为升级回来。 请记住,总大小最多只有十几 MB 左右通常不值得担心。另外,我不能保证某些包管理器不会对驱动器的引导扇区做一些愚蠢的事情(尽管这确实非常愚蠢)。
答案2
您很可能在 Ubuntu 的每个安装中安装了五个软件包:
grub-common
grub-gfxpayload-lists
grub-pc
grub-pc-bin
grub2-common
然而,与每个这些安装的单个内核所需的空间相比,这只是很小的空间。 (IIRC 这些包中的最后一个几乎是空的存根)
在您的 MBR 中,有一个指向这些安装之一的文件的指针,该安装会扫描其他分区,找到内核并将它们放入 grub 菜单中。所以原则上你不需要其他 grub,但这些软件包占用的磁盘空间总量小于 10Mb,那为什么还要麻烦呢?
没有grub
安装是因为旧版 grub 没有安装(您目前正在使用grub2
)
答案3
如果您询问是否有引导加载程序代码的多个副本,答案是否定的。引导加载程序将其代码安装在硬盘驱动器的开头(分区表和第一个分区之间的空白空间),并将覆盖已经存在的任何内容。
现在,这是 MBR 配置。如果您有 UEFI BIOS 并且它安装了多个菜单条目,那么我不够专业来回答...您需要某种 UEFI nvram 编辑器。