硬件环境:IBM T40 笔记本,
系统环境:双系统,Wins XP SP2 ;centos linux
5.0 (内核版本2.6.18.53)
编译原因:1、笔记本的驱动不完整,希望通过编译内核来完成驱动的安装;
2、尝试一下最新版的内核,2.6.24.4 版本;
过程:
1、
内核下载, ,下载内核linux-2.6.24.4.tar.bz2;并将内核源码包放到/usr/src目录下,
#cp linux-2.4.20.tar.bz2 /usr/src
#cd /usr/src
2、解压缩,
#tar jxvf linux-2.4.20.tar.bz2
# tar jxvf linux-2.6.24.4.tar.bz2
#ls
# ln -s linux-2.6.24.4 linux
#
ls
#
cd linux
3、该命令保证源代码目录下没有不正确的.o文件(即object文件,编译c语言时生成的,目的是下一步编译成可执行码时link之用)以及文件的相互倚赖关系.第一次编译刚下载的源码包不用此命令,但如果多次使用这些源码编译内核,那么一定要先运行本命令.
#make mrproper
•
4、把旧模块存放目录改名。
•
#cd /lib/modules
•
#rm `uname -r`
mod.old
5、配置内核:
图形界面下:#make xconfig
字符界面下:#make menuconfig
6、编译内核:
•
make dep建立依属关系
•
make clean去掉旧的数据
•
make zImage(or bzImage)开始编译核心
•
bzimage是压缩的方式进行编译,生成的核心文件会小一点。
•
时长大约10分钟左右
注:为了防止编译中出现问题,建议使用:make bzImage 。
7、编译安装模块
编译模块
cd /usr/src/linux
make modules
•
安装新模块
make modules _install
时长大约15~20分钟;稍微有些漫长。
8、安装核心
•
核心编译完成后生成/usr/src/linux/arch/i386/boot/zImage文件
•
拷贝zImage(or bzImage)到/boot
•
cp /usr/src/linux/arch/i386/boot/zImage /boot/vmliuz-2.6.24.4
•
cp /usr/src/linux/System.map /boot/system-2.6.24.4作核心的镜象
•
cd /boot
•
ln -s System-2.6.24.4 System.map
ln -s /boot/vmlinuz-2.6.24.4 /boot/vmlinuz
9、编辑grub,
#
new-kernel-pkg --install --depmod --mkinitrd 2.6.24.4
--mkinitrd 作Initial Ramdisk的,可以直接敲个mkinitrd -h看看
--depmod 检查内核中有没有未解析的symbol
--install 在grub中安装一个启动选项
10、查看一下编辑后的grub
[root@localhost ~]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:
You have a /boot partition.
This means that
#
all kernel and initrd paths are relative to /boot/, eg.
#
root (hd0,6)
#
kernel /vmlinuz-version ro root=/dev/hda9
#
initrd /initrd-version.img
#boot=/dev/hda
default=1
timeout=5
splashimage=(hd0,6)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.24.4)
root (hd0,6)
kernel /vmlinuz-2.6.24.4 ro root=LABEL=/ rhgb quiet crashkernel=128M@16M
initrd /initrd-2.6.24.4.img
title CentOS (2.6.18-53.el5)
root (hd0,6)
kernel /vmlinuz-2.6.18-53.el5 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18-53.el5.img
title Other
rootnoverify (hd0,0)
chainloader +1
[root@localhost ~]#
注:红色部分是第九步编译的结果,避免了手动更改grub,更加安全可靠。
11、大功告成,
#reboot
附录:内核配置
选择的原则是将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块(哪些较远?看各人对linux和操作系统概念的理解程度了,还有就是看所配置项的help),有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选;与内核关心紧密而且经常使用的部分功能代码直接编译到内核中。下面对常用的选项分别加以介绍:
/1. Code maturity level options
代码成熟等级。此处只有一项:
prompt for development and/or incomplete code/drivers
如果你要试验现在仍处于实验阶段的功能,比如khttpd、IPv6等,就必须
把该项选择为Y了;否则可以把它选择为N。
/2. Loadable module support
对模块的支持。这里面有三项:
Enable loadable module support:
除非你准备把所有需要的内容都编译到内核里面,否则该项应该是必选的。
Set version information on all module symbols:
可以不选它。
Kernel module loader:
让内核在启动时有自己装入必需模块的能力,建议选上。
/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,否则就不用选了。
/4. General setup
这里是对最普通的一些属性进行设置。这部分内容非常多,一般使用缺省设置就可以了。下面介绍一下经常使用的一些选项:
Networking support:
网络支持,必须选,没有网卡也建议选上。
PCI support:
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支持。
/5. Memory Technology Device(MTD)
MTD设备支持
可不选。
/6. Parallel port support
串口支持。如果不打算使用串口,就别选了。
/7. Plug and Play configuration
即插即用支持。选上吧,可以体验一下Linux下即插即用的感觉。
/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盘支持。
/9. Networking options
网络选项。这里配置的是网络协议。自己看吧.
除了肯定要选中TCP/IP networking外,其它看着办吧
/10. Telephony Support
Linux下可以支持电话卡,这样你就可以在IP上使用普通的电话提供语音服务.详细情况可看看help内容.
/11. ATA/IDE/MFM/RLL support
这个是有关各种接口的硬盘/光驱/磁带/软盘支持的,内容太多了,使用缺省
的选项吧,偶有PCMCIA卡,各人机器情况不一样.
/12. SCSI support
SCSI设备的支持, 如果你用了SCSI的硬盘/光驱/磁带等设备,自己找好了.
/13. IEEE 1394(FireWire)support
偶的是灰的,不用操心了,)
/14. I2O device support
在智能Input/Output(I2O)体系接口中使用,不会,用缺省吧.
/15. Network device support
网络设备支持。上面选好协议了,现在该选设备.
为了免得麻烦,编译到内核里面好了,不选M了,选Y。耐心点,一般说来你都能找到自己用的网卡。如果没有,你只好自己到厂商那里去当驱动了,
或者去看看
/16. Amateur Radio support
没有,不选.
/17. IrDA(infrared)support
这个要红外支持,我的有.
/18. ISDN subsystem
如果你使用ISDN上网,这个就必不可少了
/19. Old CD-ROM drivers(not SCSI、not IDE)
专门为非SCSI/IDE口的光驱做的,但谁还在用那么老的东东啊,自己选吧.
/20.Input Core Support
这个选项很重要,除了joystick(游戏遥控杆)建议都选"m".切记!
/21. Character devices
字符设备。这个内容又太多了,先使用缺省设置,需要的话自己就修改:
I2C support:I2C是Philips极力推动的微控制应用中使用的低速串行
总线协议。如果你要选择下面的Video For Linux,该项必选。
Mice:鼠标。如果是笔记本,建议在Bus Mouse Support选上"y".
Joysticks:手柄。即使在Linux下把手柄驱动起来意义不大
Watchdog Cards:虽然称为Cards,这个可以用纯软来实现,当然也有
硬件的。如果你把这个选中,那么就会在你的/dev下创建一个名为
watchdog的文件,它可以记录你的系统的运行情况,一直到系统重新
启动的1分钟左右。有了这个文件,你就可以恢复系统到重启前的状态了。
Video For Linux:支持有关的音频/视频卡。
Ftape, the floppy tape device driver:
PCMCIA character device support:
/22.Multimedia devices
为捕捉audio/video用,如果感兴趣看看help
/23. 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使用的文件格式,你要在linux下mount ntfs分区的话,就要选上它。记得在mount的时候,
只有iocharset=cp936可以加上,codepage=936不能加。
/proc file system support:/proc文件系统是Linux提供给用户和系统进行交
互的通道,建议选上,否则有些功能没法正确执行。
还有另外三个大类都规到这儿了:Network File Systems(网络文件系统)、
Partition Types(分区类型)、Native Language Support(本地语言支持)。
值得一提的是Network File Systems里面的两种:NFS和SMB分别是Linux和
Windows相互以网络邻居的形式访问对方所使用的文件系统,根据需要加以选择。
/24 Console drivers
用缺省
/25 Sound
你用什么声卡?选选吧.
/26 USB Support
很重要,至少要选以下选项
Support for USB
UCHI Alternate Deriver (JE) Support
OCHI (Compaq,iMacs...
USB Audio...
USB MIDI...
USB Human Interface Device (full HID) support
HID input layer support
/dev/hiddev raw HID...
USB LCD device support
因为偶的硬件很多都要求USB HID 支持,所以这里选了不少
*如果有某些选项那不准,可以参考:
/usr/src/linux-2.4/Documentation/Configure.help
也可以search整个系统并看看相关的文字都在哪些文件出现:
#find /usr -name "*.*" -print -exec grep
-q -s mousedev {} \; -print
这个长命令很有用
阅读(1497) | 评论(0) | 转发(0) |