虽然以前也编译过内核,但是关于内核配置选项特别是有关本机驱动这块还是不熟悉,因为没有通过确定有效的途径知道当前工作正常的内核中到底使用了什么驱动模块来控制硬件,最近看到一本书《Linux kernel in a netshell》,感觉讲的还不错,所以记下笔记。
1.编译内核的工具
gcc
binutils(ld) binutils是gcc的工具链,用来链接目标文件以及汇编。
make
util-linux-ng(fdformat)
module-init-tools(depmod)
tune2fs
NFS(showmount)
udev udev是Linux中用来管理/dev目录的工具,它维护/dev目录下所有的设备文件。
2.下载wget/curl
3.编译
$make defconfig defconfig是i386计算机上的默认配置,也就是Linus Torvalds计算机中的配置。
$make config 最原始的配置方式
$make menuconfig 文本字符界面配置
$make xconfig X Window配置界面
$make 编译Kernel
4.高级编译选项
make -jN N设置为你CPU内核数的两倍,代表编译内核所用的线程数量。
$make drivers/usb/serial 只编译目录drivers/usb/serial,但是不会生成模块映像文件
$make M=drivers/usb/serial 同上,但是会生成模块文件,但是不会影