| |
注意:
1:成功的关键是MBR的内容。总是提示我失败。用dd if=/dev/sda of=/tmp/mbr.bak bs=446 count=1提取 出来检查一下内容。
2:目前我看,必须要重写MBR里面的内容。而且grub必须安装在MBR里面才有效。单独安装在一个分区里面总是不成功。这个不知道是否和USB是否支持启动有关系,未确定。

有时候MBR会有问题。用这个命令清零吧。

dd if=/dev/zero of=/dev/sda bs=446 count=1



发现这个问题关键在于安装时,是否为你启动时的同一的设备盘符。
所以这个问题livecd处理的很牛啊。

以上列为思考题吧。晕死,最近在启动这里浪费了很多脑细胞。

先去cfdisk讲U盘,创建个boot分区吧。(cfdisk很好用,推荐用来分区。)

0:mkfs.ext2 /dev/sda1
1:mount /dev/sda1 /tmp/boot
2:grub-install --root-directory=/tmp/boot --no-floppy  /dev/sda(*注意*)

未确定是否需要修改device.map文件。(已经确定,没有任何关系,制作环境和应用环境无需建立对应关系。)
文件内容:(hd0) /dev/sda

自己修改一下menu.lst文件吧。这个简单。

****************************************************************************
以上全部推翻重写。需要懂得理论上的知识,才能做出正确的结果。

****************************************************************************

首先理解引导中U盘引导部分的过程。
1:当BISO通电引导到磁盘时,会检查MBR区域(MBR:446+DPT:64+ENDFLAG:2=512)
MBR里面必须存在引导程序,通常会是我们熟悉grub,dos,95dos引导等。否则无法引导。
这里做个简要说明:平常我们将系统安装硬盘上,通常安装都是安装windows,再安装linux,而通常当安装linux时,会提示你是否安装到MBR里面,或者安装到你的某个磁盘分区里面,通常是你的/boot的所在分区。

安装在MBR,或者某个磁盘分区。这2者之间存在差别。
a:当安装到MBR时,会将已经存在的Win自己在MBR的引导程序替代,变成GRUB引导。
b:当安装到某个分区时,会由存在的Win的引导程序,引导到那个分区的Grub,再有Grub引导到各个操作系统。
这就是2者的差别。win没有为其他系统考虑过,到了自己的磁盘分区之后,对于引导其它系统,没有提供可以直接引导的命令,只能进入后修改它的boot.ini文件。而grub提供命令命令菜单,可以进行手工引导。

2:grub的制作
笔者发现win只能自动识别出U盘的第一个分区,而对于第二个分区无动于衷。所以做了这样的分区方案。不至于在使用过程中,自己创建的grub的boot分区,被别人勿删除,或者格式化。

/dev/sda1  950M   fat32                                                      用于平时的数据存储
/dev/sda2  60M     ext2   (boot标识,可以引导启动,用cfdisk时,很容易修改。) 用于关键时刻的引导使用。

执行命令
mount /dev/sda5 /tmp/boot
grub-install --root-directory=/tmp/boot --no-floppy  /dev/sda
此处脚下留神,必须讲grub安装到/dev/sda,否则目前对于U盘的MBR来讲,没有可以用的引导程序。
此命令执行后,会在/tmp/boot/目录,也就是/dev/sda5,下面产生目录/boot/grub.里面有*stage*等文件。


综合上面的,忘记了,差menu.lst文件。添加以下内容。

title KOOK PRO USB

title windows xp
map (hd0) (hd1)
map (hd1) (hd0)
rootnoverify (hd1,0)
makeactive
chainloader +1

讲一下,如果你用U盘引导后,会自己讲识别为hd0,而当你引导,已经安装在硬盘上的win操作系统是,就会造成盘符错位,用map可以让这个虚拟磁盘互换。我也不知道该怎么样描述。用的时候,大家视自己的情况,进行修改吧。通常都是安装到第一个磁盘的第一个分区里面吧。

就是这样了!



****************************************************************************
随着我的使用的愈加频繁,menu.lst上面的内容多了起来。

****************************************************************************


下面分享一下,里面的内容。首先是目录结构。


root@kook:~# fdisk -l /dev/sdb

Disk /dev/sdb: 1010 MB, 1010826752 bytes
32 heads, 61 sectors/track, 1011 cylinders
Units = cylinders of 1952 * 512 = 999424 bytes

  Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         951      928145+   6  FAT16
/dev/sdb2   *         952        1011       58560   83  Linux
root@kook:~# mount /dev/sdb2 /tmp/boot/
root@kook:~# tree -d /tmp/boot
/tmp/boot
|-- boot
|   `-- grub
|-- centos4.4
|-- centos4.4-64
|-- lost+found
`-- ubuntu704

6 directories


下面是menu.lst的内容。

root@kook:~# cat /tmp/boot/boot/grub/menu.lst
color light-gray/blue
timeout         20
default         0

title           Windows 95/98/NT/2000
map             (hd0) (hd1)
map             (hd1) (hd0)
rootnoverify    (hd1,0)
makeactive
chainloader     +1

title           CentOS 4.4 x86_64 Net Install
root            (hd0,1)
kernel          /centos4.4-64/vmlinuz root=/dev/hda2 ro single
initrd          /centos4.4-64/initrd.img
boot

title           CentOS 4.4 i386 Net Install
root            (hd0,1)
kernel          /centos4.4/vmlinuz root=/dev/hda2 ro single
initrd          /centos4.4/initrd.img
boot

title           Ubuntu 7.04 AMD 64 Net Install
root            (hd0,1)
kernel          /ubuntu704/linux root=/dev/hda2 ro single
initrd          /ubuntu704/initrd.gz
boot


本文链接:http://www.52zhe.cn/read.php/22.htm
本文作者:kook(若就博客内所涉及的技术问题交流,请用下面的MSN或Gmail联系我)
联系方式:(MSN:kook#live.com) (Google talk:kookliu)
没有版权:GNU,转载时请注明“转载人”欠本人一顿饭,来日见面之时兑现!谢谢合作!
by kook | 分类: Linux | 评论(2) | 引用(0) | 阅读(13119)
simophin Email Homepage
2008/12/15 16:56
嗯,很有帮助,谢了
dkorbit
2008/04/17 09:44
情况是这样
我在学制作U盘linux redhat9 金士顿1G U盘
先用工具把 U盘格式成 usb-hdd
然后在linux下FDISK 就建立了一个ext分区,分区类型是ext2
#grub
#root    (hd1,0)
#root    (hd1)
显示的情况和网上http://hi.baidu.com/asamx/blog/item/6e87c907a17fa4c97a894752.html
一样啊,
可我启动时提示
grub error17
我的单硬盘IDE,识别是hd0,U盘/dev/sda 识别为hd1
在grub.conf也设置成hd0,因为启动时又识别为hd0啊,
我研究两天了,都没能引导,都是grub
问题可能出在哪呢?

我之前还试过先分个区给windows用,而且也发现必须分在第一个区比较好,==我在试下去pe里在重分次;
您的朋友 轨迹 为这封邮件插入了背景音乐 - 下载  播放
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]