|
6#
楼主 |
发表于 2011-3-25 15:36:57
|
只看该作者
能使用变量了,就是爽!!
下面这个,已经能够辨认XP/NT、Win7/Vista、PE、以及默认的启动盘了。需要的可以自己照着修改代码,添加比较完善的启动系统。另外一点是,timeout必须在gfxmenu=msg前面,不然的话,不会处理等待时间。
03-28,我简化一下菜单,只是告诉大家一个思路,比较完善的,自己添加吧。
#Grub Menu by sdragonx 2011-03-23
#QQ:51306326
#E-Mail:sdragonx@foxmail.com
pxe detect
configfile
default 0
timeout 0
title Loading
errorcheck off
#查找你要启动的软盘镜像,软盘镜像
find --set-root /boot/auto.lst
#菜单标签变量
set id=1
#auto菜单位置的变量,方便大家更改自定义的菜单位置,但是这个auto.lst的菜单必须是什么内容都没有的,而且大小必须能够放得下自动生成的菜单
#我自己做的2k大小,你们自己的话,4k、8k都可以。
set fauto=/boot/auto.lst
#下面的内容,其实玩过dos的都明白,使用echo写入文件,其实就是往auto.lst里面写入检测到的系统,生成菜单。
#因为gfxmenu菜单的格式必须是unicode8的,下面写入的是unicode8的文件头
echo -e -n \xEF\xBB\xBF
#写入等待时间
echo timeout 10 >> %fauto%
#默认菜单项
echo default 0 >> %fauto%
#失败返回
echo fallback 0 >> %fauto%
#查找跟路径
echo find --set-root /boot/auto.lst >> %fauto%
#gfxmenu图形菜单模式,这个大家都懂得
echo gfxmenu (fd0)/boot/gfxmenu.bin >> %fauto%
#按esc键,退出gfxmenu菜单时,进入的grub菜单
echo configfile (fd0)/boot/cmd.lst >> %fauto%
#这个是查找XP/NT系统的,目标是查找ntldr,但是具体是2000、2003还是xp,这个我不知道怎么分辨
find /ntldr && set /a id=%id%+1 && echo -e title [%id%] Microsoft Windows XP Professional \r\nfind --set-root --ignore-floppies --ignore-cd /ntldr\r\nchainloader /ntldr >> %fauto%
#这个是win7/vista,一样我分不出具体系统
find /bootmgr && set /a id=%id%+1 && echo -e title [%id%] Windows 7\r\nfind --set-root --ignore-floppies --ignore-cd /bootmgr\r\nchainloader /bootmgr >> %fauto%
#查找pe系统
find /PELDR && set /a id=%id%+1 && echo -e title [%id%] Windows PE \xE7\xB3\xBB\xE7\xBB\x9F\r\nfind --set-root /PELDR\r\nchainloader /PELDR >> %fauto%
#这个是启动自己的启动盘的,这些\xE6的字符是unicode8格式的汉字,这个没有办法,直接echo输出的汉字是ansii格式的。
echo -e title [%id%] \xE6\x88\x91\xE7\x9A\x84\xE5\x90\xAF\xE5\x8A\xA8\xE7\x9B\x98\r\nconfigfile (fd0)/boot/csita.lst >> %fauto%
#调用生成的菜单
configfile %fauto% || configfile %fauto%
errorcheck on
commandline
我分解一下查找的命令:
查找ntldr 并且 设置菜单id值+1 然后 输出菜单到 %fauto% 变量指定的文件。
find /ntldr && set /a id=%id%+1 && echo -e title [%id%] Microsoft Windows XP Professional \r\nfind --set-root --ignore-floppies --ignore-cd /ntldr\r\nchainloader /ntldr >> %fauto%
echo -e title [%id%] Microsoft Windows XP Professional \r\nfind --set-root --ignore-floppies --ignore-cd /ntldr\r\nchainloader /ntldr
这个命令输出结果就是:
title [1] Microsoft Windows XP Professional
find --set-root --ignore-floppies --ignore-cd /ntldr
chainloader /ntldr
echo 后面加上 -e,就可以支持转义字符,\r\n就是一个回车换行的标志。
希望鸟鸟们看明白了。
下面的这个就是一个空的auto.lst文件。
[ 本帖最后由 2011大帝 于 2011-3-28 01:24 编辑 ] |
-
-
auto.rar
90 Bytes, 下载次数: 29, 下载积分: 无忧币 -2
-
-
automenu.part01.rar
97.66 KB, 下载次数: 30, 下载积分: 无忧币 -2
一个简单的实例,基本文件的软盘镜像,有兴趣的参考一下,自己再做一个完美的。
-
-
automenu.part02.rar
97.66 KB, 下载次数: 30, 下载积分: 无忧币 -2
直接加载的虚拟机的软盘里面,至少能认出xp和win7
-
-
automenu.part03.rar
97.66 KB, 下载次数: 29, 下载积分: 无忧币 -2
内置菜单的源文件,我放里面了,你们可以根据需要修改。
-
-
automenu.part04.rar
97.66 KB, 下载次数: 25, 下载积分: 无忧币 -2
-
-
automenu.part05.rar
97.66 KB, 下载次数: 25, 下载积分: 无忧币 -2
-
-
automenu.part06.rar
97.66 KB, 下载次数: 26, 下载积分: 无忧币 -2
-
-
automenu.part07.rar
97.66 KB, 下载次数: 27, 下载积分: 无忧币 -2
-
-
automenu.part08.rar
62.93 KB, 下载次数: 28, 下载积分: 无忧币 -2
|