简介
本文介绍了Ubuntu系统下内核源码树构建与安装的方法,构建环境基于Ubuntu 10.04和2.6.32的内核。
构建环境配置
2. 配置源列表,更新源列表的方法参见 如何Ubuntu的源列表(source list)
3. 安装编译工具
在构造和编译内核模块之前,应该具备了正确版本的编译器、模块工具和其它必要的工具,内核文档目录中的Documentation/Changes文件列出了需要的工具版本;在开始构造模块之前,应该需要查看该文件并确保已安装了正确的工具。可以通过下面的命令进行集中安装:
sudo apt-get install kernel-package libncurses5-dev
kernel-package是Debian提供的一个编译Linux内核的一个工具集,安装kernel-package 会同时安装上build-essential、libncurses-dev、linux-source等一系列工具。通过下面的命令,可以查看该软件包的依赖关系:
bob@ubuntu:/usr/src$ apt-cache depends kernel-package
kernel-package
Depends: build-essential
Depends: make
Depends: po-debconf
Depends: gettext
Depends: file
Depends: debianutils
Depends: binutils
Depends: util-linux
Depends: module-init-tools
|Suggests: linux-source
linux-source-2.6.32
Suggests: <kernel-source>
Suggests: e2fsprogs
Suggests: <libncurses-dev>
libncurses5-dev
Suggests: docbook-utils
Suggests: xmlto
Suggests: bzip2
Suggests: <linux-initramfs-tool>
initramfs-tools
|Suggests: grub
Suggests: grub2
Suggests: jfsutils
Suggests: mcelog
Suggests: oprofile
Suggests: pcmciautils
Suggests: ppp
Suggests: procps
Suggests: reiserfsprogs
Suggests: squashfs-tools
Suggests: udev
Suggests: xfsprogs
Suggests: quota
Suggests: btrfs-tools
Recommends: cpio
从依赖关系中,我们可以看到,它包含了内核编译所需的工具。但缺省情况下,apt-get并不安装推荐和建议的软件包。如果你没有修改缺省配置,则需要额外的安装libncurses-dev等工具的操作。
sudo apt-get install libncurses5-dev
libncurses5软件包主要是支持使用menuconfig配置内核。
4. 下载和安装源码包
各个Linux的发布版本在推出他们的产品时,其实已经都附上了内核的源码了。源码路径位于/usr/src/linux-headers-$(uname -r) 目录下。建议从这个发布源码学习内核编译,因为这里的源码中含有发布厂商设定好的预设设定值。这样可以轻易的了解他们是如何选择与核心及模块有关的各项设定项目的参数值,降低编译的难度。在本文中,我们在配置内核时,使用了系统已有的配置文件。
使用apt-cache search linux-source命令可以查看可用的源码包:
bob@ubuntu:/usr/src$ sudo apt-cache search linux-source
linux-source - Linux kernel source with Ubuntu patches
linux-source-2.6.32 - Linux kernel source for version 2.6.32 with Ubuntu patches
使用apt-get install命令来进行源码的下载:
bob@ubuntu:/usr/src$ sudo apt-get install linux-source-2.6.32
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
libqt3-dev
The following NEW packages will be installed:
linux-source-2.6.32
0 upgraded, 1 newly installed, 0 to remove and 105 not upgraded.
Need to get 67.2MB of archives.
After this operation, 67.2MB of additional disk space will be used.
Get:1 http://mirrors.163.com/ubuntu/ lucid-security/main linux-source-2.6.32 2.6.32-74.142 [67.2MB]
......
下载后的源码安装在/usr/src目录下,通过tar命令将