无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 5000|回复: 4
打印 上一主题 下一主题

[求助] grub2定制bios问题和configure命令的理解问题

[复制链接]
跳转到指定楼层
1#
发表于 2017-9-1 23:15:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 51bwn 于 2017-9-2 00:43 编辑

bios模式或者uefi 的图形然后按c进入 输入confiigure 文件命令 进入了一个新的grub命令输入行界面,无语。。不是应该打开一个新的图形界面吗?百思不得其解


另外我的bios模式一直失败,原因是在编译的时候读取的配置文件 加了一个无效命令也不报错,删除终于,终于不卡grub了出来了命令了,但是也是不显示图形的

输入不同的定制得到不同的错误

  1. grub-mkimage.exe -v -d i386-pc -c compilebios.cfg -p (hd0,1)/grub -o core.img -O i386-pc biosdisk part_msdos search ntfs  
复制代码

得到错误
  1. incompatible license aborted
复制代码

输入chkdsk g: /f 没卵用.难道是fat没有定制的问题, 但是我要插入search命令又要保证不超过63,头疼啊,

再换一个定制 ,不带search模块的。命令如下
  1. grub-mkimage.exe -v -d i386-pc -c compilebios.cfg -p (hd0,1)/grub -o core.img -O i386-pc biosdisk part_msdos fat ntfs  
复制代码


得到的错误就是

  1. Uknown command 'search.file'
  2. err: no such partition
  3. Entering resce mode..
  4. grub rescue>_
复制代码



实际上我的grubbios.cfg里面根本没有用到这个命令啊

再换.这次基于上面命令加上search,不过已经超过63了。当然我也不懂为什么不能超过63 ,而且为什么必须填写为63 恢复,也不知道大神是怎么知道这个规则的,我是菜鸟,就是瞎折腾,各种错误。。
  1. grub-mkimage.exe -v -d i386-pc -c compilebios.cfg -p (hd0,1)/grub -o core.img -O i386-pc biosdisk part_msdos fat ntfs  search search_fs_file
复制代码

又是提示无效的分区。。


  1.   

  2. incompatible license Aborted.Press any key to exit.
复制代码


输入enter,  Boot failed. Could not read from CDROM (code 0003)
Booting from Floppy...
Boot failed .Could not read the boot disk ,no bootable device Retrying in 60 seconds //这是qemu的提示??
****,这次我插入所有命令

  1. grub-mkimage.exe -d i386-pc -c compilebios.cfg -p (hd0,1)/grub -o core.img -O i386-pc biosdisk part_gpt part_msdos disk fat exfat ext2 ntfs xfs hfs iso9660 normal search_fs_file configfile linux linux16 chain loopback echo video_bochs video_cirrus file search gfxmenu gfxterm gfxterm_background gfxterm_menu halt reboot help jpeg ls png true blocklist cat date echo play memdisk tar
复制代码



这次弹出的是经典错误,但是我的cfg是绝对问题的,而且我输入$prefix目录也是对的,的确是在/grub目录。


  1. Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions Anywhere else Tab lists possible device or file completions
  2. grub>_
复制代码



我快疯了,为什么bios的定制这么难搞啊!

再继续编译

  1. grub-mkimage.exe -d i386-pc -c compilebios.cfg -p /grub -o core.img -O i386-pc biosdisk part_gpt part_msdos disk fat exfat ext2 ntfs xfs hfs iso9660
复制代码


这个命令如果恢复扇区不填写为63 直接卡在wellcome  use grub
恢复之后还是提示search.file 问题

bios模式不加上
不加上hd(0,1)出现的问题.
我已经确定search 或者search_fs_file 是导致出现search.fie找不到的关键,所以加上了这个, 但是这里-p参数是直接写的/grub
  1. grub-mkimage.exe -d i386-pc -c compilebios.cfg -p /grub -o core.img -O i386-pc biosdisk part_gpt part_msdos disk fat exfat ext2 ntfs xfs hfs iso9660 search search_fs_file
复制代码


这次错误有意思,no such device: /grub/grubbios.cfg  error unknown filesystem. Entering rescue mode
.
那么出现这个错误我的compilebios.cfg内容是:
search.file /grub/grubbios.cfg root  
set prefix=/grub

我已经崩溃了,总之bios怎么弄都不行,完全摸不着头脑!!!也许出现上面的经典错误是好事?可我不觉得啊, 之前uefi出现那个模式的时候无非是文件找不到,这次我的uefi文件咋可能不正确啊??



最后反复测试得出以下结论

编译时 -c 所指定的文件里面如果不包含($root)则会找不到设备, 如果不包含这个变量却包含了这个

configfile/grub/grubbios.cfg 那么连终端都进入不了而且也看不到错误。
另外-c 里面所使用的的命令如search.file configile 必须 在 grub-mkimage.exe -O参数里面有,不然会提示找不到.
另外指定文件里面设置的路径优先级好像比grub-mkimage -p /grub 优先级要高。


最后我的-c 的compilebios.cfg的文件内容是:

  1. search.file ($root)/grub/grubbios.cfg root  
  2. set prefix=($root)/grub
  3. configfile ($root)/grub/grubbios.cfg
复制代码


编译命令是:
  1. grub-mkimage.exe -d i386-pc -c compilebios.cfg -p /grub -o core.img -O i386-pc biosdisk part_gpt part_msdos disk fat exfat ext2 ntfs xfs hfs iso9660 normal search_fs_file configfile linux linux16 chain loopback echo video_bochs video_cirrus file search gfxmenu gfxterm gfxterm_background gfxterm_menu halt reboot help jpeg ls png true blocklist cat date echo play memdisk tar
复制代码


恢复扇区数是422,

qemu跑起来得到的结果是:



  1. Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions Anywhere else Tab lists possible device or file completions
  2. grub>_
复制代码



2017年9月2日 00:33:10

几乎崩溃的,只能进入命令行模式,那么输入 echo  $perfix 得到的结果是($root)/grub

,我已经把compilebios.cfg里面的 $root删除了依然出现,
而正常uefi 是可以读取到盘的,例如 uefi模式下得到了(hd0,gpt1)/grub
是什么导致变量变成字符串了??
输入 echo $root
在 bios得到的 是是原字符串 $root
输入gettext $root也是$root ,说明变量是存在的但是被覆盖了?? 咋回事??


注:不存在的话echo会出现空白 而 gettext $root 则会提示one argument expected..

但是uefi得到的是hd0,gpt1


what the **** is that???


bios 模式真难搞,几乎一模一样结果不一样。。也就是说这也许是一直提示Minimal Bash_like line的原因
2017年9月2日 00:42:19

我再一次编译....echo $prefix 得到了/grub ....我。。。需要睡觉,不弄了。
2#
发表于 2017-9-2 23:21:47 来自手机 | 只看该作者
看看我发的帖子,里面有关于GRUB2定制的内容
回复

使用道具 举报

3#
 楼主| 发表于 2017-9-3 11:57:36 | 只看该作者
rkr077 发表于 2017-9-2 23:21
看看我发的帖子,里面有关于GRUB2定制的内容

我已经搞定了,你的帖子也没说坑
回复

使用道具 举报

4#
发表于 2017-9-3 12:14:46 来自手机 | 只看该作者
是的,bios下会有cfg找不到的问题,现在我用的也是要在配置文件里加一句search命令,不加就不行。全局变量也是需要在每个cfg写一遍,不然就不能用。
回复

使用道具 举报

5#
发表于 2017-9-3 12:15:27 来自手机 | 只看该作者
本帖最后由 窄口牛 于 2017-9-3 12:17 编辑

在efi下这些通通不需要考虑。你为啥不用现成的,要自己定制?我是为了更改cfg位置,达到cfg三合一,像winly那样。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-29 05:23

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表