学习笔记之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秒就自己动选择了)

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

进入单用户模式步骤:

(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

[[email protected] ~]# mkdir /mnt/boot

[[email protected] ~]# mount /dev/sdb1 /mnt/boot

[[email protected] ~]# ls /mnt/boot

lost+found

[[email protected] ~]# 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

[[email protected] ~]# ls /mnt

boot  sysroot

[[email protected] ~]# ls /mnt/boot

grub  lost+found

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

[[email protected] ~]# 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

[[email protected] ~]# cp /boot/vmlinuz-2.6.32-573.el6.x86_64 /mnt/boot/vmlinuz

###复制内核

[[email protected] ~]# cp /boot/initramfs-2.6.32-573.el6.x86_64.img /mnt/boot/initramfs.img

[[email protected] ~]# 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配置阶段,下面为创建根文件

[[email protected] ~]# mkdir /mnt/sysroot

[[email protected] ~]# ls /mnt

boot  sysroot

[[email protected] ~]# mount /dev/sdb3 /mnt/sysroot

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

[[email protected] ~]# ls /mnt/sysroot

lost+found

[[email protected] ~]# cd /mnt/sysroot

[[email protected] sysroot]# ls

lost+found

[[email protected] 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‘

[[email protected] sysroot]# ls

bin  etc   lib    lost+found  mnt   root  sys  usr

dev  home  lib64  media       proc  sbin  tmp  var

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

[[email protected] sysroot]# cp /bin/bash /mnt/sysroot/bin/

[[email protected] 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)

[[email protected] sysroot]# cp /lib64/libtinfo.so.5 /mnt/sysroot/lib64

[[email protected] sysroot]# cp /lib64/libdl.so.2 /mnt/sysroot/lib64

[[email protected] sysroot]# cp /lib64/libc.so.6 /mnt/sysroot/lib64

[[email protected] sysroot]# cp /lib64/ld-linux-x86-64.so.2 /mnt/sysroot/lib64

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

[[email protected] sysroot]# chroot /mnt/sysroot

bash-4.1#

###检测根系统

##配置根已经成功

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

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

时间: 2024-10-18 14:54:29

学习笔记之grub应用的相关文章

linux学习笔记——grub故障排除

注:本文为本人学习笔记,故只代表本人的理解,如有错误,请见谅并欢迎指正 1.grub简介 详细描述请自行搜索网络,非常多.这里只简单引用网络上的描述.grub是电脑的启动管理程序.是 计算机启动后运行的第一个程序,他是用来负责加载.传输控制到操作系统的内核,一旦把内核挂载,系统引导管理器的任务就算完成退出,系统引导的其它部份,比如系统的初始化及启动过程则完全由内核来控制完成. Linux下除了Grub,还有LILO等,windows环境还有其他相关软件. 2.grub的常见故障 a.grub.c

GRUB学习笔记(转自http://www.cnblogs.com/evilzy/archive/2008/03/30/1130173.html)

grub学习笔记1 首先要了解的几个概念 1.1 启动管理器 启动管理器是存储在磁盘开始扇区中的一段程序,例如,硬盘的MBR(Master Boot Record),在系统完成启动测试后,如果系统是从MBR启动,则BIOS(Basic Input/Output System)将控制传送给MBR.然后存储在MBR中的这段程序将运行.这段程序被称为启动管理器.它的任务就是将控制传送给操作系统,完成启动过程>有许多可用的启动管理器,包括GNU GRUB (Grand Unified Boot Load

51CTO学习笔记--Linux运维故障排查思路与系统调优技巧视频课程(高俊峰)

51CTO学习笔记--Linux运维故障排查思路与系统调优技巧视频课程 第一课 Linux运维经验分享与思路 1.一般把主机名,写到hosts下    127.0.0.1    hostname,因为很多应用要解析到本地.oracle没有这个解析可能启动不了. 2.注释掉UUID以及MAC地址,需要绑定网卡的时候,这个可能会有影响. 3.磁盘满了无法启动,  var下木有空间,无法创创建PID等文件,导致文件无法启动,按e   进入single  然后b  重启进入单用户模式. 4.ssh登陆系

LVS的持久连接和awk/sed/grep的学习笔记

一.LVS持久连接的模式 1.PPC(persistent port connection) ipvsadm -A|E 192.168.10.1:80 -p 600 定义VIP为192.168.10.1director的80端口为持久连接,也就是只把web服务加入集群服务,可以通过改变端口实现不同服务的持久连接且把不同服务加入集群服务 2.PCC(persistent client connection) ipvsadm -A|E 192.168.10.1:0 -p 600 定义VIP为192.

内核编译安装学习笔记

前提:查看本地硬件信息常用工具 查看CPU信息: #cat /proc/cpuinfo #x86info #lscpu 查看PCI: #lspci 查看USB: #lsusb 查看块设备: #lsblk 查看综合的设备详细信息: #hal-device 编译:交叉编译 cross-compiling用于在宿主机上编译,应用于别的机器上架构迥异的内核. 编译内核的步骤:(安装好开发环境:Development Tools,Server Platform Development,ncurses-de

linux基础学习笔记——操作大全

作者:liaoyi 更新时间:2014-6-2 ****************基本操作***************** 关机 shutdown -h now    root用户               init 0              root用户halt      root+一般用户poweroff 重启shutdown -r now    root用户init6     root用户reboot            root+一般用户 注意:1.shutdown 比较灵活,可

2016年7月21日学习笔记

2016年7月21日学习笔记 Linux安装以后出现的文件目录的作用: 文件系统的类型 LINUX有四种基本文件系统类型:普通文件.目录文件.连接文件和特殊文件,可用file命令来识别. 普通文件:如文本文件.C语言元代码.SHELL脚本.二进制的可执行文件等,可用cat.less.more.vi.emacs来察看内容,用mv来改名. 目录文件:包括文件名.子目录名及其指针.它是LINUX储存文件名的唯一地方,可用ls列出目录文件. 连接文件:是指向同一索引节点的那些目录条目.用ls来查看是,连

linux学习笔记二:linux文件系统

各大linux的版本都遵循着FHS(Filesystem Hierarchy Standard)文件系统目录标准,是一个树形结构的组织文件.在此简要记录各目录. linux下所有文件都处在/文件下. 树形结构图: /boot:  系统启动相关的文件 主要文件 1.vmliunx:内核    2.initramfs:磁盘映像文件   3.grub(bootloader) /dev:设备文件 块设备:随机访问设备. 字符设备:线性设备,顺序访问.按字符为单位.键盘.鼠标. 设备号:主设备号(majo

vector 学习笔记

vector 使用练习: /**************************************** * File Name: vector.cpp * Author: sky0917 * Created Time: 2014年04月27日 11:07:33 ****************************************/ #include <iostream> #include <vector> using namespace std; int main