Ubuntu14.04 更换内核重启出现:Missing Modules

1 前言

   最近由于实验的需要,需要更换Linux系统的内核。我的系统是Ubuntu14.04,内核版本时3.19。
   由于实验的平台需要内核版本3.14.0,只好将Ubuntu14.04的内核从3.19降级到3.14.0。在编译安装之后,
   运行命令:update-grub,重启之后发现没有出现Grub程序菜单。接下来就是一系列问题。。。

2 问题

2.1 重启之后没有出现Grub菜单

   由于Ubuntu14.04使用的是Grub2.0,在有些地方的配置与以前的Grub有所不同。重启之后没有出现Grub菜单,
   是由于Grub菜单被隐藏,并且是按照默认启动。

解决方法:

  将/etc/default/grub文档中的GRUB_HIDDEN_TIMEOUT=0注释掉

2.2 出现菜单之后,进入新内核,出现如下提示:

  Gave up waiting for root device. Common problems:
    -Boot args (cat /proc/cmdline)
    -Check rootdelay= (did the system wait long enough?)
    -Check root= (did the system wait for the right device?)
    -Missing modules (cat /proc/modules; ls /dev)
ALERT! /dev/sda does not exist ...
   或者
ALERT!  /dev/disk/by-uuid/34e5c1 ... does not exist ...

  如果Grub.cfg没有出现什么重要的改动(直接运行update-grub之后),出现问题就是 Missing modules。
  由于Linux启动时,initramfs需要从initrd.img中读取系统中一些基本的驱动程序。而如果在编译内核的过程中,
  没有操作好,initrd.img会被破坏,最直接的表现是initrd.img文件大小比正常的小很多。
  可以使用如下命令比较各个initrd.img的大小:ls -l initrd*

解决方法:

    重新创建对应内核的initrd.img:
        1 备份以前编译的initrd.img,以免出错:
          # cp /boot/initrd.img.$(编译内核的版本) /root
        2 在管理员权限下创建新的initrd.img
          # mkinitramfs -o /boot/initrd.img.$(编译内核的版本) $(编译内核的版本)
          # ls -l /boot/initrd.img.$(编译内核的版本)
        3  重新更新下Grub.cfg(之前已经更新过,最好还是更新一下),重启
          # update-grub
          # reboot

3 小结

    最终以上问题可以解决,编译Linux内核的时候,一定要仔细。一般编译内核快的要半个小时,
    有时可能需要1小时或以上,有时候一个小的失误可能会导致前面的工作白费。
  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值