rhel7 grub配置文件及排错linux
http://hongge.blog.51cto.com/shell
RHEL7用了grub2,而再也不是grub了网络
MBR分区的前446个字节存放的是系统引导程序grub,中间64字节是分区表,最后2个字节表示结束。那么什么是grub是怎么工做的呢?ide
简单的说,开机会经历如下几步:ui
一、BIOS自检,检查硬件;加密
二、激活MBR,MBR上不存在文件系统,能够视做硬件一部分,所以能够被直接读取命令行
三、grub加载到内存,生成一个微系统,微系统内置了精简版的文件系统3d
四、经过这个微系统,他会去引导分区,好比默认通常是sda1上去找内核文件如vmlinuz,而后再调用grub的配置文件。blog
grub的主要把他的配置文件放在了3个地方。进程
/boot/grub2/grub.cfg (/etc/grub2.cfg是/boot/grub2/grub.cfg文件的符号连接)
/etc/grub.d/
/etc/default/grub
以下所示。他们的关系是 grub.cfg里面经过 ####BEGIN ##### 这种格式按照顺序调用/etc/grub.d里面的脚本实现不一样的功能。grub.d目录里面有不少数字开头的脚本,按照从小到大的顺序执行。以00__header为例,他又会调用 /etc/default/grub 配置文件来实现最基本的开机界面配置
例如:在/etc/grub2.cfg是文件里面调用 /etc/grub.d/10_linux 来配置不一样的内核,这里面有2个 menuentry (菜单入口),因此咱们开机的时候会看见两个默认选项,一个是普通模式,一个是救援模式
这个是/etc/default/grub 文件。和其余的脚本比较起来,很是简单直观了。后面会举例如何修改
须要注意的是,最好不要直接去修改 /etc/grub2.cfg 文件。这个是由于若是后期升级内核,全部的配置都会失效。若是须要自定义这个文件,咱们能够修改对应的脚本或者 /etc/default/grub文件,而后经过 grub2-mkconfig 从新生成grub.cfg文件。
例1:修改启动的等待时间
rhel7默认启动等待时间为5秒,下面将启动时间修改成3秒(注:若是改成-1,那么每次启动时需手动确认才能够)
修改/etc/default/grub文件,以下图所示:
修改以后从新编译生成grub.cfg文件
例2:修改网卡的显示名字,这个前面作网络配置的时候提到过,这里不赘述了。
例3:加密grub
开机界面的时候若是输入e,会打开编辑窗口,咱们能够根据须要进入rescue, emergency 或者 shell 模式。如何限制访问。
在/etc/grub.d/00_header 文件末尾,添加如下内容
从新编译生成grub.cfg文件
重启以后输入e,就须要用户和密码才能进入编辑窗口了
以上设置的是明文密码,那如何设置密文口令呢?
加密密码由命令grub2-mkpasswd-pbkdf2生成
在/etc/grub.d/00_header 文件末尾,添加如下内容
cat <<EOF
set superusers=’用户名’
password_pbkdf2 用户名加密密码
EOF
以下图所示:
从新编译生成grub.cfg文件
grub2-mkconfig–o /boot/grub2/grub.cfg
重启验证
注:在文本终端模式下,安装并启用gpm后就可复制粘贴了。
在这个编辑窗口,咱们能够根据须要进入 rescue,emergency和 shell引导的3种模式。这3种模式对于系统启动排错颇有帮助,好比某个服务卡住了没法加载咱们能够经过这3种模式来排错。
rescue模式: 在commandline的配置末尾添加s ,相似rhel6以前的单用户模式
按ctrl+x启动
普通模式须要加载的服务不少,可是这个rescue模式加载的就少不少了,输入管理员密码就能够进入了。
emergency 模式和rescue模式相似,不过加载的服务更少,把s改为 emergency就好了
那么若是忘记root密码了怎么办?
方法1:
一、重启系统,按e
二、在linux16那行的最尾部加上一下信息
rd.break console=tty0
三、按ctrl+x启动
四、从新挂在文件系统
五、改变根目录
六、修改root密码
七、在根目录下建立相关文件(用于从新标记selinux环境值)
八、退出,系统将会重启
方法2:
在linux16 的最后一行删除 rhgb quiet, 而后添加 init=/bin/sh, 他会用shell替代默认的daemon进程
按ctrl+x启动
挂载文件系统为可写模式,缘由很简单,根目录加载的权限是ro,只读,从新加载成 rw的权限。
这个时候就能够修改密码了,执行passwd,按提示修改root密码
如何以前系统启用了selinux,必须运行如下命令,不然将没法正常启动系统:
建立这个文件会自动在开启的时候从新作标签即用于从新标记 SELINUX 环境值
运行命令exec /sbin/init来正常启动,或者用命令exec /sbin/reboot重启
注意:红帽考试时建议使用方法1,方法2在考试环境中以过期了。
开机排错
例1. grub故障:好比把MBR的前446个字节都覆盖了。
系统重启后则出现以下故障现象
开机的时候会自动尝试从本地,光盘和网络加载引导程序(若是光盘、网络等引导失败则会operatiing system not found);这里是从个人光盘加载的,由于本地的引导程序已经没有了.
选择troubleshooting (排错)
选择resure a red hat enterprise linux system
选择continue,注意有耐心多等一下,有的时候会卡个10秒才有反应
按照提示,切换根到本机的系统
fdisk -l 看看启动分区是哪一个,有星号的就是
重装一下 grub2 到启动分区就能够了
重启就OK了
例2:若是grub引导程序没问题,可是咱们把内核文件或者grub.cfg配置文件给删除了怎么办
重启以后,直接进入grub的救援模式,这代表引导程序木有问题,可是引导文件找不到了
和前面同样,光盘启动,切换根目录,挂载一下光盘到光盘挂载点, 顺便看看/boot目录,里面空荡荡的,内核文件和配置文件都没了
解决方法就是从新安装内核,能够用rpm 或者yum,用yum须要先卸载当前的,再安装; rpm能够强行--force覆盖安装。
装完内核以后,从新安装一次 grub2, 输入 grub2-install /dev/sda, 而后从新编译一下grub2就好了
重启系统就能够了。
重启以后,若是碰见如下问题:
问题是开机直接进入命令行模式,即便runlevel显示的是5,手动输入startx同样报错。
解决方式是从新安装图形化界面
yum grouplist
yum groupinstall 'Server with GUI'