【学习笔记】编译Linux内核(中)--安装内核时易出现的问题和解决方案

Centos安装网卡驱动make时报错Kernel header files not in any of the expected locations.解决办法之一 Kernel header files not in any of the expected locations.解决办法之一 阅读详情

编译和安装Linux内核的方法在(上)篇中我虽然描述得很清楚,但我自己在编译和安装Linux内核的过程中也是遇到了不少问题,最后才成功的。这里把我的经验以及遇到的问题写下来,留个记录。以后如果有新菜鸟们遇到相似问题,也方便他们在这里找到解决办法。

 

 

首先,再次提示,一定要在官网下载源码,(www.kernel.org)民间网站下载的源码很多都有问题,不要因为这个浪费时间,我就深受其害。

只要是官网下载的源码,按照我在(上)篇中说的步骤进行编译一般不会出问题。对于咱们菜鸟级的初学者,在配置内核的过程中直接用系统的默认配置即可。

下面主要说下安装(升级)内核的过程中容易出现的问题。

 

我第一次安装完 2.6.34.13  的内核时,(见(上)篇中的最后一张截图),虽然在启动界面里看到了My Own Linux的选项,但是选择该选项进入系统的话会出现错误提示。我就把我遇到的三个问题及其解决方案写下来。

 

 

----------------------------------------------------------------------------------------------------------------------

 

第一个问题。

启动时,出现下面的error:

insmod: error inserting '/lib/dm-region-hash.ko' : -1 File exists

 

简单说一下,insmod 其实是Linxu加载模块的命令,而".ko"后缀的文件则是编译好的内核模块。这里的错误提示是说在加载dm-region-hash.ko这个模块时,发现此模块已经存在。就相当于C语言编程时出现的redefine错误。解决方法:

解决方法:

发现新内核不能用时,重启系统,选择原来的内核进入系统。(上)篇中我们向/boot目录下拷贝了一个initrd文件(上篇中是以initrd-2.6.15.5举例的,这里以initrd-2.6.34.13为例),找到它,将它拷贝到/tmp下,再在/tmp下建一个新目录(以newinitrd为例),并将拷贝过来的initrd文件解压到这个新目录中。

步骤如下:
# cp /boot/initrd-2.6.34.13 /tmp

# cd /tmp/
# ls
initrd-2.6.34.13
#mkdir newinitrd
# cd newinitrd/
# zcat ../initrd-2.6.34.13 |cpio -i

***** blocks

解压之后在newinitrd下可以看到如下内容
# ls
bin   dev   etc   init   lib   proc   sbin   sys   sysroot


下一步就是修改init文件,它里面有一段:

echo "Loading dm-region-hash.ko module"
insmod /lib/dm-region-hash.ko

这一段在这个文件中出现了两次,删掉其中一段即可。vi init 后在命令行模式输入 /region 敲回车就可以找到这一段。

删掉重复的那段之后,保存退出。
然后重新打包initrd。命令如下:


#find .|cpio -c -o > ../initrd
***** blocks
# cd ..
# gzip -9 < initrd > initrd-2.6.34.13

# ls
initrd-2.6.34.13    initrd     newinitrd

现在用重新打包的initrd-2.6.34.13覆盖/boot下原来的initrd-2.6.34.13。然后重启即可。

 

 

 

----------------------------------------------------------------------------------------------------------------------------

 

第二个问题。

启动时,出现下面的error:

insmod: error insering '/lib/dm-mirror.ko -1 Unknow symbol in module

 

这里说系统“不认识”dm-mirror.ko这个模块,那么我们直接不要它了,对系统没发现有什么影响。解决方法跟第一个问题差不多,也是修改init文件,把其中的

echo "Loading dm-mirror.ko module"
insmod /lib/dm-mirror.ko

两行删掉,然后重新打包、覆盖、重启即可。

 

 

----------------------------------------------------------------------------------------------------------------------------

 

第三个问题。

错误提示:

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!

重点是这一行  mount: could not find filesystem ‘/dev/root’
这里说现在的内核可能不支持某个文件系统而导致无法读取到需要的文件。如果你也遇到了这个问题,那么很不幸,你也要重新编译一次你的内核了(编译一次就得一个小时啊!)。

解决方法:重新编译内核。编译前先修改.config文件中的“CONFIG_SYSFS_DEPRECATED_V2”的值,默认该选项为not set,手动将其改为y。

CONFIG_SYSFS_DEPRECATED_V2=y

修改后,再编译,重启即正常了。

 

 

 

这几篇博客对大家应该有帮助:

http://hi.baidu.com/uhkmjjxckfejoxr/item/25b7665831a2a6464eff20e3

http://hi.baidu.com/dkuhg0605/item/6fe11f974278e4df1a49dfc5

http://blog.youkuaiyun.com/do2jiang/article/details/4965967

供大家参考。

 

好了,三个问题说完了。我是点儿比较背的,三个问题全遇上了,解决完第一个问题后重启发现了第二个问题,解决完第二个问题后重启发现了第三个问题,然后我就重新编译了一遍内核并提前修改了init,第三次重启才能顺利进入系统。如此周折了三个多小时。

 

但换个角度来说,遇到问题其实是好事,在解决问题的过程中会被动的学到不少东西。如果第一次直接就成功了,那我什么时候才能有机会了解到我在这篇文章里讲到的东西呢?

 

(下)篇中将介绍Linux内核的配置系统。

 

编译Linux内核kernel时遇到的问题与解决方案 文章目录编译Linux内核kernel时遇到的问题与解决方案问题1:scripts/sign-file.c:25:10: fatal error: openss1/opensslv.h: No such file or directory解决方法:问题2:/bin/sh: 1: flex: not found解决方法问题3:/bin/sh: 1: bison: not found解决方法问题4:/hone/ysz/Desktop/os/linux-5.15.5/tools/objtool/include/o 阅读详情

相关推荐

Linux内核编译与安装

Linux内核是一个用C语言写成的,符合POSIX标准的类Unix操作系统。内核是操作系统中最基本的一部分,提供了众多应用程序访问计算机硬件的机制。Linux内核的一大特点就是采用了整体式结构,有很多过程组成,每个过程都可以独立编译,其模块机制又湿得内核保持独立而又易于扩充。Linux发行版实在Linux内核的基础之上,与外带的应用软件和工具打包配置之后发行的版本。

天涯路的专栏 2414

【记录】Kernel header files not in any of the expected locations.错误解决

我需要在CentOS 6.5中编译一个Inter i210网卡驱动tar zxvf igb-5.1.2.tar.gzcd igb-5.1.2/srcmake出现如下错误:====================================================Makefile:71: *** Kernel header files not in any of the expected locations.Makefile:72: *** Inst...

我的笔记本 1万+

linux内核的编译与安装

1、实验背景:主机WIN7     虚拟机VMware (ubuntu12.04)     内核版本linux-3.2.0-23-generic-pae 2、下载了新的内核版本linux-3.2.1来进行编译,安装 步骤:      1、首先下载你想要编译的内核版本:linux-3.2.1.tar.bz2。      2、进入root权限把刚下载的内核代码复制到/usr/src目录

liuqinstudy的专栏 2万+

红帽linux不能启动,RedHat 5.3系统无法启动问题处理过程

【问题现象】:Redhat 5.3虚拟机在使用一段时间后进行重启,当再次启动时无法正常进入系统,出现如图1所示错误。图1无法进入系统【告警信息】:无【问题分析】:(1)通过抓取虚拟机串口日志,虚拟机在启动过程出现如下报错信息。echo sitescope-command-begin; /bin/df -k /; echo sitescope-command-endMemory for crash ...

weixin_33399354的博客 4439

x86平台Linux内核配置编译和安装

1.       配置编译及安装(1)     下载http://www.kernel.org/pub/linux/kernel/v2.6/首先从上面的地址下载内核源码(2)     解压内核到当前目录tar xjvf linux-2.6.37.tar.bz2(3)     清理中间文件配置文件cd linux-2.6.37make distclean(4)     使用正在运行的内核配置作为参考

yanyiwei2003的专栏 2588

ICC 实战解析——CTS 时钟树综合中的关键设置与优化策略

本文深入解析ICC工具中CTS时钟树综合的关键设置与优化策略,涵盖时钟树异常引脚设置、目标参数配置、非默认布线规则(NDR)等核心技术。通过实战案例展示如何有效控制时钟偏差、优化信号完整性,并平衡功耗与面积,为芯片物理设计提供专业指导。

weixin_30872577的博客 324

linux启动不了,无法进入rescure模式,Mount: could not find filesystem '/dev/root

我在虚拟机上做linux练习,昨天正常关机后,今天便无法开机了,而且resucre模式都进入不了。如下所示:Mount: could not find filesystem '/dev/root' setuproot: moving /dev failed: No such file or directory setuproot: error mouting /proc: N...

weixin_34032827的博客 997

DeepSeek-OCR又更新:一起看下OCR1和OCR2

DeepSeek-AI 最近又又开源了,这次是DeepSeek-OCR2,结合之前发布的DeepSeek-OCR ,可以发现DeepSeek走出了一条不同于主流 OCR 方案的技术路线。第一代模型探索了**“视觉作为文本压缩介质”的可行性,打破了传统的序列长度限制;第二代模型则通过“Visual Causal Flow(视觉因果流)”**架构,将因果推理引入视觉编码器,解决了复杂排版下的阅读顺序难题。本文将从架构设计、逻辑结构、训练范式及工程实现四个维度,深度剖析这两代模型的异同与创新。

kakaZhui的博客 623

编译Linux内核(中)--安装内核时易出现的问题和解决方案

编译和安装Linux内核的方法在(上)篇中我虽然描述得很清楚,但我自己在编译和安装Linux内核的过程中也是遇到了不少问题,最后才成功的。这里把我的经验以及遇到的问题写下来,留个记录。以后如果有新菜鸟们遇到相似问题,也方便他们在这里找到解决办法。  首先,再次提示,一定要在官网下载源码,(www.kernel.org)民间网站下载的源码很多都有问题,不要因为这个浪费时间,我就深受其害。只要是官网下...

liangxiaoxi7的博客 3563

【初阶】手把手教你轻松上手Denodo | 连接数据库并创建基本视图 (二)

在本教程的第二部分,我们将涵盖:连接到数据库,与创建基本视图。

Denodo的博客 1104

Autoware1.14-摄像头目标检测YOLO-V3

在Autoware1.14中部署YOLOV3

weixin_43687753的博客 3139

Linux内核学习1——Linux内核编译安装

一、使用VScode连接远程Linux服务器 首先介绍一下比较方便的编辑内核文件的方法 连接远程服务器的方法有很多,比如可以借助XShell、putty等软件使用ssh命令来登录远程服务器。但如果使用这种连接方法在远程服务器上进行开发工作,会来带诸多不便,比如: 全程只能在终端使用指令操作,文件操作麻烦。 写代码不方便,我们可能会先在本地写好代码再使用scp指令把源代码传送到服务器再运行,或直接在服务器上使用Vim或Vi进行编辑,这些操作起来我个人觉得都不顺手。 服务器上的图片无法查看,比如有时候我们的程

weixin_45730790的博客 4543

2020年大连理工大学《单片机原理及应用》期末试卷

2020年大连理工大学《单片机原理及应用》期末试卷 此试卷为大连理工大学2020年《单片机原理及应用》期末试卷; 大连理工大学2020年《单片机原理及应用》期末试卷; 大连理工大学2020年《单片机原理及应用》期末试卷。 ...

无名何许人的博客 1478

【优麒麟】linux内核编译与安装(详细)

本文将介绍如何在优麒麟(UbuntuKylin)系统中编译与安装新内核,由于UBuntuKylin与Ubuntu系统类似,因此在Ubuntu系统上也可以完成。

LY4E143的博客 4798

资产会计 Transaction Type 与业务交易的 Post to Affiliated Company 不一致导致的 AAPO176:成因剖析与修复指引

本文解析了SAP资产会计中常见的"AAPO176"错误提示,指出当交易类型(TType)与业务交易(Business Transaction)的"关联公司过账"(Post to Affiliated Company)标志不一致时,系统会拒绝过账。作者详细说明了该标志的作用机制,并提供了四种解决方案:修正交易类型使用、匹配正确的业务交易、调整系统配置或建立映射关系。文章还通过实际案例展示了配置错误对集团合并报表的影响,并附带了用于检查配置一致性的ABAP脚本。该错误通常

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 394

【CloudCompare】Windows源码编译CloudCompare

本文详细介绍了在Windows环境下编译安装CloudCompare V2.12.0的过程。首先配置了PCL 1.14.1、CMake 3.30.6和QT 5.14.2开发环境,使用Visual Studio 2022工具集。然后下载源码并通过CMake进行配置,特别注意勾选PLUGIN_STANDARD_QPCL以支持PCD文件加载。最后在VS2022中编译安装,并指出Debug模式下可能遇到的VTK库后缀问题,需添加CMAKE_DEBUG_POSTFIX变量解决。整个流程涵盖了从环境搭建到最终编译成功的

yijiujiusan的博客 485

Linux内核的编译、安装、调试

Linux内核的编译、安装与调试。

Eddy的博客 4628

使用Python爬取在线图书馆的图书馆藏和阅读记录

通过使用Python编写爬虫程序,我们可以从在线图书馆上获取图书馆藏和阅读记录,帮助人们更好地管理和利用图书馆资源。本文简要介绍了爬虫程序的准备工作、网页解析和数据提取、数据的保存和处理的关键步骤,并提供了一个示例代码。在实际应用中,我们需要注意遵守在线图书馆的使用规则和爬虫道德准则,确保合法、合规地进行爬取操作。以上仅为概述,实际应用的过程中可能需要根据具体需求进行适当的调整和改进。

2201_76125393的博客 729

linux内核安装编译

Ubuntu系统下下载编译Linux内核

qq_45041871的博客 3774

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Linux内核的下载、编译和安装

以6.5版本为例进入HTTP网站,下载代码压缩包,也可以使用Git或Motrix等工具来加速下载,或者通过国内的镜像网站下载,直接在浏览器下载速度可能会比较慢。

weixin_54073049的博客 2498

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Linux内核编译和安装

服务器内核编译和安装,

疯子博客 2361

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Linux内核的编译安装

前言Linux内核是Linux操作2347系统的核心,也是整个Linux功能体现的核心,就如同发动机在汽车中的重要性。内核主要功能包括进程管理、内存管理、文件管理、设备管理、网络管理等。Linux内核是单内核设计,但却采用了微内核的模块化设计,支持内核线程以及动态装载内核模块的能力。Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订了旧内核的bug,并增加了...

901

编译安装Linux内核

Linux内核组成部分: kernel object:内核对象,一般放置于 辅助文件:ramdisk 1.1 内核版本 运行中的内核:uname命令:打印系统信息常用选项: 1.2 内核模块命令 lsmod命令:显示Linux内核中模块的状态,显示的内容来自于: /proc/modules文件modinfo命令:显示有关Linux内核模块的信息功能:管理内核模块配置文件:/etc/modprobe.conf, /etc/modprobe.d/*.conf常用选项: modprobe命令:在Lin

一直在努力学习的菜鸟 1640

linux内核编译和安装

linux内核编译和安装 1.下载内核源码 点击我下载 2 . 解压缩内核源码 tar vxf xxxx.tar.xz 3. 图形化界面配置配置需要编译的模块 sudo make menuconfig 然后看会不会报错,如果缺库就安装上sudo apt install xxx - 先sudo apt-get update - sudo apt install ncurses-dev - sudo apt-get install libssl-dev 如果执行sudo make menuconfig报l

Wang20122013的博客 1987

【Kenel】基于 QEMU 的 Linux 内核编译和安装

本文主要记录个人做存储系统研究时,在 QEMU 环境下编译和安装 Linux 内核的过程

乐园 1452
上一篇: 【学习笔记】编译Linux内核(上)--编译基于x86平台的Linux内核的过程
下一篇: 【学习笔记】编译Linux内核(下)---KConfig、Makefile详解以及ARM平台Linux内核的编译
NewThinker_wei
博客等级 码龄14年 521粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值