用Syslinux+GRUB4DOS实现U盘的多启动WinXP+WinPE+Ubuntu+Vista
第一章 用Syslinux制作U盘启动盘
1. 下载syslinux,有windows(syslinux-3.72.zip)和linux的版本,根据你的操作系统选择相应的版本。
2. 用FAT32格式格式化你的U盘。
3. 解压syslinux到某个目录,然后制作U盘启动盘:
Windows:
进入syslinux主目录下的\win32目录,执行:
syslinux -sfma e: (假定E盘为你的U盘盘符)
Linux:
进入syslinux主目录下的\linux目录,执行:
syslinux -sf /dev/sd0 (假定sd0为你的U盘设备)
执行完之后在U盘根目录下可以看到新加了一个文件:ldlinux.sys,它是syslinux自动生成的。
4. 设置syslinux配置文件:
在U盘根目录下新建文件:syslinux.cfg,title.txt,readme.txt,内容分别如下(配置项的意思请参考syslinux主目录下的\doc\syslinux.txt文件):
readme.txt文件内容:
This is readme file.
title.txt文件内容:
1fCopyRight 2008-2008 Adai All Right Reserved.
Contact: adaishu@gmail.com
4fPlease Select:
0f 1. dfStart GRUB4DOS
0f
syslinux.cfg文件内容:
# The following 1 is 1 of LABEL 1
DEFAULT 1 缺省启动项就是下面的LABEL 1
DISPLAY title.txt 在启动之前的屏幕显示
TIMEOUT 300 等待用户输入,若是在这个时间内不输入,则选择缺省项启动。单位为1/10秒
PROMPT 1 是否跟用户交互
F1 readme.txt 等待用户输入时,按F1键将要显示的文件
F2 title.txt 等待用户输入时,按F2键将要显示的文件
F3 syslinux.cfg 等待用户输入时,按F3键将要显示的文件
# Start GRUB4DOS
LABEL 1 第一个启动项,1可以改成其它文字
kernel ldntldr 启动的内核
append initrd=grldr 内核再装载映像来启动系统
第二章 用GRUB4DOS实现多重启动
1. 下载grub4dos(grub4dos-0.4.4-2008-08-08.zip)和loadbin(loadbin-0.1-bin-w32-2008-03-01.zip)。2. 解压grub4dos和loadbin到各自的目录。
3. 拷贝grub4dos里面的grldr(如果要支持中文,则用chinese目录下的grldr)、menu.lst到U盘根目录下。
拷贝loadbin里面的ldntldr.bin到U盘根目录下。
4. 第一章里面的syslinux.cfg文件实现了GRUB4DOS的启动。就是下面这几行:
LABEL 1
kernel ldntldr
append initrd=grldr
5. 修改menu.lst文件,实现多启动。
下面实现9个启动项(配置项的意思请参考grub4dos目录下的README_GRUB4DOS.txt文件):
color white/blue green/blue 颜色设置:未选中字体颜色/背景色 选中字体颜色/背景色
timeout 30 等待用户输入,超时则用缺省启动,单位为1秒
default 1 缺省启动项
title 0. Boot from Hard Drive (hd1,0) 屏幕上显示的菜单标题
map (hd0) (hd1) 把hd0映射成hd1
map (hd1) (hd0) 把hd1映射成hd0,这两项就是把两个硬盘交换。因为Windows必须在第一个磁盘的第一个主分区才能启动,而U盘启动时把U盘当成了第一个磁盘,所以必须交换。
使用绝对路径时要注意GRUB对设备的命名方法:
系统的第一个硬盘驱动器表示成(hd0),其上的第一个分区表示为(hd0,0),也就是说对于硬盘,采用(hdx,y)的形式来表示,x、y都是从0开始计数的,x表示硬盘号,y表示分区号。
由于主分区只能有四个,所以第一硬盘的四个主分区分别用(hd0,0)~(hd0,3)来表示;逻辑分区则从(hd0,4)开始算,即第一逻辑分区用(hd0,4),第二逻辑分区用(hd0,5)来表示,依次类推。
一般机子的硬盘都是一个主分区,其余是逻辑分区。因此C盘用(hd0,0),D盘用(hd0,4)来表示。
光盘用(cd)表示,第一软驱用(fd0)表示。
rootnoverify (hd0,0) 设置根启动磁盘
chainloader +1 从启动链启动,就是从hd0,0分区的引导记录中装入这个分区的自己的引导器,然后引导它。
title 1. Microsoft Micro Windows XPE
find --set-root /ldrxpe 找到U盘上的ldrxpe文件,作为根启动文件,因为U盘默认,所以可以不加分区表。
chainloader /ldrxpe 启动U盘上的ldrxpe
title 2. Microsoft Windows NT/2K/XP
map (hd0) (hd1)
map (hd1) (hd0)
rootnoverify (hd0,0)
chainloader +1
title 3. Microsoft Windows Vista
map (hd0) (hd1)
map (hd1) (hd0)
rootnoverify (hd0,0)
chainloader +1
title 4. Ubuntu Linux 启动U盘上的Ubuntu
root (hd0,0)
kernel (hd0,0)/vmlinuz boot=casper iso-scan/filename=/ubuntu-8.10-desktop-i386.iso
initrd (hd0,0)/initrd.gz ramdisk_size=10240
title 5. Floppy (fd0) 启动软盘上的操作系统
chainloader (fd0)+1
rootnoverify (fd0)
title 6. memdrive duplicated from floppy image file (hd0,0)/sbm.bin
map --mem (hd0,0)/sbm.bin (fd0) 把(hd0,0)/sbm.bin在内存里映射成(fd0)
map --hook hook后就可以使用内存里的(fd0)了
chainloader (fd0)+1
rootnoverify (fd0)
title 7. Command Line
commandline 进入命令行模式
title 8. Reboot
reboot 重启机器
title 9. Halt
halt 关闭机器
第三章 用U盘启动U盘里面的Ubuntu
1. 下载Ubuntu(ubuntu-8.10-desktop-i386.iso)。2. 解压Ubuntu到U盘根目录下,然后把刚解压出来的根目录下\casper目录下的initrd.gz和vmlinuz拷贝到U盘根目录。同时把ubuntu-8.10-desktop-i386.iso也拷贝到U盘根目录下。
3. 第二章里面设置了Ubuntu启动项:
title 4. Ubuntu Linux 启动U盘上的Ubuntu
root (hd0,0)
kernel (hd0,0)/vmlinuz boot=casper iso-scan/filename=/ubuntu-8.10-desktop-i386.iso
initrd (hd0,0)/initrd.gz ramdisk_size=10240
第四章 用U盘启动U盘里面的WIN PE
1. 下载win PE(winpeboot.iso)。2. 把win PE解压到U盘根目录(注意杀毒,上面iso文件里面E:\SETUP\MYINS\MYINS.EXE文件带病毒,把它删除也可以),保证WINNT.XPE位于U盘根目录下,拷贝刚才解压出来的E:\MINIPE\WINPE.IS_到U盘根目录,拷贝刚才解压出来的E:\WXPE\SETUPLDR.BIN和NTDETECT.COM到U盘根目录下。
3. 把U盘根目录下的SETUPLDR.BIN改名为ldrxpe,为啥改名呢,因为在GRUB4DOS里面,.bin后缀名字有特殊意义,所以不能用.bin作为装载文件名。
4. 第二章里面设置了win PE启动项:
title 1. Microsoft Micro Windows XPE
find --set-root /ldrxpe 找到U盘上的ldrxpe文件,作为根启动文件
chainloader /ldrxpe 启动U盘上的ldrxpe
第五章 用U盘启动C盘里面的WIN XP或vista
1. 无须下载任何东西。2. 第二章里面设置了这些启动项:
title 2. Microsoft Windows NT/2K/XP
map (hd0) (hd1)
map (hd1) (hd0)
rootnoverify (hd0,0)
chainloader +1
title 3. Microsoft Windows Vista
map (hd0) (hd1)
map (hd1) (hd0)
rootnoverify (hd0,0)
chainloader +1
第六章 启动
把U盘插入机器的USB口,重启机器,进入机器的BIOS设置,把“从USB启动”选项加入BIOS的启动项,并且需要放在“从硬盘启动”前面,不然就从硬盘支持启动了。等待机器读到U盘,进入syslinux启动项,然后进入grub4dos启动项,最后选择相应的操作系统进行启动。