年初写的,今天有个同事也要编译内核,满世界找了一遍,结果在cu翻出来了^_^
序言:首先感谢我的两位同事,最近两天给我的无私帮助,如果没有他们,我也许不会有时间来做2。6。10的内核。当然也不会有此文。也希望这篇文章能给遇到相同问题的CU朋友带来帮助。
一。现有的软硬件情况。
1。硬件: hp760g2 8cpu 8g Ram hp smart array 5i +72g hddisk
*2 raid 1 nc7170 intel Ge
2。系统: linux7.2 内核已升级到2.4.20-28.7smp
二。升级步骤
1. 下载2.6.10源码
2. 按照Documents/Changes升级必须的实用工具
2.1 binutils-2.13.90.0.2-2.i386.rpm
[root@cnus1 patch]# rpm -Uvh binutils-2.13.90.0.2-2.i386.rpm
Preparing... ########################################### [100%]
1:binutils ########################################### [100%]
2.2 cpq_cciss-2.4.50-18.rh72.i686.rpm
rpm -Uvh cpq_cciss-2.4.50-18.rh72.i686.rpm
2.3 dietlibc-0.21-4.i386.rpm
[root@cnus1 patch]# rpm -ivh dietlibc-0.21-4.i386.rpm
Preparing... ########################################### [100%]
1:dietlibc ########################################### [100%]
2.4 e2fsprogs-1.29.tar.gz
编译参见INSTALL文件
2.5 lvm-1.0.3-4.i386.rpm ,本次系统安装时没有安装,所以装上
[root@cnus1 patch]# rpm -ivh lvm-1.0.3-4.i386.rpm
Preparing... ########################################### [100%]
1:lvm ########################################### [100%]
2.6 rpm -ivh mkinitrd-3.5.14-1.src.rpm
mkinitrd-3.5.14-1.src.rpm 源代码编译安装升级
a. rpm -ivh mkinitrd-3.5.14-1.src.rpm
1:mkinitrd ########################################### [100%]
b. rpmbuild -bb /usr/src/redhat/SPECS/mkinitrd.spec
c. [root@cnus1 patch]# rpm -Uvh /usr/src/redhat/RPMS/i386/mkinitrd-3.5.14-1.i386.rpm
Preparing... ########################################### [100%]
1:mkinitrd ########################################### [100%]
2.7 module-init-tools-0.9.10.tar.gz
一定按照README的要求进行编译升级
2.8 nfs-utils-1.0.6-1.src.rpm
a. [root@cnus1 patch]# rpm -ivh nfs-utils-1.0.6-1.src.rpm
1:nfs-utils ########################################### [100%]
b. rpmbuild -bb /usr/src/redhat/SPECS/nfs-utils.spec
c. [root@cnus1 patch]# rpm -Uvh /usr/src/redhat/RPMS/i386/nfs-utils-1.0.6-1.i386.rpm
Preparing... ########################################### [100%]
1:nfs-utils ########################################### [100%]
2.9 procps-3.2.0.tar.gz
按照README编译升级
2.10 quota-3.09-1.src.rpm
a. [root@cnus1 patch]# rpm -ivh quota-3.09-1.src.rpm
1:quota ########################################### [100%]
b. rpmbuild -bb /usr/src/redhat/SPECS/quota.spec
c. [root@cnus1 patch]# rpm -Uvh /usr/src/redhat/RPMS/i386/quota-3.09-1.i386.rpm
Preparing... ########################################### [100%]
1:quota ########################################### [100%]
3. 配置内核选项
make menuconfig
1. 配置Loadable module support --->
[*] Enable loadable module support x x
x x [*] Module unloading x x
x x [*] Forced module unloading x x
x x [*] Module versioning support (EXPERIMENTAL) x x
x x [*] Source checksum for all modules x x
x x [*] Automatic kernel module loading
2. 配置Processor type and features --->
Subarchitecture Type (PC-compatible) ---> x x
x x Processor family (Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon) ---> x x
x x [ ] Generic x86 support (NEW) x x
x x [ ] HPET Timer Support (NEW) x x
x x [*] Symmetric multi-processing support x x
x x (32) Maximum number of CPUs (2-255) x x
x x [*] SMT (Hyperthreading) scheduler support x x
x x [*] Preemptible Kernel x x
x x [*] Machine Check Exception x x
x x
x x [*] check for P4 thermal throttling interrupt. x x
x x < > Toshiba Laptop support x x
x x < > Dell laptop support x x
x x
x x
x x
x x Firmware Drivers ---> x x
x x High Memory Support (64GB) ---> x x
x x [ ] Allocate 3rd-level pagetables from highmem (NEW) x x
x x [ ] Math emulation x x
x x [*] MTRR (Memory Type Range Register) support x x
x x [*] Enable kernel irq balancing (NEW) x x
x x [ ] Use register arguments (EXPERIMENTAL) (NEW) x x
x x
3. Block devices --->
x
x x <*> Normal floppy disk support x x
x x
x x
x x --- Parallel IDE high-level drivers x x
x x
x x
x x
x x
x x
x x --- Parallel IDE protocol modules x x
x x
x x
x x
x x
x x
x x
x x
x x
x x [*] Support c7/c8 chips (EXPERIMENTAL) x x
x x
x x
x x
x x
x x
x x
x x
x x
x x
x x [*] SCSI tape drive support for Smart Array 5xxx x x
x x
x x
x x
x x < > Cryptoloop Support (NEW) x x
x x
x x < > Promise SATA SX8 support (NEW) x x
x x < > Low Performance USB Block driver (NEW) x x
x x <*> RAM disk support x x
x x (16) Default number of RAM disks (NEW) x x
x x (4096) Default RAM disk size (kbytes) x x
x x [*] Initial RAM disk (initrd) support x x
x x () Source directory of cpio_list (NEW) x x
x x [ ] Support for Large Block Devices (NEW) x x
x x < > Packet writing on CD/DVD media (NEW) x x
x x IO Schedulers --->
4. File systems --->
<*> Second extended fs support x x
x x [ ] Ext2 extended attributes (NEW) x x
x x
x x [*] Ext3 extended attributes x x
x x [*] Ext3 POSIX Access Control Lists x x
x x [ ] Ext3 Security Labels (NEW) x x
x x [ ] JBD (ext3) debugging support x x
x x
x x [ ] Enable reiserfs debug mode x x
x x [*] Stats in /proc/fs/reiserfs x x
x x [ ] ReiserFS extended attributes (NEW) x x
x x
x x [ ] JFS POSIX Access Control Lists (NEW) x x
x x [ ] JFS debugging x x
x x [ ] JFS statistics x x
x x < > XFS filesystem support (NEW) x x
x x
x x
x x [*] Quota support x x
x x < > Old quota format support x x
x x <*> Quota format v2 support x x
x x
x x
x x CD-ROM/DVD Filesystems ---> x x
x x DOS/FAT/NT Filesystems ---> x x
x x Pseudo filesystems ---> x x
x x Miscellaneous filesystems ---> x x
x x Network File Systems ---> x x
x x Partition Types --->
5. 其他都是默认设置,保存配置。
6. make;make modules_install;make install
7. 重新以新的内核重新启动即可。
三。需要注意的地方,或者疑难解答。
1. mkinitrd
make install 会自动调用mkinitrd 来生成initrd-
make install后,一定要手动执行mkinitrd -f -v /boot/initrd-
制生成并覆盖已有的initrd.img文件;-v是详细输出。
2. modules.conf
modules.conf 文件包含的模块在执行mkinitrd -f -v /boot/initrd-
并按照该文件中的条目从/lib/modules/
not found的错误。
有2个方法避免这个错误,一是把modules.conf里面的模块全部编译成module,另一种方法是在modules.conf删除相应的module条目,
前提是已经把这个module编译进内核了。
3。关于mount: xx error的错误的说明,xx 为数字,曾经遇到过 3,6 ,22 。因为找不到这些错误数字的具体含义,所以下面的结论都是根据我的经验推断出来的,仅供大家参考。
新内核启动的时候出现这类错误,一般都是因为不能mount ext3 类型的 root filesystem。网上很多资料都说要把ext3 filesystem编译进内核,按照我的经验,编译成动态加载的module也是可行,我的理论依据来自red hat,君不见它的7.2 ,9.0,as3等版本里面lsmod 都会发现
ext3 132868 8
jbd 64244 1 ext3
这说明ext3的支持是可以动态加载的,既然redhat能做到了,我们应该也能吧。这次编译后系统的lsmod结果如下:[root@enuss2 linux-2.6.10]# lsmod
Module Size Used by
autofs 20444 0
e1000 90844 0
parport_pc 31652 0
parport 40096 1 parport_pc
usbcore 121320 0
ext3 132868 8
jbd 64244 1 ext3
cciss 48900 10
sd_mod 20796 0
scsi_mod 130744 2 cciss,sd_mod
[root@enuss2 linux-2.6.10]# uname -a
Linux XXXX 2.6.10 #8 SMP Tue Jan 11 16:00:41 CST 2005 i686 unknown