2008年11月10日星期一

用Syslinux+GRUB4DOS实现U盘的多启动WinXP+WinPE+Ubuntu+Vista

用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启动项,最后选择相应的操作系统进行启动。




在VMware上用U盘安装Ubuntu 8.10桌面版攻略











在VMware上用U盘安装Ubuntu 8.10桌面版攻略


第一步 下载所需文件

1. 下载ubuntu ISO文件:ubuntu-8.10-alternate-i386.iso (注意:必须用alternate版本,否则安装时不能自动找到这个ISO文件)


第二步 拷贝文件

1. 拷贝文件
Windows下:
    直接把ubuntu-8.10-alternate-i386.iso文件拖到U盘根目录下。
Ubuntu下:
    先把U盘加载到文件系统中:
    sudo mount /dev/sdb /media/liveusb (如果liveusb不存在,请新建一个,或用另一个目录,另外我的U盘在ubuntu下是sdb)
    再把第一步下载的文件拷贝到U盘根目录下:
    cp ubuntu-8.10-alternate-i386.iso /media/liveusb/


第三步 VMware虚拟机设置U盘启动

特别注意点:按照下面方法添加硬盘,在安装完Ubuntu之后,必须删除掉这个添加的硬盘,否则当U盘被拔出之后,虚拟机找不到启动硬盘,Ubuntu就起不来了。

如果下面添加硬件的时候选择添加CD-ROM,并且直接用ubuntu-8.10-desktop-i386.isoISO来仿真一个CD-ROM,会更容易安装。

1. 启动VMware,如下图:

2. 选择虚拟机,左键点击“编辑虚拟机设置”:
看到了没有,就一个硬盘 ,我们就要添加一个物理硬盘【其实就是U盘】  然后设置从U盘启动。

3. 选择“添加(A)”:
4. 选择“硬盘”,点击“下一步”:
5. 选择“使用物理磁盘(P) (仅供高级用户使用)”,点击“下一步”:
上图看出这台机器有三个物理硬盘,实际上是两个物理硬盘加上一个U盘。那么三个里面哪个是U盘呢,一个一个试吧,因为实际硬盘比U盘大很多,当添加完成之后,就可以看到新添加硬盘的大小,如果跟你的U盘大小相差不大,表明就对了,否则请删除掉重新添加(一般情况下U盘是最后一个)。

6. 选好“设备”,在“使用”单选框下面选择“使用整个磁盘”,点击“下一步”:
7. 选择“磁盘文件”(实际是在vmware的虚拟机保存目录下生成几个文件),可以手工修改,也可以“浏览”选择,点击“完成”:
上面可以看到新添加的硬盘,是个SCSI开头的硬盘,右边会显示磁盘信息,包括大小。

8. 点击“确定”,返回VMware主窗口,点击“启动虚拟机”(参考第1点),进入下面的界面:
注意:VMware在这个界面停留时间非常短,所以要求刚看到这个画面,立即在虚拟机窗口点击鼠标,以便让虚拟机能接收鼠标和键盘消息(就是把焦点切入虚拟机,而不是VMware主窗口)。然后立即按'F2‘键进入虚拟机的BIOS设置界面

9. 进入BIOS设置:
使用键盘左右键选择主菜单“Boot",用上下键选择”Hard Drive“,回车键打开Hard Drive,用上下键选中”VMware Virtual SCSI Hard Drive (0:0)“这一项,然后用’+‘,’-‘键把这一项挪到“VMware Virtual IDE Hard-(PM)”前面。

10. 最后的"Boot"顺序:

11. 按”F10“保存并且退出,让虚拟机重启,就可以进入U盘启动了。

第五步 Ubuntu安装


按照提示一步步安装就可以了。在其中一步选择根文件系统的磁盘的时候,需要选择上面的"VMware Viritul IDE Hard-(PM)”硬盘,而不是U盘(从磁盘大小就可以看出来)。


祝成功!