GRUB

目录

一、grub legacy

1.功用

2.grub的命令行接口

3.手动在grub命令行接口启动系统

4.配置文件:/boot/grub/grub.conf

5.进入单用户模式

6.安装grub

练习

参考资料

GRUB(Boot Loader):GRand Unified Bootloader

            grub 0.x:grub legacy

            grub 1.x:grub2

一、grub legacy

      stage1:MBR

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

      stage2:磁盘分区(/boot/grub/)

配置文件:/boot/grub/grub.conf <-- /etc/grub.conf

stage2及内核等通常放置于一个基本磁盘分区

1.功用

      ①提供菜单、并提供交互式接口

            e:编辑模式,用于编辑菜单;

            c:命令模式,交互式接口;

      ②加载用户选择的内核或操作系统

            允许传递参数给内核

            可隐藏此菜单

      ③为菜单提供了保护机制

            为编辑菜单进行认证

            为启用内核或操作系统进行认证

如何识别设备:

                  (hd#,#)

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

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

e.g.  (hd0,0)

2.grub的命令行接口

            help:获取帮助列表

            help KEYWORD:详细帮助信息

            find (hd#,#)/PATH/TO/SOMEFILE:

            root (hd#,#)      把某个磁盘分区设定为根设备

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

                       例如:init=/path/to/init, selinux=0

initrd /PATH/TO/INITRAMFS_FILE:设定为选定的内核提供额外文件的ramdisk

boot:引导启动选定的内核

3.手动在grub命令行接口启动系统

      grub> root (hd#,#)

      grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE

      grub> initrd /initramfs-VERSION-RELEASE.img

      grub> boot

4.配置文件:/boot/grub/grub.conf

配置项:

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

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

splashimage=(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命令

5.进入单用户模式

编辑grub菜单(选定要编辑的title,而后使用e命令)

      在选定的kernel后附加

      1, s, S或single都可以

      在kernel所在行,键入“b”命令

6.安装grub

①grub-install

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

②grub

        grub> root (hd#,#)

        grub> setup (hd#)

练习

      (1)新加硬盘,提供直接单独运行bash系统

            ①对新加的硬盘进行分区操作

                  fdisk /dev/sdb

      Command (m for help): n

      p

      Partition number (1-4): 1

First cylinder (1-2610, default 1):

Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +100M

Command (m for help): n

Partition number (1-4): 2

First cylinder (15-2610, default 15):

Last cylinder, +cylinders or +size{K,M,G} (15-2610, default 2610): +1G

Command (m for help): t

Partition number (1-4): 2

Hex code (type L to list codes): 82

Changed system type of partition 2 to 82 (Linux swap / Solaris)

Command (m for help): n

Partition number (1-4): 3

First cylinder (147-2610, default 147):

Last cylinder, +cylinders or +size{K,M,G} (147-2610, default 2610): +5G

Command (m for help): w

通知内核重新读取硬盘分区表

命令:partx -a /dev/sdb

命令:cat /proc/partitions  查看内核是否已经识别新的分区

③对分区格式化

命令:mke2fs -t ext4 /dev/sdb1

命令:mke2fs -t ext4 /dev/sdb3

命令:mkswap /dev/sdb2

挂载新磁盘

命令:mkdir -p /test/boot

命令:mount /dev/sdb1 /test/boot

⑤安装grub并明确告诉根在何处

命令:grub-install  --root-directory=/test   /dev/sdb

为boot目录提供内核文件、initramfs

命令:cp /boot/vmlinuz-2.6.32-754.el6.x86_64  /test/boot/vmlinuz-test-1.0

命令:cp /boot/initramfs-2.6.32-754.el6.x86_64.img  /test/boot/initramfs-test-1.0.img

为boot目录提供grub配置文件

命令:vim /test/boot/grub/grub.conf

default=0

timeout=5

title CentOS-Test(Express)

   root(hd0,0)

   kernel /vmlinuz-test-1.0 ro root=/dev/sda3 selinux=0 init=/bin/bash

   initrd /initramfs-test-1.0.img

挂载sdb3

命令:mkdir /test/sysroot

命令:mount /dev/sdb3 /test/sysroot

命令:cd /test/sysroot

命令:mkdir -pv etc bin sbin lib lib64 dev proc sys tmp var usr home root mnt media

添加一个程序

命令:cp /bin/bash /test/sysroot/bin

命令:ldd /bin/bash

P.S. 基于动态编译的程序,还依赖于共享库文件

      ⑩根切换测试

命令:chroot /test/sysroot

      启动效果

      (2)破坏本机grub stage1,而后在救援模式下修复之

            a.破坏后不重启,修复方法1

            ①备份MBR

            命令:

grub-md5-crypt dd if=/dev/sda of=/root/mbr.bak count=1 bs=512

            ②破坏bootloader

            命令:

      dd if=/dev/zero of=/dev/sda bs=446 count=1

            ③修复

            命令:

      grub-install --root-directory=/ /dev/sda

            b.破坏后不重启,修复方法2

            命令:grub

            b.破坏后重启,修复方法

            ①破坏MBR

            dd if=/dev/zero of=/dev/sda bs=123 count=1

     

            ②重启

            ③加载系统安装光盘,进入救援模式(类似于WinPE)修复

     

            boot: linux rescue

            命令:chroot  /mnt/sysimage

            命令:grub-install  --root-directory=/ /dev/sda

命令:reboot

(3)为grub设备保护功能

            ①获取md5密码串

            命令:grub-md5-crypt

           

            ②配置/boot/grub/grub.conf

password --md5 $1$x6lH50$kuKxDqc.Qk3FNjesp9bx4/

            ③启动效果

     

参考资料:

①马哥随堂笔记

②《鸟哥的Linux私房菜-基础篇》

注:诚恳欢迎读者对本文提出批评意见,若发现存在错误,我定第一时间修改。如果读者觉得文章对您有帮助,欢迎点赞鼓励一下哟٩(๑❛ᴗ❛๑)۶。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值