内核编译步骤与报错

简介:

内核编译前准备工作: 


  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
相关文章
|
7月前
nuc980使用官方默认内核配置编译过大问题
nuc980使用官方默认内核配置编译过大问题
33 1
|
Ubuntu C++
是在Ubuntu上编译并执行上面提供的C++程序的步骤和命令
是在Ubuntu上编译并执行上面提供的C++程序的步骤和命令
157 0
|
Linux
linux文件复制覆盖命令提示操作问题
解决文件复制覆盖提示操作问题
218 0
|
Java Linux C语言
Linux gcc编译时强制链接并依赖一个库(即使未使用)
Linux gcc编译时强制链接并依赖一个库(即使未使用)
143 0
|
Linux
LINUX Telepresence编译详细过程记录
LINUX Telepresence编译详细过程记录
98 0
|
并行计算 Linux
LINUX安装CUDA 9.2,提示缺少文件的解决办法
LINUX安装CUDA 9.2,提示缺少文件的解决办法
331 0
|
编译器 C++
关于 QtCreator无法自动探测到v140编译器(VS2017安装v140和141) 的解决方法
关于 QtCreator无法自动探测到v140编译器(VS2017安装v140和141) 的解决方法
关于 QtCreator无法自动探测到v140编译器(VS2017安装v140和141) 的解决方法
|
Linux 数据安全/隐私保护
10.10 修改etcfstab文件出错导致Linux不能启动,该怎么办?
如果把 /etc/fstab 文件修改错了,也重启了,系统崩溃启动不了了,那该怎么办?比如:
262 0
10.10 修改etcfstab文件出错导致Linux不能启动,该怎么办?
|
编解码 Linux
LINUX FFMPEG编译详细过程记录(最全)
LINUX FFMPEG编译详细过程记录(最全)
290 0