系统启动流程(三)
来源:互联网 发布:mac默认英文字体 编辑:程序博客网 时间:2024/05/19 17:04
一、GRUB简介
GNU GRUB 和GRUB是GRand Unified Bootloader的缩写,它是一个多重操作系统启动管理器。
二、grub的配置文件
/etc/grub.conf-->/boot/grub/grub.conf
(1)文件内容
default=#:设定默认启动的菜单项;落单项(title)编号从0开始timeout =#:指定菜单项等待选项选择的时间;splashimage=(hd#,#)/PATH/XPM_FILE:菜单背景图片文件路径;password [--md5] STRING进入grub启动菜单编辑认证;使用命令grub-md5-crypt生成加密口令hiddenmenu:隐藏菜单;title TITLE:定义菜单项“标题”;root(hd#,#):查找stage2及kernel文件所在设备分区,为grub的根(这个可以不用写,系统会自动识别);kernel /path/to/vmlinuz_file :启动的内核;还可以添加许多内核支持使用的cmdlinue参数; rhgb:不加载图形 quite:静默输出内核启动过程 查看内核参数:cat /proc/cmdline
initrd /path/to/initramfs_file:内核匹配的ramfs文件;
password [–md5|–encrypted]STRING:启动选定的内核或操作系统时进行认证;
注意:同一版本的内核和光盘中的内核是相同的。如果kernel损坏或误删,可以复制过来使用 。
三、grub的安装
如果正常安装系统,grub目录下的文件中stage1,stage1.5,stage2这些结尾的文件起到备份作用,如果在使用命令修复grub目录,则起不到备份作用。
a、判断新安装系统中grub目录下stage*的文件是否起到备份作用
(1)切换至grub目录下
[root@localhost/app]#cd /boot/grub/
(2) 复制该目录下所有文件到/app目录下
[root@localhost/boot/grub]#mv * /app/ [root@localhost/boot/grub]#ls
(3)grub.conf文件移动到/boot/grub目录下
[root@localhost/boot/grub]#mv /app/grub.conf .[root@localhost/boot/grub]#lsgrub.conf
(4)重启
[root@localhost/boot/grub]#reboot
(5)验证
说明在没有使用命令grub-install之前,/boot/grub目录下的stage#起到备份作用。
b、如果stage1破坏怎么恢复之?
(1)模拟stage1阶段损坏;备份MBR
[root@localhost~]#dd if=/dev/sda of=mbr bs=1 count=446
(2)破坏MBR
[root@localhost~]#dd if=/dev/zero of=/dev/sda bs=1 count=446
(3)重启
[root@localhost~]#reboot
(4)重启以后直接出现下面的界面
此时说明MBA被我们已损坏,直接不能引导。
(5)进入救援模式
之前介绍过如何进入救援模式,这里就不再累述。
方法一:
(1)救援模式默认/mnt/sysimage为根,切换到系统真正的根
bash-4.1#chroot /mnt/sysimagebash-4.1#df #查看是否切换成功
(2)grub模式下修复
sh-4.1#grubgrub>root (hd0,0)grub>setup (hd0)
注意:使用这种模式修复,会依赖于grub/目录下stage1文件,如果没有这些文件,会修复失败的。
方法二:
(1)同样是进入救援模式下
bash-4.1#chroot /mnt/sysimagebash-4.1#df #查看是否切换成功
(2)使用grub-install命令生成stage1文件
sh-4.1#grub-install --root-directory=/ /dev/sda #--root-directory 执行根 /dev/DEVICE指定根在那块磁盘上
(3)查看是否创建成功
sh-4.1#ls /boot/grub
(4)重启
方法三:
可以进入救援模式,配置网络,在同一版本同一型号的主机上复制过来grub/目录下的文件
(c)如果把上述生成的stage#文件删除,尝试是否可以开机成功?
(1)切换到/boot/grub目录下
[root@localhost~]#cd /boot/grub/[root@localhost/boot/grub]#lsdevice.map ffs_stage1_5 jfs_stage1_5 stage1 vstafs_stage1_5e2fs_stage1_5 grub.conf minix_stage1_5 stage2 xfs_stage1_5fat_stage1_5 iso9660_stage1_5 reiserfs_stage1_5 ufs2_stage1_5
(2)删除stage#文件
[root@localhost/boot/grub]#rm -rf *
(3)重启
此时重启会报错error 15;证明使用命令生成的grub/目录下的文件有关联,不像安装操作系统此目录下的文件起备份作用。
此时进入救援模式修复如上述过程。
d、如果删除stage1.5阶段,如何恢复之?
(1)模拟stage1.5损坏
[root@localhost~]#dd if=/dev/zero of=/dev/sda bs=1 count=10240 skip=512 seek=512[root@localhost~]#hexdump -C -n 10240 /dev/sda #查看是否损坏成功
(2)重新启动后,MBA正常启动,但是,stage1.5加载不了
(3)进入救援模式修改stage1.5阶段,方法同上
e如何grub.conf文件删除,如何启动?
在重新启动操作系统时,boot sequence下键入c键进入grub命令行模式下grub>root (hd0,0)grub>kernel /vmlinuz-`uname -r` root=/dev/DEVICE# 分区grub>initrd /initrd-`uname -r`.imggrub>boot
f 、grub.conf文件中password的作用
(1)生成密钥
[root@localhost~]#grub-md5-crypt
Password:
Retype password:
(2)编辑grub.conf文件 [root@localhost~]#vim /boot/grub/grub.conf
default=0timeout=5password=$1$hb5cS/$P8I2/Aeh6LD5Z/47secQN.title linux root (hd0,0) kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=/dev/sda2 initrd /initramfs-2.6.32-696.el6.x86_64.img password=$1$hb5cS/$P8I2/Aeh6LD5Z/47secQN.
这个就是第一个password启动的作用,启动菜单认证;键入P输入密码,可以进入单用户模式。 第二个password作用:启动选用内核或操作系统时进行认证。
g如果删除第一启动文本/sbin/init,如何恢复之?
(1)删除该文件
[root@localhost~]#rm -rf /sbin/init
(2)重新启动
此时,不能输入任何的命令
(3)在boot sequence下键入“e”
grub>kernel /vmlinuz-`uname -r` init=/bin/bash
使用bash启动
键入“b”重新启动
(4)重新挂载根
此时重新启动进入bash并不能编辑根下的文件
bash-4.1#cd /rootbash-4.1#touch a.sh #不能编辑文件bash-4.1#mount -o remount,rw /bash-4.1#mount /dev/sr0 /media/cdrom
bash-4.1#rpm -ivh /media/cdrom/Packages/upstart-VERSION.rpm –force
(5)测试
h 如果/etc/fstab和/boot下的文件误删除,如何恢复之?
(1)进入救援模式
(2)查看文件系统
sh-4.1#fdisk -l
sh-4.1#blkid
(3)创建临时挂载点并重新挂根
sh-4.1#mkdir /mnt/tmp
sh-4.1#mount /dev/sda2 /mnt/tmp
注意:如果之前不知道根文件系统在那个分区上,可以通过上述查看文件系统的方法查看,并尝试挂载查看里面的内容。
(4)编辑/etc/fstab文件
sh-4.1#vi /etc/fstab
/dev/sda1 /boot ext4 defaults 0 0
/dev/sda2 / ext4 defaults 0 0
/dev/sda5 swap swap defaults 0 0
(5)重新启动并进入救援模式
sh-4.1#df 查看挂载结果,这次已经自动挂载根
(6)重新挂载光盘,并安装kernel包
sh-4.1#mount /dev/sr0 /media/tmpsh-4.1#rpm -ivh /media/tmp/Packages/kernel-VERSION.rpm --force sh-4.1#ls /boot #/boot下的文件已经生成
(7)创建grub/下所需要的文件
sh-4.1#grub-install --root-directory=/ /dev/sda
(8)编辑grub.conf文件
defaults=0timeout=5title linuxkernel /vmlinuz-`uname -r` ro root=/dev/sda2initrd /initrd-`uname -r`.imguname -r 中间的命令要自己结果,这里为了方便就这样代替。
(9)重启测试
i逻辑卷环境破坏,同样是删除上面文件
(1)删除/etc/fstab和/boot下所有文件
[root@localhost~]#rm -rf /tec/fstab[root@localhost~]#rm -rf /boot/*
(2)查看系统分区情况
[root@localhost~]#fdisk -l[root@localhost~]#blkid[root@localhost~]#df
注意:逻辑分区不能当/boot使用
(3)激活逻辑卷状态
bash-4.1#lvdisplaybash-4.1#vgchange -ay
bash-4.1#blkid #查看块设备信息
(4)编辑/etc/fstab文件
(5)重新启动,并切换根
bash-4.1#chroot /mnt/sysimage
(6)生成boot/目录下所需要的文件
sh-4.1#mount /dev/sr0 /mnt/tmpsh-4.1#cp /mnt/tmp/Packages/isolinux/vmlinuz /bootsh-4.1#mkinitrd /boot/initramfs `uname -r`sh-4.1#grub-install --root-directory=/ /dev/sdash-4.1#vim /boot/grub/grub.confdefault=0timeout=5title linux root (hd0,0) kernel vmlinuz ro root=/dev/VolGroup-lv_root initrd initramfs
(7)重启测试
二、系统文件丢失如何修复
系统在引导期间,很重要的一个过程就是init进程读取其配置文件/etc/inittab(如果删除,可以安装包),启动系统基本服务程序及默认运行级别的服务程序完成系统引导,如果/etc/inittab误删除或修改错误,Linux将无法正常启动。此时,只有通过救援模式才可以解决此类问题。
(1)如果对inittab文件备份,如何恢复之?
进入救援模式bash-4.1#chroot /mnt/sysimagesh-4.1#cp /PATH/TO/inittab.bak /etc/inittab重启即可
注意:在平时生产环境中,建议将系统中的重要数据目录备份,如etc/、boot/等。
(2)如果没有备份,如何恢复之?
进入救援模式bash-4.1#chroot /mnt/sysimagesh-4.1#rpm -qf /etc/inittabinitscripts-9.49.37-1.el7.x86_64 sh-4.1#exit #退出chroot模式 bash-4.1#mkdir /mnt/cdrom #创建挂载点bash-4.1#mount /dev/sr0 /mnt/cdrombash-4.1#rpm -ivh /mnt/cdrom/Packages/initscripts-9.49.37-1.el7.x86_64.rpm --force\--replacepkgs --root=/mnt/sysimage 重启即可
(3)如何提取rpm中的文件恢复?
进入救援模式bash-4.1#mkdir /mnt/cdrombash-4.1#mount /dev/sr0 /mnt/cdrom查询哪个包提供/etc/inittab文件了,所有就不累述了。bash-4.1#rpm2cpio /mnt/cdrom/Packages/initscripts-9.49.37-1.el7.x86_64.rpm |cpio -id ./etc/inittab cpio:copy files to and from archives -i extract 提取文件 -d 创建所需要的目录bash-4.1#cp etc/inittab /mnt/sysimage/etc重新启动即可
注意:上述命令执行完成后并不能直接恢复/etc/目录中,只能提取到当前目录下,且恢复的文件所在路径要写完整路径。
- 系统启动流程(三)
- Android系统启动流程(三)解析SyetemServer进程启动过程
- 系统启动流程(五)
- 系统启动流程(六)
- 系统启动流程(七)
- Android系统启动流程三之android
- Android系统启动流程 三--linux内核启动
- linux系统启动(bootstrap)流程
- CentOS系统启动流程(二)
- CentOS 系统启动流程(四)
- Android系统启动流程(二)
- 系统启动流程
- 系统启动流程
- 系统启动流程
- 系统启动流程
- 系统启动篇(三)[上]
- 系统启动篇(三)[上]
- Linux系统启动详解(三)
- VS调用 libxl 库异常
- java中HashMap的使用方法
- 天津武清区
- OpenLayers2 --- Feature Event
- keepalived+mycat+mysql框架搭建
- 系统启动流程(三)
- RecycleView多控件携带多个参数点击事件
- Semantic Segmentation using Fully Convolutional Networks over the years
- 文章标题
- java tcp 网络通信--使用多线程传输文件
- 状态码(Status Codes)W3英文解释
- Maven学习笔记 -- day04 Maven分模块开发
- 25个Spring面试题
- 允许mysql远程访问 及 如何修改密码