内核编译前准备工作:
-
准备好开发环境
Server Platform Development
Development Tools
-
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