编译内核:
·程序包的编译安装:
./configure ,make ,make install
·前提:开发环境(开发工具、开发库),头文件:/usr/include
·开源:源代码–>可执行格式
发行版:以“通用”的目标;
“通用”意味安装了许多多余的东西
·前提:
(1)准备好开发环境
(2)获取到目标主机上硬件设备的相关信息
(3)获取到目标主机系统功能的相关信息,例如要启用的文件系统
(4)获取内核源代码包:www.kernel.org
准备开发环境:
CentOS 6.8 / 7:
包组:
Development Tools
Server Platform Development
获取目标主机上硬件设备的相关信息:
·CPU:
# cat /proc/info
# lscpu
# x86info -a //需先安装x86info这个包
·PCI设备:
# lspci
-v -vv
# lsusb
-v -vv
# lsblk
·了解全部硬件设备信息:
# hal-device
·内核编译过程:
步骤:
# tar xf linux-3.10.67.tar.xz -C /usr/src
# cd /usr/src
# ln -s linux-3.10.67 linux
# cd linux
# make menuconfig //配额制内心选项
可cp /boot/config-3.10.0-327.el7.x86_64 ./config 作为一个模版进行修改
# make [-j#] //编译内核
-j:启动多个线程进行编译
# make modules_install //安装内核模块
# make install //安装内核
重启系统,选择使用新内核
screen命令:
防止因远程网络波动,造成安装软件或编译软件失败
在screen中运行的命令,即使终端端口,依旧不会被kill
打开screen: # screen
拆除screen: Ctrl+a,d
拆除screen是释放出终端来,用screen在后台运行,而不是关闭screen
列出screen: # screen -ls
链接至screen: # screen -r SCREEN_ID
关闭screen: # exit
·过程的详细说明:
(1)配置内核选项
系统编译内核的参数参考文件:
redhat:/boot/config-VERSION-release
other linux:/proc/config.gz
支持“更新”模式进行配置;在已有的.config文件的基础之上进行“修改”配置
(a) make config:基于命令行以遍历的方式去配置内核中可配置的每个选项
(b) make menuconfig:基于cureses的文本配置窗口
需要cureses-devel包的支持
yum -y install ncurses-devel
(c) make gconfig:基于GTK开发环境的窗口界面;安装包组“桌面平台开发”
(d) make xonfig:基于QT开发环境的窗口界面
支持“全新配置”模式进行配置:
(a) make defconfig:基于内核为目标平台提供的“默认”配置为模版进行配置
(b) make alinoconfig:所有选项均为“no”
(2)编译
(a)多线程编译:
make [-j #]
(b)编译内核中的一部分代码:
(i)只编译某个子目录中的相关代码
# cd /usr/src/linux
# make path/to/dir/
(ii)只编译一个特定的模块
# cd /usr/src/linux
# make path/to/dir/file.ko
file.ko文件是不存在的,但每一个file文件都有个隐藏的fike.ko文件
编译好的模块要自己手动cp到/lib/modules/kernel/目录下
(c)如何交叉编译:
目标平台于当前编译操作所在的平台不同
# make ARCH=arch_name
要获取特定平台的使用帮助:
# make ARCH=arch_name help
(3)如何在执行过程编译操作的内核原代码树上重新编译:
事先清理操作:
# make clean:清理编译生成的绝大多数文件,但会保留config,及编译外部模块所需要的文件
# make mrproper:清理编译生成的所有文件,包括配置生成的config文件及某些备份文件
# make distclean:相当于mrproper。额外清理各种patches以及编译器备份文件
原创文章,作者:megedugao,如若转载,请注明出处:http://www.178linux.com/45596