一、GRUB启动位置

GRUB是现今大多数Linux系统采用的自举程序,这里先来看一下Linux的程序顺序:

执行顺序    动作
固件Firmware(CMOS/BIOS)  POST(Pwer On Self Test)加电自检
   
自举程序Bootloader(GRUB)  → 在MBR(Master Boot Loader)读取Bootloader,载入内核
     
 载入内核  → 驱动硬件 (内核中较大部份是硬件驱动,可通过启动过程查看。)
     
 启动init进程  → init进程(PID恒为1的初始化进程,是所有进程的父进程。) 
   
读取执行配置文件/etc/inittab    

从以上启动顺可以看出,自举程序是在POST动作之后执行的。

二、GRUB配置文件

GRUB配置文件位于/etc/grub/grub.conf处,或者/etc/grub.conf(软链接):

/etc/grub.conf的配置文件内容详细说明,更详细的可点击这里

项目 说明
default 定义缺省启动的操作系统,值为0时,表示启动第一个title处的系统,依此类推。
timeout 定义缺省等待的时间,单位为秒。
splashimage grub启动界面的图片,640*480分辨率,色深为14的图片,(hd0,0)表示第1块硬盘的第1个分区。
hiddenmenu 隐藏菜单。
title 定义启动菜单项的名称。
root 定义GRUB的根目录设备即内核所在分区。
kernel 定义内核所在位置,ro表示载入的时候内核是只读,。
initrd 定义加载镜像文件。

三、单用户模式(Single User Mode)

Linux系统的单用户模式相当于Window的安全模式,其作用是当忘记ROOT密码、异常断电或者重启可能造成的数据不同步或磁盘扇区错乱等都需要要进入到单用户模式进行修复工作,单用户模式只有root用户可以登陆系统,而root用户登陆系统是不需要密码的。

如何进入单用户模式,先看一下在GRUB操作界面下的几个命令:

e:编辑当前的启动菜单项

c:进入GRUB的命令行方式

b:启动当前菜单项

d:删除当前行

esc:返回GRUB启动菜单界面,取消对当前菜单项所做的任务修改

按e键编辑当前启动菜单项,进入所选菜单项后选择kernel所在内行,再按e键可进入grub命令行,然后在kernel行的命令行末尾处加上相应在的运行级别(1或s为单用户运行级别),回车后在kernel所在行按b键即可以单用户模式启动。

四、设置GRUB密码

通过以上操作,似乎任何人只要在服务器前都可以更改root用户密码,这是极其不安全的,为了安全起见,可以为GRUB本身加上密码。

设置GRUB密码有两种方式:

1、使用GRUB自带的grub-md5-crypt命令

2、在GRUB交互命令行界面中使用md5crypt命令

注意,通过以上两种任何一种方式,并未完成对grub加密,还需要将生成的密钥更新到/etc/grub.conf文件(命令:password --md5 密钥字串,注意命令位置必须在全局环境中,即title命令行之上)。

通过上图方法修改/etc/grub.conf配置文件后,下次进入GRUB时需要键入对应的密钥才能进入。

五、操作案例

1:root密码忘记

操作步骤:

①、按照上面操作进入单用户模式;

②、在所登陆单用户模式下用“passwd root“即可以修改root密码;

2:/etc/grub.conf文件损坏

如果/etc/grub.conf文件损坏,会导致系统无法启动,这时需要进入GRUB的命令行模式,手工重新引导GRUB即可。

操作步骤:

①、进入GRUB命令行模式;

②、依次手动键入以下命令并回车(cat /etc/grub.conf命令查看配置文件)

root    指定启动分区

kernel  指定内核所在位置

initrd   指定镜像文件

3:/etc/inittab文件丢失

如果/etc/inittab文件丢失,系统将无法启动,这种故障只能通过linux安装光盘进行修复。

①、在BIOS程序内设置以光盘启动;

②、启动时按F5键进入linux的Rescure(修复、挽救)模式;

③、键入linux rescure回车进行系统修复;

④、根据提示执行相应操作步骤,然后进入命令提示符,根据提示改变根分区目录chroot /mnt/sysimage;

⑤、恢复/etc/inittab文件(通过备份恢复);

⑥、exit命令退出,系统自动重新引导,完成修复;

【Linux笔记】GRUB配置与应用,启动故障分析解决。的更多相关文章

  1. 重装ArchLinux后修改GRUB配置不生效问题的解决

    重装ArchLinux后修改GRUB配置不生效问题的解决 mount指令看一下挂载,或者vim /etc/fstab看一下有没有/boot,看看fstab是不是没写进去.... 我特喵昨天重装完Arc ...

  2. linux教程:配置Tomcat开机启动

    我们在linux下安装好tomcat之后:经常是需要配置到开机启动的: 这样的话就不需要我们每次重启linux服务器之后自己在登陆运行startup.sh文件启动tomcat了 本次的演示环境是在ce ...

  3. GRUB配置与应用,启动故障分析解决

    一.GRUB启动位置 GRUB是现今大多数Linux系统采用的自举程序,这里先来看一下Linux的程序顺序: 执行顺序    动作 固件Firmware(CMOS/BIOS) →  POST(Pwer ...

  4. Linux笔记-vim 配置

    本文是转载的,我用的ubuntu12.04在vim设置方面就是参考了本文,拿来分享给大家! ubuntu10.10中的设置方法: $cd /etc/vim $sudo cp vimrc vimrc.b ...

  5. linux centos7 tomcat8 配置成服务启动

    1. tomact 解压到/usr/local/tomcat下 2.vim /usr/local/tomcat/bin/catalina.sh 在OS specific support.前加上 (注意 ...

  6. LINUX 笔记-ubuntu 配置 jdk 环境

    在 /etc/profile 文件尾添加 JAVA_HOME=/opt/jdk1.8.0JRE_HOME=${JAVA_HOME}/jre   PATH=$PATH:$HOME/bin:$JAVA_H ...

  7. 开机启动遇到grub rescue,无法启动系统解决方法

    先使用ls命令,找到Ubuntu的安装在哪个分区: grub rescue>ls 会罗列出磁盘信息 (hd0)  (hd0,msdos9) (hd0,msdos8) (hd0,msdos7).. ...

  8. Linux(CentOS)安装配置zeromq、jzmq(解决各种问题)

    今天为Hadoop配置zeromq.jzmq遇到各种问题,先是编译出错,到编译成功后测试出错等等,下面将我遇到的问题与大家分享一下. 第一个注意点是:必须先编译安装zeromq,然后在编译jzmq,否 ...

  9. linux笔记之基础 1

    内核命名规则: R.X.Y-Z   2.6.32-642 R: 内核有重大改变时才会更改,目前为止有四个大版本更新. X:基数为开发版,偶数为稳定版. Y.Z:修复bug,实现新功能,新特性的时候更改 ...

随机推荐

  1. 20155337 《Java程序设计》实验一(Java开发环境的熟悉)实验报告

    20155337 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 一.实验内容及步骤 (一)使用JDK编译.运行简单的java程序 ·命令行下的程序开发 我在windows下 ...

  2. WPF MVVM从入门到精通8:数据验证

    原文:WPF MVVM从入门到精通8:数据验证 WPF MVVM从入门到精通1:MVVM模式简介 WPF MVVM从入门到精通2:实现一个登录窗口 WPF MVVM从入门到精通3:数据绑定 WPF M ...

  3. 优步uber司机不能绑定银行卡问题

    很多新加入的优步车主都发现现在不能绑定银行卡,不能绑定就收不到车费呀!现在优步公司给出的绑定地址是:http://ubercd.sojump.com/jq/4853671.aspx 但是提交后没有反映 ...

  4. Elasticsearch5.x版本中对Text类型进行聚合时提示illegal_argument_exception

    Having this field in my mapping "answer": { "type": "text", "fiel ...

  5. Spring学习(十一)-----Spring使用@Required注解依赖检查

    Spring学习(九)-----Spring依赖检查 bean 配置文件用于确定的特定类型(基本,集合或对象)的所有属性被设置.在大多数情况下,你只需要确保特定属性已经设置但不是所有属性.. 对于这种 ...

  6. redis sentinel介绍

    目录 配置redis主从复制 使用ping命令检查是否启动 主节点查看链接信息 开始部署sentinel 节点 部署sentinel 启动sentinel 演示下故障转移 查看当前sentinel监控 ...

  7. P/Invoke Interop Assistant工具C到C#自动转换

    C#互操作的类型基本位于System.Runtime.InteropServices命名空间下,本系列随笔主要记录本人在开发过程中使用的到一些类型函数.技巧及工具 计算类型的大小 int size = ...

  8. hadoop常见错误解决方法

    一.启动集群时 1.节点启动失败 1.1端口占用 1.1报错信息:address already in use - bind Address:50070 解决步骤: 查询端口占用:lsof -i:50 ...

  9. Javascript深入__proto__和prototype的区别和联系

    有一个一个装逼的同事,写了一段代码 function a(){} a.__proto__.__proto__.__proto__ 然后问我,下面这个玩意a.__proto__.__proto__.__ ...

  10. 【python 3.6】笨办法取出列表中的字典的value

    #python 3.6 #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'BH8ANK' x = {'RegionSet': [{' ...