linux 重新编译kernel后不能正常启动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 重新编译kernel后不能正常启动相关的知识,希望对你有一定的参考价值。

linux 内核从2.6.18到2.6.23后,是在真实机器上编译,编译过程没有出错,就是在重启的时候新内核不能正常启动,
出现错误提示:
No volume groups found
"VolGroup00" not found
Unable to access resume device (/dev/VolGroup00/LogVol01)
Mount: could not find filesystem'/dev/root'
setuproot:Moving /dev failed:No such file or directory
setuproot:error Mounting /proc: No such file or directory
setuproot:error Mounting /sys: No such file or directory
switchroot: mount failed: No such file or directory
kernel panic - not syncing ,Attempted to kill init!

希望有知道的能帮忙解答下,谢谢!

参考技术A 内核设置的驱动部分问题。

还有你的 Linux 是不是 RHEL ?
最好不要自己升级,而是用在线升级的功能去升级系统。任何软件包都尽量不要自己升级。
参考技术B 用得RAID吧,你忘了编译RAID驱动进去,驱动不了RAID,所以无法从initrd切换到rootfs。 参考技术C 从提示信息看,你的Linux系统使用LVM(逻辑卷管理),所以你编译内核应该将lvm编译进去,否则就找不到文件系统了。 参考技术D 这问题还真不知道原因,不过看信息显示应该是一些文件找不到了

Mac下重新编译Linux内核

Mac下重新编译Linux内核

操作系统实验,要求添加系统调用并重新编译内核,这里记录一下编译内核的过程

0.下载VirtualBox

博主一直用parallel desk,但因为驱动等问题,在PD上重新编译后无法出现图形界面,所以建议采用绝缘性较好的VirtualBox来编译内核。

1.下载内核

从Linux的官网http://www.kernel.org下载内核代码即可,注意版本号,建议用比较新的Ubuntu系统的话就采用新的内核。

这里博主遇到了一个坑,在16.04的Ubuntu下编译3.11.4内核时遇到error,原因是系统的gcc版本是5,而3.11.4内核不包含gcc5.h,直接报错。

2.部署内核源码

# 把内核解压到/usr/src目录下
cd /usr/src
tar -xvf ~/Downloads/linux-4.14.1.tar.xz #解压源码

3.在内核代码目录下创建.config

如果没有大的改动的话可以通过原来的配置文件来生成新的配置文件

cd linux-4.14.1
cp /boot/config-`uname -r` .config #这里`uname -r`可以求出当前的内核版本
sudo make oldconfig

之后会出现一些列配置选项,全部回车即可

4. 编译内核

sudo make
sudo make modules_install
sudo make install

编译时可能出现缺少openssl,apt install即可,make的时间比较长,中途如果出错再次编译前最好先sudo make clean

5. 测试

sudo reboot #重启
uname -r # 查看内核版本

第一次重启可能比较慢,耐心等待即可。

以上是关于linux 重新编译kernel后不能正常启动的主要内容,如果未能解决你的问题,请参考以下文章

linux 下如何将动态链接库.so进行反编译后,换编译器重新编译?

Mac下重新编译Linux内核

linux升级后重启出现kernel panic:attempted to kill init???

电脑开机后在 正在启动windows后不断重启,昨天还正常的。

openvswitch2.11.0修改源码后重新编译

出现kernel panic not syncing :fatal exception错误后通过禁用selinux启动系统