GRUB应用
GRUB:grand uniform bootloader:统一引导加载器,找到操作系统所在的磁盘,并把内核加载到内存,将控制器转交给内核的程序
GRUB 0.X:
GRUB 1.X:就是通常所说的GRUB2
功能:就是MBR中的前 446 个字节,是BooTLoader的一种,提供一个菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压展开,把系统控制权移交给内核,主要是由device.map,menulst,stage1,stage2,以及一系列的stage1_5组成。
device.map:存放的是内核文件的根分区
menu.lis:是grub.conf的链接文件,设置了可以选择的内核菜单,存放于stage2中
stage:用于grub引导程序过大,所以分2段引导,第一段存放在MBR中,第二段存放于内核文件系统中,第一段引导完成后可以找到第二段,但是,第二段是存放于内核文件系统中的。当stage1运行完成时还没有格式化文件系统,此时要运行stage2需要借助于stage1_5, stage1_5通常位于 stage1 字段后的 63 个扇区。由于stage2 在内存中存放可以使用的文件系统不确定,所以这就是有多个 stage1_5 的原因了。
GRUB配置文件:/boot/grub/grub.conf 链接文件到--->/etc/grub.conf
1,default=#:默认启动的菜单项,菜单项titile编号从0开始,操作系统个数,
2,配置timeout=5,默认等待用户选择的时长;
2,splashimge=(hd#,#)/path/to/xpm_pic_file 操作系统选择默认背景图片(xpm.gz格式)
3,hiddenmenu:隐藏;只能看到进度条,看不不到加载的每条内容
a可选: password [--md5] string:设置密码,菜单编辑认证;
4,title CentOS (2.6.32-358.el6.x86_64) # 标题名,用户可自定义
root (hd0,0) # 指定 grub 的根位置
# 指定 kernel 文件的位置,还要指出root(系统启动后)的位置,挂载方式 ro,这项很关键。
# 加载后会启动 init 进程。
kernel/vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/vg0-root rd_NO_LUKS rd_NO_DMLANG=en_US.UTF-8 rd_LVM_LV=vg0/swap rd_NO_MD SYSFONT=latarcyrheb-sun16crashkernel=auto rd_LVM_LV=vg0/root KEYBOARDTYPE=pc KEYTABLE=us rhgb crashkernel=auto quiet rhgb quiet
# 在内核启动过程中装载根文件系统时有用
initrd/initramfs-2.6.32-358.el6.x86_64.img
b,可选: password [--md5] string:启动选定的内核或操作系统时认证;
initramfs文件说明:initramfs-2.6.32-358.el6.x86_64.img :
initramfs 是以 gzip 压缩的 cpio 格式的文件。内核启动时将他作为一个临时的根文件系统。
grub 的 stage2 将initrd加载到内存里,然后将其中的内容释放到内存中,
内核便去执行init脚本,这时内核将控制权交给了init文件处理。
init 它也主要是加载各种存储介质相关的设备驱动程序。当所需的驱动程序加载完后,
会创建一个根设备,然后将根文件系统rootfs以只读的方式挂载。
这一步结束后,释放未使用的内存,转换到真正的根文件系统上面去,同时运行/sbin/init程序,
执行系统的1号进程。此后系统的控制权就全权交给/sbin/init进程了。
initramfs的制作:
可以使用 dircut 命令,用法如下:
只有在 initramfs文件损毁的时候会使用到
dracut /mnt/initramfs-`uname-r`.img `uname -r`
制作完成后查看命令:
du -sh/mnt/initramfs-2.6.32-358.el6.x86_64.img
du -sh /boot/initramfs-2.6.32-358.el6.x86_64.img
GRUB的功能:
1)提供菜单,并提供交互式接口
e: 进入编辑模式
2)选择要启动的内核或系统
可以通过 grub 向内核传递参数修改root 密码,使用 e 选项,让内核进入单用户模式即可通过命令修改密码。
3)为编辑功能提供保护机制。
grub-md5-crypt
Password:
Retype password:
$1$Mp7Rp1$l2wzOILNUqpUhAR7zXvQb0
# 上面是生成的加密字符串
# 然后将信息加入到 grub.conf 文件中,格式如下:
password --md5 $1$Mp7Rp1$l2wzOILNUqpUhAR7zXvQb0
# 当然加入 grub.conf 文件的位置不同,加密效果也不一样。
具体加密位置见GRUB配置文件a,b两个可选加密位置。
GRUB安装方法:
gurb-install命令安装grub
grub-install[--root-directory=/path/to/somewhere] DEVICE
mkdir /mnt/boot
mount /dev/sdb1 /mnt/boot
grub-install --root-directory=/mnt /dev/sdb
VMware 虚拟机下grub制作:
第一步:准备好块新磁盘,分2 个区
第二步:模拟启动时的boot目录,和根目录,并挂载。如下
第三步:制作 grub,并生成 grub 的配置文件
制作grub:
拷贝内核文件和initramfs 文件到 /mnt/boot 目录下,并生成 grub.conf 文件
第四步: 生成根文件系统
第五步:拷贝使用命令和库到对应根目录下
注意:文件复制完成后,修改对应/boot/grub/gurb.conf文件中root=sda2
将刚才的磁盘镜像作为另一个虚拟机的启动盘。
本文出自 “前进的轨迹” 博客,请务必保留此出处http://lisoy79.blog.51cto.com/10836537/1733269
原文地址:http://lisoy79.blog.51cto.com/10836537/1733269