学习笔记之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命令”就可以启动了。
注:这里面没有任何命令,要使用命令则需另外复制相关文件到系统中
学习笔记之grub应用相关推荐
- linux学习笔记——grub故障排除
注:本文为本人学习笔记,故只代表本人的理解,如有错误,请见谅并欢迎指正 1.grub简介 详细描述请自行搜索网络,非常多.这里只简单引用网络上的描述.grub是电脑的启动管理程序.是 计算机启动后运行 ...
- linux io100的原因_Linux学习笔记(九)软件包管理
Linux基础学习笔记精选专栏 目前本专栏包含的内容有: Linux学习笔记(一)使用文本编辑器Vim Linux学习笔记(二)系统基础操作 Linux学习笔记(三)文件和文本的查看 Linux学习笔 ...
- alfs学习笔记-自动化构建lfs系统
一名linux爱好者,记录构建Linux From Scratch的过程 经博客园-骏马金龙前辈介绍,开始接触学习lfs,用博客记录学习笔记,如有写的不恰当的地方,望多多指正. 笔记中只是记录一些问题 ...
- redhat6.x_linux学习笔记
ULE 学习笔记 ls -l install.log -:rw-r--r--: 1 :root: root :39410 :2012-12-03 :install.log 文件类型 : 权限位 : 硬 ...
- linux ftp日志_linux学习笔记(一)——Linux分区和目录结构
linux学习笔记(一)--Linux分区和目录结构 安装Linux时,手动挂载分区的情况下,/ 和 swap 是必须要挂载的,其他/home./boot 等可以根据需要自行挂载. 一般来说,简单的话 ...
- python的基本数据结构_Python学习笔记——基本数据结构
列表list List是python的一个内置动态数组对象,它的基本使用方式如下: shoplist = ['apple', 'mango', 'carrot', 'banana'] print 'I ...
- php怎么自己写框架,PHP学习笔记,自己动手写个MVC的框架
最新在大家自己的博客的过程中,发现各种开源的博客系统都或多或少的用起来别扭.于是想动手自己写个博客系统.既然写,就想好好写.那就先写个MVC框架.一点一点来.写的过程中有很多想法.还希望大家能够多多指 ...
- RISCV学习笔记7.8(开源虚拟机篇)--AlmaLinux虚拟机安装modelsim
上一期的教程我们安装了wine,这一期来教大家安装仿真软件modelsim哈. 1.软件下载 请参考:RISCV学习笔记6.5(软件篇)–ubuntu18.04虚拟机安装modelsim se 10. ...
- 【Linux学习笔记④】——Shell程序设计【变量 输入与输出 条件表达式 判断语句 循环语句 Shell函数】
⌛️ 文章目录 一.Shell 概述 二.Shell 脚本的定义与执行 2.1 Shell 脚本的定义 2.2 Shell 脚本的执行 三.Shell 变量 3.1 用户自定义变量 3.2 环境变量 ...
最新文章
- EMAIL发送系统(C#+基于SMTP认证) 2.0
- pandas使用pd.MultiIndex.from_product函数和pd.MultiIndex.from_tuples函数创建复合索引dataframe数据实战
- LibreOJ #113. 最大异或和
- vivado-SOC-----Memory内存测试和DDR测试(初学者SDK hello world不通的有救了~)
- DL之NN/CNN:NN算法进阶优化(本地数据集50000张训练集图片),六种不同优化算法实现手写数字图片识别逐步提高99.6%准确率
- hdu1686:KMP板子
- 8s nfs 挂载文件_把你的树莓派家庭实验室变成一个网络文件系统 | Linux 中国
- 【python】-- IO多路复用(select、poll、epoll)介绍及实现
- html css考试题选择题,html_JavaScript_css试题
- 史上最牛“老赖”,如今走下神坛:骗遍全国,牛皮终于吹破了!
- java构造器 权限_一文搞懂Java的 构造方法 和 访问权限
- java在线聊天项目1.0版 异常处理——开启多个客户端,关闭一个客户端后,在其他客户端中再发出信息会出现异常的处理...
- Ubuntu16.04 安装 VIM 代码自动补全插件 YCM
- 获取微信小程序具体链接
- Xcode8 最快最方便的安装插件方案
- 打开chm文件提示“已取消到该网页的导航”
- 最近3年股息率最高排名
- GBase 8a里通过rsync加速调度coor节点的扩容和替换效率
- 一定要让你彻底明白什么是USB子系统
- Cisco Packet Trancer中小型校园网/企业网/园区网网络设计规划/无线网络