无忧启动论坛

 找回密码
 注册
搜索
最纯净的「微PE装机优盘」UEPON大师作品系统gho:最纯净好用系统下载站数据恢复、数据保护、视频编辑
Win To Go 极致利器(IXUNCIS固态U盘)无忧启动网成立20周年!广告联系 QQ:184822951 微信:wuyouceo
查看: 25211|回复: 38

[原创] 分享我现在使用的Grub2菜单

    [复制链接]
发表于 2013-12-9 22:27:18 | 显示全部楼层 |阅读模式
本帖最后由 gamelife 于 2013-12-9 23:15 编辑

我现在使用的Grub2启动菜单,以后也不打算添加功能了。
没使用主题,也不保证兼容性。以后也不打算浪费时间在这个上了。

config中tools.cfg是工具函数。

bin存放到是一些外部引用程序 如ramdisk、grub4dos等

没有加入mac os启动菜单,想添加到可以参考config/windows.cfg写写。

---------------------------------------------------------

grub到资料实在太少了。除非去肯源码,不然只能使用几个有限到功能。
我惭愧,找了很久,都不知道到底有没有类似管道符的功能。
最后还是在super_grub2_disk_hybrid中看到了个regexp的星号*通配符用法。
这才写出自动查找和文件浏览。

感觉这玩意没啥前景了~~~

---------------------------------------------------------
一些文档上找不到的用法


insmod regexp   启用正则表达式
        *星号可以当作通配符用
        如: echo *   #列出所有可用驱动器
                echo (*)  #列出所有可以用分区
                echo /*   #列出所有当前root下所有文件和目录
                echo /a*  #列出所有小写a开头到文件和目录
                for aa in (*)/bootmgr; do ... done #循环处理 所有分区下的bootmgr


“”双引号可以把如空格星号等当作普通字符处理。包括*也会被当普通字符处理。
‘’单引号代表除了一些特殊符号外(如:转意字符\),都当作普通字符处理。

test 命令:
        格式:test 表达式
        返回值:在$?中,0=true\1=false
        表达式:
                1)判断表达式 (注意空字符串和空格)
                        表达式                                        为真
                        ! 表达式                                        为假
                        表达式1 -a 表达式2                表达式1 AND 表达式2
                        表达式1 -o 表达式2                表达式1 OR 表达式2
                2)判断字符串
                        -n 字符串                                字符串的长度非零
                        -z 字符串                                字符串的长度为零
                        字符串1 = 字符串2                字符串相等
                        字符串1 != 字符串2                字符串不等
                3)判断整数
                        整数1 -eq 整数2                        整数相等
                        整数1 -ge 整数2                        整数1大于等于整数2
                        整数1 -gt 整数2                        整数1大于整数2
                        整数1 -le 整数2                        整数1小于等于整数2
                        整数1 -lt 整数2                        整数1小于整数2
                        整数1 -ne 整数2                        整数1不等于整数2
                4)判断文件
                        -r File                                        文件存在并且可读
                        -w File                                        文件存在并且可写
                        -e File                                        文件存在
                        -d File                                        文件存在并且是目录
                        -f File                                        文件存在并且是文件

条件循环:
        if command; then commands; [elif command; then commands;] ... [else commands;] fi

        for var in word+1 word+2 ... word+n; do commands; done

        while command; do commands; done

        until command; do commands; done

声明函数:
        function name { commands; ... }


---------------------------------------------------------


没有使用默认路径!如果想安装到默认路径请自行修改配置文件和core.img

注意,自动搜索win启动项有bug。无法识别包含大写的ntldr和bootmgr

Grub2自身有个奇怪到BUG----读取exfat的文件会出错。具备表现在如果文件大于1簇时,就会报错。(一直也没见到修复)


启动第一屏

 启动第一屏



自动搜索到的win启动项

自动搜索到的win启动项



Androidx86

Androidx86



文件浏览1

文件浏览1



文件浏览

文件浏览



文件操作选项1

文件操作选项1



文件操作选项2

文件操作选项2



---------------------------------------------------------
     百度云共享


Grub2模板.part1.rar (950 KB, 下载次数: 914)

评分

参与人数 6无忧币 +30 收起 理由
2011cwj6958 + 5 很给力!
有阴也有阳 + 5 很给力!
shan + 5 很给力!
peterpanheaven + 5 很给力!
wuyouhou + 5 赞一个!
wintoflash + 5 很给力!

查看全部评分

发表于 2014-6-27 11:08:55 | 显示全部楼层
楼主提供的东西受益匪浅,谢谢
回复

使用道具 举报

发表于 2014-2-24 22:30:27 | 显示全部楼层
楼主高手呢,谢谢分享资料
回复

使用道具 举报

发表于 2014-2-7 08:30:11 | 显示全部楼层
谢谢分享,正在学习中。
回复

使用道具 举报

发表于 2014-11-4 23:16:46 | 显示全部楼层
学习了,高手就是高手。
能告诉我一下source ${prefix}/Config/Windows.cfg;与
                  configfile ${prefix}/Config/Windows.cfg;这两种用法的区别吗?
回复

使用道具 举报

发表于 2014-9-25 12:43:33 | 显示全部楼层
楼主,你好!我把grub2安装在u盘,菜单要如何书写,才能达到如下效果?
电脑中如果有windows 8系统,则显示启动windows 8的菜单,否则不显示。
电脑中如果有windows XP系统,则显示启动windows XP的菜单,否则不显示。
请楼主赐教!谢谢了!
回复

使用道具 举报

发表于 2014-6-11 00:38:34 来自手机 | 显示全部楼层
grub2是如何加载运行我们通常见到的shellx64.efi等efi应用的呢?用chainloader命令就是行不通啊!请教大侠啦!
回复

使用道具 举报

发表于 2014-5-19 21:12:32 | 显示全部楼层
submenu "+ langule。。" {。。。}
请教啦,有谁知道,这样菜单是什么意思?
+号是干什么呢?其后的字符串如何处理?
回复

使用道具 举报

发表于 2014-1-29 09:12:51 | 显示全部楼层
感谢楼主分享的菜单,我一直想仔细学习一下GRUB2,但很多操作要在linux系统下进行,因对linux没去学习过,感觉很难。

grub2的资料确实太少,楼主若有它的资料,是否也一并分享下?
回复

使用道具 举报

发表于 2014-1-29 07:44:17 | 显示全部楼层
受益匪浅,谢谢了
回复

使用道具 举报

发表于 2013-12-27 09:32:32 | 显示全部楼层
受益了,谢谢!
回复

使用道具 举报

发表于 2013-12-10 16:26:50 | 显示全部楼层
谢谢分享。。

题外话:移动硬盘能安装上PE系统吗? U盘手头只有4G的,容量少点  移动硬盘有1T的 可以放不少软件 系统 ghost
回复

使用道具 举报

发表于 2013-12-11 00:48:59 来自手机 | 显示全部楼层
多谢楼主分享,上午学习。
回复

使用道具 举报

发表于 2013-12-11 20:45:02 | 显示全部楼层
不错,楼主提供的东西受益匪浅,谢谢了!
回复

使用道具 举报

发表于 2013-12-13 22:01:19 | 显示全部楼层
谢谢谢谢谢谢谢谢
回复

使用道具 举报

发表于 2014-3-15 18:43:35 | 显示全部楼层
这个真的很好
回复

使用道具 举报

发表于 2014-4-3 19:56:39 | 显示全部楼层
①shutdown.exe -s -t 00关机,重启,这两种情况有彻底关机状态,其它都是快速关机。
②在efiBIOS里打开从外部装置引导启动(即允许),就只能在彻底关机或重启情况下才能进入grub2启动工具盘。
③在efiBIOS里关闭从外部装置引导启动(即禁用),也就是出厂的默认设置,在全部形式的关机情况下,用急救键启动机器,都能进入grub2启动工具盘。简单说就是,用“关机”按钮关闭电脑后,用急救键从usb盘启动机器。
经验是,凡是看到睡眠关机重启等多个按钮在一起的关机,都是快速关机啊。
回复

使用道具 举报

发表于 2014-4-3 19:57:39 | 显示全部楼层
efiBIOS允许由外接设备启动,并且系统处于彻底关机状态,插进usb盘,按开机键开机,就将以usb启动盘启动电脑机器。此是正规启动工具盘。
在系统里用“重启”按钮重新启动电脑,等于彻底关机连着冷开机。所以,若前efiBIOS允许由外接设备启动,此时正处在系统或正常开机进入系统,点击“重启”按钮重新启动电脑,快要关机时插进USB盘,就从usb盘启动啦,此亦是正规启动工具盘。
若efiBIOS允许由外接设备启动,但系统处于快速关机(即核心休眠关机)状态(用“关机”按钮关闭电脑),由此,用急救键或者用开机键开机,都将不能进入工具盘。
如果只想按急救键开机来从usb启动盘启动电脑,此前就可以不用重新设置efiBIOS状态,保持其默认设置,这样方便更好最妥善。
回复

使用道具 举报

发表于 2014-4-3 20:05:55 | 显示全部楼层
一直在寻求这种功能性的菜单,原来在这里。谢谢楼主,万般辛苦啦。
用起来真爽啊,好东西,好东西。楼主是行家,我们菜鸟赞叹不已啊。
回复

使用道具 举报

发表于 2014-4-4 08:43:42 | 显示全部楼层
如果只想按急救键开机来从usb启动盘启动电脑,此前就可以不用重新设置efiBIOS状态,保持其默认设置,这样方便快捷。其中如果,快速关机后,在维护环境里,于C盘即原系统区,随便取读,莫做写存。
④快速关机后,在维护环境里,于C盘即原系统区,随便取读,莫做写存。因为,此时新存进到其中的文件,在重新开机回到正常系统时,就全部是废品或丢失,其所占用的空间还得用分区的驱动器属性里的工具晃一遍才能回来。
回复

使用道具 举报

发表于 2014-4-12 13:20:25 | 显示全部楼层
又学习啦 谢谢
回复

使用道具 举报

发表于 2014-4-16 22:01:28 | 显示全部楼层
一个小小的学习体会,与菜鸟大众分享,请专业们莫笑话。
#一个小小提示也是曾经遇到的情况

menuentry "[Esc] Return to main menu"  --hotkey="ESC" {
  configfile ${prefix}/grub.cfg
  configfile ${prefix}/grub2.cfg
  configfile ${prefix}/grub3.cfg
}

submenu "[Esc] Return to main menu"  --hotkey="ESC" {
menuentry "[Esc] Return to main menu"  --hotkey="ESC" {
  configfile ${prefix}/grub.cfg
  configfile ${prefix}/grub2.cfg
  configfile ${prefix}/grub3.cfg
}
}

#此二菜项的Esc热键应该只是个提示,不是真正的热键。
#这种返回菜项是两种途径混用。
#按Esc键是真正地返回原来根据地的环境和菜单。
#选中回车则是链接式以新环境再次加载原菜单,没有返回根据地,仍需多用Esc键回撤返回到根据地。
#因为Esc键没允许用来作菜单热键,而是grub2系统里回撤退出返回等功能的专用键。
#用Esc键作为热键的菜单项,在按Esc键后菜单本身不会被执行,但执行Esc键的功能。若选择该菜项按回车键,则该菜项就被执行。

#可以用下示菜单来测试:

menuentry "[Esc] Return to main menu"  --hotkey="ESC" {
echo -e "\n\n\n\n\n\a";
echo "    press Esc key, return to main menu"
echo "    请按Esc键,返回主菜单,或根据地菜单。"
echo "    runing this menu 菜单执行中。。。"
echo "    等待9秒看清屏幕,按Esc键立即唤醒本屏幕以继续。哈哈,Esc键有许多用途!";
sleep --verbose --interruptible 9; #唯Esc键能唤醒
  #configfile ${prefix}/grub.cfg
  #configfile ${prefix}/grub2.cfg
  #configfile ${prefix}/grub3.cfg
}

submenu "[Esc] Return to main menu"  --hotkey="ESC" {
menuentry "[Esc] Return to main menu"  --hotkey="ESC" {
echo -e "\n\n\n\n\n\a";
echo "    press Esc key, return to main menu"
echo "    请按Esc键,返回主菜单,或根据地菜单。"
echo "    runing this menu 菜单执行中。。。"
echo "    等待9秒看清屏幕,按Esc键立即唤醒本屏幕以继续。哈哈,Esc键有许多用途!";
sleep --verbose --interruptible 9; #唯Esc键能唤醒
  #configfile ${prefix}/grub.cfg
  #configfile ${prefix}/grub2.cfg
  #configfile ${prefix}/grub3.cfg
}
}

#如此实现,就给出一个纯提示的返回菜单,唯有按Esc键一条正确路径。同时,不涉及具体的菜单设置等文件,让菜单具有独立性,通用方便实用。最后,一般的菜单里无需设立此菜项

点评

menuentry或submenu后面的--hotkey=f1 这应该小写不要引号。 而ESC键是被占用的,用来返回,比如在menuentry 后设置esc,这项并不会因为按esc而进入。 sleep --verbose --interruptible 9这个可以实现类似legacy g  详情 回复 发表于 2014-4-19 15:36
回复

使用道具 举报

发表于 2014-4-19 15:36:36 | 显示全部楼层
wuyouhou 发表于 2014-4-16 22:01
一个小小的学习体会,与菜鸟大众分享,请专业们莫笑话。
#一个小小提示也是曾经遇到的情况

menuentry或submenu后面的--hotkey=f1 这应该小写不要引号。
而ESC键是被占用的,用来返回,比如在menuentry 后设置esc,这项并不会因为按esc而进入。
sleep --verbose --interruptible 9这个可以实现类似legacy grub的hiddenmenu作用
回复

使用道具 举报

发表于 2014-4-25 06:56:03 | 显示全部楼层
又学习了,增长技能了。谢谢楼主的关注,谢谢楼主回复!
回复

使用道具 举报

发表于 2014-5-8 09:51:35 | 显示全部楼层
仅有Android和Windows两个菜单里引用了Grub.cfg这个名称。
回复

使用道具 举报

发表于 2014-11-5 21:17:02 | 显示全部楼层
楼主,运行windows.cfg文件后,不能启动本地硬盘的WinXP,而且,在运行过程中出现错误提示,请您帮助一下,分析一下错误的原因。电脑上的系统确实是ntfs文件格式。
捕获111.PNG

点评

找到这个毛病的所在了。是在Windows.cfg菜单中,有个Settimeot=15,应该在Set和Timeout之间有个空格。  详情 回复 发表于 2014-11-6 22:05
回复

使用道具 举报

发表于 2014-11-6 22:05:39 | 显示全部楼层
ludun 发表于 2014-11-5 21:17
楼主,运行windows.cfg文件后,不能启动本地硬盘的WinXP,而且,在运行过程中出现错误提示,请您帮助一下, ...

找到这个毛病的所在了。是在Windows.cfg菜单中,有个Settimeot=15,应该在Set和Timeout之间有个空格。
回复

使用道具 举报

发表于 2014-11-8 22:47:33 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2014-12-8 23:14:33 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2016-1-25 11:54:48 | 显示全部楼层
学习了,这贴好,顶了
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2021-4-22 11:33

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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