硬盘安装CentOS要注意的地方以及grub方法总汇。

 

工具:grub for dos

系统:iso:centos5.6

Windows 下的 C 盘为 fat32 (因为硬盘安装 centos 要求 iso 所在的盘为 fat32 ,我把 iso 放到了 C 盘)


-------------------------------------------------------------------------------------

第一步:

以本系统为例,sata 硬盘500G

分为C为主分区(hd0,0),还有D(hd0,4)   E(hd0,5)  F(hd0,6)  G(hd0,7)四个逻辑盘,共用了440G,剩余未分配60Gcentos使用。

 

1.      先安装xp。(不解释)

2.      下载grub for dos ,提起其中文件grldr menu.lstC:盘根目录。

提起centos下的isolinux文件夹下的vmlinuzinitrd.img C:盘根目录。

3.      进入C盘打开menu.lst添加:

Title install centos

Root hd00

Kernel  /vmlinuz noapic

Initrd   /initrd.ing

 

4.      修改C:\boot.ini 属性为可读并添加:

5.      C:/grldr=”grub for dos”

6.       重启XP

7.       此时看到ntloader 引导的选择画面:

选择grub for dos

选择intstall centos

选中文-----键盘usa--------/dev/sda1(iso存放的位置,一定要是fat32格式的盘符)

安装开始了。安装到一半时候Sata安装不下去,提示可以忽略noapic我的操作都带有此参数才可以启动内核,要不然没办法进行,你可以自己根据情况开看,网上也没有明确的回答,如果也出现这种情况,可以在内核后面添加noapic acpi=off

 

--------------------------------------------------------------------------------------------------

第二步:

Centos进行到了安装gurb这一步骤,有三个方法可以安装,学会了的话基本grub原理就明白的差不多了。:

可以安装到mb

解释安装后的运行过程:

Grub装入到mbr(此时xpmbr已经被centosmbr修改覆盖):

首先开始找mbrmbr执行grub引导将(将grub安装到mbr或者处于激活状态的主分区)

此时出现grub引导画面,可以选择直接进入centos还是进入WindowsWindowsgrub来加载ntloader(通过chainloader+1)实现ntloader的引导。

具体流程:

开机-----biso自检---------加载硬盘mbr-------------硬盘mbr在活动主分区根目录寻找并且加载grub-----grub加载配置菜单/boot/grub/menu.lst配置文件-------选择进入系统 ---------

可以直接进入linux,或者选择ntloader进入xp

可以安装到超级块。

   解释安装后的运行过程:

Grub装入到超级块,也就是/boot所在的分区deb/sda9中,经过尝试你会发现他居然是直接进入ntloader,压根没有出现linux的选项。想想为什么?

 

因为Windows xp/2000/2003都是以ntloader为主引导器。而我们将grub安装到了超级块也就是并没有安装到活动目录所在的mbr中,所以自然不会覆盖了ntloader

具体流程:

开机-----biso自检---------加载硬盘mbr-------------硬盘mbr在活动主分区根目录寻找并且加载ntloader-----ntloader加载配置文件boot.ini--------选择进入系统-------可以直接进入xp.画面或者选择另一选项进入grubgrub加载配置菜单/boot/grub/menu.lst配置文件-------进入了centos

可以直接进入linux,或者选择ntloader进入xp

 

关键是怎么让ntloader出现选择菜单并可以加载grub引导程序。可以把/boot挂载的grub引导程序前512个字节导出到xp并添加到ntloader中不就可以了。

可以通过grub for dos进入命令行加载(此过程是直接读取内核,不牵涉任何的引导程式):。

>cat (hd0,9)/etc/fstab    ##查看/目录下的挂载root=LABEL等于多少

>cat (hd0,8)/grub/grb.conf

>root (hd0,8)          ## grub所安装的/boot分区

>kernel /vmtab补全)ro root=.LABEL=/   noapic

>initrd /initrd(tab补全)img

>boot

进入centos系统。

下一步是将grub引导程式装配到ntloader中。

#mount –t vfat /dev/sda1 /mnt xp下的C盘挂载到mnt目录

#dd  if=/dev/sda9   of=/mnt/linux.ini   bs=512  count=1 boot目录下的前512个字节复制到了挂载目录中的也就是xpC盘下新创建的文件linux.ini文件中。

 

推出centos

进入xp系统

C:\boot.ini 中加入

C:\linux.ini=centos

重启。

此时就已经完美的实现了上面的开机过程。

             

可以现在不让机器安装,自己安装到mbr或者超级块。

选择不安装任何引导程序。

安装完重启发现啥变化也没有,这就了嘛,因为这个系统就没有引导程序怎么会自动引导嘛。


可以通过grub for dos进入命令行加载(过程是直接读取内核,不牵涉任何的引导程式):。

>cat (hd0,9)/etc/fstab    ##查看/目录下的挂载root=LABEL等于多少

>cat (hd0,8)/grub/grb.conf

>root (hd0,8)          ## grub所安装的/boot分区

>kernel /vmtab补全)ro root=.LABEL=/   noapic

>initrd /initrd(tab补全)img

>boot

进入centos系统。

 

下面就是手动安装grub

三个步骤:

1.       安装软件包。(cenos都已经在安装的时候默认安装了,可以自己到软件管理去查一下)

其实在/boot/grub目录下只有splash.xpm.gz背景。

2.       Grub配置过程的安装。(复制了stage2,以及要自己创建的meun.lstmeun.lstgrub.conf的软连接,这一步骤的作用就是把一些文件复制到/boot/grub下,此操作会默认安装到路径/boot/grub 下,也就是说,在/boot独立的情况下,是不需要携带参数的)

语法:#grub-install  [--root-directory=DIR]  设备

/boot独立情况下(我的独立) #grub-install  /dev/sda9

/boot不独立的情况下     #grub-install  

 

执行完之后,其实我特意注意了一下,在自动安装grubmbr的情况下,grub文件有16个。而这样安装的话 ,缺少了grub.conf和它的软连接menu.lst。所以,缺少他们自然是不能运行起来gurb引导了。下面的工作就是自己创建grub.conf 和软连接menu.lst并添加内容。

#touch /boot/grub/grub.conf

#ln  -s  grub.conf  menu.lst

vim编辑menu.lst或者进入目录用记事本打开直接写入。

#vim  /boot/grub/menu.lst(下面又要区分/boot是否独立的情况了)

/boot独立时(也就是/boot/dev/sda9,根目录为/deb/sda10):

default=0

timeout=5

splashp_w_picpath=(hd0,8)/grub/splash.xpm.gz

hiddenmenu

 

title CentOS

root (hd0,8)                                 

kernel /vm(版本号)ro root=.LABEL=/   noapic

initrd /initrd(版本号).img

黑色部分等同于一下黑色部分:

Kernel  /(hd0,8)/vm(版本号)ro root=.LABEL=/   noapic

Initrd  /(hd0,8)/initrd(版本号).img

 

 

title windows XP

rootnoverify (hd0,0)  //(hd0,0)指的是C盘的超级块。

Chainloader +1

/boot不独立时(在根目录下,也就是/boot在根分区/dev/sda9目录中):

default=0

timeout=5

splashp_w_picpath=(hd0,8)/grub/splash.xpm.gz

hiddenmenu

 

title CentOS

root (hd0,8)                                

kernel  /boot/vm(版本号)ro root=.LABEL=/   noapic

initrd   /bootinitrd(版本号).img

黑色部分等同于一下黑色部分:

Kernel  /(hd0,8)/boot/vm(版本号)ro root=.LABEL=/   noapic

Initrd   /(hd0,8)/boot/initrd(版本号).img

 

 

title windows XP

rootnoverify (hd0,0)  //(hd0,0)指的是C盘的超级块。

Chainloader +1

 

 

 

3.       Grub主程式安装到mbr或者boot secor(stage1必须安装到开机区(此过程也要区分/boot是否独立)

/boot独立的时候:

#grub

>root hd08//选择/boot那个分区

>find /grub/stage1 // 查看是否有stage1

>find  /vmlium(tab补全)

/boot不独立时(在根目录下,也就是/boot在根分区/dev/sda9目录中):

#grub

>root hd08//选择/boot那个分区

>find  /boot/grub/stage1 // 查看是否有stage1

>find  /boot/vmlium(tab补全)

(以下两步为上面两种情况的共用部分)

>setup (hd0)  //安装到mbr  (此时开机就可以看到grub了)

>setup(hd0,8) //安装到了超级块中,然后也就是按照上面我们已经讲过的,重复贴出:

 

ntloader出现选择菜单并可以加载grub引导程序。可以把/boot挂载的grub引导程序前512个字节导出到xp并添加到ntloader中。

可以通过grub for dos进入命令行加载(此过程是直接读取内核,不牵涉任何的引导程式):。

>cat (hd0,9)/etc/fstab    ##查看/目录下的挂载root=LABEL=多少。(一定要看一下)

>cat (hd0,8)/grub/grb.conf

>root (hd0,8)          ## grub所安装的/boot分区

>kernel /vmtab补全)ro root=.LABEL=/   noapic

>initrd /initrd(tab补全)img

>boot

进入centos系统。

下一步是将grub引导程式装配到ntloader中。

#mount –t vfat /dev/sda1 /mnt xp下的C盘挂载到mnt目录

#dd  if=/dev/sda9   of=/mnt/linux.ini   bs=512  count=1 boot目录下的前512个字节复制到了挂载目录中的也就是xpC盘下新创建的文件linux.ini文件中。

 

推出centos

进入xp系统

C:\boot.ini 中加入

C:\linux.ini=centos

重启。

此时就已经完美的实现了上面的开机过程。

 

------------------------------------------------------------------------------------------------

此时就已经结束了所有的grub安装,肯定有细节漏了,并且有说错的地方,还望指出。共同学习。谢谢。