Linux系统启动时常见的问题

 系统在启动时会因为各种各样的问题无法启动,以下是常见的几种导致无法启动的问题及解决方式,以虚拟机为例。
1.忘记root用户密码
 如果忘记普通用户密码可以使用root用户登陆,修改普通用户密码,root用户修改普通用户的密码不需要原密码。可是忘记root用户密码就不能用普通用户修改root用户密码,因为普通用户在修改root用户密码是需要原密码的。这时就可以使用以下方式修改root用户密码,重新启动电脑,当其出现以下界面,按上下键使其停留在该界面:
在这里插入图片描述

 按“e“键进入编辑界面:
在这里插入图片描述
 找到上图中划线的这行,从后向前删除到ro,并如上图编辑。编辑完成之后按Ctrl+x,然后等待以下界面的出现:
在这里插入图片描述
 输入chroot /sysroot/进入真实的/系统,用passwd命令修改超级用户密码。创建/.autorlabel这个文件,如果selinux处于Disabled状态时可以不创建该文件。两次退出后就可以登陆系统了。退出可以输入两次exit或者按两次Ctrl+D键。
2./etc/fstab文件所引起的问题
 给/etc/fstab文件中写入一个不存在设备将其挂载:
在这里插入图片描述
 系统在启动时找不到/dev/mapper/westosdata这个设备,所以会出现以下问题:
在这里插入图片描述
 此时只要静静等待,直到出现以下界面让用户输入root用户的密码,输入密码后就会编辑/etc/fstab这个文件:
在这里插入图片描述
 将引起错误的内容注释或者删除:
在这里插入图片描述
 然后两次退出,可以输入两次exit退出或者按两次Ctrl+D退出。系统就可以开启了。
3.grub磁盘引导阶段
mbr 的作用是为了记录 /boot 目录所在分区位置磁盘的 0 磁道 1 扇区的前 446 字节,如果mbr出现问题,系统在启动时无法找到boot分区,系统也无法启动。
 可以使用fdisk -l命令查看boot分区挂载在哪个分区下,如下图“*“所在分区即boot分区:
在这里插入图片描述
 mbr在boot所挂载的分区的设备vda446个字节,可以使用以下命令将vda前446个字节覆盖掉:

[root@localhost ~]# dd if=/dev/zero of=/dev/vda bs=446 count=1

 重启系统之后就会出现以下问题:
在这里插入图片描述
 如果是上述的这种问题,从磁盘已经无法启动,所以必须从其它位置启动。我给虚拟机添加一块光驱,使系统从光盘启动。
 关闭虚拟机,在真实的物理机中输入virt-manager进入虚拟机管理界面,如下图:
在这里插入图片描述
点击上图中左上角的小灯泡,然后点击Add Hardware,出现以下界面:
在这里插入图片描述
 加入虚拟机的镜像,并选择存储为光盘,如上图,点击Finish完成光盘的添加。出现以下界面:
在这里插入图片描述
 将右边的光盘调整到第一位,使其从光盘启动,点击Apply应用。再次启动虚拟机出现以下界面,通过上下键选择第三个:
在这里插入图片描述
 选择第二个,进入挽救模式:
在这里插入图片描述
 点击Continue继续:
在这里插入图片描述
 下来的两个界面告诉使用者真实的系统挂载在/mnt/sysimage/下,使用chroot /mnt/sysimage命令进入真实的系统:
在这里插入图片描述
在这里插入图片描述
 执行chroot /mnt/sysimage命令进入真实的/系统进行操作,执行grub2-install命令将mbr恢复:
在这里插入图片描述
 两次退出之后,关闭虚拟机,将光盘调到下面,使其从磁盘启动:
在这里插入图片描述
 点击Apply之后开启虚拟机就可以启动系统了。
4.grub 文件引导阶段
/boot/grub2/grub.cfg指定 /boot 分区位置,加载内核和启动系统初始化进程。如果该文件丢失系统启动时就无法找到boot分区的位置,无法加载内核和初始化进程。所以必须手动引导。
 在创建虚拟机时,如果将boot分区独立出来,使用df命令查看就会有boot分区的挂载信息,如下图,/下挂载在sda10下,boot分区下挂载的是sdb8分区,boot和/不在同一分区下,相互独立:
在这里插入图片描述
 如果boot分区没有独立,df就没有boot的挂载信息,此时boot包含在/下,/所在的分区就是boot所在分区,如下图:
在这里插入图片描述
 使用以下命令删除引导文件:

[root@localhost ~]# rm -fr /boot/grub2/grub.cfg 

 再次开机时就会停止:

在这里插入图片描述
 这时就要手动引导系统开启,如上图。
set root="hd0,msdos1"指定boot所在分区,其中的msdos*不是固定的,boot在第几块分区,此处写几。如果boot分区没有独立,则此处写/所在分区。我的boot分区没有独立,所以此处为/所在分区。
 第二行指定所加载的内核,如果指定的是/分区,此处就要写/boot/…,如果指定的是boot分区就可以直接写加载的内核,不需要再加/boot/。
 第三行指定初始化镜像文件。
 第四行boot启动之后系统就可以启动了。
 在启动之后哦执行以下命令恢复grub.cfg文件,否则每次开机都要手动引导:

[root@localhost ~]# grub2-mkconfig > /boot/grub2/grub.cfg

5.内核加载文件丢失
 在/boot/目录下存在一个vmlinuz-3.10.0-123.el7.x86_64内核加载文件,系统启动时会加载该文件,如果该文件丢失,系统就无法启动。
在这里插入图片描述
 使用下面的命令删掉该文件:

[root@localhost ~]# rm -fr /boot/vmlinuz-3.10.0-123.el7.x86_64 

 启动系统时就会出现下面的问题:
在这里插入图片描述
 这是因为在加载内核时找不到该文件。
 要启动系统就要找回这个文件,但磁盘中已经没有了该文件,所以需要从别的地方拷贝该文件到磁盘的/boot/。让虚拟机从光盘启动,进入挽救模式:
在这里插入图片描述
chroot /mnt/sysimage进入真实的/系统,mount /dev/sr0 /test将光盘挂载到/test下,在/test/Packages/目录下有一个kernel文件,如上图,将该文件拷贝到/mnt/下,使用rpm2cpio命令将kernel文件解包之后出现一个boot目录,该目录下就有了vmlinuz内核加载文件,将该文件拷贝到/boot/目录下。现在就可以从磁盘启动系统了。
6.初始化镜像文件丢失
 在/boot/目录下有一个initramfs-3.10.0-123.el7.x86_64.img初始化镜像文件,在系统启动时加载该文件初始化进程,如果该文件丢失系统也无法启动。
 如果一不小心将该文件删除:

[root@localhost ~]# rm -fr /boot/initramfs-3.10.0-123.el7.x86_64.img 

 在没有关机的情况下可以使用以下命令恢复该文件:

 [root@localhost ~]#mkintrd /boot/initramfs-$(uname -r).img $(uname -r)

uname -r命令查看内核版本。$()中的内容先执行。
 如果在删掉该文件之后重启了系统,就会出现以下问题:
在这里插入图片描述
 此时就可以进入挽救模式,执行mkinitrd命令恢复该文件,如下图:
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值