教你用grub4dos定制自己的启动U盘

教你用grub4dos定制自己的启动U盘 (2011-04-27 21:43)
分类: windows 应用开发


下面的教程教你用grub4dos定制自己的启动U盘。

1)用xp的磁盘管理工具格式化u盘。有些u盘不是usb-hdd格式的话,需要用这个工具

          HPUSBFW.RAR

      来把u盘格成usb-hdd格式。

2)下面给u盘装grub4dos。先下载下面的软件

            grub4dos.rar
            FONTS.GZ (中文菜单字体文件)

     grub4dos.rar解压后的内容是这样的,看下边截图。用红圈圈起的几个文件是我们要用到的


           grubinst_gui.exe windows下安装grub的图形界面
           grldr                     grub4dos加载器,启动的关键文件,英文版的
           menu.lst              grub4dos的引导菜单,可以用写字板打开编辑
            [chinese]文件夹 里面的grldr是中文版的,支持中文引导菜单

    双击grubinst_gui.exe,得到下面的对话框,安装1,2,3,4,5顺序即可安装grub到u盘的mbr。注意选择u盘不要选错了硬盘,看容量很容易能看出来。

          


     点击安装后,正常的话会弹出命令行提示“The MBR/BS has been successfully installed…… ”,表明安装成功。

        然后把grldr,menu.lst和fonts.gz文件复制到u盘根目录。(如果你需要中文菜单,记住要复制chinese
文件夹里的grldr文件。) 这样grub4dos的u盘引导部分就做好的,现在这个u盘可以引导电脑启动了。启动后的界面看下边截图。你会注意到菜单还是英文的,这是因为menu.lst里还没有加载中文字体。同时你看到很多启动项目,其实它们没有一个能启动,因为这个menu.lst仅仅是个样板而已。


    现在在xp里用写字板打开menu.lst文件,删掉所有的文本,把下面的文本复制进去

color black/cyan yellow/cyan

timeout 30
default 0

fontfile /fonts.gz

title 重启
savedefault --wait=2
reboot

title 关机
savedefault --wait=2
halt

    现在变成中文菜单了,但是界面很难看。(注意grub4dos的halt命令即‘关机’功能受限于各厂商的标准各异,兼容性不好,很多机器上都不能关闭电源。)

    下面稍微把引导界面美化一下,给它加个背景。先要下载一个背景图,你可以先试试这个 splash1.xpm.gz ,这是一个xpm.gz格式的背景图,你可以在网上搜索并下载类似格式的图片来做背景,或者是自己制作。把xpm.gz 文件复制到u盘根目录,并且修改menu.lst。在fontfile命令后增加一行

splashimage=/splash1.xpm.gz

这里splash1.xpm.gz是你的背景文件的名字。重新启动后,界面变成如下图所示。




如果你觉得这个界面还是不够漂亮,那么可以用gfxmenu命令定制启动界面。这是我的一个u盘的引导界面的截图。(方法自己搜吧)


3) 下面开始定制引导菜单。从最简单的开始,用这个grub4dos的启动u盘来引导dos。

    a) 首先在网上下载一个dos,我选了最经典的win98启动盘。在这里可以下载 win98启动盘 。下载后解压得到win98j.ima文件。这个文件其实是一个软盘镜像。grub4dos可以直接加载。

    b)把win98j.ima复制到u盘某处,比如/boot/文件夹里。

    c)修改menu.lst,在最后增加下列内容

title 启动DOS
map --mem /boot/win98j.ima (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

     d)重启试试吧,很容易吧。至于dos下功能的扩充,只需要把ghost,dm之类的工具复制到u盘,进入dos后就可以手动运行了。想要直接启动ghost或者dm之类工具的,请看下一步。

4)下面给引导菜单加一个ghost。ghost需要在dos环境下运行,所以我们实际上是需要做一个能直接启动ghost的dos环境。(你可以自己定制集成了ghost,dm等工具的dos环境,并且直接启动它,maxdos,矮人dos,一键ghost之类都是这样做出来的。但是没必要了,网上大把有得下载。我们只需下载一个包含这些工具的img文件,用u盘引导它们就可以了)

     下面我用刚下载的win98启动盘做了点改动,通过ultraiso集成了一个ghost并且直接启动它。不贴图了,简单讲下步骤。

    a)用ultraiso打开win98j.ima,把所有文件解压到特定目录,比如98dos

    b)把ghost.exe复制到98dos文件夹

    c)用写字板打开autoexec.bat文件,在这里增加一行(红色字体)

……
IF "%config%"=="NOCD" GOTO QUIT
IF "%config%"=="HELP" GOTO HELP
ghost
LH %ramd%:\MSCDEX.EXE /D:mscd001 /L:%CDROM%
……

       保存退出。

     d)用ultraiso新建一个软盘镜像(注意容量要足够,并且启动扇区选win98dos)

    e)把98dos文件夹的所有文件复制到ultraiso的工作区

    f)在ultraiso保存命名为dosghost.ima,这样,一个直接启动ghost的dos镜像就做好了。把它复制到u盘的boot目录

    g)现在改menu.lst,在最后增加下列命令

title 启动ghost
map --mem /boot/dosghost.ima (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

        用u盘启动电脑后,选择‘启动ghost’,再选择‘带cd-rom支持’选项,进入dos后就会自动运行ghost。(这是个非常简陋的修改,只是用来做个例子)

5)下面来个复杂点的,在u盘里增加一个winpe。^_^

      首先,你需要winpe的安装包。下载一个吧。下面以常用的老毛桃911版pe为例讲一下。网上下载的老毛桃pe安装包都会格式化u盘并且重写引导区。这些步骤上面我们都做过了。所以安装的时候,把这些步骤都跳过。我们只需要安装好后的pe程序包。(如果不能跳过的话,你可以用虚拟机装好后,把pe的程序提取出来,复制到u盘。或者直接装到u盘后,重新给你自定的工具添加引导)

    实际上提取出来的老毛桃911版winpe只包含一个文件夹,名为MINIPE。把它整个复制到u盘根目录(注意不可以改名)。其内容如下,红圈的文件是pe的启动加载器。


    然后,我们来修改menu.lst,在最后增加

title WinPE
chainloader /MINIPE/LDRXPE

    用u盘启动电脑,选择WinPE即可进入老毛桃911版WinPE。如下图。


6) 这回来启动xp的安装程序吧。实际上,启动xp的安装程序,最好的方法是量产,或者ultraiso的usb-hdd+方式。这是因为xp的安装需要在保护模式下进行,而grub4dos是在实模式下运行的。但是量产和usb-hdd+方式的局限,在于它们不可以再次定制。嵌入的iso是怎么样就是怎么样的。因为不符合我们的要求。所以要用grub4dos来引导xp的安装,只能先进dos环境,在dos下运行winnt.exe来启动xp的保护模式安装环境。

    其实我更愿意进入dos后手动输入命令来安装xp,如下:(假设xp的安装程序目录是u盘根目录下xpsp3文件夹)

          smartdrv.exe
          cd c:\xpsp3\i386
          winnt.exe

    让dos自动运行当然也没问题。在autoexec.bat把上述命令加进去就可以了。但是有一个问题需要注意。因为我们要从u盘给本地硬盘安装xp,本地硬盘应当占据c盘符。而当u盘启动后缺省已经占用了c盘符。因此我们要事先把盘符交换一下,否则xp的引导文件可能会被装到u盘上。在menu.lst增加下面的命令:(假设win98j.ima的autoexec.bat文件已经加入了自动运行xp安装程序的命令)

title 安装xp到本地硬盘
map --mem /boot/win98j.ima (fd0)
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

这样用这个选项启动后,u盘将是d盘,本地硬盘将是c盘。

7)如果你的u盘足够大,我们还可以把win7的安装程序也搞上去。下载一个win7的iso,用虚拟光驱加载或ultraiso打开,把它的内容复制到u盘根目录。(注意不能复制到单独的文件夹里,必须是u盘的根目录)这时u盘的根目录看起来很混乱,但是没办法,win7的安装引导加载器不认别的目录。(如果你想要清爽点,可以把u盘专门分一个区,然后把win7的安装程序放在这个分区下,再用grub4dos来引导它,详见我的另一贴 《WIN7安装U盘版制作过程》)

    然后我们用grub4dos来引导win7的bootmgr,这个文件是win7的引导加载器,此时位于u盘根目录下。在menu.lst增加:

title 安装 win 7 到本地硬盘
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
chainloader /bootmgr

    好了,来看看最后成果。最后的menu.lst和引导界面如下:(为了美观易认,我给每个启动项目加上了编号,并且调整了一下顺序)

color black/cyan yellow/cyan
timeout 30
default 0

fontfile /fonts.gz
splashimage=/splash1.xpm.gz

title [1] 启动DOS
map --mem /boot/win98j.ima (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

title [2] 启动ghost
map --mem /boot/dosghost.ima (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

title [3] 启动u盘WinPE
chainloader /MINIPE/LDRXPE

title [4] 安装xp到本地硬盘
map --mem /boot/win98j.ima (fd0)
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

title [5] 安装 win 7 到本地硬盘
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
chainloader /bootmgr

title [6] 重启
savedefault --wait=2
reboot

title [7] 关机
savedefault --wait=2
halt



你可能感兴趣的:(教你用grub4dos定制自己的启动U盘)