win7与CentOS双系统安装,及后续启动项配置

来源:互联网 发布:批处理关闭445端口 编辑:程序博客网 时间:2024/05/01 12:20

1. windows7下硬盘安装centos 双系统共存

一、 磁盘分区准备:

我的系统分区有些混乱,因为创建了又删掉,盘符有点奇怪。但是没有关系, 只要是对应就好,盘符不同没有关系。

1、下载一个分区软件,推荐使用Acronis Disk Director Suite。

 

(其实win7有自带磁盘分区功能,像我系统d盘就是用win7自带的分区功能分出来的,但是win7自带的无法格式化为fat32文件格式,所以必须下载一个分区软件。)

 一路默认安装,然后运行,操作比较简单,点击左侧的创建分区(create partition),使用未分配空间(unallocated space)一直点下一步创建一个分区。

 

1)点击create partition

 

 

2)选择unallocated space

 

3)选择空闲空间,就是绿色的部分

 

4)设置一个小于32g的空间。(大概10g就可以)

 

5)选择logical。建立逻辑分区。

 

6)选择fat32.此处很重要

 

7

 

 

8)点击左侧上方的那面旗子,完成分区。

 

2、分区末尾一定要有一个未分配的空间。如果你的电脑硬盘已经全部分完,那就同样的用上述软件在已分区的空闲空间分出一个大概40g左右的盘。然后再删掉。这样就有了一个40g的未分配空间。

即此处选择free space of existing partitions。其他一样。

(这里我就没有做这一步,因为我的电脑硬盘有460g,之前分区就没分完,后面有200g的空闲分区,所以不用做这一步。)

 

做好以上两步之后,磁盘分区应该是下面这样,盘符可以不同:

1C(原有windows系统盘)  

2D(原有存放windows环境下数据的分区)  

3Efat32分区,用来存放linux系统ISO镜像文件和解压镜像后的文件,大约需要至少7G的空间,安装完双系统后可删除镜像文件和解压的文件,空出来供windows 使用)

还需40G以上的空闲硬盘空间,用来安装linux系统

 

二、 镜像文件准备

1、把linux ISO镜像放到E(之前的fat32文件格式的盘。);

2、 解压linux ISO 镜像中的imagesioslinu两个文件夹到E

3、 把Eisolinux下的vmlinuzinitrd.img复制到E盘根目录和C的根目录。

 

三、装载grub引导程序。

1、下载最新版EasyBCD_2.1.2

 

2、安装配置EasyBCD_2.1.2,一路下一步默认安装即可。

 

3、安装完成后打开  

1、单击Add New Entry ,然后单击NeoGrub,再单击Install 

 

2)、然后单击Configure,弹出menu.slt记事本,编辑此文档,添加以下内容,保存关闭

title install centos

root (hd0,0)

kernel (hd0,0)/vmlinuz

initrd (hd0,0)/initrd.img

 

红色部分可随意起名字,我安装的是centos,我就写的是install centoskernel (hd0,0)/vmlinuz 表示安装linux需要的vmlinuz文件位于(hd0,0 )(这就是第二步中我们把Eisolinux下的vmlinuzinitrd.img复制了C的根目录)。0表示第一块硬盘(通常情况下个人计算机只有一块IDE硬盘),0表示第1个磁盘分区。 

五、 重启计算机

选择NeoGrub Bootloader,会出现install centos

直接回车安装即可

硬盘安装linux,要选择系统镜像时指定好镜像所在分区就好了。

后面就是centos的安装,注意一个地方。分区:

建议:

挂载点        格式             大小

/            ext3              10240M

/home        ext3              20480M

默认         Swap              4096M(内存大小)

 

随后就是图形界面的CentOS的安装界面,一步一步安装完成后重启电脑默认是CentOS启动,没有Windows启动选项,接下来就需要配置启动项文件。

 

2.  系统启动项配置

 

CentOS系统安装完成后系统的启动项配置在 /boot/grub/grub.conf 文件中,在此目录下还有menu.lst文件,功能都是一样的,只需要编辑一个文件就可以了。

 

首先来看一下/boot/grub/menu.lst中的内容:

==========================================================

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE: You do not have a /boot partition. This means that

# all kernel and initrd paths are relative to /, eg.

# root (hd0,0)

# kernel /boot/vmlinuz-version ro root=/dev/hda1

# initrd /boot/initrd-version.img

#boot=/dev/hda

default=0

timeout=5

splashimage=(hd0,0)/boot/grub/splash.xpm.gz

hiddenmenu

title Fedora Core (2.6.18-1.2798.fc6)

root (hd0,0)

kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet

selinux=0

initrd /boot/initrd-2.6.18-1.2798.fc6.img

title Windows XP

rootnoverify (hd0,3)

chainloader +1

===========================================================

其中:

1,default=0

表示默认启动的第0号的操作系统,在GRUB中,title定义了启动的操作系统,从第1个开

始,GRUB中是0,而第2个是1,依次类推...

2,timeout=5

表示的是出现GRUB界面后,无操作情况下进入default设定的操作系统的时间,如果上下

移动选择,则该选项无效

3,splashimage=(hd0,6)/boot/grub/splah.xpm.gz

表示的是允许出现的GRUB背景的path,显然(hd0,6)指定了分区(不知能否这么解释,呵

呵),而后边的则是正常的path(在例子中,用#把它注释,为一可选项)

4,hiddenmenu

表示隐藏GRUB的启动菜单,直接进入由default庙宇的操作系统中去,为一可选项.

linux类

其格式一般为:

title (......)

root (hd[0-n],x)

kernel (......)

initrd (......)

其中:

title行,是定义一个启动操作系统,而后边可以自己随便写上喜欢的名字,呵,当然最起

码你得写得要自己能认出来,没必要把linux写成windows吧?!

root行,指定相应的linux所有的/boot,如果在写分区和挂载时没有单独挂载,那么就和

/在同一个分区中,hd[0-n]表示的是第几个硬盘,而x则表示的是[第几个分区-1],即x比

分区号小1,特别要注意.

kernel行,在这里以kernel 起始,指定Linux的内核的文件所处的绝对路径(通过在终

端输入命令:ls /boot/vmlinuz*来看内核的全名);因为内核是处在/boot目录中的,

而如果/boot是独立的一个分区,则需要把boot省略,因为 /boot所在的分区在root

(hd[0-n],x)中指定了,所以就无需要再指明内核处在哪个分区了;ro 表示只读;

root=LABEL=/ 来表示Linux的根所处的分区。LABEL=/ 这是硬盘分区格式化为相应文

件系统后所加的标签;如果您不了解什么是标签,也可以直接以/dev/hd[a-z]X 或

者/dev/sd[a-z]X来表示;就看您的Linux是根分区是在哪个分区了。比如我的是

在/dev/hda3, 那这里就可以写成root=/dev/hda3;

initrd行,如果是/boot独立一个分区,initrd 一行要把/boot中省略;如果/boot不是

处于一个分区,而是和Linux的/分区处于同一分区,不应该省略;我们通过查看/boot

中的 initrd的文件名到底是什么来写这一行代码,在终端输入:ls /boot/initrd*

很容易能得到initrd文件名,然后写入.

在了解了以上情况之后,我们就很容易地理解另一种写法了:

title (......)

kernel (hd[0-n],y)(/boot)...... ro root=......

initrd (hd[0-n],y)(/boot)......

其实只是省略的root很实在地写在了kernel和initrd行中去了而已

附:

其 实在GRUB启动菜单不能工作的时候,进入GRUB命令行(可按CTRL+C键)后,我们同样可

以一步一步地把系统启动起来,其实在menu.lst中, 除title不是指令外,其余的都是

GRUB指令,我们只要一步步地输入它们(错了要从新开始),中间输入关于kernel和

initrd要利用TAB键补齐写好,最后只要boot一下就行了.

用GRUB指令引导windows:

GRUB> rootnoverify (hd0,0)

GRUB> chainloader +1

GRUB> boot

以上内容转自: from:http://hi.baidu.com/joe266/blog/item/9fe0a1ed19e91d4878f055d4.html

附:

menu.lst有时候也叫grub.conf,但是/boot/grub/下会有一个名叫menu.lst的符号链接指向它。它是grub引导系统的配置文件。

文件基本选项:

default 0:grub的默认启动项

timeout 5: 指定一个超时值,单位为秒,若用户在grub等待的超时时间范围内没有任何操作,则启动默认项

hidemenu: 开机时是否显示多选项菜单,若被设置则启动的时候默认不显示选项菜单,否则grub启动时自动显示选项菜单

color white/blue: 指定grub菜单的默认颜色

password --md5 $1$etSG6$LlxT8irAfAv5vYQn6tZUw1: 指定一个密码,启用grub的密码保护,这个命令需要放置在title下第一行。为安全起见,一般使用md5值,这个值可以使用grub-md5-crypt或者在grub shell中使用md5crypt生成,也可以直接使用字母或者数字。当要修改加密的启动项时,需要按p键,然后输入密码。需要注意的是为了放置点击e,进入编辑模式,然后删除密码字段,再按下b启动系统,这时可以将密码设置设置在整体上,而不是放置在某一个title下,相对应的title下增加一行lock <==多了死锁的功能

产生MD5密码命令示例如

#grub-md5-crypt

Password: <==输入密码

Retype password: <==再输入一次

$1$kvlI0/$byrbNgkt/.REKPQdfg287. <==这就是产生的md5 密码!

一个启动Linux的菜单项

title Linux*:指定此菜单项的名称,既在grub列表里的名称

root (hd0,0): 指定启动分区,注意,编号从0开始:比如第一块硬盘的第一个分区应该是(hd0,0)。启动分区的编号可以使用fdisk -l查询,但是需要root权限

kernel /boot/vmlinuz-2.6.20-16-generic: 系统内核

root=UUID=3f784cd9-516f-4808-a601-b19356f6bdea ro quiet splash locale=zh_CN vga=0x318:

指定启动的内核的绝对路径和名称,后边跟参数,一般来说root参数就是你的根文件系统,一定要有的,可以像范例中使用 uuit表示,也可以直接使用/dev/sda2或者/dev/hda1这样的表示。其实有root和kernel两行就可以启动linux了

initrd /boot/initrd.img-2.6.20-16-generic: 指定系统启动访问真正的根文件系统前,访问的ramdisk映象

savedefault: 如果选择了这个启动项,那么下次启动时就用此项作为默认项. 在前面设置为default saved时有效

Linux kernel常用的参数

root:根文件系统的位置。

ro:可读写,当启动分区是JFS等格式时需要使用此参数使得系统可以在启动是存放日志。

quiet:安静模式,不显示核心检测的信息。

splash:显示徽标。

locale:指定locale

vga:指定终端的显示模式。要调整tty1 ~ tty6 终端机的分辨率呢参考下面表格(此为十进制数值):彩度/分辨率bit

640x480 800x600 1024x768 1280x1024

256 769 771 773 775 8 bit

32768 784 787 790 793 15 bit

65536 785 788 791 794 16 bit

16.8M 786 789 792 795 32 bit

b) 启动项的操作

对于多个启动项,可以选择启动项后,点击e进入编辑状态,完成后可以是点击b按键进行引导。万一/boot/grub/menu.lst 设定错误,或者是因为安装的缘故,或者是因为核心档案的缘故,导致无法顺利开机时,记得啊,可以在grub 的选单部分, 使用grub shell 的方式去查询(find) 或者是直接指定核心档案,就能够开机。

c) 救援模式:

当系统连单用户模式都无法进入时或出现GRUB命令行也不能解决的引导问题,我们就需要使用Linux救援模式来进行故障排除了。步骤如下:

1、将Linux安装光盘放入光驱,F2进入BIOS设置为光盘引导,F10保存退出,当Linux安装画面出现后,在“boot:”提示符后输入“linux rescue”回车进入救援模式。(F5键查看模式详细信息)

2、系统会检测硬件,引导光盘上的Linux环境,提示选择救援模式下使用的语言,选择英文,中文为乱码;键盘设置用默认的“us”就好;网络设置暂不用。

3、接下来系统将试图查找根分区。默认在救援模式,硬盘的根分区将挂载到光盘Linux环境的/mnt/sysimage目录下,默认选项“continue”表示挂载权限为读写; “Read-only”为只读,如果出现检测失败可以选择“skip”跳过。此处,因为要对系统进行修复,所以需要有读写权限,一般选择默认选项 “continue”。进入下一步后,系统提示执行“chroot /mnt/sysimage”命令,可以将根目录挂载到我们硬盘系统的根目录中去。

4、修改引导配置文件vim /boot/grub/grub.conf,输入grub命令可以修复引导程序

grub> root (hd0,0) 和title下的root一致

grub>setup (hd0) 真正的修复

grub>quit 退出

案例一:双系统启动修复

当我们安装双系统环境,先安装Linux再安装Windows;或者已经安装好双系统环境的Windows损坏,在重新安装Windows后,保存 GRUB的MBR(Master Boot Record,主引导记录)会被Windows系统的自举程序NTLDR所覆盖,造成Linux系统无法引导。

1、如果要恢复双系统引导,首先用上述方法进入救援模式,执行chroot命令如下:

sh-3.1# chroot /mnt/sysimage

2、将根目录切换到硬盘系统的根目录中,然后执行grub-install命令重新安装GRUB:

sh-3.1# grub-install /dev/hda

“/dev/hda”为硬盘名称,如使用SCSI硬盘或Linux安装在第二块IDE硬盘,此项设置要做相应调整。

3、然后依次执行exit命令,退出chroot模式及救援模式(执行两次exit命令):

sh-3.1# exit

sh-3.1# exit

系统重启后,将恢复GRUB引导的双系统启动。

案例二:系统配置文件丢失修复

如果/etc/inittab误删除或修改错误,Linux将无法正常启动。此时,只有通过救援模式才可以解决此类问题。

1、有备份文件的恢复办法

进入救援模式,执行chroot命令后,如果有此文件的备份(强烈建议系统中的重要数据目录,如/etc、/boot等要进行备份),直接将备份文件拷贝回去,退出重启即可。如果是配置文件修改错误,如比较典型的/boot/grub/grub.conf及/etc/passwd的文件修改错误,也可以直接修正恢复。假设有备份文件/etc/inittab.bak,则在救援模式下执行:

sh-3.1# chroot /mnt/sysimage

sh-3.1# cp /etc/inittab.bak /etc/inittab

2、没有备份文件的恢复办法

如果一些配置文件丢失或软件误删除,且无备份,可以通过重新安装软件包来恢复,首先查找到/etc/inittab属于哪一个RPM包(即便文件丢失,因为存在RPM数据库,一样可以查找到结果):

sh-3.1# chroot /mnt/sysimage

sh-3.1# rpm -qf /etc/inittab

initscripts-8.45.3-1

退出chroot模式:

sh-3.1# exit

挂载存放RPM包的安装光盘(在救援模式下,光盘通常挂载在/mnt/source目录下):

sh-3.1# mount /dev/hdc /mnt/source

Fedora系统的RPM包存放在光盘Fedora/RPMS目录下,其他Linux存放位置大同小异,这里不一一列举;另外,因为要修复的硬盘系统的根目录在/mnt/sysimage下,需要使用--root选项指定其位置。覆盖安装/etc/inittab文件所在的RPM包:

sh-3.1# rpm -ivh --replacepkgs --root /mnt/sysimage /mnt/source/Fedora/RPMS/ initscripts-8.45.3-1.i386.rpm

其中的rpm命令选项“--replacepkgs”表示覆盖安装,执行完成后,即已经恢复了此文件。如果想只提取RPM包中的/etc/inittab文件进行恢复,可以在进入救援模式后,执行命令:

sh-3.1# rpm2cpio /mnt/source/Fedora/RPMS/initscripts-8.45.3-1.i386.rpm

| cpio -idv ./etc/inittab

sh-3.1# cp etc/inittab /mnt/sysimage/etc

注意此命令执行时不能将文件直接恢复至/etc目录,只能提取到当前目录下,且恢复的文件名称所在路径要写完整的绝对路径。提取文件成功后,将其复制到根分区所在的/mnt/sysimage目录下相应位置即可。

d) inittab配置文件错误(/etc/inittab)

这个文件设定错误导致的无法开机!根据开机流程,我们知道runlevel 0~6 都会读取/etc/inittab文件, 因此你使用单用户模式也是要读取/etc/inittab 来进行开机的。这时是无法进入单人维护模式的,那就需要告诉核心不要执行init ,改使用bash,从而略过init,操作同样在开机进入grub 后,同样在grub edit 的情况下这样做:

grub edit> kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/ rhgb quiet init=/bin/bash

因为我们指定了核心呼叫的第一支程序(init) 变成/bin/bash,因此/sbin/init 就不会被执行。又根据开机流程的说明,我们知道此时虽然可以利用root 取得bash 来工作,但此时(1)除了根目录外,其它的目录都没有被挂载; (2)根目录被挂载成为只读状态。因此我们还需要进行一些动作才行!如下所示:

仅下达两个指令,『mount -o remount,rw / 』用途是将根目录重新挂载成为可写, 至于『mount -a 』则是参考/etc/fstab 的内容重新挂载档案系统!此时你又可以开机进行救援的工作了! 只是救援完毕后,你得要使用『reboot 』重新开机一次

e)如果grub.conf文件损坏,不能正常启动系统,启动时进入grub提示状态:

注意:以下grub环境可以使用Tab键补全哟!

grub>

3. 设置grub的根设备为linux内核所在分区,因为我的/boot分区安装在第一块硬盘的第一个分区,所以设置为(hd0,0),注意这里是不区分IDC硬盘与SCSI硬盘的!

grub> root (hd0,0)

4. 设置内核参数,加载内核文件,因为我是安装的独立的/boot分区,如果/boot分区是放在/分区下面,则内核文件要指定为/boot/vmlinuz-verstion!

grub>kernel /vmlinuz-2.6.18-53.el5PAE ro root=/dev/VolGroup00/LogVol00 rhgb quiet

5. 加载内核镜像文件

grub> initrd /initrd-2.6.18-53.el5PAE.img

6. 引导系统

grub>boot

7. 进入系统后,修复或者创建新的/boot/grub/grub.conf文件,确保系统下次能够正常启动;

8.如果你有光盘,还有另外一种修复方法,即进入linux rescue模式去修复grub.conf文件。

a) 光盘引导,进入linux rescue模式

boot: linux rescue

b) 根目录切换

sh-3.1#chroot /mnt/sysimage

c) 现在就可以修复或者重建grub.conf文件啦

sh-3.1# vi /boot/grub/grub.conf

 

 

 

 

原创粉丝点击