centos 启动流程及grub、initramfs修复

前端之家收集整理的这篇文章主要介绍了centos 启动流程及grub、initramfs修复前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

启动流程、grub配置及修复、initramfs修复


@H_403_16@目录:

  1. @H_403_16@ centos启动流程

  2. @H_403_16@grup配置及修复

    @H_403_16@

    @H_403_16@2.1 grub配置

    @H_403_16@2.2 grub命令启动

    @H_403_16@2.3 grub修复

  3. @H_403_16@initramfs修复

  4. @H_403_16@boot破坏修复


@H_403_16@

@H_403_16@1.centos启动流程

@H_403_16@

@H_403_16@ 在centos5和6中启动流程如下:

(1).POST加电自检

硬件加电自检程序(安装在CMOS中的BIOS程序)BIOS负责检测硬件设备是否正常运行,如cpu、内存、硬盘、外接设备等是否正常,在生产中服务器内存较大,由多条内存组成较大内存的服务器,因此对内存的安装顺序等要严格的控制,不同品牌服务器要根据各自厂家的设计及要求进行安装。

BIOS初始化硬件后会关联硬盘分区格式, 如:新购PC机自带Windows10(GPT分区)系统修改为Windows7(MBR)系统时,将BOIS中boot菜单的boot mode默认格式UEFI修改为Legacy Support。因为不同的硬盘分区格式,需要不同的硬件启动程序支持

(2).MBR主引导分区

在BIOS初始化硬件后,调动INT13硬件读取MBR信息,其中MBR在硬盘的第一个扇区,一个扇区大小为512byte,前446byte存储bootloader,64byte存储硬盘分区表,2byte存储硬盘标志位。但446byte不足以启动系统,因此会在MBR后面的扇区存储1.5阶段的引导启动程序,其中1.5阶段主要负责读取boot分区(存储内核、虚拟文件系统和grup的配置文件),真正的分区一般从第63个扇区开始进行分区。

系统引导分为三个阶段:

第1阶段:在MBR分区中,主要作用加载boot loader,进入1.5阶段;

第1.5阶段:主要作用加载/boot分区的文件系统驱动,进入文件系统;

第2阶段:主要作用通过/boot/grub/grub.conf配置文件进行加载内核等,其中在/boot/grub/*下只有grub.conf配置文件生效,其他都是第1阶段和1.5阶段的备份文件

(3).Kernel、initrd/initramfs

在系统通过Boot loader引导进入boot分区后,先是通过grub.conf中的参数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读取初始化虚拟根系统(注意:一定要先读取内核,然后再读取虚根系统,因为只有加载内核后才能),然后加载启动过程中所定义的内核模块,最后释放虚根,切换为真实的根文件系统。

(4).init

当系统切换为真正的根后,系统从内核空间转到用户空间,执行第一个初始化程序/sbin/init,通过init初始化程序将用户空间预定义的启动级别进行执行/etc/rc.d/rc#.d/S*.sh脚本启动相关服务。

@H_403_16@

@H_403_16@2.grub配置及修复

@H_403_16@

@H_403_16@grub配置文件存储位置为/boot/grub/*,其中在此目录下能够看到关于启动第1阶段、第1.5阶段、第2阶段的备份文件和grub的配置文件grub.conf

@H_403_16@

@H_403_16@ 2.1 grub配置文件

@H_403_16@grub配置文件通过参数的配置控制默认启动的菜单菜单超时时间、单用户模式登录的密码、菜单的背景图片设置、引导boot的磁盘如hd0,0(第一块磁盘的第一分区),kernel的指定、initrd的指定等相关

@H_403_16@[root@centos6 grub]# grub-crypt #对密码进行256位加密算法计算
Password:
Retype password:
$6$7KtGRwtyOq5ves0w$ujUp94VFUA0m8oeXN1/kF/mgzi5l0UPfdqox8fs0PeSIe0EfyyNJBkogOCSWI1P2XqVgTbH1hE2nJQRABJQFN0

@H_403_16@[root@centos6 grub]# vim /boot/grub/grub.conf

@H_403_16@default=0 #默认

@H_403_16@timeout=5

@H_403_16@splashimage=(hd0,0)/grub/splash.xpm.gz

@H_403_16@password --encrypted $6$7KtGRwtyOq5ves0w$ujUp94VFUA0m8oeXN1/kF/mgzi5l0UPfdqox8fs0PeSIe0EfyyNJBkogOCSWI1P2XqVgTbH1hE2nJQRABJQFN0 #经过加密后的密码,此密码是进入防止单用户的密码

@H_403_16@hiddenmenu 有次密码,普通用户就无法进入单用户模式破解密码

@H_403_16@title CentOS 6 (2.6.32-696.el6.x86_64)

@H_403_16@ root (hd0,0)

@H_403_16@ kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=/dev/sda2 rhgb quiet #rhgb是开机转圈的动作

@H_403_16@ initrd /initramfs-2.6.32-696.el6.x86_64.img #quiet内核启动隐藏显示

@H_403_16@

@H_403_16@title CentOS 6 (4.6.32-696.el6.x86_64)

@H_403_16@ root (hd0,0)

@H_403_16@ kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=/dev/sda2 quiet

@H_403_16@ initrd /initramfs-2.6.32-696.el6.x86_64.img

@H_403_16@ password root0987 #此密码是引导加载内核的密码也就是系统启动密码

@H_403_16@

@H_403_16@

@H_403_16@2.2 grub命令启动

@H_403_16@在开机启动进入菜单后,按c命令进入grub提示符,在grub命令提示符下即可输入相关启动命令,启动系统只需4条指令root、kernel、initrd、boot,分别加载boot分区位置、内核位置、虚根位置,最后重新启动虚拟机即可完成通过命令加载系统,进入系统之后再选择编辑/boot/grub/grub.conf的文件

@H_403_16@第一步:输入"root (hd" 然后按两次 TAB 键出现磁盘块,选中需启动的磁盘,再按两次TAB键出现磁盘分区编号,选中boot分区所在的磁盘分区;

@H_403_16@第二步:输入"kernel /vm"然后按两次TAB键出现内核,再选中要选择启动的正根root=/dev/sda2

@H_403_16@第三步:输入"initrd /init"然后按两次TAB键出现虚根系统

@H_403_16@第四步:输入boot启动系统,完成加载系统

@H_403_16@

@H_403_16@ GUN GRUB version 0.97 (635K lower /1046400K upper memory)

@H_403_16@grub>kernel /boot/vmlinuz-2.6.15-26-386 ro dev=/dev/hda3 #启动内核参数

@H_403_16@grub>initrd /boot/initrd.img-2.6.15-26-386 #启动虚根参数

@H_403_16@grub>root (hd0,0) #启动boot的位置

@H_403_16@grub>boot

@H_403_16@ (具体也可参考http://man.linuxde.net/grub)

@H_403_16@

@H_403_16@2.3 grub修复

@H_403_16@grub修改有两种方法

@H_403_16@第一种方法:重构grub引导程序

@H_403_16@ 在误删grub的第一阶段(446byte字节)、第1.5阶段或第三阶段的数据导致系统无法正常启动时,通过万能的方法重新构建新的grub引导程序,但是如若分区表64tyte删除则无法恢复,具体恢复如下令:

@H_403_16@#!/bin/bash

@H_403_16@sh-4.1# grub-install /dev/sda #安装grub程序到/dev/sda这块磁盘
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 /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'.

@H_403_16@sh-4.1#reboot

@H_403_16@#################################重启后指定引导配置文件进入系统####################################

@H_403_16@ GUN GRUB version 0.97 (635K lower /1046400K upper memory)

@H_403_16@grub>kernel /boot/vmlinuz-2.6.15-26-386 ro dev=/dev/hda3 #启动内核参数

@H_403_16@grub>initrd /boot/initrd.img-2.6.15-26-386 #启动虚根参数

@H_403_16@grub>root (hd0,0) #启动boot的位置

@H_403_16@grub>boot

@H_403_16@##################################登录系统重构配置文件##############################################

@H_403_16@[root@centos6 grub]# vim /boot/grub/grub.conf

@H_403_16@default=0 #默认

@H_403_16@timeout=5

@H_403_16@splashimage=(hd0,0)/grub/splash.xpm.gz

@H_403_16@hiddenmenu

@H_403_16@title CentOS 6 (2.6.32-696.el6.x86_64)

@H_403_16@ root (hd0,0)

@H_403_16@ kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=/dev/sda2 rhgb quiet

@H_403_16@ initrd /initramfs-2.6.32-696.el6.x86_64.img

@H_403_16@

@H_403_16@ 第二种方法:利用备份文件恢复

@H_403_16@利用/boot/grub/*第1阶段的备份文件和第1.5的备份文件进行恢复,此种方法有效率相对较高无需进入救援模式

@H_403_16@ GUN GRUB version 0.97 (635K lower /1046400K upper memory)

@H_403_16@grub>setup (hd0) #利用备份文件恢复

@H_403_16@grub>kernel /boot/vmlinuz-2.6.15-26-386 ro dev=/dev/hda3 #启动内核参数

@H_403_16@grub>initrd /boot/initrd.img-2.6.15-26-386 #启动虚根参数

@H_403_16@grub>root (hd0,0) #启动boot的位置

@H_403_16@grub>boot

@H_403_16@

@H_403_16@3.initramfs修复

@H_403_16@

@H_403_16@initramfs虚根系统是安装系统时,系统利用自身的命令生成相关的文件系统,如若此文件系统可以利用mkinitrd

@H_403_16@##################################生成虚拟文件系统##################################################

@H_403_16@[root@centos6 bak]#mkinitrd /boot/initramfs-$(name -r).img $(name -r)

猜你在找的CentOS相关文章