Quantcast
Channel: CodeSection,代码区,Linux操作系统:Ubuntu_Centos_Debian - CodeSec
Viewing all articles
Browse latest Browse all 11063

简单的启动排错

$
0
0

一、出现 grub> 字样,等待交互式输入指令,说明 MBR 中 Bootloader 的 stage 1 、stage1_5、stage2都正常,但丢失了/boot/grub.conf 文件,所以无法加载启动项菜单,就无法读取默认启动的kernel、initrd等文件路径。

解决办法:无需救援模式,直接在此交互式界面指定相关文件的加载路径。

(1) grub> root (hd0,0) # 指定 /boot 的根目录,若 /boot 为独立分区则以 (hd#,#) 格式给出分区,若与操作系统的根在同一分区则为 (hd#,#)/

(2) grub> kernel /vmlinuz-xxx.el6.x86_64 root=/dev/{sda2| /mapper/ VolGroup…} selinux=0 # 指定 kernel 的位置,及真正的根目录所挂载的分区,注意逻辑卷。取消安全标签

(3) grub> initrd /initramfs-xxx.el6.x86_64. img # 指定 ramdisk 文件所在位置,挂载临时根文件系统,安装相关驱动。

(4) grub> reboot

二、


简单的启动排错

最终停止在上图画面,并且也可以正常进入启动项菜单,说明 MBR 、 gurb 文件等都没问题,紧接着便是加载 kernel 和 initrd 。因此很有可能是 initrd 文件有问题了。


简单的启动排错

解决上述问题:需要进入救援模式。

当原根文件系统可以正常挂载。

(1) chroot /mnt/sysimage # 切换到原根文件系统

(2) mkinitrd /initramfs-`uname -r` .img `uname -r` # 用命令生成 initrd 文件,后边的版本号必须与原有的内核版本号相同。

(3) exit

(4) reboot

若出现以下画面则说明是内核文件找不到了。


简单的启动排错

解决 kernel 损坏问题:进入救援模式

(1) chroot /mnt/sysimage

(2) mount /dev/sr0 /mnt/cdrom

(3) rpm -ivh /mnt/cdrom/Package/kernel-VERSION-RELEASE force # 重新从光盘安装 kernel ,避免因残留文件存在而无法安装,直接使用 force 选项强制安装。

(4) exit

(5) reboot

三、无法进入 Bootloader ,表现为没有安装操作系统之前的画面时,极有可能是 MBR 中的 grub 数据损坏或者是 /boot/grub/ 下的各相关文件丢失,进入救援模式重新装载 grub 即可,重新装载的过程中也会生成所需相关文件。但 /boot/grub/grub.conf 文件需要手动配置。

救援模式下安装 grub :

(1) 切换根目录为真正的操作系统的根目录

chroot /mnt/sysimage

(2) grub-install root-directory=/ /dev/sda

(3) exit

(4) reboot

### root-directory=/ 代表的是指明 boot 的 父目录 ,由于安装 grub 程序到磁盘的 mbr 中去的同时还要复制 grub 的相关配置文件到 boot 目录中去,此时只需要给出 boot 的父目录,因为他会在所给出的目录下边去寻找一个叫 boot 的目录。(用于自制 linux 系统)

/dev/DISK 代表要往那个磁盘的 MBR 上安装 grub 。即引导启动的硬盘设备。

四、以上问题修复时,若进入救援模式后发现未识别到原有根文件系统,很有可能是 /etc/fstab 文件出了问题,导致原有根文件系统无法自动挂载,此时就要先手动挂载,然后恢复 /etc/fstab 文件。

1 、原根文件系统属于正常分区,并未使用逻辑卷时

(1) 光盘进救援模式

(2) 找 /

]# blkid

]# mount /dev/sdaN /mnt/root # 手动挂载成功后不要随意切换到原有根文件系统,切换后所有命令就不能用了

]# vim /mnt/root/etc/fstab # 编辑该文件,例如以下两行内容

/dev/sda1 /boot defaults 0 0

/dev/sda2 / defaults 0 0

]# reboot

(3) 必须重新启动进入救援模式,让系统自动识别挂载原有根文件系统。

然后针对以上问题进行各自所需的修复操作。

2 、原根文件系统挂载在逻辑卷上时。

(1) 光盘进救援模式

(2) 找 /

]# blkid

]# lvs

]# vgchange -ay # 逻辑卷并不能被正常识别,此时需要使用此命令识别逻辑卷

]# lvs

]# mount /dev/mapper/lv_root /mnt/sysimage # 挂载逻辑卷

]# vim /mnt/root/etc/fstab

/dev/sda1 /boot ext4 defaults 0 0

/dev/vg0/lv_root / ext4 defaults 0 0

/usr/xxx /mount ext4 defaults 0 0

/var/xxx /mount ext4 defaults 0 0

(3) 必须重新启动进入救援模式,让系统自动识别挂载原有根文件系统。

然后针对以上问题进行各自所需的修复操作。

五、 grub 引导成功,启动菜单也没问题, kernel 加载成功,出现以下现象说明用户空间的第一个程序 init 初始化失败。

若启动界面默认显示详细启动过程的最终会显示以下结果。 esc 可显示详细启动过程。


简单的启动排错

默认启动时不显示详细工程,而是 centos 动态图像时会一直显示“圆球”。转的根本停不下来。


简单的启动排错

解决方法:进入光盘救援模式。想办法恢复 /sbin/init 这个文件。此文件是一个二进制文件,可以考虑从别的系统上拷贝一份过来,注意版本问题。

总结:引起启动失败的问题:

1 、 grub

MBR 中 grub 损坏、 grub 相关文件丢失

2 、 kernel 或者 initrd 文件加载失败

3 、 /sbin/init 初始化失败


Viewing all articles
Browse latest Browse all 11063

Trending Articles