GRUB的应用

GRUBlinux

GRUB(GRand Unified Bootloader)bootloader的一种,它的主要功能是选择要启动的内核。bash

 当咱们开机时,这个GRUB菜单是隐藏的,ide

wKioL1XpSY-y-st1AADC-xInJho206.jpg

在这个画面时,咱们敲任意键,就能够显示出GRUB菜单,而后能够编辑加密

wKiom1XpR4mROuKMAAFdtBnrHjU824.jpg

摁‘e’键能够进入二级目录spa

wKiom1XpSHzyCzCBAAG8OAE10XA805.jpg

这里显示了,kernel这一行显示了要加载的内核版本,initrd显示给内核提供的辅助驱动,来加载逻辑卷等。操作系统

把光标调到kernel这一行,再次摁‘e’键,能够在里面添加参数,输入完后,摁回车表示确认,而后在kernel这一行摁‘b’键就能够启动了
命令行

例如:咱们以1级别启动,来从新设置root的登陆密码3d

在kernel里添加一个参数1,s或S,single,就能够直接登陆了orm

在这里面添加1blog

wKiom1XpSr7x2Hq1AAE5c0kOpeU694.jpg

wKioL1XpTQTCUn8eAALbmDpOp2w150.jpg

这没须要输入用户名和密码,就直接进入root用户了,而后就能够修改密码了,而后输入init3就能够切入正常模式了,在这个过程当中,会启动3级别须要的服务

wKiom1XpS4jBOi-RAAFWnZYJHy8405.jpg


下面咱们介绍下grub的组成:

    grub有两个版本

        grub 0.x:gryb legacy(传统grub)

        grub 1.x:grub2 

grub legacy:(CentOS5,6)

  一、GRUB程序的组成

    wKioL1XpUGrAON2DAALaoQls9gg503.jpg

主要是由device.map,menulst,stage1,stage2,以及一系列的stage1_5组成。

    

    device.map:存放的是内核文件的根分区

     stage1: 放在mbr中

    stage1_5:存放在mbr以后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统;

    stage2:放在磁盘分区(/boot/grub/)中,做用是提供菜单并提供交互式接口(e编辑菜单,c命令模式),加载用户选择的内核或操做系统,为菜单提供保护机制等

    grub.conf:配置文件 还有一个连接文件是/etc/grub.conf

     在grub菜单中,摁‘c’键,能够进入交互式接口,指定一些参数,可直接启动

wKiom1XpUsDAEJviAACzVOBmpU8298.jpg

    而后回车就能够启动了

 grub如何识别设备:

    (hd#,#)

    hd#: 磁盘编号,用数字表示;从0开始编号

     #: 分区编号,用数字表示; 从0开始编号

        (hd0,0)表示第一个磁盘的第一个分区

  grub的命令行接口

    help: 获取帮助列表

    help KEYWORD(命令): 某个命令的详细帮助信息

    find (hd#,#)/PATH/TO/SOMEFILE:肯定某文件是否存在

    root (hd#,#)  用来设定grub的根只能指向一个设备;这个根不是文件系统的根

    kernel /PATH/TO/KERNEL_FILE: 设定本次启动时用到的内核文件;额外还能够添加许多内核支持使用的cmdline参数;

        例如:init=/path/to/init, selinux=0(表示禁用内核中的selinux功能)

    initrd /PATH/TO/INITRAMFS_FILE: 设定为选定的内核提供额外文件的ramdisk;要与内核版本号彻底匹配

    boot: 引导启动选定的内核;

  wKioL1XpWsCQ7bO4AAN8RtF1nQA411.jpg

 直接在命令行输入比较麻烦,就能够下写到配置文件中, 

 配置文件:/boot/grub/grub.conf  还有一个连接文件是/etc/grub.conf

    配置项:

    default=#: 设定默认启动的菜单项;菜单项(title)编号从0开始;

    timeout=#:指定菜单项等待选项选择的时长;

    splashp_w_picpath=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径;

    hiddenmenu:隐藏菜单;

    password [--md5] STRING: 菜单编辑认证;

    title TITLE:定义菜单项“标题”, 可出现屡次;

        root (hd#,#):grub查找stage2及kernel文件所在设备分区;为grub的“根”; 

        kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核

        initrd /PATH/TO/INITRAMFS_FILE: 内核匹配的ramfs文件;

        password [--md5] STRING: 启动选定的内核或操做系统时进行认证;

    生成密码串,使用grub-md5-crypt命令

wKioL1XpX_nBCRcKAACedyJBHbE877.jpg

  为grub菜单或者内核进行认证

    修改配置文件为下图,


wKiom1XpXeHwCsM_AAQgC3szf1w422.jpg而后保存退出,而后重启

为了演示效果,咱们在全局加了一个password选项,有添加一个title在里面添加一个password选项

而后咱们进入grub菜单,这个时候就有两个选项了,这个时候摁‘e’键没用,使用‘p’键,输入密码,才能使用‘e’键,要么选定一项直接使用回车启动,可是若是在title里加入了password是对内核加密,须要先输入密码才能启动

wKiom1XpXsCzgnmLAAEMhKeD30E311.jpg

使用‘p’键,输入密码以后才能使用grub菜单项

wKiom1XpYD2D5mZwAADhkA0AUsI862.jpg

这个时候能够对这两个选项进行修改了,第一个title没有添加password选项,回车选定以后能够直接启动,若是选择第二个,回车以后会提示让输入密码,才能启动

wKiom1XpZV3xmFciAAB2Oq9YVwI890.jpg

wKioL1XpZ4KR2IHXAABBjKyjbRk788.jpg

 修复安装grub

    (1) grub-install 这个命令安装grup

        grub-install --root-directory=ROOT /dev/DISK

    (2) grub 进入命令行模式,这种方式根文件系统要提早存在,并且要有grub目录,里面的文件是齐全的

        grub> root (hd#,#)

        grub> setup (hd#)

在虚拟机中添加一块新硬盘,而后把grup装进入,而后使用者新硬盘建一个新的虚拟机,而后启动

    首先添加一块新硬盘,而后分区,格式化文件系统等(若有不会的,能够查看之前的博客)

    而后在/mnt下建立一个boot目录,而后把新硬盘的第一个分区,挂载到刚建立的目录

   wKiom1Xpa6zRS-EeAACRJD34dHo474.jpg

   而后安装grup,

    wKioL1XpbpGy3gtfAAGDT8hfQNk628.jpg

    这就安装好了,而后验证下

    wKiom1XpbLnRqAdPAAEBPeZn4Ts637.jpg可是没有配置文件,因此要本身写一个,也没有内核和initrd,因此须要复制本机的内核和initrd到新硬盘下

    

wKioL1XpcH6jXmFAAAFuLJ1inh0330.jpg

而后编辑配置文件内容以下

wKiom1Xpblniefv_AACO8PXZkPs519.jpg

可是,咱们把根文件系统指向了/dev/sdb3,可是里面没有文件包,因此咱们要把根文件系统里的文件在/dev/sdb3中建立

wKioL1XpcY6i3dsTAAJFMH_vsXU823.jpg

这里面并无文件,咱们复制一个bash到新硬盘下,而且要把依赖到的文件也复制过去,等下开机时,能够直接启动bash

wKioL1Xpc3ODRi7iAAK0nmskV1U607.jpg

而后还要系统系统的init程序,若是不指定,就会自动启动/sbin/init由于咱们这个硬盘里没有,会出错的

wKiom1XpclGSQ2WsAAC1tRmlfX4123.jpg

你须要肯定你刚在配置的那个硬盘的路径

而后使用vm建立一个新虚拟机,其余都同样,而后在选择磁盘的时候,选择使用现有的

wKiom1Xpc1vx8HMJAADr7t2DLpo832.jpg

而后建立完成,启动就能够查看了

而后直接启动,出现grub菜单,而后使用‘e’键,而后在kernel这一行,加入参数selinux=0,这个参数要加在init前面,而后回车回到kernel这一行,而后摁‘b’启动就能够了

wKiom1XpdYjwfDZMAAJlAsccea0516.jpg

这就成功了

 

  把本身系统的mbr弄坏,而后使用光盘的grup进行引导修复

    wKioL1XpePXAKpaVAAFU-vKhQYQ644.jpg

这就把grub的第一阶段给弄坏了,

若是这个时候你的系统是开机状态,直接使用命令grub-install --root-directory=/ /dev/sda就能够直接修复了,

wKiom1Xpd7GwRxkpAAE_-OJtRq0753.jpg

而后sync同步之后,在重启就没有问题了,

也可使用grup而后回车进入命令行模式进行修复

wKioL1XpexKxs4iuAALo3-r0-gs266.jpg

若是你的系统是关机,再启动就不行了,只能使用紧急救援模式进行修复

再把mbr弄坏,而后使用救援模式进行修复

弄坏以后进行重启,而后把光盘镜像挂载上,而后重启

wKioL1XpfVnRyuvNAAOPyrMYwaY379.jpg

而后选择第三项,即Rescue installed system 而后回车

或者摁‘ESC’输入linux rescus回车就能够了

而后根据提示作就好了

wKiom1XpfMiR8deUAAE4gcQArcA931.jpg

而后切换到根下,使用chroot /mnt/sysp_w_picpath/ 切到实际的根上,而后执行grub-install就好了

wKioL1Xpf6vREYtmAAF-u-7JXXo389.jpg

而后exit回到救援模式的bash下重启就好了(光盘卸掉)

相关文章
相关标签/搜索