grub-install 做了什么?

就我看过的资料来看,每个人对于grub-install的说法不一,

我没有亲自试过,悟了很久,感觉悟出了点什么,能够解释一下。

首先我先说说我的疑惑,根据网上和某些资料,一般有以下两种认识不统一。

1.grub-install 只设定配置文件,真正的boot loader 需要用grub shell另外安装,MBR和boot sector需要分别安装(鸟哥这么认为,如果我没理解错的话)

2.grub-install 能安装boot loader,但是只能装到MBR(某些网页上大部分人这么认为)

理解:

首先,man page是这么说的:

grub-install  copies  GRUB  images into the DIR/boot directory specfied by --root-directory, and uses the grub shell to install grub into the boot sector。

对于以上这三种,我肯定会相信man page了。但是既然他们有别的看法,那肯定说明他们那么做成功了。这很难解释。我想了很久。

鸟哥有一点错地很明显,grub-install并不止是设定配置文件,还进行了安装。

看一下grub-install 的命令:

grub-install [OPTION] install_device

其中选项--root-directory会改变GRUB images的安装路径(默认是/boot/grub/)

你可以选择你的配置文件的路径和要安装的设备或分区(MBR还是某个boot sector?)


一般人认为grub 只会安装到MBR是因为grub只安装到MBR就已经够用了。

理解一下启动流程:

MBR中的boot loader启动后,根据配置文件,会有以下两种操作

1.直接将linux引导起来

2.转交给其他boot sector中的boot loader(如果还装有Windows)。

根据上面的流程,安装到MBR,就已经能应对多系统的问题了。

那么,grub-install能不能将boot loader装到boot sector中而不是MBR中呢?能,鸟哥试过了。

但是装上这个之后有什么作用呢?假设一下MBR中和boot sector中都有boot loader的情况。

如果MBR中能直接引导Linux那么,boot sector中的boot loader就起不到作用了。

如果MBR中指定的是转交给boot sector中的boot loader,那么引导Linux的任务就成了此boot sector 中boot loader的功能。

上面这种设定对配置文件有要求,就是要求MBR中的boot loader和boot sector 中的boot loader要使用不同的设定文件。

MBR中应该设定为交给boot sector 中的boot loader,而不是直接引导起Linux

boot sector 中应该设定为引导Linux。如果此时跟MBR使用同一套配置。那么,就现象而言的话,应该是一直停留在选单画面进入不了系统(如果你一直选择进入Linux而不是Windows)(鸟哥的配置就类似于此,他做了一个在选单上循环跳但是进不了系统的实现,因为他使用了同一套配置文件)

鸟哥在他的例子当中,装完boot sector中的boot loader时,说了一句“我们还没有配置文件哦,那要自己建立”。最后还是跟MBR的boot loader使用了同一个配置。


推测:

其实不用像鸟哥说的那样使用完grub-install后,再用grub shell进行安装,grub-install已经帮你安装好了(man page)。

只要使用两次grub-install,就能达到鸟哥同样的目的。

不知道上面的推测对不对,有机会实践一下。

### 回答1: "grub-install /dev/sda" 失败可能是由于以下几种原因之一: 1. 硬盘驱动器不存在或无法识别。 2. 系统磁盘权限问题,您没有在终端中使用管理员权限运行命令。 3. 系统中已经存在其他引导程序,导致冲突。 4. grub程序本身存在问题。 建议您检查硬盘驱动器是否存在并使用管理员权限运行命令,检查系统中是否存在其他引导程序并尝试重装grub程序。 ### 回答2: 当使用“grub-install /dev/sda”命令时,如果出现失败的情况,可能有多种问题: 1. 硬盘分区表错误:如果硬盘上的分区表损坏或不可读,则可能导致grub-install命令失败。此时需要修复分区表。 2. 文件系统损坏:如果安装GRUB的分区上的文件系统损坏,则 GRUB 可能无法正确地读取/写入相关文件,导致grub-install失败。此时需要手动修复文件系统。 3. MBR错误:如果硬盘上的主引导记录 (MBR) 损坏,则阻止grub-install命令成功。此时需要还原 MBR,然后重新运行 grub-install 命令。 4. 磁盘容量问题:如果你的硬盘容量太小,可能导致grub-install失败。此时需要扩大磁盘容量或使用其他磁盘。 5. 存储设备名称错误:可能在参数中使用了错误的设备名称。这个问题可以通过检查设备名称或使用分区UUID解决。 如果以上方法仍然不能解决问题,可能需要重新安装操作系统或与Linux发行版社区联系以获取解决方案。 ### 回答3: 出现“grub-install /dev/sda失败”这个问题是因为系统软件出现了错误,导致grub-install命令无法执行成功。通常出现这个问题的原因有很多种,如操作系统文件被损坏、磁盘空间不足、磁盘分区错误等。 针对这个问题,我们可以采取以下的方法进行解决: 1、检查系统文件是否损坏。出现该问题的原因可能是因为操作系统文件被破坏或损坏,可以使用系统修复工具或者恢复功能进行修复。 2、检查磁盘空间是否充足。如果磁盘空间不足,可清理一些不必要的文件,如缓存、日志等。 3、检查磁盘分区是否正确。磁盘分区错误也可能导致该问题的出现,可以使用磁盘工具重新分区。 4、使用其他方式安装grub。如果以上方法无法解决该问题,可以考虑使用其他方式安装grub,如使用live CD或者从网络中下载grub进行安装。 总之,“grub-install /dev/sda失败”这个问题出现的原因有很多种,解决方法也有多种。根据具体情况进行排查,选择恰当的解决方法才能解决该问题。同时,为了避免该问题出现,建议定期备份数据,保证系统软件不出现问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值