无忧启动论坛

标题: GRUB2.02 for DOS/UEFI/ISO/PXE项目(winly)2016最新版 [打印本页]

作者: teasiu    时间: 2013-5-13 08:54
标题: GRUB2.02 for DOS/UEFI/ISO/PXE项目(winly)2016最新版
本帖最后由 teasiu 于 2019-8-8 09:45 编辑

2016,智能路由器横行的年代,怎能缺少pxe网络启动呢。

2016年1月16日,更新增加winly网启版,即pxe启动(下载与使用的第6小节提供下载)

----神雕 (低调的走过)

==================================
我启动这个项目,是因为越来越多的人开始转投向GRUB2,却不知道如何入手,
为了让更多的人了解和使用它,就摸索摸索吧。

特点:
1、源码编译,(GNU/linux SliTaz + GRUB2)
2、内嵌启动模块,(newc格式的cpio)
3、外置中文字体和菜单 (unicode)
4、外置风格包

支持:
1、windows全系列
2、linux全系列
3、镜像文件
4、DOS文件

关于winly项目的简介:
WinLy全称是Windows base Live Linux Installer
1、WinLy是启动引导器。
WinLy使用开源世界的GRUB2启动软件来引导,GRUB2是非常优秀的一款启动软件。

2、WinLy是安全软件。
WinLy使用的代码是开源代码,仅以分享的精神制作,不存在任何商业目的。
Winly的工作原理是:通过您本身windows系统的启动加载器NTLDR或BOOTMGR加载,所以,不会妨碍也不会损坏您的windows正常启动。

3、WinLy是易用软件。
适用windowsNT系列,Win2000、WinXP、Win7/8均能安装并成功引导。

4、winly支持UEFI和传统的bios启动
无论你是旧式电脑主板还是新型电脑主板,winly均能助你无忧启动。

5、winly的可扩展性和代码公开
您可以自由修改和扩展任何代码,编辑成你喜欢的样子。

6、项目长期下载有效地址:https://sourceforge.net/projects/winly/

===================================================
原理说明:
一、bios主板的引导
1、磁盘引导  
   先引导winly.mbr(mbr引导) -->winlyldr(核心) -->winly.cfg(菜单)-风格包 -->启动系统

2、光驱引导
   先引导winly.bin(iso引导含核心) -->winly.cfg(菜单)-风格包 -->启动系统

3、引导windows
   通过命令ntlrd /ntldr引导windowsNT5,
   通过命令ntlrd /bootmgr引导windowsNT6+,
   通过命令chainloader device引导分区pbr

二、EFI主板的引导
1、32-bit引导文件
   /EFI/boot/bootia32.efi(核心) -->winly.cfg(菜单)-风格包 -->启动系统
2、64-bit引导文件
   /EFI/boot/bootx64.efi(核心) -->winly.cfg(菜单)-风格包 -->启动系统
3、引导windows
   通过命令chainloader /EFI/microsoft/boot/bootmgfw.efi引导windows的启动文件

三、中文字体支持/风格/背景等
1、中文字体支持文件unicode.pf2
2、风格文件修改文档theme.txt
3、背景支持jpg,vga,png图片格式

四、菜单的编写(请搜索和提问)
================================================

下载和使用:
1、bios主版windows下直接安装:

winlyinst_gui.zip (252.83 KB, 下载次数: 2132)
备注:这个是安装启动代码到磁盘的,需要配合下面的手动包放到磁盘根目录.

另一种安装方法:
WinLy4.4.zip (1.74 MB, 下载次数: 9343)
================================
2、bios主板手动解包安装:
包含4个文件
1、内核文件 winlyldr
2、mbr引导文件 winlyldr.mbr
3、菜单文件winly.cfg
4、字体文件unicode.pf2

winlyldr.zip (1.38 MB, 下载次数: 9030)
================================
3、多重启动UEFI/DOS的光盘iso
winly.iso.7z (2.84 MB, 下载次数: 10082)

================================
4、UEFI主板手动解包到fat格式的磁盘或U盘根目录即可
     已经包含了32位和64位的启动文件. 引导文件也可以更改名字如winlyx64.efi,然后自行编辑BSD进行引导。
winly-efi.7z (1.75 MB, 下载次数: 8490)
================================
5、风格包
    将文件解压到winly文件夹里,在菜单文件winly.cfg添加这几行
insmod gfxmenu
insmod png
set theme=($root)/winly/themes/winly/theme.txt
export theme
winly-theme.7z (1.85 MB, 下载次数: 5722)
================================
6、网启版winly
将winly.0放置于tftp服务端的根目录,启动文件设置为winly.0
将附件的模块包解压后放置于tftp服务端的根目录,表现为/boot/grub/

tftp.zip (1.93 MB, 下载次数: 4609)

如果你的电脑运行较慢,或者你不喜欢有图片风格的界面,那么你可以替换一下这个文档,将会超快。
grub.zip (395 Bytes, 下载次数: 990)
================================

关于菜单的编辑,
菜单学习资料,请参考:
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=305290
菜单示范:



  1. menuentry "【1】启动slitaz微型linux中文定制版"  --class slitaz --class os {
  2. linux /boot/bzImage rw root=/dev/null vga=normal autologin
  3. initrd /boot/rootfs.gz
  4. }
  5. menuentry "【2】启动bios主板的windowsPE系统" --class windows --class os {
  6. ntldr /bootmgr
  7. }
  8. menuentry "【4】启动UEFI主板的32-bit PE系统(如果有)" --class windows --class os {
  9. search --no-floppy --file --set=root /EFI/microsoft/boot/bootia32.efi
  10. chainloader /EFI/microsoft/boot/bootia32.efi
  11. }
  12. menuentry "【5】启动UEFI主板的64-bit PE系统(如果有)" --class windows --class os {
  13. search --no-floppy --file --set=root /EFI/microsoft/boot/bootx64.efi
  14. chainloader /EFI/microsoft/boot/bootx64.efi
  15. }
  16. menuentry "【6】启动UEFI主板的windows系统(如果有)" --class windows --class os {
  17. search --no-floppy --file --set=root /EFI/microsoft/boot/bootmgfw.efi
  18. chainloader /EFI/microsoft/boot/bootmgfw.efi
  19. }
  20. menuentry "【7】启动已安装的其他linux引导(如果有)" --class gnu-linux --class os {
  21. insmod gzio
  22. insmod part_msdos
  23. insmod ext2
  24. insmod ntfs
  25. insmod probe
  26. search --no-floppy --file --set=root /vmlinuz
  27. configfile ($root)/boot/grub/grub.cfg
  28. }
  29. menuentry "【reboot】重启" --class windows --class os{
  30.         reboot
  31. }
  32. menuentry "【halt】关闭计算机" --class windows --class os{
  33.         halt
  34. }
复制代码
17楼网友2011cwj6958提供的菜单,请参考:

http://bbs.wuyou.net/forum.php?m ... 5112&fromuid=378921

制作教程及源码+脚本:

大家可能对如何制作更感兴趣,
是的,我为此编了一个简单的脚本,大家很容易就能亲自动手制作:

一、编译环境准备(仅在linux下)
      1、如果你没有安装使用过linux,推荐你下载一个免安装完全运行于内存的微型linux--->GNU SliTaz linux
        中文定制版下载地址:
  1. http://pan.baidu.com/s/1mgKdR40
复制代码
这个是已经有编译环境所需的一切软件,进去Documents里面已经包括了我修改过的源码,直接运行编译脚本即可。


       2、如果你已经有其他发行版linux,如UBUNTU,安装编译环境依赖包:
  1. sudo apt-get install bison libopts25 libselinux1-dev autogen m4 autoconf help2man libopts25-dev flex libfont-freetype-perl automake autotools-dev libfreetype6-dev texinfo
复制代码

二、我们在这里探讨如何编译和实现定制自己的启动软件。(主要探讨platform是i386-pc和64x-efi的)

   第一步是configure,
  1. configure --with-platform=pc --target=i386
复制代码
  第二步是make,千万不要make install,那会安装到你的当前目录,我们只需要make,然后把make后的文档提取出来。
   第三步,就是提取make后的文档。
  1. mkdir -p boot/grub/i386-pc  ##建立你的启动目录
  2. mkdir -p boot/grub/locale
  3. cp ../winly/zh_CN.mo boot/grub/locale  ##这个语言翻译文件你只需要在其他地方找(比如ubuntu里面),然后放进去
  4. cp ../winly/grub.cfg boot/grub  ##这个是启动菜单,你需要自己建立,注意,这个菜单是内置菜单,你需要指向一个外置菜单,里面添加configfile到外置的winly.cfg
  5. cp ../winly/grubevn boot/grub  ##这个视乎你的需求
  6. cp ../winly/unicode.pf2 boot/grub ##这个多国语言字体是显示中文必须的。
  7. cd grub-core
  8. cp *.mod *.img *.lst ../boot/grub/i386-pc  ##将grub-core文件夹下的所有生成的模块和挂载清单复制到你的启动目录
  9. cd ..
复制代码
第四步,把启动目录的上百个文档打包,然后启动时映射这个包并读取。
  1. find boot | cpio -o -H newc > winly.pkg  #这个boot文件夹就是刚才你建立的启动文件夹。
复制代码
第五步,关键技术来了,如何制作winlyldr并在启动时实现映射winly.pkg这个模块包
   首先,在grub-core下面建立一个first.cfg文档,文档里面的内容如下:
  1. loopback winly /winly.pkg  ##指令启动的第一时间,首先回放winly.pkg到虚拟的winly磁盘
  2. set prefix=(winly)/boot/grub  ##指定启动模块的位置到这个虚拟winly磁盘的/boot/grub
  3. set pager=1  ##设定手动翻页
复制代码
然后,我们来生成启动的内核i386-pc-core.img
  1. cd grub-core
  2. ../grub-mkimage -O i386-pc -d . -c first.cfg -o i386-pc-core.img -v biosdisk blocklist newc cpio fat iso9660 part_msdos ext2 ntfs loopback  #-v的部分,必须要包括newc,cpio,loopback模块,否则无法映射虚拟磁盘。
复制代码
最后,生成在i386-pc启动的winlyldr
  1. cat lnxboot.img i386-pc-core.img > winlyldr
复制代码
那么,你就有了如下的启动结构的文档了:
  winlyldr-->winly.pkg-->外置的winly.cfg-->再延伸到外置风格包

未完部分待续。。。






weixin.jpeg (47.56 KB, 下载次数: 522)

weixin.jpeg

作者: haook    时间: 2013-5-13 09:48
GRUB2 for DOS非常好,有个问题想请教楼主:GRUB2本来就支持UEFI启动,不知楼主的GRUB2 for DOS是否支持UEFI启动,谢谢!
作者: 2012winServerPE    时间: 2013-5-13 09:58
这个还不明白,不过,我们需要一个简单的东西:

1. 支持BIOS 和UEFI
2.支持整体启动ISO,IMG
3.硬盘,光盘通用
4.简单的菜单写法.

如实现如下功能:
无论是BIOS还是UEFI的情况下,都可以通过通过MS的BCD来引导GRUB2

光盘可以使用光盘的XXX.MBR 硬盘可以使用你提供这个XXXX.MBR来引导(能统一更好)

进入菜单后,可以选择加载各种ISO,IMG(最好可以DIR ,然后可以手工输入名称)
作者: yynq    时间: 2013-5-13 09:59
强烈支持!!热烈欢迎!!! 挺你!!!!!!!
作者: 2012winServerPE    时间: 2013-5-13 09:59
如果使用英文,没有那个字体文件行不行?
作者: yynq    时间: 2013-5-13 10:02
是否有bean大师的map?
作者: pokime99    时间: 2013-5-13 10:11
目前,GRUB4DOS,對BIOS啟動,已經相當完備,且持續更新中。但,對於UEFI啟動,GRUB4DOS已表明不支持,反倒GRUB2,在LINUX,已經能支持了,希望,GRUB2能強化,對UEFI的支持,如能直接啟動ISO、IMG的映像啟動。或者,可以從UFEI啟動,轉向引導G2LDR.MBR、GRLDR.MBR,再引導映像檔啟動。如能達成,GRUB2就能打開全新的康莊大道了。
作者: yynq    时间: 2013-5-13 10:32
yynq 发表于 2013-5-13 10:13
给神雕! 注意查收!!

不客气!!!
作者: zhaohj    时间: 2013-5-13 10:45
支持神雕,先搞个PXE版本的玩玩吧。
作者: yynq    时间: 2013-5-13 10:54
强烈建议本贴置顶
作者: 月光海洋    时间: 2013-5-13 11:29
支持楼上的…强贴应该要置顶
作者: nytc006    时间: 2013-5-13 14:00
哦哦,这个要支持~
作者: 2013hyun    时间: 2013-5-13 14:05
期待功能强大的,可以直接拿来用……。
作者: huangdi168    时间: 2013-5-13 14:45
强帖留名!!!!
作者: 2012卷心菜    时间: 2013-5-13 15:11
能不能提供一个简单点的东西:
带UEFI启动文件的,目录固定,如根目录的GRUB
可以启动指定名称(任意名称更好)的ISO,IMG ,如根目录的ISO,BOOT目录的IMG

(其实就是需要一个菜单,和比较完整的文件)
作者: teasiu    时间: 2013-5-13 15:31
本帖最后由 2010teasiu 于 2013-5-13 15:38 编辑
2012卷心菜 发表于 2013-5-13 15:11
能不能提供一个简单点的东西:
带UEFI启动文件的,目录固定,如根目录的GRUB
可以启动指定名称(任意名称更好 ...


比如你的iso是isolinux格式启动的,
就可以
    menuentry "启动xx.iso(示例)"  
    {
       loopbak loop ($root)/xxx.iso   
       linux  (loop)/xxxxx #这里参照你的isolinux.cfg的写法
       initrd (loop)/xxxxx                                
    }

loopback命令的意思是将你的iso文件虚拟回放到内存的(loop)位置。
$root是winly已经指定了的菜单的盘符的根目录


    menuentry "启动dos工具箱(示例)"  
    {
            linux16 (位置)/memdisk img raw  #这里需要下载一个memdisk在相对位置
            initrd16 (位置)/dos.img                                 
    }
作者: 2011cwj6958    时间: 2013-5-13 17:46
本帖最后由 2011cwj6958 于 2013-5-13 18:35 编辑

版主的   WinLy4.1 Grub2 for dos 提供的代码真是强大,可以启动不同版本到现在的最新版本Linux。
ubuntu LiveCD模式代码还可以启动ubuntu系列的不同版本,edubuntu  kubuntu xubuntu lubuntu mythbuntu 以及最新的UbuntuKylin。


我的ubuntu.cfg子菜单

menuentry "启动开拓者ktz5_1 LiveCD模式"  --class ubuntu {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/ktz5_1.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/ktz5_1.iso locale=zh_CN.UTF-8 splash
        initrd (loop)/casper/initrd.lz
}
menuentry "启动开拓者ktz-ubuntu-9.10 LiveCD模式"  --class ubuntu {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/ktz-ubuntu.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/ktz-ubuntu.iso locale=zh_CN.UTF-8 splash
        initrd (loop)/casper/initrd.lz
}
menuentry "启动ubuntu-10.10 LiveCD模式"  --class ubuntu {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/ubuntu.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/ubuntu.iso locale=zh_CN.UTF-8 splash
        initrd (loop)/casper/initrd.lz
}
menuentry "启动edubuntu-10.10 LiveCD模式"  --class edubuntu {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/edubuntu.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/edubuntu.iso locale=zh_CN.UTF-8 splash
        initrd (loop)/casper/initrd.lz
}
menuentry "启动edubuntu-11.04 LiveCD模式"  --class edubuntu {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/edubuntu1.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/edubuntu1.iso locale=zh_CN.UTF-8 splash
        initrd (loop)/casper/initrd.lz
}
menuentry "启动kubuntu-10.10 LiveCD模式"  --class kubuntu {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/kubuntu.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/kubuntu.iso locale=zh_CN.UTF-8 splash
        initrd (loop)/casper/initrd.lz
}
menuentry "启动kubuntu-11.04 LiveCD模式"  --class kubuntu {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/kubuntu1.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/kubuntu1.iso locale=zh_CN.UTF-8 splash
        initrd (loop)/casper/initrd.lz
}
menuentry "启动xubuntu-10.10 LiveCD模式"  --class xubuntu {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/xubuntu.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/xubuntu.iso locale=zh_CN.UTF-8 splash
        initrd (loop)/casper/initrd.lz
}
menuentry "启动xubuntu-11.04 LiveCD模式"  --class xubuntu {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/xubuntu1.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/xubuntu1.iso locale=zh_CN.UTF-8 splash
        initrd (loop)/casper/initrd.lz
}
menuentry "启动lubuntu-10.10 LiveCD模式"  --class lubuntu {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/lubuntu.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=lubuntu.iso locale=zh_CN.UTF-8 splash
        initrd (loop)/casper/initrd.lz
}
menuentry "启动lubuntu-11.04 LiveCD模式"  --class lubuntu {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/lubuntu1.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=lubuntu1.iso locale=zh_CN.UTF-8 splash
        initrd (loop)/casper/initrd.lz
}
menuentry "启动mythbuntu-10.10 LiveCD模式"  --class mythbuntu {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/mythbuntu.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/mythbuntu.iso locale=zh_CN.UTF-8 splash
        initrd (loop)/casper/initrd.lz
}
menuentry "启动mythbuntu-11.04 LiveCD模式"  --class mythbuntu {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/mythbuntu1.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/mythbuntu1.iso locale=zh_CN.UTF-8 splash
        initrd (loop)/casper/initrd.lz
}
menuentry "启动kanas-ubuntu-10.10 LiveCD模式"  --class ubuntu {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/kanas-ubuntu.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/kanas-ubuntu.iso locale=zh_CN.UTF-8 splash
        initrd (loop)/casper/initrd.lz
}
menuentry "启动BUYIOS.iso LiveCD模式"  --class ubuntu {
        insmod ntfs
              set root='(hd0,1)'
        loopback loop (hd0,1)/BUYIOS.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/BUYIOS.iso locale=zh_CN.UTF-8 splash
        initrd (loop)/casper/initrd.lz
}
menuentry "启动UbuntuKylin LiveCD模式"  --class ubuntu {
        insmod ntfs
              set root='(hd0,1)'
        loopback loop (hd0,1)/raring-desktop-amd64.iso
        linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=/raring-desktop-amd64.iso locale=zh_CN.UTF-8 splash
        initrd (loop)/casper/initrd.lz
}

我的mint.cfg子菜单
menuentry "启动Lindows7 LiveCD模式"  --class linuxmint {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/Lindows7.iso
        linux (loop)/casper/vmlinuz file=/cdrom/preseed/mint.seed boot=casper persistent iso-scan/filename=/Lindows7.iso splash
        initrd (loop)/casper/initrd.lz
}

menuentry "启动kanas-mint LiveCD模式"  --class linuxmint {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/kanas-mint.iso
        linux (loop)/casper/vmlinuz file=/cdrom/preseed/mint.seed boot=casper persistent iso-scan/filename=/kanas-mint.iso splash
        initrd (loop)/casper/initrd.lz
}

menuentry "启动linuxmint-9-kde LiveCD模式"  --class linuxmint {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/linuxmint-kde.iso
        linux (loop)/casper/vmlinuz file=/cdrom/preseed/mint.seed boot=casper persistent iso-scan/filename=/linuxmint-kde.iso splash
        initrd (loop)/casper/initrd.lz
}

menuentry "启动linuxmint-9-gnome LiveCD模式"  --class linuxmint {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/linuxmint-gnome.iso
        linux (loop)/casper/vmlinuz file=/cdrom/preseed/mint.seed boot=casper persistent iso-scan/filename=/linuxmint-gnome.iso splash
        initrd (loop)/casper/initrd.lz
}
menuentry "启动linuxmint-10-kde LiveCD模式"  --class linuxmint {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/linuxmint-10-kde.iso
        linux (loop)/casper/vmlinuz file=/cdrom/preseed/mint.seed boot=casper persistent iso-scan/filename=/linuxmint-10-kde.iso splash
        initrd (loop)/casper/initrd.lz
}
menuentry "启动linuxmint-fluxbox LiveCD模式"  --class linuxmint {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/linuxmint-fluxbox.iso
        linux (loop)/casper/vmlinuz file=/cdrom/preseed/mint.seed boot=casper persistent iso-scan/filename=/linuxmint-fluxbox.iso splash
        initrd (loop)/casper/initrd.lz
}
menuentry "启动linuxmint-xfce LiveCD模式"  --class linuxmint {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/linuxmint-xfce.iso
        linux (loop)/casper/vmlinuz file=/cdrom/preseed/mint.seed boot=casper persistent iso-scan/filename=/linuxmint-xfce.iso splash
        initrd (loop)/casper/initrd.lz
}
menuentry "启动linuxmint-11-lxde LiveCD模式"  --class linuxmint {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/linuxmint-lxde.iso
        linux (loop)/casper/vmlinuz file=/cdrom/preseed/mint.seed boot=casper persistent iso-scan/filename=/linuxmint-lxde.iso splash
        initrd (loop)/casper/initrd.lz
}
menuentry "启动linuxmint-11-gnome LiveCD模式"  --class linuxmint {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/linuxmint-11-gnome.iso
        linux (loop)/casper/vmlinuz file=/cdrom/preseed/mint.seed boot=casper persistent iso-scan/filename=/linuxmint-11-gnome.iso splash
        initrd (loop)/casper/initrd.lz
}

我的ylmf.cfg子菜单
menuentry "启动雨林木风Ylmf_OS_3.0 LiveCD模式"    --class ylmf {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/Ylmf2.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/Ylmf2.iso locale=zh_CN.UTF-8 noprompt noeject splash
        initrd (loop)/casper/initrd.img
}


menuentry "启动雨林木风ylmf_os4-20110222 LiveCD模式"    --class ylmf {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/Ylmf3.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/Ylmf3.iso locale=zh_CN.UTF-8 noprompt noeject splash
        initrd (loop)/casper/initrd.img
}


menuentry "启动雨林木风ylmf_os4-20110326 LiveCD模式"    --class ylmf {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/Ylmf4.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/Ylmf4.iso locale=zh_CN.UTF-8 noprompt noeject splash
        initrd (loop)/casper/initrd.img
}


menuentry "启动雨林木风ylmf_os4-20110510 LiveCD模式"    --class ylmf {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/Ylmf5.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/Ylmf5.iso locale=zh_CN.UTF-8 noprompt noeject splash
        initrd (loop)/casper/initrd.img
}


menuentry "启动雨林木风ylmf_os_4.0 LiveCD模式"    --class ylmf {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/Ylmf6.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/Ylmf6.iso locale
=zh_CN.UTF-8 noprompt noeject splash
        initrd (loop)/casper/initrd.img
}

menuentry "启动雨林木风ylmf_os4-20110830LiveCD模式"    --class ylmf {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/Ylmf7.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/Ylmf7.iso locale=zh_CN.UTF-8 noprompt noeject splash
        initrd (loop)/casper/initrd.img
}

我的Deepin.cfg子菜单
menuentry "启动Deepin-9.12-final深度LiveCD模式"    --class ld {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/deepin.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/deepin.iso locale=zh_CN.UTF-8 noprompt noeject splash
        initrd (loop)/casper/initrd.lz
}

menuentry "启动LinuxDeepin v10.06.0 测试版深度Linux系统模式"    --class ld {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/deepin1.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/deepin1.iso locale=zh_CN.UTF-8 noprompt noeject splash
        initrd (loop)/casper/initrd.lz
}

menuentry "启动Deepin-10.06深度LiveCD模式"    --class ld {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/deepin2.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/deepin.iso
locale=zh_CN.UTF-8 noprompt noeject splash
        initrd (loop)/casper/initrd.lz
}

menuentry "启动deepin-10.12-beta-i386深度LiveCD模式"    --class ld {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/deepin3.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/deepin3.iso locale=zh_CN.UTF-8 noprompt noeject splash
        initrd (loop)/casper/initrd.lz
}

menuentry "启动deepin-10.12-i386深度LiveCD模式"    --class ld {

        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/deepin4.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/deepin4.iso locale=zh_CN.UTF-8 noprompt noeject splash
        initrd (loop)/casper/initrd.lz
}

menuentry "启动Linux Deepin 11.06深度LiveCD模式"    --class ld {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/deepin5.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/deepin5.iso locale=zh_CN.UTF-8 noprompt noeject splash
        initrd (loop)/casper/initrd.lz
}
menuentry "启动deepin_11.06.1_i386深度LiveCD模式"    --class ld {
        insmod ntfs
              set root='(hd0,2)'
        loopback loop (hd0,2)/deepin6.iso
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/deepin6.iso
locale=zh_CN.UTF-8 noprompt noeject splash
        initrd (loop)/casper/initrd.lz
}


我的puppy.cfg子菜单
menuentry "启动xbarbie_xfce-4.1-20081223-linux系统"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'
              linux /puppy/vmlinuz pmedia=hd
              initrd /puppy/initrd.gz
}
menuentry "启动小芭比413-openbox-2009系统"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'
              linux /puppy1/vmlinuz pmedia=hd
              initrd /puppy1/initrd.gz
}menuentry "启动puppy-420ebobo26291cn"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'
              linux /puppy2/vmlinuz pmedia=hd
              initrd /puppy2/initrd.gz
}menuentry "启动小芭比421-cn-linux系统"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'
              linux /puppy3/vmlinuz pmedia=hd

             initrd /puppy3/initrd.gz
}
menuentry "启动小芭比431之wine集成版系统"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'
              linux /puppy4/vmlinuz pmedia=hd
              initrd /puppy4/initrd.gz
}
menuentry "启动小芭比432-cn-linux系统"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'
              linux /puppy5/vmlinuz pmedia=hd
              initrd /puppy5/initrd.gz
}
menuentry "启动苏奇小芭比-linux系统"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'
              linux /puppy6/vmlinuz pmedia=hd
              initrd /puppy6/initrd.gz
}
menuentry "启动puppy520_cn_pps-linux系统"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'

             linux /puppy7/vmlinuz pmedia=hd
              initrd /puppy7/initrd.gz
}
menuentry "启动PUPPY525PAE-linux系统"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'
              linux /puppy8/vmlinuz pmedia=hd
              initrd /puppy8/initrd.gz
}
menuentry "启动Mac OS X风格的Macis Puppy 525 Linux系统"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'
              linux /mac/vmlinuz pmedia=hd
              initrd /mac/initrd.gz
}
menuentry "启动小芭比X离子版macis-531系统"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'
              linux /mac1/vmlinuz pmedia=hd
              initrd /mac1/initrd.gz
}
menuentry "启动启动qrky-130-linux系统"  --class puppy {

        insmod ntfs
              set root='(hd0,2)'
              linux /qrky/vmlinuz pmedia=hd
              initrd /qrky/initrd.gz
}
menuentry "title 【c】 启动xuppy-FF系统"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'
              linux /xuppy/vmlinuz pmedia=hd
              initrd /xuppy/initrd.gz
}

我的veket.cfg子菜单
menuentry "启动a-linux-1.0-linux系统"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'
              linux /veket/vmlinuz pmedia=hd
              initrd /veket/initrd.gz
}
menuentry "启动veket-2.39-linux系统"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'
              linux /veket1/vmlinuz pmedia=hd
              initrd /veket1/initrd.gz
}
menuentry "启动veket-3.11-linux系统"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'
              linux /veket2/vmlinuz pmedia=hd
              initrd /veket2/initrd.gz
}
menuentry "启动veket-5.29-linux系统"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'

             linux /veket3/vmlinuz pmedia=hd
              initrd /veket3/initrd.gz
}
menuentry "启动e-veket-linux系统"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'
              linux /e-veket/vmlinuz pmedia=hd
              initrd /e-veket/initrd.gz
}
menuentry "启动lucky8k-veket-1.2a系统"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'
              linux /lucky8k//vmlinuz pmedia=hd
              initrd /lucky8k//initrd.gz
}
menuentry "启动lucky8k-veket-378r系统"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'
              linux /lucky8kr/vmlinuz pmedia=hd
              initrd /lucky8kr/initrd.gz
}
menuentry "启动lucky8k儿童操作系统"  --class puppy {

        insmod ntfs
              set root='(hd0,2)'
              linux /lucky8kr1/vmlinuz pmedia=hd
              initrd /lucky8kr1/initrd.gz
}
menuentry "启动微型芭比puppy桌面系统"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'
              linux /puppy/vmlinuz pmedia=hd
              initrd /puppy/initrd.gz
}


我的WXlinux.cfg子菜单

menuentry "运行无线破解 beini-1.0-rc5.2系统" --class windows {
        set root='(hd0,1)'
        linux16 /burg/memdisk iso raw
        initrd16 /TYPE/Beini2.iso
}
menuentry "无线破解bt6系统" --class windows {
        set root='(hd0,1)'
        linux16 /burg/memdisk iso raw
        initrd16 /TYPE/bt6.iso
}
menuentry "运行cdlinux0.9.6.1万能无线破解系统"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'
              linux /CDlinux/bzImage CDL_LANG=zh_CN.UTF-8 CDL_DIR=/CDlinux
initrd /CDlinux/initrd
}

menuentry "运行cdlinux0.9.6.1社区版"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'
              linux /CDlinux1/bzImage CDL_LANG=zh_CN.UTF-8 CDL_DIR=/CDlinux1
initrd /CDlinux1/initrd
}
menuentry "GeeXBox免费影音系统" --class windows {
        set root='(hd0,1)'
        linux16 /burg/memdisk iso raw
        initrd16 /TYPE/GeexBox.ISO
}
menuentry "启动GeexBox多媒体系统"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'
              linux/geexbox/vmlinuz root=/dev/ram0 rw lang=zh_CN remote=atiusb receiver=atiusb keymap=qwerty splash=silent vga=789 video=vesafb:ywrap,mtrr quiet
initrd /geexbox/initrd.gz
}
menuentry "启动easeboot vod视频点播系统"  --class puppy {
        insmod ntfs

              set root='(hd0,2)'
              linux /easeboot/bzImage root=/dev/ram0 vga=771 ramdisk_size=100000
initrd /easeboot/rootfs.gz
}

menuentry "启动slitazcn Linux系统"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'
              linux /Slitaz/boot/bzImage root=/dev/ram0 vga=771 ramdisk_size=100000
initrd /Slitaz/boot/rootfs.gz
}
menuentry "启动slitazcn Linux开发版系统"  --class puppy {
        insmod ntfs
              set root='(hd0,2)'
              linux /Slitaz1/boot/bzImage root=/dev/ram0 vga=771 ramdisk_size=100000
initrd /Slitaz1/boot/rootfs.gz
}

作者: 2012卷心菜    时间: 2013-5-13 17:52
2010teasiu 发表于 2013-5-13 15:31
比如你的iso是isolinux格式启动的,
就可以
    menuentry "启动xx.iso(示例)"  

UEFI模式,怎么办?
可以启动到GRUB>  
但是,没有INITRD等模块
作者: 2012卷心菜    时间: 2013-5-13 18:21
我的意思是,这个本来支持UEFI

那么,BIOS,UEFI是不是可以都来个模板

给个全一点的包,和一个通用一点的菜单

启动当前启动设备根目录的XXX.ISO, BOOT目录的XXX.IMG

这样,硬盘,光盘,U盘,通用,复制模板文件到硬盘,光盘,U盘,就可以了

PE,LINUX等,都可以整体启动嘛
作者: 2011cwj6958    时间: 2013-5-13 21:11
手动解包安装可以放在任意分区根目录,启动所在分区的winlyldr.mbr 可以引导。
作者: 2011cwj6958    时间: 2013-5-13 22:13
本帖最后由 2011cwj6958 于 2013-5-13 22:44 编辑

WinLy放在任意分区的启动方法

把WinLy4.1安装后产生的burg文件夹全部文件和buldr buldr.mbr文件放在任意分区根目录,引导buldr.mbr

把WinLy4.4手动解包安装winlyldr文件夹全部文件和winlyldr    winlyldr.mbr文件放在任意分区根目录,引导winlyldr.mbr


WinLy4.1放在UD分区的方法
把burg里面的fonts locale themes文件夹和burg.cfg文件, 再把bean的buldr文件一起拖入UD区,编辑fbinst菜单

也可以用FbinstTool软件新建bucfg.fba文件,把burg里面的fonts locale themes文件夹和burg.cfg文件, 再把bean的buldr文件一起拖入,编辑fbinst菜单   这个bucfg.fba文件可以可以用来制作UD 也可以和bean的buldr文件, buldr.mbr文件一起启动

WinLy做主引导安装方法
用BOOTICE安装主引导GRUB4DOS

作者: xyzxp    时间: 2013-5-14 00:04
强烈支持一下。
作者: jianliulin    时间: 2013-5-14 09:02
到现在还不清楚grub2 for dos 项目具体是什么,它和burg,grub2 是什么关系?
作者: fanet    时间: 2013-5-14 09:14
grub2 for dos 还是改名为grub2 for win, 简称grub2win
作者: teasiu    时间: 2013-5-14 09:27
jianliulin 发表于 2013-5-14 09:02
到现在还不清楚grub2 for dos 项目具体是什么,它和burg,grub2 是什么关系?

简单说是将grub2编译成在dos环境下启动的内核文件。

就是grub2-2.00

burg是grub2-1.98的进化版,burg已经被编译为多种环境下启动内核了,

我尝试编译grub2-2.00在多种环境下的内核。
作者: teasiu    时间: 2013-5-14 09:29
本帖最后由 2010teasiu 于 2013-5-14 09:30 编辑
fanet 发表于 2013-5-14 09:14
grub2 for dos 还是改名为grub2 for win, 简称grub2win


因为国外已经有1个grub2win项目,所以不想重复名称。

当然,该项目有点蹩脚。

所以,我直接采用winly的名称。base on grub2

winly

是我2年前创建的名称。
http://baike.baidu.com/view/6732678.htm
作者: fujianabc    时间: 2013-5-14 14:54
2010teasiu 发表于 2013-5-13 15:31
比如你的iso是isolinux格式启动的,
就可以
    menuentry "启动xx.iso(示例)"  


loopback局限性太大,这个仿真只对grub2环境内有效,出了grub2就失效了,所以不能用于启动windows/winpe/dos等系统。

linux16和initrd16是16位命令,只能用于bios模式下的grub2,不能用于efi环境下的grub2
作者: 2011cwj6958    时间: 2013-5-15 12:06
本帖最后由 2011cwj6958 于 2013-5-15 12:08 编辑

winlyldr 问题
winlyldr 在大分辨率的电脑上字体太小,不美观。怎样自定义分辨率
在有背景图的菜单中菜单不明显,怎样修改菜单字体颜色

作者: 2012xnmbz    时间: 2013-5-16 08:24
那就是说,EFI模式下,不能整体启动ISO,IMG了
作者: yjstone    时间: 2013-5-16 22:02
无条件地支持!
作者: teasiu    时间: 2013-5-17 08:13
pokime99 发表于 2013-5-13 10:11
目前,GRUB4DOS,對BIOS啟動,已經相當完備,且持續更新中。但,對於UEFI啟動,GRUB4DOS已表明不支持,反倒 ...

UEFI启动已经制作完成,请下载使用。
作者: teasiu    时间: 2013-5-17 08:16
2011cwj6958 发表于 2013-5-15 12:06
winlyldr 问题
winlyldr 在大分辨率的电脑上字体太小,不美观。怎样自定义分辨率
在有背景图的菜单中菜单 ...

下次新版更新时,我将字体和分辨率调整到外部的菜单,让您可以手动编辑。
作者: 2012bzsb    时间: 2013-5-17 09:10
EFI模式,能整体启动ISO,IMG吗?


作者: teasiu    时间: 2013-5-17 09:19
2012bzsb 发表于 2013-5-17 09:10
EFI模式,能整体启动ISO,IMG吗?

需要再测试。你也可以google搜索看看。
作者: 2012bzsb    时间: 2013-5-17 09:47
不熟悉LINUX的命令,只希望有简单的启动菜单(固定启动几个不同文件名的ISO,IMG即可)
目前,EFI可以进入这个界面,或者命令行

未命名li.JPG (30.78 KB, 下载次数: 360)

未命名li.JPG

作者: 贝壳    时间: 2013-5-17 17:39
希望能加入grub2dos的热键功能,grub2应该很好支持中文,有中文热键,应该是热门应用
作者: 2011cwj6958    时间: 2013-5-17 20:58
    测试了风格包,感觉没有以前WinLybrug版本的美观。
建议:
    直接用WinLybrug版本的风格包,省去时间和精力。
    制作两个版本,一个像现在的,只有简单几个文件,带背景图,使用者可以自由设置分辨率,字体大小。
                  一个像以前WinLybrug的有多个风格包。最好把风格包打包成一个文件,看起来简洁一点。
作者: 2011cwj6958    时间: 2013-5-17 21:05
本帖最后由 2011cwj6958 于 2013-5-17 21:12 编辑

移动硬盘安装:
       成功引导本地两块硬盘上的系统,转二级菜单,转其他方式引导

winly.cfg
menuentry "启动移动硬盘系统" --class windows --class os {
        insmod part_msdos
        insmod ntfs
        set root='(hd0,msdos1)'
        chainloader +1
}
menuentry "启动主机第一硬盘Windows系统" --class windows {
         insmod part_msdos
        insmod ntfs
        set root='(hd1,msdos1)'
        chainloader +1
}
menuentry "启动主机第二硬盘Windows系统" --class windows {
         insmod part_msdos
        insmod ntfs
        set root='(hd2,msdos1)'
        chainloader +1
}
menuentry "进入GRUB-2012文字引导菜单" --class windows  {
        linux16 /GRUB/grub.exe --config-file=/BOOT/GRUB/ydyp.lst
}
menuentry "进入GRUB-2012图形引导菜单" --class windows  {
        linux16 /GRUB/grub.exe --config-file=/BOOT/GRUB/ajmenu.lst
}
menuentry "阿杰工作室移动系统GRUB2引导菜单" --class linux  {
        linux16 /GRUB/grub.exe --config-file=/BOOT/GRUB/burg.lst
}
menuentry "GRUB引导ISO,IMG,IMA,本地系统,完善资源管理器" --class windows  {
        linux16 /GRUB/grub.exe --config-file=/BOOT/GRUB/grub.lst
}

menuentry "全能移动系统syslinux引导菜单" --class linux  {
        linux16 /GRUB/grub.exe --config-file=/BOOT/GRUB/syslinux.lst
}
menuentry "全能移动系统XORLDR多系统引导程序" --class windows  {
        linux16 /GRUB/grub.exe --config-file=/BOOT/GRUB/xoldr.lst
}
menuentry "全能移动系统Windows nt5 引导菜单" --class windows  {
        linux16 /GRUB/grub.exe --config-file=/BOOT/GRUB/windowsn5.lst
}
menuentry "全能移动系统Windows nt6 引导菜单" --class windows  {
        linux16 /GRUB/grub.exe --config-file=/BOOT/GRUB/windowsnt6.lst
}
menuentry "进入乌班图ubuntu-liveCD系列菜单" --class ubuntu  {
     set root='(hd0,1)'
        configfile /winly/ubuntu.cfg  
}
menuentry "进入雨林木风Ylmf-LiveCD菜单" --class ylmf  {
     set root='(hd0,1)'
        configfile /winly/ylmf.cfg
}
menuentry "进入Deepin深度LiveCD菜单" --class ld  {
    set root='(hd0,1)'
        configfile /winly/Deepin.cfg   
}
menuentry "进入微型linux-Live菜单" --class linux  {
    set root='(hd0,1)'
        configfile /winly/WXlinux.cfg   
}
menuentry "进入Linuxmint-LiveCD系列菜单" --class linuxmin  {
   set root='(hd0,1)'
        configfile /winlymint.cfg   
}
menuentry "进入小芭比puppy-Live桌面系统菜单" --class puppy  {
   set root='(hd0,1)'
        configfile /winly/puppy.cfg   
}
menuentry "进入veket-live桌面系统菜单" --class puppy  {
    set root='(hd0,1)'
        configfile /winly/veket.cfg   
}
menuentry "进入Microsoft Windows-pe菜单" --class windows  {
    set root='(hd0,1)'
        configfile /winly/pe.cfg   
}
menuentry "进入全能Microsoft Windows-pe菜单" --class windows  {
    set root='(hd0,1)'
        configfile /winly/qnpe.cfg  
}
menuentry "进入系统工具菜单" --class windows  {
    set root='(hd0,1)'
        configfile /winly/gj.cfg   
}
menuentry "重启" --class windows --class os{
        reboot
}
menuentry "关闭计算机" --class windows --class os{
        halt
}


作者: t.x.w    时间: 2013-5-18 10:12
非常支持
作者: teasiu    时间: 2013-5-18 11:39
贝壳 发表于 2013-5-17 17:39
希望能加入grub2dos的热键功能,grub2应该很好支持中文,有中文热键,应该是热门应用

14.3.41 sendkey
— Command: sendkey [--num|--caps|--scroll|--insert| --pause|--left-shift|--right-shift| --sysrq|--numkey|--capskey|--scrollkey| --insertkey|--left-alt|--right-alt| --left-ctrl|--right-ctrl ‘on’|‘off’]... [no-led] keystroke

    Insert keystrokes into the keyboard buffer when booting. Sometimes an operating system or chainloaded boot loader requires particular keys to be pressed: for example, one might need to press a particular key to enter "safe mode", or when chainloading another boot loader one might send keystrokes to it to navigate its menu.

    You may provide up to 16 keystrokes (the length of the BIOS keyboard buffer). Keystroke names may be upper-case or lower-case letters, digits, or taken from the following table:

    Name         Key
    escape         Escape
    exclam         !
    at         @
    numbersign         #
    dollar         $
    percent         %
    caret         ^
    ampersand         &
    asterisk         *
    parenleft         (
    parenright         )
    minus         -
    underscore         _
    equal         =
    plus         +
    backspace         Backspace
    tab         Tab
    bracketleft         [
    braceleft         {
    bracketright         ]
    braceright         }
    enter         Enter
    control         press and release Control
    semicolon         ;
    colon         :
    quote         '
    doublequote         "
    backquote         `
    tilde         ~
    shift         press and release left Shift
    backslash         \
    bar         |
    comma         ,
    less         <
    period         .
    greater         >
    slash         /
    question         ?
    rshift         press and release right Shift
    alt         press and release Alt
    space         space bar
    capslock         Caps Lock
    F1         F1
    F2         F2
    F3         F3
    F4         F4
    F5         F5
    F6         F6
    F7         F7
    F8         F8
    F9         F9
    F10         F10
    F11         F11
    F12         F12
    num1         1 (numeric keypad)
    num2         2 (numeric keypad)
    num3         3 (numeric keypad)
    num4         4 (numeric keypad)
    num5         5 (numeric keypad)
    num6         6 (numeric keypad)
    num7         7 (numeric keypad)
    num8         8 (numeric keypad)
    num9         9 (numeric keypad)
    num0         0 (numeric keypad)
    numperiod         . (numeric keypad)
    numend         End (numeric keypad)
    numdown         Down (numeric keypad)
    numpgdown         Page Down (numeric keypad)
    numleft         Left (numeric keypad)
    numcenter         5 with Num Lock inactive (numeric keypad)
    numright         Right (numeric keypad)
    numhome         Home (numeric keypad)
    numup         Up (numeric keypad)
    numpgup         Page Up (numeric keypad)
    numinsert         Insert (numeric keypad)
    numdelete         Delete (numeric keypad)
    numasterisk         * (numeric keypad)
    numminus         - (numeric keypad)
    numplus         + (numeric keypad)
    numslash         / (numeric keypad)
    numenter         Enter (numeric keypad)
    delete         Delete
    insert         Insert
    home         Home
    end         End
    pgdown         Page Down
    pgup         Page Up
    down         Down
    up         Up
    left         Left
    right         Right

    As well as keystrokes, the sendkey command takes various options that affect the BIOS keyboard status flags. These options take an ‘on’ or ‘off’ parameter, specifying that the corresponding status flag be set or unset; omitting the option for a given status flag will leave that flag at its initial state at boot. The --num, --caps, --scroll, and --insert options emulate setting the corresponding mode, while the --numkey, --capskey, --scrollkey, and --insertkey options emulate pressing and holding the corresponding key. The other status flag options are self-explanatory.

    If the --no-led option is given, the status flag options will have no effect on keyboard LEDs.

    If the sendkey command is given multiple times, then only the last invocation has any effect.

    Since sendkey manipulates the BIOS keyboard buffer, it may cause hangs, reboots, or other misbehaviour on some systems. If the operating system or boot loader that runs after GRUB uses its own keyboard driver rather than the BIOS keyboard functions, then sendkey will have no effect.

    This command is only available on PC BIOS systems.
作者: plutoshen    时间: 2013-5-18 14:16
附件好像出错了
作者: teasiu    时间: 2013-5-18 15:43
plutoshen 发表于 2013-5-18 14:16
附件好像出错了

哪一个?
作者: 拿铁不加糖    时间: 2013-5-18 18:20
不错,期待更成熟的版本。
作者: 2012852253701    时间: 2013-5-18 22:05
支持一下
作者: wangou42    时间: 2013-5-20 08:49
支持一下
作者: haook    时间: 2013-5-20 10:12
GRUB4DOS能启动指定的扇区,请问楼主的GRUB2 for DOS能启动指定的扇区吗!
举例:img软盘镜像文件始于硬盘的第111111扇区,长度2880扇区,则
map --mem (hd0)1111111+2880 (fd0)
map --hook
root (fd0)
chainloader (fd0)+1
boot
作者: teasiu    时间: 2013-5-20 10:24
haook 发表于 2013-5-20 10:12
GRUB4DOS能启动指定的扇区,请问楼主的GRUB2 for DOS能启动指定的扇区吗!
举例:img软盘镜像文件始于硬盘 ...

— Command: drivemap -l|-r|[-s] from_drive to_drive

    Without options, map the drive from_drive to the drive to_drive. This is necessary when you chain-load some operating systems, such as DOS, if such an OS resides at a non-first drive. For convenience, any partition suffix on the drive is ignored, so you can safely use ${root} as a drive specification.

    With the -s option, perform the reverse mapping as well, swapping the two drives.

    With the -l option, list the current mappings.

    With the -r option, reset all mappings to the default values.

    For example:

              drivemap -s (hd0) (hd1)


作者: FLOPPY    时间: 2013-5-20 11:27
uefi 版本怎么没有drivemap ? 另外:在UEFI环境中chainloader 好像不能使用chainloader +1载入扇区,只能加载文件。
作者: teasiu    时间: 2013-5-20 12:59
FLOPPY 发表于 2013-5-20 11:27
uefi 版本怎么没有drivemap ? 另外:在UEFI环境中chainloader 好像不能使用chainloader +1载入扇区,只能加 ...

似乎uefi版本不支持drivemap
编译的结果没有这个mod


作者: teasiu    时间: 2013-5-20 14:27
pxe版本在2.00似乎有问题,研究中。
作者: zbkh    时间: 2013-5-20 15:01
关于efi启动,启动菜单怎么编写???
比如说我想启动一个win7的PE,菜单怎么写?
如果能做到64位的efi能引导32位的PE就好了!!
作者: fujianabc    时间: 2013-5-20 15:16
zbkh 发表于 2013-5-20 15:01
关于efi启动,启动菜单怎么编写???
比如说我想启动一个win7的PE,菜单怎么写?
如果能做到64位的efi能 ...


这个直接chainloader bootmgfw.efi就可以了
作者: fujianabc    时间: 2013-5-20 15:17
FLOPPY 发表于 2013-5-20 11:27
uefi 版本怎么没有drivemap ? 另外:在UEFI环境中chainloader 好像不能使用chainloader +1载入扇区,只能加 ...

uefi启动本来就是基于文件的,当然不需要再加载扇区来启动
作者: zbkh    时间: 2013-5-20 16:22
fujianabc 发表于 2013-5-20 15:16
这个直接chainloader bootmgfw.efi就可以了

恩,我试试!
作者: teasiu    时间: 2013-5-21 09:25
多重启动的iso已经上传
作者: haook    时间: 2013-5-21 17:12
本帖最后由 haook 于 2013-5-21 17:22 编辑

关于多重启动ISO的启动,启动菜单怎么编写???
比如说我想启动一个WIM格式的win8PE,菜单怎么写?
请教楼主两种菜单的写法?谢谢!
1:在UEFI下的菜单写法
2:在BIOS下的菜单写法
作者: teasiu    时间: 2013-5-21 18:07
haook 发表于 2013-5-21 17:12
关于多重启动ISO的启动,启动菜单怎么编写???
比如说我想启动一个WIM格式的win8PE,菜单怎么写?
请教 ...

1、UEFI
先将你的win8pe的EFI启动文件bootmgr.efi或者你原来的efi\boot\bootx64.efi改名字为win8pe.efi放在winly文件夹
menuentry "【3】启动UEFI主板的windows8PE系统(如果有)" --class windows --class os {
search --no-floppy --file --set=root /winly/win8pe.efi
chainloader /winly/win8pe.efi
}
2、bios主板启动
menuentry "【3】启动bios主板的windows8pe系统(如果有)" --class windows --class os {
ntldr /bootmgr
}
作者: lfu0327    时间: 2013-5-22 00:27
我想請問~

支援鼠標嗎?

雖然只是短暫的選擇~但是可以提供更多的方便啊~
作者: nf17b    时间: 2013-5-22 03:34
本帖最后由 2010nf17b 于 2013-6-2 00:05 编辑

謝謝樓主 , 這個工具 , 讓我的 U盤 UEFIX64功能更完備

作者: hero8000    时间: 2013-5-22 13:08
支持一下
作者: fukystone    时间: 2013-5-22 18:51
teasiu 发表于 2013-5-21 18:07
1、UEFI
先将你的win8pe的EFI启动文件bootmgr.efi或者你原来的efi\boot\bootx64.efi改名字为win8pe.efi ...

bios主板启动中,bootmgr要放在哪里?
作者: teasiu    时间: 2013-5-22 19:02
本帖最后由 teasiu 于 2013-5-22 19:09 编辑
fukystone 发表于 2013-5-22 18:51
bios主板启动中,bootmgr要放在哪里?


ntldr (hd0,1)/xxxx/xxxx/xxxx/xxxx/xxxx/xxxx/bootmgr

理论上,你想放在哪里都可以。
但是,bootmgr不是通常放在根目录的吗?

如果你有3个分区,每个分区都安装了1个windows系统,
那么,你想启动哪个分区的bootmgr, 就set root=(hdx,y)指定它。xy的数字你应该知道吧。

grub2还有一个search的功能,搜索之后再set根目录是哪个磁盘。
作者: fukystone    时间: 2013-5-22 19:08
teasiu 发表于 2013-5-22 19:02
ntldr (hd0,1)/xxxx/xxxx/xxxx/xxxx/xxxx/xxxx/bootmgr

理论上,你想放在哪里都可以。

麻烦就在这里了,客观环境限制,移动硬盘有时候是hd0,有时候是hd1,这个得看主板了。
那么怎么写菜单来保证只启动和winly在一个分区上的那个bootmgr?
作者: teasiu    时间: 2013-5-22 19:14
fukystone 发表于 2013-5-22 19:08
麻烦就在这里了,客观环境限制,移动硬盘有时候是hd0,有时候是hd1,这个得看主板了。
那么怎么写菜单来 ...


兄弟,这就是使用的智慧了。

比如说,你将在移动盘的根目录放一个唯一的标识文件,比如123命名的空白文档。

menuentry "【6】启动指定的盘的windows" --class windows --class os {
search --no-floppy --file --set=root /123
ntldr /bootmgr
}
作者: fukystone    时间: 2013-5-22 19:43
teasiu 发表于 2013-5-22 19:14
兄弟,这就是使用的智慧了。

比如说,你将在移动盘的根目录放一个唯一的标识文件,比如123命名的空白 ...

呵呵,这种以前倒是用过,感觉比较“土”……
不能默认先启动跟winly一个分区上的bootmgr吗?
我觉得算是一个“合理化要求”
作者: teasiu    时间: 2013-5-22 19:49
fukystone 发表于 2013-5-22 19:43
呵呵,这种以前倒是用过,感觉比较“土”……
不能默认先启动跟winly一个分区上的bootmgr吗?
我觉得算 ...

因为我在内核里有set了winly.cfg的位置为root的,

所以,你就直接和放菜单的位置一起放就可以了。
作者: wg0517    时间: 2013-5-23 10:21
有个问题哦,MBR版和EFI的配置文件是同一个的话,那在配置文件中怎么判断当前是用MBR启动的还是用EFI启动的?
作者: teasiu    时间: 2013-5-23 10:42
wg0517 发表于 2013-5-23 10:21
有个问题哦,MBR版和EFI的配置文件是同一个的话,那在配置文件中怎么判断当前是用MBR启动的还是用EFI启动的 ...

我们都知道,启动时,mbr和efi是使用不同的内核启动的,
但是,我的模版里设置的是相同的1个菜单文件,
如果你一定要让菜单文件自动判断的话,
可以这样:
将winly.cfg写成:
如果 search有efi的启动文件,那么
configfile winlyefi.cfg
else
configfile winlymbr.cfg

然后,建立2个分菜单
你懂的。

作者: wg0517    时间: 2013-5-23 10:45
teasiu 发表于 2013-5-23 10:42
我们都知道,启动时,mbr和efi是使用不同的内核启动的,
但是,我的模版里设置的是相同的1个菜单文件,
...

那当U盘或光盘是MBR、EFI双重启动的时候,EFI启动文件肯定是会有的啊,这个判断能有用?
作者: pokime99    时间: 2013-5-23 10:45
下載了版主的UEFI ISO,我用VM9去驅動,完全沒有反應。接著改用,檔案模式去執行,仍然沒有反應。沒有仍然錯誤訊息,都是直接跳離。不知為何?
作者: teasiu    时间: 2013-5-23 10:49
pokime99 发表于 2013-5-23 10:45
下載了版主的UEFI ISO,我用VM9去驅動,完全沒有反應。接著改用,檔案模式去執行,仍然沒有反應。沒有仍然錯 ...

我测试没问题,不知道你的VM设置是否正确?
作者: teasiu    时间: 2013-5-23 10:56
wg0517 发表于 2013-5-23 10:45
那当U盘或光盘是MBR、EFI双重启动的时候,EFI启动文件肯定是会有的啊,这个判断能有用?

不好意思,刚才我思维太快,想错了,
正确应该是这样的原理:

当启动的是bios的内核时,$prefix里面的模块是不同的。
比如,bios启动的模块有ntldr.mod,而efi启动的内核里没有ntldr.mod

那么,我们就可以这样来判断:
如果 search到$prefix有ntldr.mod,那么
configfile winlyefi.cfg
else
configfile winlymbr.cfg

作者: wg0517    时间: 2013-5-23 11:01
teasiu 发表于 2013-5-23 10:56
不好意思,刚才我思维太快,想错了,
正确应该是这样的原理:

好的,谢谢老大,我试一下
作者: pokime99    时间: 2013-5-23 11:49
本帖最后由 pokime99 于 2013-6-3 11:09 编辑
teasiu 发表于 2013-5-23 10:49
我测试没问题,不知道你的VM设置是否正确?


作者: teasiu    时间: 2013-5-23 12:36
pokime99 发表于 2013-5-23 11:49
下載了Parted Magic來比對,不管64位,或者32位,Parted Magic都能正常啟動。但,版主的,我就是啟動不了 ...

你下载 winly.iso.7z以后,有没有解压?
作者: teasiu    时间: 2013-5-23 12:49
pokime99 发表于 2013-5-23 11:49
下載了Parted Magic來比對,不管64位,或者32位,Parted Magic都能正常啟動。但,版主的,我就是啟動不了 ...

我再次使用vm9测试了,没有问题.

另外你提供的pmagic的启动核心是被阉割了很多模块的启动文件,没有利用价值.
作者: fukystone    时间: 2013-5-23 14:32
测试完美。
现在只剩2个问题了……
1、什么时候能实现简单的map引导iso、img等文件--不用loop那样循环载入内存
2、怎么支持PXE啊
作者: zbkh    时间: 2013-5-23 14:36
我在苹果机上测试了一下efi启动:
引导菜单是这样的:
menuentry "win8PEX64" --class windows --class os{
search --no-floppy --file --set=root /EFI/Microsoft/boot/win8x64.efi
chainloader /EFI/Microsoft/boot/win8x64.efi
}

但引导不成功,出现:



请教为什么会这样?
作者: wg0517    时间: 2013-5-23 16:07
本帖最后由 wg0517 于 2013-5-24 10:16 编辑
teasiu 发表于 2013-5-23 10:56
不好意思,刚才我思维太快,想错了,
正确应该是这样的原理:


Winly.cfg改为了:
###Choose MBR or EFI //如果第一行就是if,则if会失败,不知道为什么
if [ -e $prefix/i386-pc] then
      configfile /winly/winlymbr.cfg
else
      configfile /winly/winlyefi.cfg
fi
作者: wg0517    时间: 2013-5-23 16:18
zbkh 发表于 2013-5-23 14:36
我在苹果机上测试了一下efi启动:
引导菜单是这样的:
menuentry "win8PEX64" --class windows --class o ...

感觉像是文件没有找到win8x64.efi啊
作者: teasiu    时间: 2013-5-23 17:46
fukystone 发表于 2013-5-23 14:32
测试完美。
现在只剩2个问题了……
1、什么时候能实现简单的map引导iso、img等文件--不用loop那样循环载入 ...

1、研究研究。。。。尚未深入。
2、pxe目前有些问题。
作者: teasiu    时间: 2013-5-23 17:49
zbkh 发表于 2013-5-23 14:36
我在苹果机上测试了一下efi启动:
引导菜单是这样的:
menuentry "win8PEX64" --class windows --class o ...

你下载一个这个模版,再把pe套进去。

http://linux-pe.googlecode.com/files/winly.iso
作者: zbkh    时间: 2013-5-23 23:01
wg0517 发表于 2013-5-23 16:18
感觉像是文件没有找到win8x64.efi啊

我也这样感觉,但不知道怎么样入手解决!
作者: zbkh    时间: 2013-5-23 23:07
本帖最后由 zbkh 于 2013-5-24 10:40 编辑
teasiu 发表于 2013-5-23 17:49
你下载一个这个模版,再把pe套进去。

http://linux-pe.googlecode.com/files/winly.iso


已下载,我会将iso中当中的文件原样释放到启动u盘,并添加64位可在efi模式启动的PE,明天测试后贴出来!

这是测试图片:



作者: zbkh    时间: 2013-5-23 23:48
我把我在vmware9.0上面测试的画面贴出来:
测试的是:winly.iso
在bios模式测试的结果:


在efi模式下测试的结果:


接下来是我用oscdimg制作的双启动iso文件,本来想上传测试文件的,但是无赖家里网速不给力:

bios测试画面(grldr):


在efi模式下测试的结果:


win8pe的引导配置是:
menuentry "win8PEX64" --class windows --class os{

        search --no-floppy --file --set=root /EFI/boot/win8x64.efi
        chainloader /EFI/boot/win8x64.efi
}

QQ截图20130523234636.jpg (101.65 KB, 下载次数: 270)

QQ截图20130523234636.jpg

作者: aohch    时间: 2013-5-24 08:41
太好了,学习一下,支持!
作者: dfswb    时间: 2013-5-24 09:00
如果有哪位大大在提供一个比较全面的合盘就更好了,让我等菜菜研究研究模仿模仿!
作者: haook    时间: 2013-5-24 09:02
本帖最后由 haook 于 2013-5-24 09:15 编辑

借用上楼图片提问:
菜单条太长(指白色部分),不美观,边框能不能自定义大小,提示文字能否隐藏,包括最顶端的标题能否隐藏。
别外,背景支持jpg,vga,png图片格式——最大分辨率是多少,通常支持几种分辨率的图片,如:1024*768 ,800*600
请教楼主如何实现上述功能,谢谢!

作者: teasiu    时间: 2013-5-24 09:35
本帖最后由 teasiu 于 2013-5-24 09:36 编辑
haook 发表于 2013-5-24 09:02
借用上楼图片提问:
菜单条太长(指白色部分),不美观,边框能不能自定义大小,提示文字能否隐藏,包括最 ...


你要美化,自己加一个风格包,就什么都实现了。
我放出了其中一个风格包,也写出了修改的方法,你想怎么设置怎么改都可以。

背景的分辨率,我使用3M的1980x1440高清图片一点压力也没有。嘿嘿。



作者: teasiu    时间: 2013-5-24 09:38
dfswb 发表于 2013-5-24 09:00
如果有哪位大大在提供一个比较全面的合盘就更好了,让我等菜菜研究研究模仿模仿!

我不是放出了一个合盘的模板了吗?

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=308893
作者: haook    时间: 2013-5-24 09:39
为了让更多的人系统的了解和使用GRUB2 for DOS,提个建议:
请楼主按照grub4dos-help-2012-05-21.chm编写帮助文件,每当有新的进展,及时编入CHM文件,并上传到顶楼
这样有两个好处:
1:让新手找到快速学习的途径
2:让高手能及时了解最新进展

作者: teasiu    时间: 2013-5-24 09:44
haook 发表于 2013-5-24 09:39
为了让更多的人系统的了解和使用GRUB2 for DOS,提个建议:
请楼主按照grub4dos-help-2012-05-21.chm编写帮 ...

我编写和推广已经很花精力了,
后续的需要其他热心网友协助完成。
作者: 2012qiuyi    时间: 2013-5-24 09:47
请问有loadslic命令吗?
作者: teasiu    时间: 2013-5-24 10:13
2012qiuyi 发表于 2013-5-24 09:47
请问有loadslic命令吗?

你这是外部命令,需要二次开发。
作者: wg0517    时间: 2013-5-24 10:21
teasiu 发表于 2013-5-24 10:13
你这是外部命令,需要二次开发。

Winly.cfg的第一行如果是if,if会无效,就是为啥啊?
作者: teasiu    时间: 2013-5-24 10:30
wg0517 发表于 2013-5-24 10:21
Winly.cfg的第一行如果是if,if会无效,就是为啥啊?

将configfile xxx.cfg

改成
source xxx.cfg

试试。
作者: wg0517    时间: 2013-5-24 10:34
本帖最后由 wg0517 于 2013-5-24 10:35 编辑
teasiu 发表于 2013-5-24 10:30
将configfile xxx.cfg

改成


如果Winly.cfg如下:
if xxxx then
source xxx.cfg
else
source yyy.cfg
则,启动时会同时出现xxx.cfg和yyy.cfg的内容
如果第一行为空或其他内容,则没有问题
作者: teasiu    时间: 2013-5-24 10:47
wg0517 发表于 2013-5-24 10:34
如果Winly.cfg如下:
if xxxx then
source xxx.cfg

这是一个好的反馈。以后写菜单要注意了。
作者: wg0517    时间: 2013-5-24 13:18
teasiu 发表于 2013-5-13 15:31
比如你的iso是isolinux格式启动的,
就可以
    menuentry "启动xx.iso(示例)"  

    menuentry "maxdos9"  
    {
            linux16 (位置)/memdisk
            initrd16 (位置)/maxdos9.img                                 
    }
    menuentry "Beini"  
    {
            linux16 (位置)/memdisk iso
            initrd16 (位置)/beini.iso                                 
    }

用5.01的memdisk可以启动的,但PE启动ISO的不行,不过个人认为,PE是可以合盘的,所以PE的ISO无法启动也就无所谓了
作者: wg0517    时间: 2013-5-24 13:22
附上5.01.的memdisk,建议直接集成在Winly里

memdisk.rar

14.39 KB, 下载次数: 146, 下载积分: 无忧币 -2

memdisk






欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3