您的位置:首页 > 其它

Rhel引导及排错

2013-08-05 16:18 204 查看
Linux 开机引导过程,如下图:






1,BIOS自检,检测硬件,决定启动介质
BIOS为写入到主板上的一块闪存或EEPROM的程序,它可以在开机的时候执行,并通过BIOS程序去加载CMOS的信息,并通过CMOS内的设置取得主机的各项硬件配置(CMOS:CMOS的主要功能就是记录主板上面的重要参数,包括系统时间,CPU电压与频率,各项设备的I/O地址与IRQ等),BIOS程序也可以修改CMOS当中的参数,用BIOS设定程序的按键都不同,一般常见的使用Del按键进入BIOS设置界面
2,从硬盘启动,读硬盘的第一个扇区MBR,然后将启动引导工作交给boot loader
MBR引导记录位于物理硬盘的第一块扇区的一段引导代码(第一块扇区512个字节,其中MBR占446字节,分区表占64字节,结束标志占2字节),该扇区又称为主引导扇区(MBR扇区)
3,boot loader去找 grub,grub读取配置文件grub.conf,决定默认启动项,找到内核(kernel)和驱动(initrd)

@1. Boot loader:它的主要功能是认识操作系统的文件格式并加载内核到内存中去执行,由于不同的操作系统的文件格式不一致,因此每种操作系统都有自己的bootloader,bootloader分为两个阶: 1、stage1: 执行boot loader加载文件系统驱动 2、stage2:加载真正的配置文件: grub.conf @2. grub.conf里面有内核和驱动的信息4,内核会主动调用init进程,读取配置文件 /etc/inittab,决定启动级别,运行初始化脚本/etc/rc.d/rc.sysinit,运行相应的启动级别下的脚本 /etc/rc.d/rcN.d/

5.依据/etc/inittab 执行/etc/rc.d/rc0~6.d
6, 加载X Window界面,等待用户输入用户名和密码

Grub.conf

[root@justin ~]# vim /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda2
#          initrd /initrd-version.img
#boot=/dev/sda
default=0 ;默认选择第一个title,title是系统的分隔符,第一个title后面就是第一个系统,用0表示。
timeout=5 ;默认在启动选择界面停留的时间,单位是秒。等待5秒自动进入默认操作系统
splashimage=(hd0,0)/grub/splash.xpm.gz ;splashimage是grub启动背景画面,这个可以不要
hiddenmenu ;是隐藏菜单只有按上下键才会出现
title Red Hat Enterprise Linux Server (2.6.18-308.el5) ;title后面就是系统在启动时候显示的名字
root (hd0,0) ;root 分指定你的内核所在的分区。hd0表示第一块硬盘设备。  0表示第一个分区  也是/boot所在的分区
kernel /vmlinuz-2.6.18-308.el5 ro root=LABEL=/ rhgb quiet ;kernel 内核所在位置和名字,ro 只读;root=LABEL=/ 根分区是谁;rhgb---redhat graphics boot(图形化显示启动过程) ;quiet (静默式启动,不显示dmesg信息),类似硬件自检的消息不回显示
initrd /initrd-2.6.18-308.el5.img
~
#如果有多个系统的话,会有多个title 。
timeout=10 #等待10秒自动进入默认操作系统
splashimage=(hd0,0)/grub/splash.xpm.gz #grub启动背景画面
default=0 #默认进入第一个标题
title Red Hat Linux (2.4.20-18) #Red Hat Linux标题
root (hd0,0) #根文件系统位置
kernel /vmlinuz-2.4.20-18 ro root=LABEL=/ #核心位置与核心加载参数
initrd /initrd-2.4.20-18.img #启动initrd ram盘
title windows #另一个操作系统的标题
rootnoverify (hd0,1) #操作系统存放在hd0,1上,不要在grub里mount
chainloader +1 #从hd0,1的第一个扇面启动
MBR 是Linux引导的第一个阶段(程序);GRUB是引导的第二阶段(配置文件)这两个阶段容易出现问题
GRUB.conf文件丢失修复:
#title后三行丢失
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-308.el5)
#       root (hd0,0)
#       kernel /vmlinuz-2.6.18-308.el5 ro root=LABEL=/1 rhgb quiet
#       initrd /initrd-2.6.18-308.el5.img
因为注释掉了grub.conf 文件后三项,GRUB找不到启动文件了


第一步:运行root (hd0,0)(这是/boot所在的分区,hd0第一块硬盘,0第一个分区)
第二步:执行kernel /vmlinuz-2.6.18-53.el5 ro root=LABEL=/ rhgb quiet (用来指定linux内核,root指定根的真正位置,一般用于RHEL6.x版本上面,5.x版本不需要指定根的路径)
[b]第三步:执行initrd /initrd-2.6.18-53.el5.img(用来指定initrd文件)[/b]
[b][b]第四步:执行boot[/b][/b]
[b][b][b]注意:运行root或者find /vmlinuz-2.6.18-53el5(可以使用TAB补全),可以搜索vmlinuz所在分区,也就是/boot所在分区[/b][/b][/b]
[b][b][b]

[/b][/b][/b]
看见红色的REDHAT就证明内核加载成功了
进入系统后需要把启动文件写入grub.conf文件,否则下次重新启动还是无法停留以上界面无法进入系统
Linux rescue
插入光盘---输入"linux rescue"或者按"F5"后输入“Linux rescue”---回车--“OK”--"OK"--"NO(修复模式下不需要网络)"---"continue"---"OK"



sh-3.2#chroot /mnt/sysimage     ;chroot切换到硬盘的系统
sh-3.2#vim /boot/grub/grub.conf  ;可以直接通过vim编辑grub.conf文件添加上启动文件


如果/boot目录下文件全部丢失可以通过如下完成



sh-3.2#cd Server/
安装kernel,在安装内核时会自动生成initrd










安装好的GRUB是没有配置文件的,可以自己写一个

sh-3.2#cd /boot/grub/
sh-3.2#touch grub.conf
sh-3.2#vim grub.conf  ;写入启动文件
用exit退出,连续两次



/etc/inittab文件丢失(bash损坏无法进入登录界面修复方法类似
丢失提示信息:



sh-3.2#  rpm -qf /etc/inittab #查看RHEL5.x版本的inittab文件是由那个软件包安装的



sh-3.2# exit
sh-3.2# exit
启用grub编辑保护,修改root的密码



修改密码




倒计时时按字母“e”



上图中再按“e”



选择kernel行后再按字母“e”



在上图中最后输入1或者s或者S或者single回车后都可以进入单用户模式,single 前有一个空格



上图中再按“b”



需要输入刚才设置的grub密码后进入单用户模式修改用户密码




修改密码后重启
这里有个问题,设置了grub密码后每次重启也需要输入grub密码,这样远程重启就不方便了


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: