这两天被启动的东西给弄晕了,现在回过神来写一段备用。

一、启动冲突
造成启动冲突的原因往往只有一个,MBR覆盖。比如先装的XP再装的Linux,Linux就会把XP安装时写入MBR的数据给覆盖掉,如果先装Ubuntu再装Fedora,Fedora的GRUB会安装到MBR上覆盖了Ubuntu的GRUB。这些情况都可能会造成某些操作系统不能启动。

幸好Linux在这方面还算人性化,它在覆盖XP在MBR中的数据之后,会自动搜索可启动的Windows分区,并且把XP的启动信息写到自己GRUB的menu.lst中,这样在装完Linux后能在启动菜单上看见原先的 Windows启动项(通常在最后一项)。
而有时候不小心会把Windows弄坏,需要重装Windows,等你Windows重新装好了,Linux也就启动不了了,因为Windows把MBR又给更新了。Windows和Linux抢MBR的矛盾一直如此激化……

那么如何防止两个系统吵架呢?两种方法。

第一种就是事后修复。用任何一张可以引导到grub的启动盘(比如,可以是你的LiveCD),进入grub。如果先进入的是终端,那么以超级用户模式在终端中输入

grub

即可进入终端,然后进行grub修复安装过程,如果你知道你的磁盘序号X(一般为0)和Linux分区序号(Partition Number)Y(从0开始数),那么可以运行:

root (hdX,Y)
setup (hd0)

后面一句的hd0表示把grub写到MBR上。

也可以简单地一句话:

setup (hd0) (hdX,Y)

成功了的话会返回successful

如果不知道或者忘记了Linux的分区序号(磁盘序号你应该知道吧,要是不确定就填0),先键入

root (hdX,

然后按TAB键,将会出现自动补全信息,此时你应该就知道Linux分区所在的序号了吧。

输入完毕后仍旧再进行setup操作。这样重启后GRUB就修复了。

第二种方法就是在重装XP前,先把Linux写在MBR里的信息给保存出来,保存成一个文件,通常这个文件的大小必须是512字节。运行这个命令:

sudo dd if=/dev/sda of=~/linux bs=512 count=1

(如果是SCSI硬盘则为sda,IDE硬盘为hda。of=后面的路径为输出路径,路径和文件名可以任意。)

就可以把MBR中的前512字节的信息保存到用户文件夹下名为linux的文件中。

然后重装XP,把这个linux文件放到Winodws分区中,为了便于管理,我们习惯上将其放入C盘根目录下。

接着修改XP的boot.ini,在最后一行添加如下语句:

c:\linux="Ubuntu Linux Operation System"

并修改启动菜单读秒的长度。

重启之后想办法进入DOS重写分区表:

fdisk /mbr

再次重启就可以看到,XP的启动管理器中出现了双启动菜单,而选择"Ubuntu Linux Operation System"就和以前进入MBR的时候一样了。这种方法的原理也很清晰,将MBR头512字节(包含启动信息的头512字节啊~~)保存成文件,让Windows系统来调用这个文件并且处理启动。

以后重装Windows,只要实现把那个长度为512字节的“linux”文件转移到别处,装完后移回来,修改boot.ini就可以了。
Linux不同发行版之间也需要协调才能和平共处,装了Ubuntu,还想装个Fedora,于是在硬盘上独立分区安装。结果装好后Ubuntu进不去了。想到肯定是Fedora也霸道地把自己的启动信息写到MBR中去而覆盖了Ubuntu的信息了。

于是想到修改menu.lst,因为menu.lst可以显示处理启动菜单。把Ubuntu分区挂载之后,找到Ubuntu下的menu.lst,把和它有关的启动语句给复制到Fedora的menu.lst中,重启电脑,可以了。

二、关于menu.lst

menu.lst用于管理启动菜单项。包括是否隐藏启动菜单、启动菜单倒计时、启动项显示等选项。一般的操作顾名思义就可以看懂是什么意思。

值得一提的是Linux的启动都是通过这两个文件的引导:kernel的vmlinuz-XXXXX和initrd的initrd.img。也就是说需要引导一个操作系统的话,在grub的menu中告知这两个文件所在的分区,加入这两个文件的路径就可以启动了。

比如:

title Ubuntu
root root(hd0,0)
kernerl /boor/vmlinuz-2.6.22-14-generic root=UUID=XXXXXX ro quiet splash locale=zh_CN
initrd /boot/initrd.img-2.6.22-14-generic

三、启动时候的挂载

老是手动挂一个分区太麻烦了,于是想到用fstab来自动挂载

fstab的每一个非注释行都挂了一个分区到对应路径下,其参数分别为:挂载的设备 挂载点 文件格式 挂载模式(此后的一大段我不甚了解)

“挂载的设备”中,我试过/dev/sda1这种的格式,发现不好使;再看看用UUID,先手动挂载需要的盘,在终端键入

ls -l /dev/disks/by-uuid

显示每个分区的uuid,一串乱七八糟的数字,在fstab中写下:

UUID=xxxxxxxxxxxxxx /media/sda8 vfat user,noauto,utf8,umask=000,gid=46 0 0

搞定。

如果您喜欢本站的内容,欢迎订阅我的RSS以获取本站最新资讯。

RSS地址1:http://feed.casparant.com/

RSS地址2:http://feeds.casparant.com/casparant

标签:

Related Posts

---------- COPYRIGHT (C) CasparAnt.COM 2008 ----------

    本站所有文章均遵循“创作共用条款(CC)3.0版本”, 允许转载演绎本站文章,仅需遵循以下原则:保留文章出处(URL及站名Caspar Ant), 并且给我一个 引用通告(trackback)。如果您觉得本站的文章很好,欢迎选择下面的网络书签收藏本文; 如果您觉得本站值得浏览,欢迎点击侧边栏进行订阅;欢迎您对文章发表评论,您的留言是对我最好的鼓励!
    This entry is under CREATIVE COMMON ATTRIBUTION 3.0 LICENSE. Please remain "Caspar Ant" and the URL stay in your site when you share or remix this entry. It's necessary to give me a trackback from your own site. If you think this entry is good enough, welcome to put it to your own web bookmark. You can select from the bookmark sites at follows:

Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网

3 Responses to “Linux启动时的一些闲言碎语”

Leave a Reply


Powered by Wordpress © 2008 - Caspar Ant | iKon Theme by TextNData | Admin | | 本站正在备案中