如何重新编译linux内核

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何重新编译linux内核相关的知识,希望对你有一定的参考价值。

参考技术A 因为一般电脑安装的系统都是Windows,而整个编译过程都需要在Linux环境下实现,所以最好是在虚拟机里安装Linux系统来完成这一过程。我使用的虚拟机是VMware-workstation-full-v7.1.4。
然后,我们需要下载一个较高版本的Linux系统的镜像文件,安装在虚拟机上,作为编译环境。我使用的是ubuntu-11.04-desktop-i386。之所以选择较高版本,是因为它的界面比较方便用户操作。
然后下载一个Linux内核源代码文件,将它保存到虚拟机上新安装的系统中去。并解压到/usr/src目录。我使用的是linux-2.6.36,下载低版本的原因是,小巧轻便,易于编译。
解压命令如下:
bzip2
-d
linux-2.6.36.tar.bz2
tar
-xvf
linux-2.6.36.ta
修改/usr/src/linux-2.6.36/kernel/sys.c文件,在文件末尾增加一个系统调用函数。自行编写一个简单的程序即可,只为测试用。
修改/usr/src/linux-2.6.36/arch/x86/kernel/syscall_table_32.S,为新添加的程序配置系统调用号。
在/usr/src/linux-2.6.36/arch/x86/include/asm/unistd_32.h中配置系统调用表。
下面就是最重要的内核编译与安装:
首先配置编译信息,使其生成适合当前机器的Makefile,输入make
oldconf
ig。
接着还要输入make
menuconfig,在字符界面下进行必要的细微的修改。
然后要经过四步编译过程(直接输入命令即可):
(1)make
bzImage
将内核编译为压缩映像,存储在源码根目录下的“System.map”文件中。
(2)make
modules
编译各个模块。
(3)sudo
make
modules_install
安装模块
(4)sudo
make
install
安装内核
第(2)(3)步等待时间较长,可能需要数个小时,请耐心等待。
无报错的话重启进入GRUB界面,就可以看到新编译的内核了。
按回车键进入我们编译的目标内核中,用关键词搜索查看新增加的系统调用“my
call”是否已在内核中:
编写测试程序,调用新添加的系统调用:
测试成功,说明系统调用添加成功,进而说明内核编译成功!
以上的办法你可以试一下,希望对你有所帮助。

linux如何编译安装???

我的HP笔记本装的是ubuntu9.04,没有声音,想重新安装ALSA看看,已经下载了alsa-driver-1.0.23.tar.bz2、alsa-lib-1.0.23.tar.bz2、和alsa-utils-1.0.23.tar.bz2 三个文件,不过我不会编译安装网上看的教程是  先./configure   再make可是我的怎么不行啊,下面是我终端的信息!lsq@lsq-laptop:~/alsa-driver-1.0.23$ ./configurechecking for gcc... gccchecking for C compiler default output file name... a.outchecking whether the C compiler works... yeschecking whether we are cross compiling... nochecking for suffix of executables... checking for suffix of object files... ochecking whether we are using the GNU C compiler... yeschecking whether gcc accepts -g... yeschecking for gcc option to accept ISO C89... none neededchecking for ranlib... ranlibchecking for a BSD-compatible install... /usr/bin/install -cchecking how to run the C preprocessor... gcc -Echecking for grep that handles long lines and -e... /bin/grepchecking for egrep... /bin/grep -Echecking for ANSI C header files... yeschecking for an ANSI C-conforming const... yeschecking for inline... inlinechecking whether time.h and sys/time.h may both be included... yeschecking whether gcc needs -traditional... nochecking for current directory... /home/lsq/alsa-driver-1.0.23checking cross compile... checking for directory with ALSA kernel sources... ../alsa-kmirrorchecking for directory with kernel source... Please install the package with full kernel sources for your distributionor use --with-kernel=dir option to specify another directory with kernelsources (default is /usr/src/linux).lsq@lsq-laptop:~/alsa-driver-1.0.23$ makemake all-depsmake[1]: 正在进入目录 `/home/lsq/alsa-driver-1.0.23'make[1]: 没有什么可以做的为 `all-deps'。make[1]:正在离开目录 `/home/lsq/alsa-driver-1.0.23'Please, run the configure script as first...lsq@lsq-laptop:~/alsa-driver-1.0.23$  这到底是什么问题?是少安装了什么软件 还是什么原因?本人菜鸟,麻烦说清楚点,谢谢了!高手赶紧冒个泡!!!

参考技术A Please install the package with full kernel sources for your distributionor use --with-kernel=dir option to specify another directory with kernelsources (default is /usr/src/linux)

很明显,你没有安装kernel源代码包。apt-get source linux-image-$(uname -r)
参考技术B 首先得将软件包解压
然后,进入解压的目录 再配置 就是你说./configure
再 make
最后install

以上是关于如何重新编译linux内核的主要内容,如果未能解决你的问题,请参考以下文章

sh dkms linux内核模块在ubuntu上重新编译

自定义配置编译linux内核

编译linux内核问题

linux 重新编译kernel后不能正常启动

编译linux-2.6.18内核出错

关于Linux内核编译中的Makefile