配置编译内核(Linux kernel)
来源:互联网 发布:淘宝创业故事视频 编辑:程序博客网 时间:2024/05/22 14:33
虽然以前也编译过内核,但是关于内核配置选项特别是有关本机驱动这块还是不熟悉,因为没有通过确定有效的途径知道当前工作正常的内核中到底使用了什么驱动模块来控制硬件,最近看到一本书《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 同上,但是会生成模块文件,但是不会影响已经编译好的内核,如果想要改变已经编译好的内核,则需要重新执行
$make
$make drivers/usb/serial/visor.ko 只编译个别文件
$make -O=/path/to/output/ 将输出重定向到另一个目录,注意configure也必须使用-O重定向输出。
$make ARCH=x86_64 defconfig 设置目标计算机体系结构
$make ARCH=arm CROSS_COMPILE=/usr/bin/... 设置交叉编译。
$make CC="ccache gcc" 设置编译器变量CC
5.配置内核
1)查找当前内核配置文件.config,在许多发行版中,内核配置文件最有可能位于/usr/src/linux/下和/proc/config.gz文件。例如在我的ubuntu(karmic koala)中,有/usr/src/linux-headers-2.6.31-16-generic/.config
2)查看特定驱动的模块
这里以网卡为例,使用ifconfig可以看到本机网卡,lo是回环地址,eth0...等是真正工作的网卡。
$ifconfig
$ls /sys/class/net/
上面两种方法都可以查看本机网卡。现在我们要找到网卡驱动在内核中使用哪个模块来控制。
3)找到相应的内核模块
$basename `readlink /sys/class/net/eth0/device/driver/module`
在我的电脑上输出是8139too,表示网卡驱动模块名是8139too。
4)查找相应模块在配置内核中的选项
$cd /usr/src/linux-headers-2.6.31-16/ 注意这里不是16-generic,因为后者是中的大部分都是前者的链接。
$find -type f -iname "makefile"|xargs grep -i "8139too"
输出是./drivers/net/Makefile:obj-$(CONFIG_8139TOO) +=8139too.o
5)配置内核中的选项
$make menuconfig
然后按下'/‘键,输入搜索内容8139too,即可得到相关的配置选项。
- 配置编译内核(Linux kernel)
- Linux kernel内核编译配置选项详解
- 编译Linux内核(kernel)
- 嵌入式 Linux开发Kernel移植(二)——kernel内核配置和编译
- linux内核编译kernel编译
- 编译你自己的Linux内核(Kernel)
- 编译你自己的Linux内核(Kernel)
- linux内核编译过程及配置说明解释(1)--Kernel Configuration
- linux内核编译过程及配置说明解释(7)--Firmware Drivers,File systems,Kernel hacking
- (转载)编译你自己的Linux内核(Kernel)
- Debian Linux的 kernel(内核)的重新编译
- Ubuntu上编译Android(Linux Kernel)内核源码
- linux kernel 配置与编译
- Linux Kernel 2.6.5 内核编译过程
- Compiling the Linux Kernel(编译内核)
- 内核编译笔记 linux kernel 2.6.30
- linux-2.6.9 kernel 内核成功编译
- linux kernel 学习笔记一 编译内核
- SQL Server Management Studio 的一个bug
- 自然语言理解-自底向上chart句法分析
- C#如何实现无扩展名目录式重写!
- 面向对象设计原则
- 几分钟内可以部署的搜索引擎-searchbox
- 配置编译内核(Linux kernel)
- sfc /scannow命令如何能用虚拟光驱完成修复?
- 在iBatis中加入c3p0数据库连接池
- 定制模拟器SDK
- nutch查询体系
- lucene-链式过滤器ChainedFliter
- js验证表单大全,用JS控制表单提交 ,javascript提交表单,表单提交 所有js判断
- 值得一看的经典
- 小议布尔型变量