grub menulist详解

阿建同学分享的,备份一下
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-53.el5)
    root (hd0,0)
    kernel /boot/vmlinuz-2.6.18-53.el5 ro root=LABEL=/ rhgb ramdisk_size=512000 quiet
    initrd /boot/initrd-2.6.18-53.el5.img
title Tinycore linux
    root(hd0,0)
    kernel /boot/tinycore/bzImage quiet
    initrd /boot/tinycore/tinycore.gz    
title Ubuntu iso HD install
    root (hd0,0)
    kernel /vmlinuz boot=casper iso-scan/filename=/ubuntu-8.10-desktop-i386.iso ro quiet splash locale=zh_CN.UTF-8 U盘安装ubuntu-8.10-desktop-i386.iso
    initrd /initrd.gz
    boot
例题分析:
例1:
default 0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Ubuntu iso install 
    root (hd0,0)
    kernel /boot/Ubuntu/vmlinuz ro root=/ 
    initrd /boot/Ubuntu/initrd.gz
    boot
分析:
           时间(5秒)过后进入第0个系统(若有多个title...可以是 1,2,3...)
           5秒钟选折时间
           背景图片 在(hd0,0)/boot/grub/splash.xpm.gz下,grub支持gz压缩
           隐藏菜单
           title Ubuntu iso install 是进入Grub的标题
           root (hd0(或sd0)(或fd0),0)在一个硬盘(或串口硬盘)(或软驱)的第一分0区读取
           kernel /boot/Ubuntu/vmlinuz vmlinuz:linux内核文件的名称 放在/boot/Ubuntu下了
            ro 的意思是read only
   initrd /boot/Ubuntu/initrd.gz:指定镜像文件的名称,镜像文件(img文件)包含了已经编译好的驱动模块
例2:

kernel (hd0,4)/vmlinuz root=/dev/ram ramdisk_size=32000 devfs=mount,dall vga=791 
kernel 读取内核 (hd0,4) 1 硬盘5分区 root=/dev/ram ramdisk_size=32000 在创建内存中创建虚拟盘 大小32000 vga 791 1024X768
devfs=mount表示内核使用devfs (Device File System) dall是所有类型
   注 下面是:

# VESA framebuffer console @ 1024x768x64k vga = 791 # Normal VGA console # vga = normal # VESA framebuffer console @ 1024x768x64k # vga=791 # VESA framebuffer console @ 1024x768x32k # vga=790 # VESA framebuffer console @ 1024x768x256 # vga=773 # VESA framebuffer console @ 800x600x64k # vga=788 # VESA framebuffer console @ 800x600x32k # vga=787 # VESA framebuffer console @ 800x600x256 # vga=771 # VESA framebuffer console @ 640x480x64k # vga=785 # VESA framebuffer console @ 640x480x32k # vga=784 # VESA framebuffer console @ 640x480x256 # vga=769例3:   kernel /boot/Ubuntu/vmlinuz ro root=LABEL=/1 rhgb quietLABEL 分区标签,可以用/sbin/e2label这个命令来查设某个ext2/ext3格式分区的label rhgb redhat , quiet不显示检查硬件。有时候加载的工具多了,U盘中的文件就会很凌乱,而且U盘根目录会有很多文件,看着很不爽.

用这种方法的主要优点,多层多重菜单,很容易扩展,文件系统简单

总体思路,引导加载Menu.lst,在Menu.lst中加载各种镜像工具,包括PE系统和其它工具的镜像,以及目录菜单文件

Setp1,引导启动.方法很多,介绍一种用Nt引导的
       格U盘(SD卡什么的也行)成FAT32,用NTBOOT.EXE写入引导,复制NTLDR和NTDETECT.COM到U:\ (U盘根目录),再写Boot.ini文件到U:\,若要在Boot.ini中加入多项菜单也行,菜单中有中文的话,还要复制bootfont.bin到U:\.

Setp2,加载grldr.可以直接写入MBR加载grldr,这样就不用Setp1了;在这里,还是用上面的NT引导.
       在Boot.ini中加入一行
       C:\grldr="Boot MENU"
       复制grldr和Menu.lst到U:\.

Setp3,菜单制作.接上面思路,可以在Boot.ini 和 Menu.lst中加入多启动菜单,并可嵌套
       PS:这也是笔者主要说明的
       现在,为了层次性,我们不在Boot.ini中多启动,多启动只在Menu中嵌套.
       如我们现在PE系统两个(ISO格式),Dos工具若干(IMG,IMA,ISO等格式)
       现在在U:\下建立目录如下
       Minipe\main(放字体,背景图片),Minipe\system(放PE系统),Minipe\tools(放各种工具)
       放置文件到相应目录,再编写Menu文件

以笔者自己的手机SD卡为例,格式为FAT32,容量512M
       相关目录格式:
├—Minipe                                            (文件夹)
│         ├—Main                                       (文件夹)
│         │    ├—BG.gz                        (背景图片,48K)
│         │     └—Fonts.gz                    (字体文件,149K)
│         ├—System                                  (文件夹)
│         │       ├PE911.iso                          (老毛桃PE0911,111622K)
│         │       └PE2.iso                            (Vista中提取的PE2.0,288352K)
│         └—Tools                                     (文件夹)
│               ├ deepinTOOL.IMG            (深度系统盘中提取的工具集,2880K)
│               ├Dos.img                        (深山红叶Dos工具箱,9127K)
│               ├ LOADISO.IMG               (Iso镜像加载工具,1440K)
│               ├ NTFSDos.IMG                 (NTFSDos,2880K)
│               ├PASSWORD.IMA            (XP登录密码清除工具,1440K)
│               ├PQ8.IMG                           (PQ8,2160K)
│               └Tools.lst                            (工具箱目录菜单)
├—boot.ini
├—grldr
├—menu.lst                                            (主目录)
├—NTDETECT.COM
└—ntldr

另附目录菜单文件两个.
[Menu.lst]

timeout 20
default 0
splashimage /MiniPE/main/BG.gz
foreground ffff00
fontfile /MiniPE/main/fonts.gz

title [ 1]PE 系统
find --set-root /Menu.lst
map --mem /MiniPE/system/pe911.iso (hd32)
map --hook
chainloader (hd32)
boot

title [ 2]PE 2.0
find --set-root /Menu.lst
map --mem /MiniPE/system/pe2.iso (hd32)
map --hook
chainloader (hd32)
boot

title [ 3]工具集
find --set-root /minipe/tools/tools.lst
configfile /minipe/tools/tools.lst

title [ 4]从硬盘启动Vista
find --set-root /bootmgr
chainloader /bootmgr

title [ 5]从硬盘启动Linux
find --set-root /sbin/init
configfile /boot/grub/menu.lst

title [ 6]查找并启动Dos
find --set-root /io.sys
chainloader /io.sys

title [ 7]重启
reboot

title [ 8]关机
halt



[Tools.lst]

timeout 20
default 0
splashimage /MiniPE/main/BG.gz
foreground ffff00
fontfile /MiniPE/main/fonts.gz

title [ 1]DeepIN工具
find --set-root /Menu.lst
map --mem /MiniPE/tools/deepinTOOL.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

title [ 2]ISO镜像加载
find --set-root /Menu.lst
map --mem /MiniPE/tools/LOADISO.IMG (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

title [ 3]NTFSdos
find --set-root /Menu.lst
map --mem /MiniPE/tools/NTFSdos.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

title [ 4]PQ8
find --set-root /Menu.lst
map --mem /MiniPE/tools/pq8.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

title [ 5]清除登录密码
find --set-root /Menu.lst
map --mem /MiniPE/tools/password.ima (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

title [ 6]Dos工具箱
find --set-root /Menu.lst
map --mem /MiniPE/tools/dos.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

title [ B]返回主菜单
find --set-root /Menu.lst
configfile /Menu.lst

[Boot.ini]

[Boot Loader]
Timeout=15
Default=C:\grldr
[Operating Systems]
C:\grldr="Boot Menu"
multi(0)disk(0)rdisk(1)partition(1)\WINDOWS="IDE First Disk 1th Part NT loader" /NOEXECUTE=OPTIN /FASTDETECT /USEPMTIMER
multi(0)disk(0)rdisk(1)partition(2)\WINDOWS="IDE First Disk 2th Part NT loader" /NOEXECUTE=OPTIN /FASTDETECT /USEPMTIMER
multi(0)disk(0)rdisk(2)partition(1)\WINDOWS="IDE Second Disk 1th Part NT loader" /NOEXECUTE=OPTIN /FASTDETECT /USEPMTIMER
multi(0)disk(0)rdisk(3)partition(1)\WINDOWS="IDE Three Disk 1th Part NT loader" /NOEXECUTE=OPTIN /FASTDETECT /USEPMTIMER
scsi(0)disk(0)rdisk(0)partition(1)\WINDOWS="scsi First Disk 1th Part NT loader" /NOEXECUTE=OPTIN /FASTDETECT /USEPMTIMER
scsi(0)disk(0)rdisk(1)partition(1)\WINDOWS="scsi Second Disk 1th Part NT loader" /NOEXECUTE=OPTIN /FASTDETECT /USEPMTIMER
scsi(0)disk(0)rdisk(2)partition(1)\WINDOWS="scsi Three Disk 1th Part NT loader" /NOEXECUTE=OPTIN /FASTDETECT /USEPMTIMER

你可能感兴趣的:(windows,menulist)