无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 9510|回复: 45
打印 上一主题 下一主题

[讨论] 关于Grub2的一些疑问大家看怎么处理

    [复制链接]
跳转到指定楼层
#
发表于 2020-2-9 20:59:26 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 hhh333 于 2020-2-9 21:47 编辑

1、光盘启动时有严格的大小写问题,无论是Joliet还是UDF格式都存在,但grub4dos不存在这个问题,这个要如何避免?
2、光盘bios和efi启动时一些变量不一样
bios:
bootdev=hd31
ls时看到的是(cd)

EFI:
bootdev=cd0
ls时看到的是(cd0)

怎么不统一?如下图,一个bios一个是EFI。


3、一些符号
  1. if [ "${grub_platform}" == "efi" ]; then
  2. 与这个等价
  3. if [ "$grub_platform"="efi"];then(注意:1、双等号与单的似乎一样,2、等号两边似乎不要空格;3、]号前有引号似乎不要空格;4、then前面接分号不需要空格)

  4. if [ -d "/boot" ]; then
  5. 如果写成if [ -d "/boot"]; then (]号前无空格)则不行,如果是这样if [ -d /boot ]; then要空格还想得通一些,毕竟目录名没有定界符。
复制代码


45#
发表于 2020-3-9 10:42:58 来自手机 | 只看该作者
墙裂支持!!
回复

使用道具 举报

44#
发表于 2020-3-9 09:48:35 | 只看该作者
改别人不如改自己。要么你重写一个系统?
回复

使用道具 举报

43#
发表于 2020-3-3 19:51:52 | 只看该作者
wintoflash 发表于 2020-3-3 16:01
现在应该可以了,请更新测试。

可以了。
回复

使用道具 举报

42#
发表于 2020-3-3 16:01:22 | 只看该作者
青青草 发表于 2020-3-3 12:17
if test -f ($device)/bootmgr -a -f ($device)/boot/BCD; then   可以显示菜单条,
改成  if test -f  ...

现在应该可以了,请更新测试。

点评

可以了。  详情 回复 发表于 2020-3-3 19:51
回复

使用道具 举报

41#
发表于 2020-3-3 12:17:41 | 只看该作者
本帖最后由 青青草 于 2020-3-3 12:19 编辑

if test -f ($device)/bootmgr -a -f ($device)/boot/BCD; then   可以显示菜单条,
改成  if test -f ($device)/bootmgr -a -f ($device)/boot/bcd; then   则没有显示菜单条。
系统在NTFS分区

点评

现在应该可以了,请更新测试。  详情 回复 发表于 2020-3-3 16:01
回复

使用道具 举报

40#
发表于 2020-3-3 11:31:57 | 只看该作者
青青草 发表于 2020-3-3 11:28
今天得空,在NTFS上测试,对于文件,还是区分大小写的。【文件:BCD】

截图

点评

if test -f ($device)/bootmgr -a -f ($device)/boot/BCD; then 可以显示菜单条, 改成 if test -f ($device)/bootmgr -a -f ($device)/boot/bcd; then 则没有显示菜单条。 系统在NTFS分区  详情 回复 发表于 2020-3-3 12:17
回复

使用道具 举报

39#
发表于 2020-3-3 11:28:35 | 只看该作者
wintoflash 发表于 2020-2-27 11:33
楼主可以测试一下,现在默认不区分大小写了
https://github.com/a1ive/grub/releases
注意:ls 列文件还 ...

今天得空,在NTFS上测试,对于文件,还是区分大小写的。【文件:BCD】

点评

截图  详情 回复 发表于 2020-3-3 11:31
回复

使用道具 举报

38#
发表于 2020-2-28 08:04:45 | 只看该作者
hhh333 发表于 2020-2-28 06:38
想问一下isolinux要调用grub2,命令应该怎么写?要加头文件吗?
我是按调用g4d的方式写的,boot/g2ldr, ...

没用过 不知道
回复

使用道具 举报

37#
 楼主| 发表于 2020-2-28 06:38:40 | 只看该作者
wintoflash 发表于 2020-2-27 20:25
光盘是指 iso9660 还是 udf?

想问一下isolinux要调用grub2,命令应该怎么写?要加头文件吗?
我是按调用g4d的方式写的,boot/g2ldr,这个g2ldr不加头文件出乱字符,加pxeboot.img的直接到命令行,加lnxboot.img黑屏无反应。

点评

没用过 不知道  详情 回复 发表于 2020-2-28 08:04
回复

使用道具 举报

36#
 楼主| 发表于 2020-2-27 20:48:49 | 只看该作者
wintoflash 发表于 2020-2-27 20:25
光盘是指 iso9660 还是 udf?

两者都可以
回复

使用道具 举报

35#
发表于 2020-2-27 20:25:14 | 只看该作者
hhh333 发表于 2020-2-27 20:14
初步在光盘上测试可行,NTFS应该也无问题。

光盘是指 iso9660 还是 udf?

点评

想问一下isolinux要调用grub2,命令应该怎么写?要加头文件吗? 我是按调用g4d的方式写的,boot/g2ldr,这个g2ldr不加头文件出乱字符,加pxeboot.img的直接到命令行,加lnxboot.img黑屏无反应。  详情 回复 发表于 2020-2-28 06:38
两者都可以  详情 回复 发表于 2020-2-27 20:48
回复

使用道具 举报

34#
 楼主| 发表于 2020-2-27 20:14:11 | 只看该作者
wintoflash 发表于 2020-2-27 11:33
楼主可以测试一下,现在默认不区分大小写了
https://github.com/a1ive/grub/releases
注意:ls 列文件还 ...

初步在光盘上测试可行,NTFS应该也无问题。

点评

光盘是指 iso9660 还是 udf?  详情 回复 发表于 2020-2-27 20:25
回复

使用道具 举报

33#
 楼主| 发表于 2020-2-27 18:28:19 | 只看该作者
wintoflash 发表于 2020-2-27 11:33
楼主可以测试一下,现在默认不区分大小写了
https://github.com/a1ive/grub/releases
注意:ls 列文件还 ...

太给力了,马上测试!
回复

使用道具 举报

32#
发表于 2020-2-27 11:33:48 | 只看该作者
本帖最后由 wintoflash 于 2020-2-27 18:45 编辑

楼主可以测试一下,现在默认不区分大小写了
https://github.com/a1ive/grub/releases
注意:ls 列文件还是区分大小写的。

执行 set grub_fs_case_sensitive=1 启用区分大小写以保持兼容性,设为其他值或不设则不区分大小写。
测试 NTFS/UDF/iso9660 可以。
对于本来就不区分大小写的文件系统,例如 FAT/exFAT/UD 无效。
对于一些必须区分大小写的文件系统,例如 cpio/newc 等也无效。
其他的暂未测试。

点评

今天得空,在NTFS上测试,对于文件,还是区分大小写的。【文件:BCD】  详情 回复 发表于 2020-3-3 11:28
初步在光盘上测试可行,NTFS应该也无问题。  详情 回复 发表于 2020-2-27 20:14
太给力了,马上测试!  详情 回复 发表于 2020-2-27 18:28
回复

使用道具 举报

31#
 楼主| 发表于 2020-2-13 13:24:25 | 只看该作者
my9823 发表于 2020-2-13 12:28
wintoflash大神不会是武汉人吧?

正好不出门憋大招
回复

使用道具 举报

30#
发表于 2020-2-13 12:28:26 来自手机 | 只看该作者
wintoflash大神不会是武汉人吧?

IMG_20200213_122408.jpg (18.32 KB, 下载次数: 168)

IMG_20200213_122408.jpg

点评

正好不出门憋大招  详情 回复 发表于 2020-2-13 13:24
回复

使用道具 举报

29#
 楼主| 发表于 2020-2-11 18:36:16 | 只看该作者
匿名者 发表于 2020-2-9 22:02
不能.
文件系统本身是大小写敏感的,软件读取就应该按照大小写敏感来做.

确实,不只是光盘,除fat外,在NTFS上也是大小写敏感的。所以如果将g2安装到windows的NTFS上,也要考虑大小写的问题,在windows上大家都是比较随意的,到g2中就不行了,因此菜单中注意大小写还是有现实意义的。
回复

使用道具 举报

28#
 楼主| 发表于 2020-2-10 22:26:03 | 只看该作者
江南一根葱 发表于 2020-2-10 19:03
光盘不是定死的吗,制作的时候文件名就由自己固化的吧,是要脚本适应多种情况制做iso么?

还有个问题请教一下:如何检测g2是W大的版本还是官方的版本?
回复

使用道具 举报

27#
 楼主| 发表于 2020-2-10 19:23:05 | 只看该作者
江南一根葱 发表于 2020-2-10 19:03
光盘不是定死的吗,制作的时候文件名就由自己固化的吧,是要脚本适应多种情况制做iso么?

是的,就是想提高脚本的适应性,不然不得这么费神。
回复

使用道具 举报

26#
发表于 2020-2-10 19:03:02 | 只看该作者
光盘不是定死的吗,制作的时候文件名就由自己固化的吧,是要脚本适应多种情况制做iso么?

点评

还有个问题请教一下:如何检测g2是W大的版本还是官方的版本?  详情 回复 发表于 2020-2-10 22:26
是的,就是想提高脚本的适应性,不然不得这么费神。  详情 回复 发表于 2020-2-10 19:23
回复

使用道具 举报

25#
发表于 2020-2-10 18:52:21 | 只看该作者
本帖最后由 青青草 于 2020-2-10 18:53 编辑
hhh333 发表于 2020-2-10 18:47
这个不是正则表达式吧?

       for dev in (*); do
                test -e ${dev};
                if test "$?" = "1"; then
                       continue;
                fi;
                regexp --set=device '\((.*)\)' $dev;
if test -f ($device)/EFI/Microsoft/Boot/bootmgfw.efi -a -f ($device)/EFI/Microsoft/Boot/BCD;then
... ...
回复

使用道具 举报

24#
发表于 2020-2-10 18:51:10 来自手机 | 只看该作者
请教efi microsoft boot bcd大小写只有上述三种组合吗?恐怕还得请高人从源头解决
回复

使用道具 举报

23#
 楼主| 发表于 2020-2-10 18:50:00 | 只看该作者
江南一根葱 发表于 2020-2-10 16:34
我这才发现大小写问题吗,
我之前是两种写法搜两次

这个大小写问题很容易出错啊,用变量算是简单的方式,判断存在就定义一次,后面就引用。
回复

使用道具 举报

22#
 楼主| 发表于 2020-2-10 18:47:10 | 只看该作者
青青草 发表于 2020-2-10 18:35
if test -f ($device)/EFI/Microsoft/Boot/bootmgfw.efi -a -f ($device)/EFI/Microsoft/Boot/BCD;then ...

这个不是正则表达式吧?

点评

for dev in (*); do test -e ${dev}; if test "$?" = "1"; then continue; fi; regexp --set=device '\((.*)\)' $dev; if test -f ($device)/EFI/Micro  详情 回复 发表于 2020-2-10 18:52
回复

使用道具 举报

21#
发表于 2020-2-10 18:35:05 | 只看该作者
hhh333 发表于 2020-2-10 18:05
查找某个文件或目录,不限大小写。如:/efi/microsoft/boot/bcd
有可能是/EFI/microsoft/boot/bcd或者ef ...

  if test -f ($device)/EFI/Microsoft/Boot/bootmgfw.efi -a -f ($device)/EFI/Microsoft/Boot/BCD;then

点评

这个不是正则表达式吧?  详情 回复 发表于 2020-2-10 18:47
回复

使用道具 举报

20#
 楼主| 发表于 2020-2-10 18:05:38 | 只看该作者
青青草 发表于 2020-2-10 17:31
你要做什么?查找系统?查找PE?还是... ...?

查找某个文件或目录,不限大小写。如:/efi/microsoft/boot/bcd
有可能是/EFI/microsoft/boot/bcd或者efi/Microsoft/Boot/BCD等

点评

if test -f ($device)/EFI/Microsoft/Boot/bootmgfw.efi -a -f ($device)/EFI/Microsoft/Boot/BCD;then  详情 回复 发表于 2020-2-10 18:35
回复

使用道具 举报

19#
发表于 2020-2-10 17:31:42 | 只看该作者
hhh333 发表于 2020-2-10 15:46
确实不会用,麻烦把上面的代码用grub2的脚本写一下。

你要做什么?查找系统?查找PE?还是... ...?

点评

查找某个文件或目录,不限大小写。如:/efi/microsoft/boot/bcd 有可能是/EFI/microsoft/boot/bcd或者efi/Microsoft/Boot/BCD等  详情 回复 发表于 2020-2-10 18:05
回复

使用道具 举报

18#
 楼主| 发表于 2020-2-10 17:04:37 | 只看该作者
本帖最后由 hhh333 于 2020-2-10 17:30 编辑
江南一根葱 发表于 2020-2-10 16:34
我这才发现大小写问题吗,
我之前是两种写法搜两次

好了,又出大乱子了。
前面我的配置文件放/efi/grub/grub.cfg,现在把EFI改成大写了,定制参数也改了,configfile /EFI/grub/grub.cfg,配制文件是找到了,但prefix还是(cd0)/efi/grub
configfile应该会自动更新这个变量,搞不懂了,要崩溃了!

=====
是我搞错了,定制还有个参数没改过来。晕死!

回复

使用道具 举报

17#
发表于 2020-2-10 16:34:53 | 只看该作者
我这才发现大小写问题吗,
我之前是两种写法搜两次

点评

这个大小写问题很容易出错啊,用变量算是简单的方式,判断存在就定义一次,后面就引用。  详情 回复 发表于 2020-2-10 18:50
好了,又出大乱子了。 前面我的配置文件放/efi/grub/grub.cfg,现在把EFI改成大写了,定制参数也改了,configfile /EFI/grub/grub.cfg,配制文件是找到了,但prefix还是(cd0)/efi/grub configfile应该会自动更新这  详情 回复 发表于 2020-2-10 17:04
回复

使用道具 举报

16#
发表于 2020-2-10 16:15:51 | 只看该作者
正则表达式,如果想表达efi/microsoft/boot所有大小写可以这样
[Ee][Ff][Ii]/[Mm][Ii][Cc][Rr][Oo][Ss][Oo][Ff][Tt]/[Bb][Oo][Oo][Tt]
但是在search的时候不可以使用这样的表达式,只能在test、regexp等情况下可以使用
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-6 12:26

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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