Linux 内核学习起步
albcamus <albcamus@>
Last Update : 2007 年 12 月 06 日
1, 编译内核
=========================
获取内核压缩
------------------
在/linux/kernel/,如
ChangeLog-、linux-.{gz|bz2}和 patch-.{gz|bz2}, 你应该下载
linux- 这样的压缩包。
作参考
-------------------------------
安装内核开发包(以 FC8 为例,是 kernel-devel--),
则/lib/modules/<version>/build 文件。
# cd linux--rc3
# cp /lib/modules/-/.config .
配置、编译和安装
-----------------------
配置:
# make menuconfig/gconfig/xconfig/oldconfig/defconfig/allyesconfig/allmodconfig
FYI: 一般用 menuconfig 比较多,如果你喜欢 GUI 风格,也可以选择基于 Qt 的 xconfig 或
基于 Gtk+的 gconfig。
FYI: 可以用 O=</path/to/build>指定编译生成的文件放在哪个目录. 举例来说,
如果我的内核源代码目录是/usr/src/linux-,编译内核时指定了:
make O=/home/arc/build/linux-
那么/lib/modules/ 下的`source'和`build'这两个符号链接就分别指
向了源代码和目标代码目录:
# ls -l /lib/modules/
lrwxrwxrwx 1 root root 21 11-22 13:35 /lib/modules/ -
> /usr/src/linux-
# ls -l /lib/modules/
lrwxrwxrwx 1 root root 28 11-22 13:35 /lib/modules/ ->
/home/arc/build/linux-
编译:
# make
FYI: V=1 /*verbose 模式,把每一部执行的命令都打印出来。
*一个小技巧就是,把标准输出重定向到一个文件中,
*这样以后查找模块之间的依赖关系就很方便了
*/
C=1 /*需要安装 sparse 程序,进行严格的静态 C 语法检查。
*一般开发者会通过它来预防 BUG
*/
安装:
# make modules_install
# make install
FYI : 正常情况下 make install 会根据你机器的配置为你定制 initrd 文件,并更新
文件中的内容。但如果重新引导时发现无法启动,注意手工 mkinitrd。
例如:
# mkinitrd -v –preload –with=ext3 /boot/initrd--
-rc3
其中—preload 指定的模块会在/etc/ 之前加载,而--with 指定的模块会在
这之后加载。
文档
---------
# make htmldocs //你也可以不用 htmldocs 指令 HTML 格式,而指定 pdfdocs 或
//psdocs
# make mandocs //为 kernel API 生成 man 手册
# make installmandocs /*将 kernel API 的手册页安装到 man 程序能找到的
*目录中, 这样就可以 man copy_from_user 了
*/
FYI: 执行 make htmldocs/pdfdocs/psdocs 之后,在 O=指定的目录(如果
Linux内核学习起步 来自淘豆网m.daumloan.com转载请标明出处.