千家信息网

学习笔记之grub应用

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,GRUB(Boot Loader):基本应用grub: GRand Unified Bootloader版本:grub 0.x: grub legacy传统grub版本grub 1.x: grub2以
千家信息网最后更新 2025年12月02日学习笔记之grub应用

GRUB(Boot Loader):基本应用

grub: GRand Unified Bootloader

版本:grub 0.x: grub legacy传统grub版本

grub 1.x: grub2

以centos6为例;

grub是安装在MBR中的

grub legacy:

stage1: mbr

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

stage2:存放于磁盘分区(/boot/grub/)


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

当系统启动时,如果要加载grub所在的磁盘时,会读取磁盘上的MBR,从此能加载到stage1,stage1加载以后,它会尝试去读取随后扇区的stage1_5,从而之后会读到驱动stage2的磁盘分区了。

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

grub(或stage2)功用:

(1) 提供菜单、并提供交互式接口

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

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

(2) 加载用户选择的内核或操作系统

允许传递参数给内核

可隐藏此菜单

(3) 为菜单提供了保护机制

为编辑菜单进行认证

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


grub如何识别设备:

(hd#,#)

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

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


(hd0,0)


开机时的一个交互界面,敲c可以进入grub命令行模式

grub的命令行接口中的常用命令介绍

help: 获取帮助列表

help KEYWORD: 详细帮助信息

find (hd#,#)/PATH/TO/SOMEFILE:(在磁盘)查找某文件

root (hd#,#):把哪一个磁盘分区设置为grub的根设备

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

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

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

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


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

grub> root (hd#,#)

grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE (指定内核版本和指定根所在的目录,这里必须注意root必须是你根所在的设备的分区的文件,可以通过df命令查看)

grub> initrd /initramfs-VERSION-RELEASE.img

grub> boot


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

配置项:

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

timeout=#:指定菜单项等待选项选择的时长;(如果用户选择时间超过5秒就自己动选择了)

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命令:帮我们生成对应要保护的密码串


进入单用户模式步骤:

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

(2) 移动菜单到kernel项,在选定的kernel后附加

1, s, S或single都可以;之后回车回到菜单项

(3) 在kernel所在行,键入(点击)"b命令";

系统损坏之后,在没有重启的时候可以按照下面的方法来修复

安装grub:

(1) grub-install:安装grub命令grub-install - install GRUB on your drive

grub-install [OPTION] install_device

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

系统没重启修复使用下面的:

(2) grub

grub> root (hd#,#)###此方法必须实现存在有一个grub目录

grub> setup (hd#)

创建一个磁盘,提供一个可以单独运行bash的系统

1、首先添加一块磁盘,并分区创建文件系统,这里设置为/dev/sdb1(做boot和安装grub用),/dev/sdb2(作为swap分区),/dev/sdb3(放根)。

2、安装grub

[root@localhost ~]# mkdir /mnt/boot

[root@localhost ~]# mount /dev/sdb1 /mnt/boot

[root@localhost ~]# ls /mnt/boot

lost+found

[root@localhost ~]# grub-install --root-directory=/mnt /dev/sdb

##安装grub并指明根所在目录

Probing devices to guess BIOS drives. This may take a long time.

Installation finished. No error reported.

This is the contents of the device map /mnt/boot/grub/device.map.

Check if this is correct or not. If any of the lines is incorrect,

fix it and re-run the script `grub-install'.


(fd0) /dev/fd0

(hd0) /dev/sda

(hd1) /dev/sdb

[root@localhost ~]# ls /mnt

boot sysroot

[root@localhost ~]# ls /mnt/boot

grub lost+found

###显示已经成功安装grub

[root@localhost ~]# ls /mnt/boot/grub/

device.map iso9660_stage1_5 stage1 xfs_stage1_5

e2fs_stage1_5 jfs_stage1_5 stage2

fat_stage1_5 minix_stage1_5 ufs2_stage1_5

ffs_stage1_5 reiserfs_stage1_5 vstafs_stage1_5

[root@localhost ~]# cp /boot/vmlinuz-2.6.32-573.el6.x86_64 /mnt/boot/vmlinuz

###复制内核

[root@localhost ~]# cp /boot/initramfs-2.6.32-573.el6.x86_64.img /mnt/boot/initramfs.img

[root@localhost ~]# vim /mnt/boot/grub/grub.conf

default=0

timeout=5

title Centos (express)

root (hd0,0)##此处在新建的系统中识别为第一块磁盘的第一分区

kernel /vmlinuz ro root=/dev/sda3

###此处也一样用的是sda3而非sdb3,对新系统来说它就是磁盘的第三分区

initrd /initramfs.img

#####编辑grub配置文件

##以上为grub配置阶段,下面为创建根文件


[root@localhost ~]# mkdir /mnt/sysroot

[root@localhost ~]# ls /mnt

boot sysroot

[root@localhost ~]# mount /dev/sdb3 /mnt/sysroot

#####挂载分区sdb3,将它作为根文件放的位置

[root@localhost ~]# ls /mnt/sysroot

lost+found

[root@localhost ~]# cd /mnt/sysroot

[root@localhost sysroot]# ls

lost+found

[root@localhost sysroot]# mkdir -pv etc bin sbin lib lib64 dev proc sys tmp var usr home root mnt media

##给根下创建必要的目录

mkdir: created directory `etc'

mkdir: created directory `bin'

mkdir: created directory `sbin'

mkdir: created directory `lib'

mkdir: created directory `lib64'

mkdir: created directory `dev'

mkdir: created directory `proc'

mkdir: created directory `sys'

mkdir: created directory `tmp'

mkdir: created directory `var'

mkdir: created directory `usr'

mkdir: created directory `home'

mkdir: created directory `root'

mkdir: created directory `mnt'

mkdir: created directory `media'

[root@localhost sysroot]# ls

bin etc lib lost+found mnt root sys usr

dev home lib64 media proc sbin tmp var

###此时文件中没有程序,下面我们将bash复制进来作为init来启动

[root@localhost sysroot]# cp /bin/bash /mnt/sysroot/bin/

[root@localhost sysroot]# ldd /bin/bash

linux-vdso.so.1 => (0x00007ffcb40d4000)

libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003d61800000)

libdl.so.2 => /lib64/libdl.so.2 (0x0000003d5ac00000)

libc.so.6 => /lib64/libc.so.6 (0x0000003d5b000000)

[root@localhost sysroot]# cp /lib64/libtinfo.so.5 /mnt/sysroot/lib64

[root@localhost sysroot]# cp /lib64/libdl.so.2 /mnt/sysroot/lib64

[root@localhost sysroot]# cp /lib64/libc.so.6 /mnt/sysroot/lib64

[root@localhost sysroot]# cp /lib64/ld-linux-x86-64.so.2 /mnt/sysroot/lib64

####要将bash所依赖的都复制到相应目录

[root@localhost sysroot]# chroot /mnt/sysroot

bash-4.1#

###检测根系统

##配置根已经成功

一个简单的系统就配置完成了,在之后创建一个虚拟机,将该磁盘装载上面就可以了,但在同时使用手动启动的时候,要在grub菜单项中编辑kernel选项在init前面添加selinux=0之后回车退回菜单项敲击"b命令"就可以启动了。

注:这里面没有任何命令,要使用命令则需另外复制相关文件到系统中




菜单 文件 命令 系统 内核 磁盘 所在 配置 目录 认证 接口 模式 设备 选择 操作系统 版本 面的 帮助 成功 交互式 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 国泰安数据库英语 网络安全项目验收交付说明书 软件开发企业政府补助多少 服务器搭建需要显示屏吗 初越杯网络技术大赛 四川税务app服务器异常 sql联合查询两个不同数据库 深圳办公系统软件开发收费报价表 奥的斯电梯主板服务器11332 蛋蛋网络技术 辽宁高配服务器云空间 内蒙古青年网络技术大赛 如何搭建服务器dns 数据库建表时怎么设置外码 互联网科技大佬星座 一下行为中哪些存在网络安全风险 驻场做银行软件开发外包怎样 朝阳区综合软件开发质量保障 服务器管理口ip修改 公司网络安全管理条例全文 软件开发日志记录 数据库怎样设置类型长度 加强网络安全的工作内容 通信网络安全服务能力评定通知 宣武区软件开发者名单 播放网络安全手抄报的全部 网络安全学院学什么专业 初一英语单词软件开发 甘肃5g网络技术 服务器电源如何修
0