Chinaunix

标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程 [打印本页]

作者: e2agle    时间: 2005-10-24 14:15
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
俗话说:"功夫不负有心人",通过编译Linux内核时才能真正体会到.曾经也失败过无数次,放弃过一段时间编译.最后通过自己不断的实践和在网上收集这方面资料,终于在前不久编译成功了.把我在网上收集的资料和自己编译的过程整理了一下,拿来和大家分享一下,希望能给有这方面需要的同仁以帮助,好让大家少走弯路.
言归正传:
环境:VMware5.0 for windows(在新建虚拟机向导的\"虚拟机磁盘类型\"本人选的是IDE)
内核版本:kernel2.6.13(原内核是字符模式,不包括xwindow模式)
原来的系统是redhat9.0,内核2.4.20-8,编译的内核2.6.13,仅供参考.
共分为四部分:编译前准备->;编译配置->;编译过程->;运行内核的常见问题
一 编译前准备
1)下载一份内核源代码,我下的版本是linux-2.6.13.tar.gz,你可在如下地址下载它或者是更新的版本.
http://www.kernel.org/pub/linux/kernel/v2.6/
2) 下载最新版本的module-init-tools( \"module-init-tools-3.0.tar.gz\" and \"modutils-2.4.21-23.src.rpm\")
http://www.kernel.org/pub/linux/ ... it-tools-3.0.tar.gz
http://www.kernel.org/pub/linux/ ... s-2.4.21-23.src.rpm
3)安装modutils-2.4.21-23.src.rpm. 你可能会看到\"user rusty and group rusty not existing\"的警告. 没关系,你只需强制安装就是了.如果你不对Redhat 9和Redhat 8做这几步, 你将会在\"make modules_install\"这一步时出现问题.
#rpm -e --nodeps modutils (强行卸载原有的modutilsRPM包)
#rpm -ivh modutils-2.4.21-23.src.rpm (把源代码包安装到了/usr/src/redhat目录下)
#cd /usr/src/redhat/SPECS (进入规范文件目录下)
#rpmbuild --bb modutils.spec (生成二进制的RPM包)
#cd ../RPMS/i386 (转入刚生成的二进制的RPM包所在位置)
#rpm -ivh modutils*.rpm (刚生成两个[modutils-2.4.21-23.i386.rpm与modutils-debuginfo-2.4.21.23.i386.rpm]二进制的RPM包,一起安装吧!)
4)安装module-init-tools. 它会替代depmod [/sbin/depmod]和其他工具.
tar -zxvf module-init-tools-3.0.tar.gz
cd module-init-tools-3.0
./configure --prefix=/sbin
make
make install
./generate-modprobe.conf /etc/modprobe.conf
5)解压缩内核源代码.把下载的源代码包放到目录/usr/src下,然后
cd /usr/src
tar –zvxf linux-2.6.13.tar.gz
ln –s linux-2.6.13 linux
cd linux
6)make mrproper
该命令确保源代码目录下没有不正确的.o文件以及文件的互相依赖。由于我们使用刚下载的完整的
源程序包进行编译,所以本步可以省略。而如果你多次使用了这些源程序编译内核,那么最好要先运行
一下这个命令
7)
*************************************************************
编译linux2.6.14的仁兄们注意了,如果是按本人的帖子上的步骤,请将以上第7)步
去掉,否则运行make menuconfig会出现以下错误
HOSTCC  scripts/basic/split-include
In file included from /usr/include/linux/errno.h:4,
                 from /usr/include/bits/errno.h:25,
                 from /usr/include/errno.h:36,
                 from scripts/basic/split-include.c:26:
/usr/include/asm/errno.h:4:31: asm-generic/errno.h: 没有那个文件或目录
make[1]: *** [scripts/basic/split-include] Error 1
make: *** [scripts_basic] Error 2
*************************************************************

?确保/usr/include/目录下的asm、linux和scsi等链接是指向要升级的内核源代码的。它们分别链向源代码目录下的真正的、该计算机体系结构(对于PC机来说,使用的体系结构是i386)所需要的真正的
include子目录。如:asm指向/usr/src/linux/include/asm-i386等。若没有这些链接,就需要手工创建
,按照下面的步骤进行:
# cd /usr/include/
# rm -r asm linux scsi
# ln -s /usr/src/linux/include/asm-i386 asm
# ln -s /usr/src/linux/include/linux linux
# ln -s /usr/src/linux/include/scsi scsi
这是配置非常重要的一部分。删除掉/usr/include下的asm、linux和scsi链接后,再创建新的链接
指向新内核源代码目录下的同名的目录。这些头文件目录包含着保证内核在系统上正确编译所需要的重
要的头文件。现在你应该明白为什么我们上面又在/usr/src下\"多余\"地创建了个名为linux的链接了吧?



二 编译配置
在这一部分涉及几个重要模块的配置请,特别注意.一般用\"make menuconfig\"命令来配置内核.
进入图形模式
#startx
接下来的内核配置过程比较烦琐,但是配置的适当与否与日后Linux的运行直接相关,有必要了解一下一
些主要的且经常用到的选项的设置。
??配置内核可以根据需要与爱好使用下面命令中的一个:

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

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

令。

??如果你不能使用Xwindow,那么就使用make menuconfig好了。界面虽然比上面一个差点,总比make

config的要好多了。

??选择相应的配置时,有三种选择,它们分别代表的含义如下:

  Y--将该功能编译进内核
  N--不将该功能编译进内核,也不编成模块
  M--将该功能编译成可以在需要时动态插入到内核中的模块

??如果使用的是make xconfig,使用鼠标就可以选择对应的选项。如果使用的是make menuconfig,则

需要使用空格键进行选取。你会发现在每一个选项前都有个括号, 但有的是中括号有的是尖括号,还有

一种圆括号。 用空格键选择时可以发现,中括号里要么是空,要么是\"*\",而尖括号里可以是空,\"*\"和

\"M\"这表示前者对应的项要么不要,要么编译到内核里;后者则多一样选择,可以编译成模块。而圆括号

的内容是要你在所提供的几个选项中选择一项。

??在编译内核的过程中,最烦杂的事情就是这步配置工作了,很多新手都不清楚到底该如何选取这些

选项。实际上在配置时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。选

择的原则是将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小

内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要

选;与内核关心紧密而且经常使用的部分功能代码直接编译到内核中。下面就让我们对常用的选项分别

加以介绍。


8.1. Code maturity level options
??代码成熟等级。此处只有一项:prompt for development and/or incomplete code/drivers,如果

你要试验现在仍处于实验阶段的功能,比如khttpd、IPv6等,就必须把该项选择为Y了;否则可以把它选

择为N。

??8.2. Loadable module support
??对模块的支持。这里面有三项:

??Enable loadable module support:除非你准备把所有需要的内容都编译到内核里面,否则该项应

该是必选的。
??Set version information on all module symbols:可以不选它。
??Kernel module loader:让内核在启动时有自己装入必需模块的能力,建议选上。
8.3. Processor type and features
??CPU类型。内容蛮多的,不一一介绍了,有关的几个如下:

??Processor family:根据你自己的情况选择CPU类型。
??High Memory Support:大容量内存的支持。可以支持到4G、64G,一般可以不选。
??Math emulation:协处理器仿真。协处理器是在386时代的宠儿,现在早已不用了。
??MTTR support:MTTR支持。可不选。
??Symmetric multi-processing support:对称多处理支持。除非你富到有多个CPU,否则就不用选了



??8.4. General setup
??这里是对最普通的一些属性进行设置。这部分内容非常多,一般使用缺省设置就可以了。下面介绍

一下经常使用的一些选项:

??Networking support:网络支持。必须,没有网卡也建议你选上。
??PCI support:PCI支持。如果使用了PCI的卡,当然必选。
??PCI access mode:PCI存取模式。可供选择的有BIOS、Direct和Any,选Any吧。
??Support for hot-pluggabel devices:热插拔设备支持。支持的不是太好,可不选。
??PCMCIA/CardBus support:PCMCIA/CardBus支持。有PCMCIA就必选了。
??System V IPC
??BSD Process Accounting
??Sysctl support:以上三项是有关进程处理/IPC调用的,主要就是System V和BSD两种风格。如果你

不是使用BSD,就按照缺省吧。
??Power Management support:电源管理支持。
??Advanced Power Management BIOS support:高级电源管理BIOD支持。

??8.5. Memory Technology Device(MTD)
??MTD设备支持。可不选。

??8.6. Parallel port support
??串口支持。如果不打算使用串口,就别选了。

??8.7. Plug and Play configuration
??即插即用支持。虽然Linux对即插即用目前支持的不如Windows好,但是还是选上吧,这样你可以拔

下鼠标之类的体验一下Linux下即插即用的感觉。

??8.8. Block devices
??块设备支持。这个就得针对自己的情况来选了,简单说明一下吧:

??Normal PC floppy disk support:普通PC软盘支持。这个应该必选。
??XT hard disk support:
??Compaq SMART2 support:
??Mulex DAC960/DAC1100 PCI RAID Controller support:RAID镜像用的。
??Loopback device support:
??Network block device support:网络块设备支持。如果想访问网上邻居的东西,就选上。
??Logical volume manager(LVM)support:逻辑卷管理支持。
??Multiple devices driver support:多设备驱动支持。
??RAM disk support:RAM盘支持。

??8.9. Networking options
??网络选项。这里配置的是网络协议。内容太多了,不一一介绍了,自己看吧,如果你对网络协议有

所了解的话,应该可以看懂的。如果懒得看,使用缺省选项(肯定要选中TCP/IP networking哦)就可以

了。让我们看看,TCP/IP、ATM、IPX、DECnet、Appletalk……支持的协议好多哦,IPv6也支持了,Qos

and/or fair queueing(服务质量公平调度)也支持了,还有kHTTPd,不过这些都还在实验阶段。

??8.10. Telephony Support
??电话支持。这个是什么东东?让我查查帮助,原来是Linux下可以支持电话卡,这样你就可以在IP上

使用普通的电话提供语音服务了。记住,电话卡可和modem没有任何关系哦。

??8.11. ATA/IDE/MFM/RLL support
??这个是有关各种接口的硬盘/光驱/磁带/软盘支持的,内容太多了,使用缺省的选项吧,如果你使用

了比较特殊的设备,比如PCMCIA等,就到里面自己找相应的选项吧。

,比如PCMCIA等,就到里面自己找相应的选项吧。

8.12. SCSI support
??SCSI设备的支持。我没有SCSI的设备,所以根本就不用选,如果你用了SCSI的硬盘/光驱/磁带等设

备,自己找好了。

??8.13. IEEE 1394(FireWire)support
??这个是什么?低版本的没有见过,看看帮助再说。原来是要Fireware硬件来提高串行总线的性能,

我没有,不选了。

??8.14. I2O device support
??这个也不清楚,帮助里说是这个需要I2O接口适配器才能支持的,在智能Input/Output(I2O)体系

接口中使用,又是要硬件,不选了。

??8.15. Network device support
??网络设备支持。上面选好协议了,现在该选设备了,可想而知,内容肯定多得很。还好还好,里面

大概分类了,有ARCnet设备、Ethernet(10 or 100 Mbit)、Ethernet(1000Mbit)、Wireless LAN

(non-hamradio)、Token Ring device、Wan interfaces、PCMCIA network device support几大类。

我用的是10/100M的以太网,看来只需要选则这个了。还是10/100M的以太网设备熟悉,内容虽然多,一

眼就可以看到我所用的RealTeck RTL-8139 PCI Fast Ethernet Adapter support,为了免得麻烦,编译

到内核里面好了,不选M了,选Y。耐心点,一般说来你都能找到自己用的网卡。如果没有,你只好自己

到厂商那里去要驱动了。

??8.16. Amateur Radio support
??又一个不懂的,应该是配置业余无线广播的吧,没有,不要了。

??8.17. IrDA(infrared)support
??这个要红外支持,免了。

??8.18. ISDN subsystem
??如果你使用ISDN上网,这个就必不可少了。自己看着办好了。

??8.19. Old CD-ROM drivers(not SCSI、not IDE)
??做的可真周到,原来那些非SCSI/IDE口的光驱谁还在用啊,自己选吧,反正我是用的IDE的CD-ROM,

不选这个。

??8.20. Character devices
??字符设备。这个内容又太多了,先使用缺省设置,需要的话自己就修改。把大类介绍一下吧:

??I2C support:I2C是Philips极力推动的微控制应用中使用的低速串行总线协议。如果你要选择下面

的Video For Linux,该项必选。
??Mice:鼠标。现在可以支持总线、串口、PS/2、C&T 82C710 mouse port、PC110 digitizer pad,

自己根据需要选择。
??Joysticks:手柄。即使在Linux下把手柄驱动起来意义也不是太大,游戏太少了。
??Watchdog Cards:虽然称为Cards,这个可以用纯软件来实现,当然也有硬件的。如果你把这个选中

,那么就会在你的/dev下创建一个名为watchdog的文件,它可以记录你的系统的运行情况,一直到系统

重新启动的1分钟左右。有了这个文件,你就可以恢复系统到重启前的状态了。
??Video For Linux:支持有关的音频/视频卡。
??Ftape, the floppy tape device driver:
??PCMCIA character device support:

??8.21. File systems
??文件系统。内容又太多了,老法子,在缺省选项的基础上进行修改。介绍以下几项:

??Quota support:Quota可以限制每个用户可以使用的硬盘空间的上限,在多用户共同使用一台主机

的情况中十分有效。
??DOS FAT fs support:DOS FAT文件格式的支持,可以支持FAT16、FAT32。
??ISO 9660 CD-ROM file system support:光盘使用的就是ISO 9660的文件格式。
??NTFS file system support:ntfs是NT使用的文件格式。
??/proc file system support:/proc文件系统是Linux提供给用户和系统进行交互的通道,建议选上

,否则有些功能没法正确执行。

??还有另外三个大类都规到这儿了:Network File Systems(网络文件系统)、Partition Types(分

区类型)、Native Language Support(本地语言支持)。值得一提的是Network File Systems里面的两

种:NFS和SMB分别是Linux和Windows相互以网络邻居的形式访问对方所使用的文件系统,根据需要加以

选择。

??8.22. Console drivers
??控制台驱动。一般使用VGA text console就可以了,标准的80*25的文本控制台。

??8.23. Sound
??声卡驱动。如果你能在列表中找到声卡驱动那自然最好,否则就试试OSS了。

??8.24. USB supprot
??USB支持。很多USB设备,比如鼠标、调制解调器、打印机、扫描仪等,在Linux都可以得到支持,根

据需要自行选择。

??8.25. Kernel hacking
??配置了这个,即使在系统崩溃时,你也可以进行一定的工作了。普通用户是用不着这个功能的。

??总算配置完了,现在存盘退出,当然你也可以把现在的配置文件保存起来,这样下次再配置的时候就省力气了。

三 编译过程??
在繁杂的配置工作完成以后,下面你就可以自己到杯茶耐心等候了。与编译有关的命令有如下几个:
#make clean        --删除不必要的模块和文件 
#make bzImage       --开始编译系统内核
#make modules       --开始编译外挂模块
#make modules_install   --安装编译完成的模块

下面是生成配置
#make install
这里如果出现 \"NO MODULE BUSLOGIC FOUND\",解决方法
第1种方法:
编辑文件 /etc/modules.conf
将\"alias scsi hostadapter BusLogic\"这行注释掉,
即#alias scsi hostadapter BusLogic
保存 /etc/modules.conf,退出
# make install
第2种方法:
手动添加启动项
#depmod -a
#cp /usr/src/linux/System.map /boot/System.map-2.6.13
#cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.6.13

四 运行内核的常见问题
1. 编译完后不启动,报以下错误:
VFS: Cannot open root device \"LABEL=/\" or 0.0
>; Please append a correct \"root=\" boot option
>; kernel panic: VFS: Unable to mount root fs
如果是上面的错误,请确认你把如下选项配置进kernel
(1) 如果/使用了EXT3 文件系统,在内核中要加入EXT3的支持
(2)如果是IDE的硬盘必须要IDE的驱动加载
(3)在block devices--RAM disk support 中选取 Initial disk(initrd) support,有时在mount / 之前
需要加载一些模块,这些modules 被做到一个镜像文件中--kernel-ver.img 中,这个文件位于/boot.举个例子,如果EXT3 的是以模块加载的话,在mount / 时就需要用到它,所以系统就在initrd.kernel-ver.img 中寻找它.
使用命令 mkinitrd initrd.kernel-ver.img kernel-ver 可以生成initrd.kernel-ver.img

2. 系统启动过程中加载iptables时报错的处理方法
修改/etc/rc.sysinit文件:
将其中所有的/proc/ksyms替换为/proc/kallsyms。
将其中所有的/proc/sys/kernel/modprobe 替换为/sbin/modprobe
在文件中mount -f /proc这一句下添加mount -f /sys
在文件中的action $\"Mounting proc filesystem: \" mount -n -t proc /proc /proc 这一句的下面添加 action $\"Mounting sysfs filesystem: \" mount -n -t sysfs /sys /sys

修改/etc/fstab文件:
加入none /sys sysfs defaults 0 0

修改/etc/init.d/halt文件:
将halt_get_remaining函数内的awk \'$2 ~ /^\\/$|^\\/proc|^\\/dev/{next}改为
awk \'$2 ~ /^\\/$|^\\/proc|^\\/sys|^\\/dev/{next}

创建目录:
mkdir /sys

然后重启机器,模块的问题应该解决的差不多了。

到这里编译工作顺利结束了.以上是本人在编译内核过程中遇到的问题以及解决方法,有些问题没有遇到,就没有写进去,希望大家给予补充指正,充分弘扬Linux精神!!!

3.RPM问题
进入编译好的内核后,与RPM相关的命令有些不能使用,并出现下列错误:
rpmdb: unable to join the environment
error: db4 error(11) from dbenv->open: Resource temporarily unavailable
error: cannot open Packages index using db3 - Resource temporarily unavailable (11)
error: cannot open Packages database in /var/lib/rpm
no packages
解决方法是执行“export LD_ASSUME_KERNEL=2.2.25”命令,也可以将其写入/etc/bashrc。


注本文引用文章:
(1)http://www.linuxfans.org/nuke/mo ... ewtopic&t=80658
(2)http://www.icwin.net/ShowArtitle.asp?art_id=10&cat_id=16
(3)http://www.linuxfans.org/nuke/mo ... topic&p=4409655

[ 本帖最后由 e2agle 于 2006-12-13 09:56 编辑 ]
作者: platinum    时间: 2005-10-25 08:25
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
其实“在 VMWARE 里编”就好比说“你们都在 P4 上编,我在自己家的 P2 上编”意思差不多
精神可嘉,还是鼓励一下
另外
      Y-将该功能编译进内核
  N-不将该功能编译进内核
  M-将该功能编译成可以在需要时动态插入到内核中的模块

这里 N 说的不好,应该说
      Y-将该功能编译进内核
  N-不将该功能编译进内核,也不编成模块
  M-将该功能编译成可以在需要时动态插入到内核中的模块

作者: e2agle    时间: 2005-10-25 10:07
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
这样的帖子是有,不过我用过都没有成功过,这个帖子是我个人成功编译的过程!
作者: platinum    时间: 2005-10-25 10:21
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
[quote]原帖由 \"e2agle\"]这样的帖子是有,不过我用过都没有成功过,这个帖子是我个人成功编译的过程![/quote 发表:

我承认是你个人成功编译的过程,但不代表人人成功了就都要如何如何
那样的话,中国 13 亿人。。。。。
作者: 泥鳅    时间: 2005-10-25 10:28
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
问一下,,,,用make oldconfig是不是最低级的编译方法啊?


我是新手....能否详细解释一下...
作者: 越走越远    时间: 2005-10-25 11:00
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
把原内核下的.config文件拷贝一份到新内核源码下,加载进去,make menuconfig 修改几处想用的模块就可以,不是很麻烦的。个人认为..
作者: e2agle    时间: 2005-10-25 11:06
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
to 枫影谁用了:这位仁兄,我发这个帖子的目的,不是像你想的那样\"如果你认为你成功了你这个贴就应该怎么样怎么样\".我发这个帖子的目的一开始就说的很清楚了\"希望能给有这方面需要的同仁以帮助,好让大家少走弯路.\",同时也想告诉大家不要轻易放弃,只要有目标,只要不懈的努力,就一定能成功,相信自己!!!
作者: e2agle    时间: 2005-10-25 11:56
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
to platinum:你感觉我发这个帖子是为了炫耀,你就错了.你的这种态度是十分消极的!
作者: 枫影谁用了    时间: 2005-10-25 12:02
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
[quote]原帖由 \"e2agle\"]to platinum:你感觉我发这个帖子是为了炫耀,你就错了.如果违反了你们什么规定,我可以把这个帖子del了,从此我也不会在关注这个BBS.[/quote 发表:


兄弟火气不小嘛!
http://www.blogcn.com/user42/softdreamflying/index.html
等很多贴。。。
我只是想说什么原创不原创,什么加精华。。不要太在意!你看上面的贴,是不是比你更详尽。

你能把这些东西写出来(那怕大部份是copy),那怕披着马甲上线,毕竟 你成功了,也很值得鼓励。
作者: e2agle    时间: 2005-10-25 17:00
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
to 枫影谁用了:我最不喜欢在我面前呜呜圈圈的人,有事说事!
作者: e2agle    时间: 2005-10-25 17:04
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
to 泥鳅:make oldconfig是低级的编译方法,现在用的很少了.
作者: 枫影谁用了    时间: 2005-10-25 17:29
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
[quote]原帖由 \"e2agle\"]to 泥鳅:make oldconfig是低级的编译方法,现在用的很少了.[/quote 发表:


那么你错了!如果在同一个版本的内核里编译内核,这个是我们用得最多的!因为方便
作者: e2agle    时间: 2005-10-25 17:33
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
to 枫影谁用了:像你这样善意的批评,我接受!!!
谢了!!!
作者: e2agle    时间: 2005-10-25 17:35
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
to 泥鳅:如果是前一位仁兄说的对的话,我就误导你了,在这里说声sorry!
作者: me09    时间: 2005-10-25 18:47
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
非常感谢!发贴的兄弟!谢谢!
作者: e2agle    时间: 2005-10-26 09:52
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
不客气,大家一同进步!!
作者: ljj1998    时间: 2005-10-26 10:21
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
老内核要干净的删掉怎么做?
我是改grub.conf
删zbimage
map
然后呢?模块/src还有ini...什么的怎么办?请指教
作者: db1982fz    时间: 2005-10-26 10:27
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
to e2agle ,非常感谢你,那些高手说什么你不要在意啦,关键是你的帖子给象我这样的菜鸟很大的帮助,这就足够了呀,让所谓的高手牛去吧,总会有人支持你,感谢你的!!!好兄弟!!
作者: e2agle    时间: 2005-10-26 10:39
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
我建议还是保留老内核,这样如果新内核有什么问题,无法启动,老内核还可以正常启动!!!
如果你非要把老内核del了,那就将/boot下的  vmlinuz-2.4.20-8,
System.map-2.4.20-8,initrd-2.4.20-8.img删除,再将/boot/grub/menu.lst中的以下部分:
title Red Hat Linux (2.4.20-
        root (hd0,0)
        kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
        initrd /initrd-2.4.20-8.img
删除,就ok了!
(这里以老版本2.4.20-8为例)
作者: e2agle    时间: 2005-10-26 10:43
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
to db1982fz:能帮到你,我感到很欣慰,谢谢你的支持,我们共同进步!
作者: ljj1998    时间: 2005-10-26 10:45
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
噢,谢谢,我的/BOOT快不够了才想删的.那模块和原程序呢?不管他们了?
作者: 枫影谁用了    时间: 2005-10-26 11:09
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
[quote]原帖由 \"e2agle\"]to 枫影谁用了:我最不喜欢在我面前呜呜圈圈的人,有事说事![/quote 发表:



唉啊!!还不听人说!



还是前面说的那句话,自己学到了东西,帮助 了别人最重要!你现在更多的是自我检讨。

后面的话本来不想说:如果算精华,个人认为,这贴算不上精华。原因我在前面的回贴已指出!不再回此贴啦。。你们慢慢玩...
作者: e2agle    时间: 2005-10-26 11:36
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
事实善于凶辩,毕竟实践是检验真理的唯一标准吗!
作者: e2agle    时间: 2005-10-26 11:39
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
to ljj1998:这位仁兄,本人还真没有考虚这个问题,不好意思!
作者: mrlau    时间: 2005-10-26 12:18
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
还是蛮不错的 感觉前面的同志把话题都扯远了 在这里 我们注重的是技术 ^_^
作者: e2agle    时间: 2005-10-26 12:26
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
本人同意楼上仁兄的观点!!!
把"注重的是技术"放在第一位!
作者: e2agle    时间: 2005-10-26 12:35
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
楼下的仁兄,在scsi模式下我还有编译成功的记录!
作者: stlaw    时间: 2005-10-26 12:57
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
曾在vmware4。5的环境下升级失败,分析原因可能和当初建立系统选择scsi有关,不知是否有人在vmware+scsi的环境下成功过。
作者: degang_x    时间: 2005-10-28 11:16
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
我的内核编译成功,发贴示谢!
作者: e2agle    时间: 2005-10-28 11:48
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
to degang_x :不客气,互相帮助!!!
作者: platinum    时间: 2005-10-28 12:27
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
三 编译过程??
在繁杂的配置工作完成以后,下面你就可以自己到杯茶耐心等候了。与编译有关的命令有如下几个

#make dep        --链接程序代码与函数库.
#make clean       --删除不必要的模块和文件.
#make bzImage      --开始编译系统内核
#make modules      --开始编译外挂模块
#make modules_install  --安装编译完成的模块

2.6 的内核编译不是这样的,至少 make dep 这步不需要,而且有明确的提示说“不需要”


第三个命令make zImage和第四个命令make bzImage实现完全编译内核

上面没有 make zImage 这个命令

另外,文中你说有 7 个命令,而你只列出了 5 个
作者: e2agle    时间: 2005-10-28 12:49
标题: 在VMware5.0环境下编译内核(kernel2.6.13)全过程
to platinum :谢谢你再一次提出宝贵建议!
我会改进的!
作者: lijietz    时间: 2005-11-08 11:44
呵呵。早上try一下。。
作者: e2agle    时间: 2005-11-09 10:38
to lijietz:祝你成功!
作者: e2agle    时间: 2005-11-10 14:47
to 泥鳅:make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)
作者: zhaocz    时间: 2005-11-12 13:33
支持原创劳动,这样的贴子应该收藏了,谢谢
作者: phpman    时间: 2005-11-13 20:24
呵呵,去年2。6内核出来的时候好多人都编了,哈哈,菜鸟偶也花3个通宵弄过去了。
作者: e2agle    时间: 2005-11-18 13:02
好的,希望这个帖子能帮到你!
作者: Flying168168    时间: 2005-11-24 15:46
标题: 绝妙好文。
绝妙好文。困扰多时的问题解决了。
谢谢兄弟们
作者: 龙鸽    时间: 2005-11-28 10:06
很有代表性,感谢分享!
作者: 坤义    时间: 2005-11-30 08:42
原帖由 e2agle 于 2005-10-24 14:15 发表
内核版本:kernel2.6.16(原内核是字符模式,不包括xwindow模式)
原来的系统是redhat9.0,内核2.4.20-8,编译的内核2.6.13,仅供参考.  



为什么有三个内核版本啊??不明白
作者: platinum    时间: 2005-11-30 09:21
2005-11-29 刚出内核 2.6.15-rc3
哪来的 2.6.16 啊?!
作者: e2agle    时间: 2005-11-30 10:38
标题: 勘误!!!
kernel2.6.16(原内核是字符模式,不包括xwindow模式)
应改为
kernel2.6.13(原内核是字符模式,不包括xwindow模式)

多谢各位指点!!!
作者: e2agle    时间: 2005-12-01 10:46
to Flying168168 and 龙鸽:不客气! 谢谢各位的支持!
作者: duriantang    时间: 2005-12-03 15:20
我...
#make menuconfig
#make
#make modules && make modules_install
#cp arch/i386/boot/bzImage /boot/kernel-2.6.xx
#cp .config /boot/config-2.6.xx
其实做服务器连make modules这步也可以不要
作者: e2agle    时间: 2005-12-06 15:42
to duriantang:是的,老兄说得是另一种方法!
作者: flf21    时间: 2005-12-12 17:00
不错,这需要很大的耐心啊!!
作者: 可观    时间: 2005-12-13 15:17
郁闷呀。。。。。。,我的怎么就没有成功。


  1. make menuconfig
  2.   HOSTCC  scripts/basic/split-include
  3. In file included from /usr/include/linux/errno.h:4,
  4.                  from /usr/include/bits/errno.h:25,
  5.                  from /usr/include/errno.h:36,
  6.                  from scripts/basic/split-include.c:26:
  7. /usr/include/asm/errno.h:4:31: asm-generic/errno.h: 没有那个文件或目录
  8. make[1]: *** [scripts/basic/split-include] Error 1
  9. make: *** [scripts_basic] Error 2
复制代码


还望高人指点
作者: 可观    时间: 2005-12-13 17:52
上面的问题解决了,是一个路径的问题。初次不要见笑
手动改了两个文件把原有的路径改成绝对路径了
vi /usr/include/asm/errno.h

  1. #ifndef _I386_ERRNO_H
  2. #define _I386_ERRNO_H

  3. #include <asm-generic/errno.h>改成我的路径</usr/src/linux/include/asm-generic/errno.h>

  4. #endif
复制代码


再改一下这个文件
vi /usr/src/linux/include/asm-generic/errno.h

  1. ifndef _ASM_GENERIC_ERRNO_H
  2. #define _ASM_GENERIC_ERRNO_H

  3. #include <asm-generic/errno-base.h>改成我的路径</usr/src/linux/include/asm-generic/errno-base.h>
复制代码


这样以后就可能成功运行make menuconfig了。不知道下面会不会有其它的问题,先往下走吧

不知为什么我的要改路径,前面的兄弟好像都没有改,具体问题具体对待吧。继续。。。。。。
作者: e2agle    时间: 2005-12-20 17:25
to 可观:一般情况下,按默认设置的路径就可以.
作者: inhell    时间: 2005-12-20 20:47
过来人总是这样教育新人吗 有意思啊
作者: huxiao45    时间: 2005-12-20 23:36
楼上这样可以吗?像2。4和2。6的高版本,如2。6。14这样的好多选技差了不少,不知道可不可以
有机会一试!~
作者: e2agle    时间: 2005-12-21 09:56
楼上两位仁兄,我只是针对可观的路径问题说的,可没有说其他的所有问题都按默认设置呀!!!
作者: leosword    时间: 2005-12-21 10:37
感觉那些高手气量太狭小了,楼主的工作做得不错,人家也没炫耀什么,就被一顿狂批。支持鼓励一下总是应该的吧。
作者: e2agle    时间: 2005-12-21 12:05
标题: 郑重声明! 编译linux2.6.14的仁兄们注意了!!!
编译linux2.6.14的仁兄们注意了,如果是按本人的帖子上的步骤,请将以下
?"确保/usr/include/目录下的asm、linux和scsi等链接是指向要升级的内核源代码的。它们分别链向源代码目录下的真正的、该计算机体系结构(对于PC机来说,使用的体系结构是i386)所需要的真正的
include子目录。如:asm指向/usr/src/linux/include/asm-i386等。若没有这些链接,就需要手工创建
,按照下面的步骤进行:
# cd /usr/include/
# rm -r asm linux scsi
# ln -s /usr/src/linux/include/asm-i386 asm
# ln -s /usr/src/linux/include/linux linux
# ln -s /usr/src/linux/include/scsi scsi
这是配置非常重要的一部分。删除掉/usr/include下的asm、linux和scsi链接后,再创建新的链接
指向新内核源代码目录下的同名的目录。这些头文件目录包含着保证内核在系统上正确编译所需要的重
要的头文件。现在你应该明白为什么我们上面又在/usr/src下\"多余\"地创建了个名为linux的链接了吧?"
文字去掉,否则运行make menuconfig会出现以下错误
HOSTCC  scripts/basic/split-include
In file included from /usr/include/linux/errno.h:4,
                 from /usr/include/bits/errno.h:25,
                 from /usr/include/errno.h:36,
                 from scripts/basic/split-include.c:26:
/usr/include/asm/errno.h:4:31: asm-generic/errno.h: 没有那个文件或目录
make[1]: *** [scripts/basic/split-include] Error 1
make: *** [scripts_basic] Error 2


在这里多谢inhel指出!
作者: jsb2841    时间: 2005-12-22 10:42
老兄,我按照你的方法在AS4上升级内核,第一步安装modutils-2.4.21-23.src.rpm 进行到#rpmbuild --bb modutils.spec (生成二进制的RPM包)时出错,生不成2进制的包,还提示以下错误:
make[1]: *** [dep] Error 1
make[1]: Leaving directory `/usr/src/redhat/BUILD/modutils-2.4.21/util\'
make: *** [dep] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.22614 (%build)


RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.22614 (%build)
怎么会事呀?
还有我按照你的提示进行以下操作后:
?确保/usr/include/目录下的asm、linux和scsi等链接是指向要升级的内核源代码的。它们分别链向源代码目录下的真正的、该计算机体系结构(对于PC机来说,使用的体系结构是i386)所需要的真正的
include子目录。如:asm指向/usr/src/linux/include/asm-i386等。若没有这些链接,就需要手工创建
,按照下面的步骤进行:
# cd /usr/include/
# rm -r asm linux scsi
# ln -s /usr/src/linux/include/asm-i386 asm
# ln -s /usr/src/linux/include/linux linux
# ln -s /usr/src/linux/include/scsi scsi
就无法在运行make menuconfig命令了,提示:
  HOSTCC  scripts/basic/split-include
In file included from /usr/include/linux/errno.h:4,
                 from /usr/include/bits/errno.h:25,
                 from /usr/include/errno.h:36,
                 from scripts/basic/split-include.c:26:
/usr/include/asm/errno.h:4:31: asm-generic/errno.h: No such file or directory
make[1]: *** [scripts/basic/split-include] Error 1
make: *** [scripts_basic] Error 2
这又是怎么会事?
安装module-init-tools-3.0.tar.gz 正常.
作者: e2agle    时间: 2005-12-24 10:20
楼上这位仁兄,说声抱歉,我是在Red Hat 9.0上编译成功的,至于在AS4上我到没试过.
我不知道AS4上的modutils的版本是多少,如果高于modutils-2.4.21-23.src.rpm这个版本,就没有必要安装其了.至于第二个问题,我在Red Hat 9.0上编译linux2.6.13是需要的,在Red Hat 9.0上编译linux2.6.14.*的时候如果加上这一步,就会出现你看到的提示.这一点我在67楼声名了.
作者: epingnet    时间: 2005-12-27 00:05
原帖由 inhell 于 2005-12-20 20:47 发表
过来人总是这样教育新人吗 有意思啊


唉,这世道真是叫人心寒
作者: hongzjx    时间: 2005-12-30 10:31
原创是值得鼓励的
作者: wqmmmmm    时间: 2005-12-30 11:38
原帖由 枫影谁用了 于 2005-10-25 10:44 发表
[quote]原帖由 \"e2agle\"]这样的帖子是有,不过我用过都没有成功过,这个帖子是我个人成功编译的过程![/quote 发表:


你用过没有成功不能说明别人的贴子不行!可能是你忽略了什么,又可能是你们 ...



你这么说别人是想炫耀你看帖很多吗?别人写出来分享难道还有错。。
你这么牛没见你写出来给别人分享呀
我没有看到别人要求加精的说法呀。。。又一个所谓的牛呀。。。
作者: wqmmmmm    时间: 2005-12-30 11:42
原帖由 platinum 于 2005-10-25 10:21 发表
[quote]原帖由 \"e2agle\"]这样的帖子是有,不过我用过都没有成功过,这个帖子是我个人成功编译的过程![/quote 发表:

我承认是你个人成功编译的过程,但不代表人人成功了就都要如何如何
那样的话 ...



我真搞不懂,如果这个帖子对你来说没什么意义,你也犯不着这么说呀,别人费了一番力气编译内核成功了,写点东西,觉得可以让其他人少走弯路,这值得你着什么急呀。
作者: jsb2841    时间: 2005-12-30 14:36
根据这个帖子这两天在SA4上做了一下实验,把内核用2.6.9升级到2.6.11,实验结果还不错,升级成功.
作者: e2agle    时间: 2006-01-01 10:31
多谢各位的理解与支持!
祝大家元旦快乐!
作者: teffguo    时间: 2006-01-06 01:27
在rhel as 4上试了一下,没有成功
再继续
先谢谢e2agle的文章
作者: teffguo    时间: 2006-01-06 01:59
标题: enforcing mode requested but no policy loaded. halting now
enforcing mode requested but no policy loaded. halting now
kernel panic - not syncing:Attempted to kill init!

vi /etc/selinux/config
#change SELINUX=disabled
#reboot your system
作者: teffguo    时间: 2006-01-06 02:00
标题: 感谢
谢谢大家
成功编译了第一次

出现过问题,已给出解决方案
作者: e2agle    时间: 2006-01-08 10:19
to  teffguo:谢谢你给出的解决方案!!!
作者: jeffshia    时间: 2006-01-08 10:35
呵呵,费这么大劲啊,精神可嘉!
作者: mq110    时间: 2006-01-08 11:25
采用LZ 的方法 编译内核 从2.6.9 到 2.6.15
# cd /usr/include/
# rm -r asm linux scsi
# ln -s /usr/src/linux/include/asm-i386 asm
# ln -s /usr/src/linux/include/linux linux
# ln -s /usr/src/linux/include/scsi scsi

发现如下问题. 在make menuconfig 的时候 报
[root@localhost linux]# make menuconfig
  HOSTCC  scripts/basic/split-include
  HOSTCC  scripts/kconfig/mconf.o
scripts/kconfig/mconf.c: In function `exec_conf\':
scripts/kconfig/mconf.c:488: error: `EAGAIN\' undeclared (first use in this function)
scripts/kconfig/mconf.c:488: error: (Each undeclared identifier is reported only once
scripts/kconfig/mconf.c:488: error: for each function it appears in.)
make[1]: *** [scripts/kconfig/mconf.o] Error 1

等等。
我修改了 头文件asm/errno.h 头文件.#define EAGAIN 11
#define EINTR 4 后才好用。
别人发现这个问题了吗?
作者: jeffshia    时间: 2006-01-08 11:32
2.6.15阿还的确没有弄过,弄过2.6.14
作者: mq110    时间: 2006-01-08 11:43
原帖由 jeffshia 于 2006-1-8 11:32 发表
2.6.15阿还的确没有弄过,弄过2.6.14


后来直接 从一台别的机器的 asm/errno.h 文件copy过来 了.
作者: snowseya    时间: 2006-01-09 13:02
使用VM5安装了RH4,然后升级到2.6.15,基本正常,就是最后一步make install时出现错误,提示mptbase,mptscsih 两个模块找不到,但我确实是看见有这两个模块存在的.启动时,用新编译好的内核也起不来,过了两天,再试,竟然一点问题都没有.我没做任何改动.再一个个人认为下载了内核源代码,编译内核时,不需要将linux、asm、scsi做什么链接,因为这本身就是在内核源代码目录下有的。编译时应该可以找得到。当然如果你编译好内核再安装其他的程序时,有时会用到这三个目录下的东西,默认去找/usr/src/inclue目录,这时可以建立一下链接。编译内核时应该是不用的。
在实际的机器中,安装RH4,然后升级到2.6.15编译时很顺利,一点错误都没有。不知我遇到的错误是不是VM5的问题。不知大家有没有遇到此类情况的。或者知道原因的?
一家之言,仅供参考。
作者: x_box    时间: 2006-01-10 22:03
问一下make modules_install 时提示modules-init-tools 没安装(但实际上我是已经安装了)

这个问题会导致不能以新内核启动吗???

VFS :KERNEL PANIC 就这样了
按你的方法改了也不行???
作者: e2agle    时间: 2006-01-11 10:03
to x_box: 安装新的modules-init-tools前,将旧版本的卸掉了吗?
作者: e2agle    时间: 2006-01-11 10:04
to snowseya:谢谢你的帖子!
作者: e2agle    时间: 2006-01-17 19:57
to jeffshia:谢谢鼓励!!!
作者: alexmajia    时间: 2006-01-18 09:50
怎么这里环境这个样子呢?明明是二楼的兄弟觉得这个帖子不错,说加精,楼主并没有啊!!什么世道!楼主一副坦诚的态度,所谓的斑竹们不觉得自己写的那些回复太*&&&%&^$(*)了 ???

牛人?? YY而已吧

PS: 我一般都在Linux原本环境中编译,只有几次编译过VMware下的。scsi的环境,好像要对逻辑卷管理(LVM)做相应支持吧,我也不太记得了,有兴趣大家可以再试试看

[ 本帖最后由 alexmajia 于 2006-1-18 09:52 编辑 ]
作者: e2agle    时间: 2006-01-18 12:05
to alexmajia:这位仁兄, 还要怎样加才算是精呢???
请指教!!!
作者: zkeen    时间: 2006-02-09 23:54
谢谢楼主,我会试一试!
作者: flylonginsky    时间: 2006-02-13 09:58
我的是vmware5.5.1,硬盘是IDE0:0;使用的linux版本是FC4;照着楼主的去编译。。。。
第一步“#rpm -e --nodeps modutils (强行卸载原有的modutilsRPM包)”就出错了。
提示:没有安装包。。

也罢,不去管它。继续下去

到了“rpmbuild --bb modutils.spec (生成二进制的RPM包)”,
提示:error: Legacy syntax is unsupported :serial
error:line 7:Unkown tag: Serial:2002120901
然后删去第7行,结果重来又出现这个错误:
error:License filed must be  present in packagemain package)
----------------------------------
头都大了。。。。。。。。。。。。。
一个问题接一个问题。。。。呵呵
作者: e2agle    时间: 2006-02-21 12:03
标题: RPM问题
RPM问题

进入编译好的内核后,与RPM相关的命令有些不能使用,并出现下列错误:

rpmdb: unable to join the environment
error: db4 error(11) from dbenv->open: Resource temporarily unavailable
error: cannot open Packages index using db3 - Resource temporarily unavailable (11)
error: cannot open Packages database in /var/lib/rpm
no packages
解决方法是执行“export LD_ASSUME_KERNEL=2.2.25”命令,也可以将其写入/etc/bashrc。
作者: firer2000    时间: 2006-02-22 16:22
标题: 回复 10楼 越走越远 的帖子
# cd /usr/include/
# rm -r asm linux scsi
# ln -s /usr/src/linux/include/asm-i386 asm
# ln -s /usr/src/linux/include/linux linux
# ln -s /usr/src/linux/include/scsi scsi


这几步真的是必须做的吗?为什么我不做还好,做了之后连make menuconfig都不行了?

[root@vmail linux]# make menuconfig
  HOSTCC  scripts/basic/split-include
In file included from /usr/include/linux/errno.h:4,
                 from /usr/include/bits/errno.h:25,
                 from /usr/include/errno.h:36,
                 from scripts/basic/split-include.c:26:
/usr/include/asm/errno.h:4:31: asm-generic/errno.h: No such file or directory
make[1]: *** [scripts/basic/split-include] Error 1
make: *** [scripts_basic] Error 2
作者: e2agle    时间: 2006-02-23 13:44
to 楼上的兄弟:升级2.6.13需要,
升级2.6.14版本就不需要,我在前面的帖子里告知了!
作者: redandblack007    时间: 2006-02-23 15:31
编译完后不启动,报以下错误:
VFS: Cannot open root device \"LABEL=/\" or 0.0
>; Please append a correct \"root=\" boot option
>; kernel panic: VFS: Unable to mount root fs


title Red Hat Linux (2.6.14)
        root (hd0,0)
        kernel /vmlinuz-2.6.14 ro root=/dev/sda2
        initrd /initrd-2.6.14.img
作者: patrick007    时间: 2006-02-27 14:39
看惯了这里的一些帖子后再看这个帖子,感觉e2agle做的挺好的。鼓励。。。
看完前3页后,觉得国内学术界就这jb样儿了,没意思。难怪我好久都没来了。。。
作者: patrick007    时间: 2006-02-27 14:44
再to e2agle:
你可以做点更有意义的事,把这个话题补充完整,或者说比较完整,把里面的一些问题分析一下,有些问题有通用的解法,可以提一下,有些问题没有,就征求一下其他有发言权的朋友。把问题补充一下。

然后写个mini-HOWTO,发到自己blog中,我想你应该有。

别再没用的话题上计较了。
而且我经常发现有些跟贴的朋友会遇到各种问题,这些问题你可以研究一下他为什么会遇到,然后给出解法,加在自己的mini-HOWTO中。

深入,深入,再深入,你我加油!
作者: e2agle    时间: 2006-02-27 17:55
to patrick007:谢谢这位仁兄的理解与支持,我们共同努力!
作者: e2agle    时间: 2006-02-27 17:58
to redandblack007
编译完后不启动,报以下错误:
VFS: Cannot open root device \"LABEL=/\" or 0.0
>; Please append a correct \"root=\" boot option
>; kernel panic: VFS: Unable to mount root fs
如果是上面的错误,请确认你把如下选项配置进kernel
(1) 如果/使用了EXT3 文件系统,在内核中要加入EXT3的支持
(2)如果是IDE的硬盘必须要IDE的驱动加载
(3)在block devices--RAM disk support 中选取 Initial disk(initrd) support,有时在mount / 之前
需要加载一些模块,这些modules 被做到一个镜像文件中--kernel-ver.img 中,这个文件位于/boot.举个例子,如果EXT3 的是以模块加载的话,在mount / 时就需要用到它,所以系统就在initrd.kernel-ver.img 中寻找它.
使用命令 mkinitrd initrd.kernel-ver.img kernel-ver 可以生成initrd.kernel-ver.img
作者: wangbinde    时间: 2006-04-10 22:17
写得够意思,谢谢
谢谢
作者: obrire    时间: 2006-04-11 14:18
标题: 回复 1楼 e2agle 的帖子
只是在Redhat Linux 9.0上用2.6的内核较麻烦。
而在VM上, 或者是FC 3/4/5上,没什么问题的。

建议: $kernel_src/make distclean;
          $make oldconfig;
          $make modules; make modules_install;make install
如果有个人配置,将defconfig置换为你的就可以了。以前在2.4上,有make xxx_config;
至于这种方式怎么写,请参见Makefile源文。

真的有这么麻烦吗?我现在用的是2.6.16 SMP 64G Memory 64 Way.
作者: lingfen1552    时间: 2006-04-11 14:24
太好了,我一直为这是困扰呢!谢了,楼主!!!!
作者: cnleon    时间: 2006-05-06 13:38
为什么我还是出现错误阿
maroot@www:/usr/include# make config
make: *** 没有规则可以创建目标“config”。 停止。
作者: safedead    时间: 2006-05-06 14:02
标题: 很佩服还在用RH9继续升级内核的人
自从出了用2.6内核的LINUX发行版之后,我马上就把RH9/AS3给删了
2.6内核用在RH9上实在太麻烦了,大量的程序会出错而需要重新编译
特别是2.6内核用openswan而不是freeswan搞ipsec,配置ipsec一下子简化了
作者: duanjigang    时间: 2006-05-06 20:34
我原来也用虚拟机升级了4次,不过都失败了,虚拟机在新的内核在启动的时候出现异常了,最后只好用了一个原版的硬盘安装进行升级,2。6。14是升级成功了,可是心里还是不舒服,谢谢搂住了,改天参考你的经验再尝试一下!
作者: duanjigang    时间: 2006-05-06 20:36
原帖由 cnleon 于 2006-5-6 13:38 发表
为什么我还是出现错误阿
maroot@www:/usr/include# make config
make: *** 没有规则可以创建目标“config”。 停止。

先make help 看看你可以用那些参数,make config不是哪里都能用的
作者: 割鹿刀    时间: 2006-07-22 23:50
*******************************************************************
编译linux2.6.14的仁兄们注意了,如果是按本人的帖子上的步骤,请将以上第7)步
去掉,否则运行make menuconfig会出现以下错误
HOSTCC  scripts/basic/split-include
In file included from /usr/include/linux/errno.h:4,
                 from /usr/include/bits/errno.h:25,
                 from /usr/include/errno.h:36,
                 from scripts/basic/split-include.c:26:
/usr/include/asm/errno.h:4:31: asm-generic/errno.h: 没有那个文件或目录
make[1]: *** [scripts/basic/split-include] Error 1
make: *** [scripts_basic] Error 2
*************************************************************
汗。。。怎么不把7删掉呢。。。。 做完第7步后,才看到这个提示。。。。现在都没法编译了。。。
作者: e2agle    时间: 2006-09-02 12:08
前一段比较忙,所以好久没来就里看看了.
谢谢各位的鼓励!!!
作者: zhaodongxi    时间: 2006-11-29 10:05
原帖由 割鹿刀 于 2006-7-22 23:50 发表
*******************************************************************
编译linux2.6.14的仁兄们注意了,如果是按本人的帖子上的步骤,请将以上第7)步
去掉,否则运行make menuconfig会出现以下错误
HOSTCC  ...


我也和你一样的情况
其实把这句放在7前面就好了
没办法到别的机器上拷贝了一份删除的三个目录
俺才继续编译下去了
作者: e2agle    时间: 2006-12-13 10:00
标题: to:zhaodongxi
给你的编译带来问题,感到非常抱歉!
按你提的建议,本人已经对顺序进行了调整,希望没有误太多的人!
作者: ph7_cn    时间: 2006-12-28 13:00
原帖由 e2agle 于 2006-12-13 10:00 发表
给你的编译带来问题,感到非常抱歉!
按你提的建议,本人已经对顺序进行了调整,希望没有误太多的人!

这个问题我觉得应该是少了asm-generic 的连接,我在你的blog里面留了言,你可以参考一下




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2