制作步骤:
先用cfdisk 在U盘中,创建个两个分区,第二个一会儿作为boot分区。
自己修改一下menu.lst文件吧。这个简单。
****************************************************************************
以上全部推翻重写。需要懂得理论上的知识,才能做出正确的结果。
****************************************************************************
首先理解引导中U盘引导部分的过程。
1:当BISO通电引导到磁盘时,会检查MBR区域(MBR:446+DPT:64+ENDFLAG:2=512)
MBR里面必须存在引导程序,通常会是我们熟悉grub,dos,95dos引导等。否则无法引导。
这里做个简要说明:平常我们将系统安装硬盘上,通常安装都是安装windows,再安装linux,而通常当安装linux时,会提示你是否安装到MBR里面,或者安装到你的某个磁盘分区里面,通常是你的/boot的所在分区。
2:grub的制作
笔者发现win只能自动识别出U盘的第一个分区,而对于第二个分区无动于衷。
所以做了这样的分区方案。第一个分区用来存储数据,第二个分区用来放置引导信息,这样不至于在使用过程中,自己创建的grub的boot分区,被别人勿删除,或者格式化。
我的1G U盘分区如下:
执行命令
mount /dev/sdc5 /tmp/boot
grub-install --root-directory=/tmp/boot --no-floppy /dev/sdc
此处脚下留神,必须讲grub安装到/dev/sdc,否则目前对于U盘的MBR来讲,没有可以用的引导程序。
此命令执行后,会在/tmp/boot/目录,也就是/dev/sdc5,下面产生目录/boot/grub.里面有*stage*等文件。
最后在/boot/grub 目录中建立menu.lst文件。文件内容如下:
timeout 20
default 0
讲一下,如果你用U盘引导后,他会把自己标记为hd0。而已经安装在硬盘上的win操作系统认为自己的宿主硬盘是hd0,此时引导win操作系统时就会造成盘符错位。因此我们需要用map进行一下映射转换。
map 的解释及使用如下:
map TO_DRIVE FROM_DRIVE
映射 驱动器FROM_DRIVE 到TO_DRIVE.
当你链式引导向dos一样的操作系统,并且该系统没有在第一个驱动器上时,必须进行该映射。
that's Ok!
****************************************************************************
随着我的使用的愈加频繁,menu.lst上面的内容多了起来。
****************************************************************************
下面分享一下,里面的内容。首先是目录结构。
下面是menu.lst的内容。
注意:
1:成功的关键是MBR的内容。可以用dd if=/dev/sdc of=/tmp/mbr.bin bs=446 count=1 提取 出。hexdump -C /tmp/mbr.bin 查看
2:有时候MBR会有问题。用这个命令清零吧。
原文链接:http://www.52zhe.cn/read.php/22.htm
原文作者:kook(若就博客内所涉及的技术问题交流,请用下面的MSN或Gmail联系我)
原文作者联系方式:(MSN:kook#live.com) (Google talk:kookliu)
没有版权:GNU,转载时请注明“转载人”欠本人一顿饭,来日见面之时兑现!谢谢合作!
nwpulei 修改于2009-8-12