LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1592|回复: 9

成功编译个人定制的2.6.15.5内核!狂喜+试用ing

[复制链接]
发表于 2006-3-5 14:25:41 | 显示全部楼层 |阅读模式
首先说明我使用的发行版是mandriva free 2006,旧内核(现在已经说得上是旧了^_^)是2.6.12-12MDK
昨天看完了<<编译你自己的Linux内核(Kernel)>>,就有了自己编译的内核的冲动,虽然自己只用了三天的linux。就好像我只用了M55一星期就把它的Flash重刷了一样,偶就是冲动!
心动不如行动,上www.kernel.org把linux-2.6.15.5.tar.gz拉了回来(选FTP服务器,速度不错)。
解压:tar -xvf linux-2.6.15.5.tar.gz
移动到/usr/rsc:mv linux-2.6.15.5 /usr/src
cd /usr/src/linux-2.6.15.5
用Xconfig定制:make xconfig
弹出一个内核定制工具:qconf,里面的选项很多,很难一一说清楚,只能说一下大概上的定制内容。
处理器类型选PC兼容,家族选K7(我的签名写明了我的CPU是闪龙2200+)
大内存支持选off,因为我只有512M的DDR333内存
高级电源管理(Power management options )默认。
总线(Bus options) 去除了PCIE,ISA,MCA,PCMICA以及新出现的PCI Hotplug,因为我都没有这些设备。
可执行文件格式(Executable file formats)默认。
网络支持(Networking support)中的网络选项(Networking options)默认。业余广播(Amateur Radio support),红外(IrDA  subsystem support),蓝牙(Bluetooth subsystem support)全部取消。其余默认。
设备驱动(Device Drivers)里Memory Technology Devices (MTD),Parallel port support,RAID ,IEEE1394,I2O device support,ISDN,Telephony Support全部取消。
ATA/ATAPI/MFM/RLL support选项里保留了Include IDE/ATAPI CDROM support作为加载模块,因为我有两个ATAPI光驱设备,SCSI模拟支持(SCSI emulation support)作为加载模块,ATAPT设备可能需要它。
Generic PCI bus-master DMA support只保留了Use PCI DMA by default when available和VIA82CXXX chipset support(我使用的IDE总线控制器是VIA的‎VT82C586 )
SCSI device support里可以去除都去除了,但因为之前选择了SCSI模拟支持,还有一些是去除不了的,比如SCSI generic support。
Network device support里只保留了Dummy net driver support(虚拟网络设备支持)和10/100M以太网卡里的VIA Rhine support,因为我用的就是VIA RhineII VT6102.其它全部取消(其中PPP比较重要,是拨号网络用的,但我也用不着)
Character devices里的/dev/agpgart (AGP Support)保留了VIA chipset support。Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)里只保留了Via unichrome video cards。
IPMI,Watchdog Cards,Ftape, the floppy tape device driver,TPM Hardware Support ,I2C support,Dallas's 1-wire bus,Misc devices取消。
Graphics support里只保留Enable Tile Blitting Support ,VGA 16-color graphics support ,VESA VGA graphics support,S3 Savage support
Backlight & LCD device support(投背与LCD支持)正在使用CRT,想想也没米升级到LCD,取消算了。
Sound里取消Open Sound System。Advanced Linux Sound Architecture里的USB声卡支持也取消,PCI devices只保留了C-Media 8738, 8338t和VIA 82C686A/B, 8233/8235 AC97 Controller。这里有点意思,我的音效芯片明明是C-Media的,但在旧内核里正常工作时却显示ALSA VIA 8233 AC97,方便起见,两个都保留算了。
USB support里只保留了最基本的USB端口以及一些摄像头的支持,其它USB触摸屏,USB显示器,PDA支持,Xbox手柄支持,USB网卡,USB xDSL猫等都取消了。
MMC/SD Card support,InfiniBand support,SN Devices取消。
以上的定制到现在还是很正常工作的(至少写这个帖子时是这样),而且我用的USB鼠标极光动鲨还很正常地工作。
下面的文件系统定制是我第一次编译失败的最主要原因。
因为文件系统的重要性,我第一次定制时全部默认,而且太粗心了,EXT3文件系统支持作为加载模块都没有注意到,而刚好我的根分区就是EXT3格式的。
文件系统支持后的就没什么了,除了取消Kernel hacking外,其余默认。
保存定制,方便起见另存了一份,关闭定制工具。

编译:make
大约过了三十分钟,编译完成。
安装模块:make modules_install
安装内核:cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.15.5
添加GRUB引导菜单:emacs /boot/grub/menu.lst
添加内容如下:

title Mandriva linux 2.6.15.5
kernel (hd1,4)/boot/vmlinuz-2.6.15.5 root=/dev/hdb5

保存,关闭emacs.
重启:reboot

很明显,这里我漏掉了两个步骤:添加initrd映射和复制System.map文件,这也是我编译后第一次用新内核启动失败的原因,后面有说明。
启动后选择新内核进入,但挂载文件系统时出错
kernel panic:VFS:Unable to mount root fs on unknown-block(0,0)
重启,用旧内核进入系统,linuxsir找资料,得知是可能没有添加initrd映射的原因。
添加initrd映射:cd /boot
                       /sbin/mkinitrd initrd-2.6.15.5.img 2.6.15.5
顺便复制System.map:
cp /usr/scr/linux-2.6.15.5/System.map System.map-2.6.15.5
重启:reboot

重启后选新内核进入,刚才那个问题是解决了,成功挂载了(hd1,4),但之后启动root指向的分区却又出错:
kernel panic : no init found ,try passing init = option to kernel......
从屏幕输出来看应该是EXT3文件系统支持方面的问题。没法,还得由旧内核进入,检查内核定制,果然发现EXT3文件系统支持以加载模块方式编译,而加载模块却存储在EXT3文件格式的分区内。修改定制,把EXT3文件系统支持编译进内核。重新编译。这一次很快完成了,从屏幕输出来看好像只需要编译EXT3那部分。重新安装模块,更新initrd映射等不在话下。
重启选新内核进入,还是出现了那个问题。但当时已经是凌晨一点多了。先不管理那么多,关机,休息了。
今天早上由旧内核进入系统,baidu了一下那个错误,得知都是文件系统支持的问题,所以就不愿死心,干脆把新内核以及它的源代码和已经安装好的模块全部删掉。重新解压源码包,打开定制工具,加载原来另存的定制文件,检查后将对EXT2,EXT3以及Reiserfs的支持全部编译内核,而Network File Systems只保留了SMB,其它文件系统默认,当然还取消了很多不必要的字符集,将默认字符集改为utf8。
保存定制,编译,安装模块,添加initrd映射。。。。。。
重启,选择新内核进入
紧张而又激动地看着一个个的OK出现
终于进入了KDE
BingGO!
打开Konsole来su,lsmod一下:
Module                  Size  Used by
isofs                  33272  0
binfmt_misc             9032  1
via                    37568  1
drm                    65236  2 via
md5                     3776  1
ipv6                  245888  8
snd_seq_dummy           2628  0
snd_seq_oss            32128  0
snd_seq_midi_event      5888  1 snd_seq_oss
snd_seq                47888  5 snd_seq_dummy,snd_seq_oss,snd_seq_midi_event
snd_pcm_oss            49504  0
snd_mixer_oss          17280  1 snd_pcm_oss
snd_via82xx            24408  1
gameport               11144  1 snd_via82xx
snd_ac97_codec         93216  1 snd_via82xx
snd_ac97_bus            1728  1 snd_ac97_codec
snd_pcm                80072  3 snd_pcm_oss,snd_via82xx,snd_ac97_codec
snd_timer              20420  2 snd_seq,snd_pcm
snd_page_alloc          8456  2 snd_via82xx,snd_pcm
snd_mpu401_uart         5760  1 snd_via82xx
snd_rawmidi            20128  1 snd_mpu401_uart
snd_seq_device          6988  4 snd_seq_dummy,snd_seq_oss,snd_seq,snd_rawmidi
snd                    46052  13 snd_seq_oss,snd_seq,snd_pcm_oss,snd_mixer_oss,snd_via82xx,snd_ac97_codec,snd_pcm,snd_timer,snd_mpu401_uart,snd_rawmidi,snd_seq_device
soundcore               7200  1 snd
via_rhine              20292  0
mii                     4864  1 via_rhine
af_packet              16904  0
ide_cd                 38660  0
nls_cp936             126208  1
ntfs                  223056  4
via_agp                 7872  1
agpgart                28808  2 drm,via_agp
video                  13956  0
thermal                10760  0
processor              18496  1 thermal
fan                     3204  0
container               3072  0
button                  4816  0
usbmouse                4160  0
battery                 7492  0
usbhid                 36320  0
ac                      3332  0
ehci_hcd               29192  0
uhci_hcd               30224  0
usbcore               115652  5 usbmouse,usbhid,ehci_hcd,uhci_hcd

再来一个 modinfo processor:
filename:       /lib/modules/2.6.15.5/kernel/drivers/acpi/processor.ko
author:         Paul Diefenbaugh
description:    ACPI Processor Driver
license:        GPL
alias:          processor
vermagic:       2.6.15.5 K7 gcc-4.0
depends:
parm:           bm_history:uint
parm:           nocst:uint
parm:           max_cstate:uint

终于证明是工作在2.5.15.5的内核下的,而且处理器模块的确是K7。

狂喜+试用ing
发表于 2006-3-5 14:54:18 | 显示全部楼层
呵呵,原来也是个西门子机油呵,哈哈,我用6688和3618和SK65
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-5 15:04:11 | 显示全部楼层
Post by caiheng1984
呵呵,原来也是个西门子机油呵,哈哈,我用6688和3618和SK65

呵,偶米不多,M55现在用着也可以满足应用了。最主要还是自己在里面下的工夫太多(刷了N次机,打了N+N个补丁,还用它来调试MIDP1.0的小程序),很有感情滴。。。
回复 支持 反对

使用道具 举报

发表于 2006-3-5 16:04:31 | 显示全部楼层
Post by jaqcy
呵,偶米不多,M55现在用着也可以满足应用了。最主要还是自己在里面下的工夫太多(刷了N次机,打了N+N个补丁,还用它来调试MIDP1.0的小程序),很有感情滴。。。


用 ccache 可以節省您很多時間,當您 compile 某個東西 N 次的時候。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-5 16:20:00 | 显示全部楼层
Post by garychang
用 ccache 可以節省您很多時間,當您 compile 某個東西 N 次的時候。

ccache?不会!望指教。
M55是西门子2003年出的一款手机,存储芯片是可以用普通PC刷写的,这样就可以更改手机会的东西了,包括系统。你没理解我的意思吧?
回复 支持 反对

使用道具 举报

发表于 2006-3-5 19:33:49 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2006-3-5 19:52:06 | 显示全部楼层
我的是C60有得刷吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-5 20:14:06 | 显示全部楼层
Post by maramail
我的是C60有得刷吗?

c60应该是可以刷机的,我记得以前用的那个刷机软件v-klay有对c60的支持,不过C60的flash文件可能不是很好找。你上这个论坛看看吧http://club.joyes.com/
回复 支持 反对

使用道具 举报

发表于 2006-3-5 20:27:47 | 显示全部楼层
v-klay我都不会用。。。。。试过了,算了,谢谢
回复 支持 反对

使用道具 举报

发表于 2006-3-5 21:44:30 | 显示全部楼层
去bbs.0110.cn看看吧,那里是西门子手机的老巢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表