硬盘安装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,剩余未分配60G为centos使用。


 

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

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

提起centos下的isolinux文件夹下的vmlinuz和initrd.img 到C:盘根目录。

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

Title install centos
Root (hd0,0)
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(此时xp的mbr已经被centos的mbr修改覆盖):

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

此时出现grub引导画面,可以选择直接进入centos还是进入Windows,Windows由grub来加载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.画面或者选择另一选项进入grub,grub加载配置菜单/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 /vm(tab补全)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个字节复制到了挂载目录中的也就是xp下C盘下新创建的文件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 /vm(tab补全)ro root=.LABEL=/   noapic
>initrd /initrd(tab补全)。img
>boot

进入centos系统。


 

下面就是手动安装grub

三个步骤:

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

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

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

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

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

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


 

执行完之后,其实我特意注意了一下,在自动安装grub到mbr的情况下,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 (hd0,8)//选择/boot那个分区
>find /grub/stage1 // 查看是否有stage1
>find  /vmlium(tab补全)
/boot不独立时(在根目录下,也就是/boot在根分区/dev/sda9目录中):
#grub
>root (hd0,8)//选择/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 /vm(tab补全)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个字节复制到了挂载目录中的也就是xp下C盘下新创建的文件linux.ini文件中。


 

推出centos

进入xp系统

在C:\boot.ini 中加入

C:\linux.ini=centos

重启。

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


 


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

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


 


转载于:https://blog.51cto.com/ranranaiwen/682815