[置顶] 多系统制作说明(Linux学习)

由于需要,这两天一致在研究多系统,还是有不少东西需要积累的。
现在电脑里做了centos,ubuntu,再加上本来有的win7,就有了三个系统,说实话这三个系统是真心不好做,废话不多时,直接进入主题。
首先系统的顺序是win》sentos6.5》kali(ubuntu)。第一步在win7上做sentos双系统,1:在win7磁盘分区工具,分出来一个空白卷(可用),不能格式化。
2:通过powerISO工具把centos6.5镜像做成可启动u盘(软软碟通也可以需要选sysLinux选项)
3:接下来就是安装centos系统,图形用户界面都是傻瓜似的,不过Linux磁盘分区还是需要认真掌握的。
4:这里就仔细说说磁盘分区,首先系统都有一个引导,也就是mbr(第一个可开机设备的第一个扇区内的主引导分区块,内包含引导加载程序)。这里面需要说一下centos的引导可以识别windows系统,但是windows系统的引导是不识别Linux系统的,而且直接把原来的引导覆盖掉,这时候需要用easyBCD来主动加在引导,所以网上都建议先装windows在装Linux就是这个原因(垄断地位就是屌)。Linux磁盘挂载的时候建一个/boot系统会把引导挂载在这里,但是不建/boot,直接一个/和swap时也是会放在/boot下,可能是系统默认吧。
5:一切配置好了以后就可以把u盘拔除,重启了。重启之后会默认进入到centos的引导界面,可以选择进入centos或者others进入windows,可以在/boot/grep下的menu .list配置启动选项(默认启动等待时间等)。至此sentos应该是顺利安装完成了。
记下来安装ubuntu。ubuntu的安装刚一开始就遇到困难,安装的时候总报错,结果是u盘没刻录好,重新刻录就解决了。下面说说最主要的问题:
**引导问题:问题的原因,首先引导肯定是每个系统安装的时候都会有一个mbr引导,那么多个系统的mbr引导怎么处理呢,默认的是后安装的系统会把mbr加载到硬盘首分区的mbr块内,那么就会覆盖掉之前系统的引导,不过好在Linux系统时能检测到windows引导的所以在开机引导界面时手动选择windows系统。不过Linux之间的问题就来了,ubuntu的引导是不识别centos的(正常不应该这样不晓得为什么,可能是装机的时候没手动调),所以装了ubuntu之后centos就进不去了,这时候就得手动修改引导文件了,这也是最复杂的地方,好在在网上找到了一篇文章提供了解决办法附网址:http://www.linuxidc.com/Linux/2010-06/26443.htm 

1,先安装CentOS,再安装Ubuntu.
2,用CentOS安装盘启动,在出现启动选项的时候用linux rescue
在shell下执行

chroot /mnt/sysimage
grub-install /dev/sda 
修复CentOS的grub,然后reboot
3.进入CentOS
挂接Ubuntu的分区
mount /dev/sda6 /media
vi /media/boot/grub/grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s /boot/grub/grubenv ]; then
have_grubenv=true
load_env
fi
set default="0"
if [ ${prev_saved_entry} ]; then
saved_entry=${prev_saved_entry}
save_env saved_entry
prev_saved_entry=
save_env prev_saved_entry
fi
insmod ext2
set root=(hd0,2)
search --no-floppy --fs-uuid --set 1a2b230e-d172-4b48-8395-72a33ebce462
if loadfont /usr/share/grub/unicode.pf2 ; then
set gfxmode=640x480
insmod gfxterm
insmod vbe
if terminal_output gfxterm ; then true ; else
# For backward compatibility with versions of terminal.mod that don't
# understand terminal_output
terminal gfxterm
fi
fi
if [ ${recordfail} = 1 ]; then
set timeout=-1
else
set timeout=10
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/white
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
menuentry "Ubuntu, Linux 2.6.31-14-generic" {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
set quiet=1
insmod ext2
set root=(hd0,2)
search --no-floppy --fs-uuid --set 1a2b230e-d172-4b48-8395-72a33ebce462
linux   /boot/vmlinuz-2.6.31-14-generic root=UUID=1a2b230e-d172-4b48-8395-72a33ebce462 ro   quiet splash
initrd  /boot/initrd.img-2.6.31-14-generic
}
menuentry "Ubuntu, Linux 2.6.31-14-generic (recovery mode)" {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
insmod ext2
set root=(hd0,2)
search --no-floppy --fs-uuid --set 1a2b230e-d172-4b48-8395-72a33ebce462
linux   /boot/vmlinuz-2.6.31-14-generic root=UUID=1a2b230e-d172-4b48-8395-72a33ebce462 ro single 
initrd  /boot/initrd.img-2.6.31-14-generic
}
### END /etc/grub.d/10_linux ###   

 

www.linuxidc.com

复制下面内容并带上uuid
linux   /boot/vmlinuz-2.6.31-14-generic root=UUID=1a2b230e-d172-4b48-8395-72a33ebce462 ro   quiet splash
initrd  /boot/initrd.img-2.6.31-14-generic
编辑CentOS的grub.conf,把复制的内容加入到grub.conf中,并修改如下所示
vi /boot/grub/grub.conf
title Ubuntu 9.10
root (hd0,0)
kernel   /vmlinuz-2.6.31-14-generic root=UUID=
b2a79ba9-abbc-45dd-810d-2052cd782aea ro   quiet splash
initrd  /initrd.img-2.6.31-14-generic 

cp Ubuntu 下的vmlinuz 及initrd到CentOS的boot下面
cp /media/boot/vmlinuz-2.6.31-14-generic /boot/
cp /media/boot/initrd.img-2.6.31-14-generic /boot/

其中最后几步最重要,粉色标示的地方改成自己的uuid,hd(0,0)那里也改了,不知道不改行不行,至此重启就出现了centos的引导。

后来又先安装的ubuntu后安装的centos,centos的引导还是把ubuntu给覆盖了,后来安装网上的教程,grub -root--directory=。。。 没成功,给windows的引导也高崩溃了,这部操作应该是用指定分区来重写mbr。这步网上说的是可以通过pe系统修复引导,不过自己没有试过。

补充再说下引导的问题。bios启动默认到mbr中找引导加载程序。举例,如果把windows的引导写进mbr那么就会从windows启动,需要在windows的easybcd中添加其他系统的启动(其他系统必须有/boot分区挂载点),这时候只要windows系统在,其他系统可以随便删。mbr是由哪个系统的启动加载程序写的,那么当前就不能删,删了就会开机无法引导。

补充:ubuntu系统时能够检测到centos与windows的。但是centos检测不到ubuntu(之前测试的)

补充,easybcd的neogrub也可以安装双系统,是基于easybcd开机引导来做的,把iso文件和引导文件都复制到c盘下,然后开机之后通过easybcd引导安装,这也是当初别人给我安装双系统的方法,自己没有采用,完全可以在Linux的安装过程中通过grub配置选择。

ubuntu磁盘分区时一定要记住boot分区在哪个盘符下挂载的,之后的grub引导步骤需要配置到对应的sda 盘符上,之后再easybcd同样选择对应的盘符即可。如果有raid格式,easybcd会检测不到,不过没关系数量递减就行。







你可能感兴趣的:(Linux双系统制作)