详解grub.conf及有关实验
Grub:CentOS 5/6中的bootloader,引导操作系统的程序,根据自己的配置文件去引导内核。
grub legacy的3个阶段:
grub stage 1:存在启动硬盘的0柱面,0磁道,第一个扇区中,即MBR中,MBR的前446个字节为以引导代码,
作用只有一个,就是找到grubstage1.5,然后将其加载的到内存。
grub stage 1.5:识别常见的不同类型的文件系统,从而找到"/boot目录所在分区"对应的文件系统的驱动。
grub stage 2 :grub真正的核心程序,能让用户以菜单方式将操作系统加载、新增参数、修改选项,这些全都是stage2的功用,
前面的grub stage 1和grub stage 1.5所做的事情就是为了运行grub stage 2 ,然后由stage 2借助grub.conf再去引导系统启动。
Grub.conf文件
图示
解释:
1. grub.conf是由anaconda程序生成的,anaconda就是我们安装操作系统时候使用的安装向导。
2. (hd0,0),第一块硬盘的第一个分区(表示/boot), 表示kernel文件和initrd文件所在分区.
3. default:定义默认启动的kernel或是操作系统
timeout:进入kernel的等待时间
4. splashimage:指定我们选择kernel或操作系统菜单后面那张图片。
特点为:
1,必须是xpm的格式
2,必须用gzip压缩
3,最多使用14位的颜色位数
4 ,分辨率640*480
5.hiddenmenu:表示隐藏选择kernel或操作系统菜单,只有出现等待界面后按下enter键才会出现。
如果没有这 个字段,则每次系统启动都会出现这个选择菜单。
5.5 password:放在title外表示进入kernel或操作系统的编辑模式需要密码,而放在title内表示启动
对应的kernel或操作系统需要密码,密码可以是明文或是用MD5进行加密过的
6. title diendty :定义菜单项“标题”,可以出现多次。
7.root(hd0,0):指定这个配置列表中的kernel和initrd所在的分区,不是指”根分区”
8.kernel:说明kernel的位置,告诉内核根的位置及挂载
/vmlinuz 可以写成/boot/vmlinuz或(hd0,0)
9.initrd:指定了initramfs文件的位置,存在挂载根分区的驱动。
实验
1.设置 口令
生成口令 :grub-md5-crypt 输入密码两次 就会生成加密后的字符串例如
写法:
password --md5 对应的加密后的字符串
注意:将password写在 title内和title外的不同,上面有解释。
2.破坏/boot文件并恢复
步骤:
1.rm -rf /boot/
2.进入救援模式
3.chroot /mnt/sysimage
4.mkinitrd /boot/initramfs-`uname -r` `uname -r`
5.mkdir /mnt/cdrom;mount /dev/sr0 /mnt/cdrom
6.cp /mnt/cdrom/isolinux/vmlinuz /boot
7.grub-install /dev/sda
8.vim /boot/grub/grub.conf
default=0
timeout=5
title CentIOS 6
kernel /vmlinuz root=/dev/sda2
initrd /initramfs-2.6.32-696.e16.x86_64.img
exit;exit 选择 reboot
3.删除/boot文件及/etc/fstab文件并恢复
1.rm -rf /boot /etc/fstab
2.进入救援模式,无法挂载到/mnt/sysimage
3.fdisk -l
mkdir /mnt/tmp;mount /dev/sda2 /mnt/tmp
4.vim /mnt/tmp/etc/fstab
/dev/sda1 /boot ext4 defaults 0 0
/dev/sda2 / ext4 defaults 0 0
/dev/sda3 /app ext4 defaults 0 0
/dev/sda5 swap swap defaults 0 0
5.exit;exit 重新进入救援模式,根将会挂载到/mnt/sysimage
6.mkdir /mnt/cdrom;mount /dev/sr0 /mnt/cdrom
rpm -ivh /mnt/cdrom/Packages/kernel-XXX --root=/mnt/sysimage --force
7.chroot /mnt/sysimage
grub-install /dev/sda
8.vim /boot/grub/grub.conf
default=0
timeout=5
title CentIOS 6
kernel /vmlinuz root=/dev/sda2
initrd /initramfs-2.6.32-696.e16.x86_64.img
9.exit;exit 选择 reboot
4.编译安装内核
1.从官网下载内核(https://www.kernel.org/)
2.在linux中解压(tar -xvf linux-XXX.tar.xz),在这里小编解压到/app目录
3.cp /boot/config-XXX /app/linux-XXX/.config
4.yum groupinstall "development tools " -y
5.make menuconfig
6. make -j 4
7.make modules_install
8.make install
小编在安装过程中遇到的问题
问题1:xshell连接运行make menuconfig 出现失败,如下图
在虚拟机里可以运行
问题2:缺少的rpm包,后面加上-devel 例如:
问题3:make install(需要时间,考验耐心)
卸载编译安装的内核(步骤)
1.删除安装目录里内容(/app/linux-xxx)
2.删除/boot相关内容(内核相关,及grub.cfg里内核版本相关)
3.删除/lib/modules (内核版本相关)