Compile linux kernel source

转载 2007年09月12日 16:17:00
转自http://www.gbunix.com/bbs/index.php
 
Linux编译内核
 
准备工作

通常要运行的第一个命令是:
#cd /usr/src/linux;make mrproper

该命令确保源代码目录下没有不正确的.o文件以及文件的互相依赖

配置

接下来的内核配置过程比较烦琐,但是配置的适当与否与日后Linux的运行直接相关,有必要了解一下一些主要的且经常用到的选项的设置。
配置内核可以根据需要与爱好使用下面命令中的一个:

#make config(基于文本的最为传统的配置界面,不推荐使用)
#make menuconfig(基于文本选单的配置界面,字符终端下推荐使用)
#make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)
#make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)

这三个命令中,make xconfig的界面最为友好,如果你可以使用Xwindow,那么就推荐你使用这个命令.



在繁杂的配置工作完成以后,下面你就可以自己到杯茶耐心等候了。与编译有关的命令有如下几个:
#make dep
#make clean
#make zImage
#make bzImage
#make modules
#make modules_install
#depmod -a

第一个命令make dep实际上读取配置过程生成的配置文件,来创建对应于配置的依赖关系树,从而决定哪些需要编译而那些不需要;
第二命令make clean完成删除前面步骤留下的文件,以避免出现一些错误;
第三个命令make zImage和第四个命令make bzImage实现完全编译内核,二者生成的内核都是使用gzip压缩的,只要使用一个就够了,
它们的区别在于使用make bzImage可以生成大一点的内核,比如在编译2.4.0版本的内核时如果使用make zImage命令,那么就会出现system too big的错误提示。
建议大家使用make bzImage命令。
后面三个命令只有在你进行配置的过程中,在回答Enable loadable module support (CONFIG_MODULES)时选了"Yes"才是必要的,
make modules和make modules_install分别生成相应的模块和把模块拷贝到需要的目录中。
严格说来,第七个命令和编译过程并没有关系,它是生成模块间的依赖关系,这样你启动新内核之后,使用modprobe命令加载模块时就能正确地定位模块。


更新

经过以上的步骤,我们终于得到了新版本的内核。为了能够使用新版本的内核,我们还需要做一些改动:

#cp /usr/src/linux/System.map /boot/System.map-2.4.0test8
#cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.4.0test8

以上这两个文件是我们刚才编译时新生成的。下面修改/boot下的两个链接System.map和vmlinuz,使其指向新内核的文件:

#cd /boot;rm -f System.map vmlinuz
#ln -s vmlinuz-2.4.0test8 vmlinuz
#ln -s System.map-2.4.0test8 System.map

#shutdown -r now

正常启动.您的机器现在就使用你的新内核了.

下面是RH 推荐的编译方式. 注意edit Makefile
老话新说,RedHat 公司 推荐编译内核方法
本文部分取自于RH300(RHCE Rapid Track Course)课本.
本文假定你用的是Redhat 7.2,用grub 管理启动.准备编译7.2 自带的内核
cd /usr/src/linux-2.4
make mrproper
edit Makefile 文件
把EXTRAVERSION= 改成有你特色的文字, 比如:
EXTRAVERSION=-10me
make menuconfig or make xconfig
make dep
make bzImage
make modules
make modules_install
cp System.map /boot/System.map-2.4.7-10me
cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.7-10me
new-kernel-pkg --install --mkinitrd --depmod 2.4.7-10me
 
 
 

Ubuntu 编译kernel 的几种方法

Method 1: 1. Use apt-get source to download the Ubuntu version of the kernel apt-get source linu...
  • CaspianSea
  • CaspianSea
  • 2015年01月22日 21:59
  • 5846

Linux kernel source not configured:missing autoconf.h

Linux kernel source not configured:missing autoconf.h
  • jiazhen
  • jiazhen
  • 2010年07月01日 18:24
  • 4084

Linux kernel compile--linux-3.18.8编译过程

linux-3.18.8内核编译过程
  • Oliverlyn
  • Oliverlyn
  • 2015年02月28日 16:03
  • 1104

Linux kernel source git repositories

Linux kernel source git repositories 1. the official repositories     branch: none     https://www...
  • kangear
  • kangear
  • 2014年12月26日 16:07
  • 1932

CONFIG_AEABI: Use the ARM EABI to compile the kernel

CONFIG_AEABI: Use the ARM EABI to compile the kernel General informations The Linux kernel confi...
  • flymachine
  • flymachine
  • 2012年02月16日 16:05
  • 1506

linux compile source to ko(kernel object) successfully!

source: #include #include #include //模块许可证声明(必须) MODULE_LICENSE("Dual BSD/GPL"); //模块加载函数(必须) sta...
  • xiuye2015
  • xiuye2015
  • 2017年04月08日 18:56
  • 183

Compile Linux Kernel Modules

我正在学习写linux device driver for embedded system.我有一个linux嵌入式设备,也有这个设备的linux源代码。也有cross compiler tool c...
  • e28sean
  • e28sean
  • 2010年04月20日 16:29
  • 1309

LINUX安装网卡驱动时提示找不到.autoconf.h

在fc8的dom0上安装e1000e网卡驱动#make#Linux kernel source not configured: missing autoconf.h 解决方法:在编译xen时未使用ma...
  • zhengtingt108
  • zhengtingt108
  • 2010年05月07日 19:03
  • 1976

How to Compile Linux Kernel from Source to Build Custom Kernel

原文: http://www.thegeekstuff.com/2013/06/compile-linux-kernel/ Linux kernel is the life fo...
  • chj90220
  • chj90220
  • 2013年12月11日 09:10
  • 1066

linux kernel compile

http://www.fengwenxuan.com/rhelinux/1366.html
  • NOHACKCCC
  • NOHACKCCC
  • 2013年11月08日 00:05
  • 661
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Compile linux kernel source
举报原因:
原因补充:

(最多只允许输入30个字)