内核编译步骤与报错

简介:

内核编译前准备工作: 


  1. 准备好开发环境

   

   Server Platform Development

   Development Tools


  1. 1
    yum groupinstall Development Tools ; yum groupinstall Server Platform Development


2.获取目标主机硬件设备相关信息

    cpu:

1
2
3
4
     # cat /proc/cpuinfo        #查看cpu信息
     # x86info
         yum  install  x86info     #需安装后使用
     # lscpu

     pci:

1
2
3
4
5
6
7
8
     # lspci                    #显示所有pci设备信息
         - v                    #显示详细的信息
         -vv                    #显示更详细的信息
     # lsusb                    #显示usb设备信息
         - v                      #同lspci
         -vv
     # lsblk                    #显示块设备信息
         -a                      #显示所有

    全部的硬件设备:

1
     # hal-device

3.获取内核源码

1
# wget  -r).tar.xz

4.安装图形依赖包

1
# yum install ncurses ncurses-devel

5.安装虚拟屏幕

1
# yum install screen


简单依据模板文件的内核编译过程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# tar xf linux-3.10.67.tar.xz -C /usr/src
         #将下载好的内核解压至/usr/src目录中
# cd /usr/src
         #编译命令使用相对路径,所以要cd至该目录下
# ln -sv linux-3.10.67 linux
         #创建内核链接文件,此处的linux为链接名
# cd linux
         #编译命令使用相对路径,所以要cd至该目录下
# cp /boot/config-$(uname -r) ./.config
         #复制/boot目录下config模板至当前目录下
# make menuconfig
         #以文本窗口配置内核选项,在此处开启或关闭内核或模块
# screen
         #开启虚拟屏幕,因编译不确定性,且时间较长,所以开启它吧
# make -j #
         #编译内核,#为以几个核心进行编译
# make modules_install
         #安装内核模块
# make install
         #安装内核
# init6
         #重启后进入grub可选择内核进入系统了哦

常见报错信息

1
2
3
4
5
drivers /tty/serial/built-in .o: final close failed: No space left on device
make [3]: *** [drivers /tty/serial/built-in .o] Error 1
make [2]: *** [drivers /tty/serial ] Error 2
make [1]: *** [drivers /tty ] Error 2
make : *** [drivers] Error 2

此类报错为磁盘空间不足,解决方案为扩展磁盘容量,或将/usr挂载至独立分区

1
ERROR: modinfo: could not  find  module vmware_balloon

此类报错为在虚拟机安装时产生,无须理会


编译扩展

1.只编译某子目录中的相关代码

1
2
# cd /usr/src/linux        #编译命令使用相对路径,所以要cd至该目录下
# make dir/                #dir为你需要编译的某目录

2.只编译一个特定的模块

1
2
# cd /usr/src/linux        
# make dir/file.ko         #指定某目录下具体的模块,以.ko结尾

3.编译的目标平台与当前平台不相同

1
# make ARCH=平台名字

4.要获取特定目标平台的使用帮助

1
# make ARCH=平台名字 help

5.如何在已经执行过编译操作的内核源码树做重新编译

1
2
3
# make clean:清理大多数编译生成的文件,但会保留config文件等
# make mrproper:清理所有编译生成的文件,config及某些备份文件
# make distclean:mrproper,patches以及编辑器备份文件


附:screen命令用法

1.打开新的screen

1
# screen

2.退出并关闭screen

1
# exit

3.剥离当前screen

1
# ctrl+a,d

4.显示所有已经打开的screen

1
#  screen -ls

5.恢复screen:通过ls查看的ID号恢复

1
screen  -r [SESSION]




本文转自 元婴期 51CTO博客,原文链接:http://blog.51cto.com/jiayimeng/1845426
相关文章
|
3月前
|
运维 监控 Go
工具写得好,运维没烦恼——聊聊Python与Go开发运维工具的那些坑与妙招
工具写得好,运维没烦恼——聊聊Python与Go开发运维工具的那些坑与妙招
269 7
|
4月前
|
运维 开发者 Docker
一、Docker:一场颠覆应用部署与运维的容器革命
Docker的出现,就是为了解决“在我电脑上能跑”这个老大难问题。它像个魔法集装箱,把你的程序和它需要的所有东西(比如库、配置)都打包好,这样无论在哪运行,环境都一模一样。理解它很简单,就三个核心玩意儿:镜像是程序的“安装包”,容器是跑起来的程序,而仓库就是存放和分享这些“安装包”的地方。
483 6
|
9月前
|
SQL 安全 算法
解读 Python 3.14:模板字符串、惰性类型、Zstd压缩等7大核心功能升级
Python 3.14 引入了七大核心技术特性,大幅提升开发效率与应用安全性。其中包括:t-strings(PEP 750)提供更安全灵活的字符串处理;类型注解惰性求值(PEP 649)优化启动性能;外部调试器API标准化(PEP 768)增强调试体验;原生支持Zstandard压缩算法(PEP 784)提高效率;REPL交互环境升级更友好;UUID模块扩展支持新标准并优化性能;finally块语义强化(PEP 765)确保资源清理可靠性。这些改进使Python在后端开发、数据科学等领域更具竞争力。
415 5
解读 Python 3.14:模板字符串、惰性类型、Zstd压缩等7大核心功能升级
|
并行计算 数据处理 Python
Python并发编程迷雾:IO密集型为何偏爱异步?CPU密集型又该如何应对?
在Python的并发编程世界中,没有万能的解决方案,只有最适合特定场景的方法。希望本文能够为你拨开迷雾,找到那条通往高效并发编程的光明大道。
322 2
|
JSON API 数据格式
使用Python和Flask构建简单的Web API
使用Python和Flask构建简单的Web API
|
JavaScript 前端开发 数据库
测试开发之路--Flask 之旅 (五):后台管理
本文介绍了如何使用 Flask-Admin 模块为应用添加后台管理功能,包括数据库表管理、自定义视图及服务器文件管理。通过实例展示了如何初始化 Flask-Admin,并实现对用户、角色等表的增删查改操作。此外,还介绍了如何定制视图及管理服务器上的配置文件。这一模块大大提升了应用的管理效率与灵活性。
372 5
测试开发之路--Flask 之旅 (五):后台管理
|
存储 域名解析 网络协议
Linux网络管理
这篇文章开始学习Linux的网络管理,通过这篇文章带大家了解,怎么在Linux中查看自己的网卡,怎么通过配置文件配置自己的网络、IP,以及怎么查看自己的IP,了解获取IP的方式,最后完成一个服务器的初始化。
960 1
|
监控 前端开发 机器人
RPA机器人
【8月更文挑战第4天】RPA机器人
1138 3
|
存储 数据库 开发者
Flask中的蓝图与插件应用:构建模块化Web应用的利器
【7月更文挑战第19天】Flask蓝图和插件是构建模块化、可扩展和可维护Web应用的强大工具。蓝图允许你将应用分割成多个独立的部分,提高了代码的组织性和可重用性;而插件则为Flask应用提供了丰富的功能和社区支持,简化了开发过程。通过合理地使用蓝图和插件,你可以更加高效地开发出高质量的Web应用。

热门文章

最新文章