查看源代码
出自Linux Wiki
对
XFS分区上装grub
的源代码
根据以下的原因,您无权限进行编辑这个页面操作:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
[[XFS]]文件系统是一种高效的日志文件系统。但如果尝试将[[grub]]直接安装到XFS分区上,则会发生错误,即不能通过别的grub中的''chainloader +1''命令启动XFS分区上的grub,出现错误: grub> chainloader +1 '''Error 13: Invalid or unsupported executable format''' ==原因简析== 通常来说,grub既可以被安装到硬盘的[[MBR]]上,也可以安装到分区的第一个扇区,作为该分区的启动程序。安装到MBR总是可行的,但要安装到分区的开头,则要求分区的这一扇区必须未被使用。不幸的是,XFS文件系统恰好把分区的第一个扇区做为超级块,也就是有关文件系统的信息被存储到这一扇区,grub无法覆盖这一内容,这也就导致grub不能被简单地安装到此种分区上。 {{Hint|类似地,NTFS文件系统也把第一个扇区(Sector 0)作为存放文件系统信息的扇区,如果使用grub-install或grub的setup命令把grub安装到NTFS分区上,就会导致NTFS分区不能被访问,如果你遇到这一问题,可以参考[[修复被grub覆盖的ntfs分区引导扇区]]。}} ==解决方案== ===方法一:新增/boot分区=== 最好想的方法是专门准备一个[[ext2]]分区存放''/boot'',但这需要调整分区表。 ===方法二:使用configfile=== grub有个'''configfile'''命令,可以读取某个grub配置文件。由于本文所述问题一般发生于一个grub启动另一个grub时,所以可以使用configfile命令代替chainloader命令: grub> root (hd0,7) grub> configfile /boot/grub/menu.lst ===方法三:导出启动信息到文件=== 在不调整分区的情况下让分区中的grub可用也是可能的<ref>http://www.mail-archive.com/bug-grub@gnu.org/msg10770.html</ref>,不过需要一个未做启动分区的ext3分区。在已经启动的系统中,启动grub: grub> root <font color=green>'''(hd0, XFS的分区编号)'''</font> grub> setup <font color=green>'''(hd0, 一个不用做启动的ext分区编号)'''</font> 再用[[dd]]把ext分区的引导扇区复制出来。假设那个ext分区是''/dev/hda15'' # dd if=/dev/''hda15'' of=/boot/grub/stage1.copy bs=512 count=1 这样启动时在上一层grub中,这样使用chainloader启动文件就可以了: grub> '''chainloader /boot/grub/stage1.copy''' {{Hint|如果不是[[openSUSE]],使用grub-install应该也能达到目的。}} ==参考资料== <references /> [[Category: grub]] [[Category: XFS]]
在这个页面上使用的模板有:
Template:Hint
(
查看源码
)
返回到
XFS分区上装grub
。
导航
首页
社区入口
当前事件
最近更改
随机页面
帮助
查看
页面
讨论
查看源代码
历史
个人工具
登录/创建账户
搜索
简体繁体转换
不转换
简体
繁體
工具箱
链入页面
链出更改
特殊页面