内核编译步骤与报错

简介:

内核编译前准备工作: 


  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
相关文章
|
Unix Linux Shell
Linux执行shell脚本提示文件找不到问题解决办法
Linux执行shell脚本提示文件找不到问题解决办法
925 0
|
Java Linux
【Linux】linux下使用命令修改jar包内某一个文件中的内容并重新运行jar程序
【Linux】linux下使用命令修改jar包内某一个文件中的内容并重新运行jar程序
344 0
|
3月前
|
安全 Linux
Linux中ldd命令的依赖复制技巧
`ldd`命令的依赖复制技巧在特定的场合下非常有用,但它也需要细心的处理和充分的测试,以确保在新环境中的稳定运行。此外,这种做法虽然方便,但在长期维护和安全更新方面可能会带来额外的负担。
128 0
|
7月前
nuc980使用官方默认内核配置编译过大问题
nuc980使用官方默认内核配置编译过大问题
42 1
|
7月前
|
Shell Linux C语言
【Shell 命令集合 系统设置 】⭐Linux 向内核中加载指定的模块 insmod命令 使用指南
【Shell 命令集合 系统设置 】⭐Linux 向内核中加载指定的模块 insmod命令 使用指南
112 0
|
Windows
安装依赖出现: 无法加载文件,因为在此系统上禁止运行脚本
安装依赖出现: 无法加载文件,因为在此系统上禁止运行脚本
100 0
|
网络协议 Linux
干货!超实用的 Linux 初始化脚本!
咸鱼今天给大家分享一个无论是学习还是工作中都很实用的 Linux 系统初始化脚本,其实就是各种命令的集合。完整代码在文章最后哦
|
Ubuntu C++
是在Ubuntu上编译并执行上面提供的C++程序的步骤和命令
是在Ubuntu上编译并执行上面提供的C++程序的步骤和命令
163 0
|
Linux C#
LINUX C# 加载本地库的范例代码
LINUX C# 加载本地库的范例代码
107 0
|
Linux
LINUX用C检查文件的大小的代码
LINUX用C检查文件的大小的代码
93 0

热门文章

最新文章