您现在的位置: 万盛学电脑网 >> 操作系统 >> Linux教程 >> 正文

Slackware官方内核源码打造适合自己的内核

作者:佚名    责任编辑:admin    更新时间:2022-06-22

class="20958"> ; 提要: 用Slackware官方提供的内核源码和脚本来打造适合自己机器的内核,学习编译内核并提高我们的学习和工作效率; 前言: 现在的机器配置越来越高,一个小小的笔记本,可能也能上到2G内存,另外服务器的应用,经常用到大内存,从实践的情况来看,Slackware用默认的内核是不支持大内存的,最高支持800多M,可能1G都不到。另外Slackware在默认的情况下也不支持多CPU,如果您有多CPU的机器,也要编译内核; 让Slackware支持1G或者超过1G内存的机器,其实解决办法也极为简单。要重新编译一下内核,让其支持 4G就好了。当然如果有有超过4G的,可以选64G的那个。 让Slackware支持多CPU的机器,无非是在配置内核时让他支持SMP,就是这个[*] Symmetric multi-processing support 选项; 只说如何如何解决还不行,一篇文章如果没有操作实例,新手弟兄读起来实在是困难。我写的文章都是写给新手的,我总怕我写的文章新手看不懂,对老鸟来说又一文不值;如果真是新手弟兄看不懂,老手又不值得一看,我看我写的东西一文不值。因此我写东西的时候能详细就详细,最好是写到初次用Linux的弟兄看了我所写的文档,也能一步到位的完成。 本文适合:初初级新手 在Slackware系统中最省力气编译内核的办法,是用Slackware现有的官方资源来进行编译,其它的软件遇到问题,如果Slackware的官方有资源,我们同样可以用这种解决办法; 毕竟从 http://www.kernel.org 直接下载,自己配置内核还是有点辛苦。如果是初学Linux的弟兄可能要花好长时间来配置,但还不能保证成功。所以我们这些slack的追随者来说,要充分利用Slackware的资源。 有内核编译经验的弟兄都知道,如果配制好后,编译成功了,要把.config文件保存下来,以便下次为了解决一些小问题,重编同一版本的内核而用; 相信Slackware ,相信Slacware的官方资源;这样能让我们事倍功半,尤其对初学Slackware的弟兄。其实Slackware的内核更新并不是太积极,这和 Slackware的传统(安全)有关。其实一般的情况下,我们有一个比较稳定的内核足够用,如果不是为了解决特定的问题,我们没有必要整天升级来升级去的。在我写本文的时候,Slackware 10.1的内核版本是 2.4.29;而current(也就是开发版本)的test内核是 2.6.12.3 。由况下此看来Slackware不是追新族,是以安全和稳定为主; 在本文我们以Slackware的 current的test内核来简要的说明应用slackware的官方资源的好处,以及顺便也解决一下大内存支持的问题; 一、下载官方current 的testing内核的源码; 地址:http://www.slackware.com/getslack/ ftp://slackware.mirrors.tds.net/pub/slackware/slackware-current/testing/source/linux-2.6.12.3/ 从上面的地址找镜像,一般的情况下美国和日本的要快一点; 比如我们通过下面的地址得到 testing的内核 linux-2.6.12.3的源码目录; 我们要把他里面的所有东西都下载下来,Slackware所提供我们的安装包就是通过这些文件编译生成的;人都都把配置文件和脚本写好了,我们没有必要不用; 比如我们FTP镜像中的 linux-2.6.12.3所有文件都按他FTP提供的目录结构存放在到 /usr/src/kernel26中; 下载好了,我们进入下一步; 二、利用Slackware官方提供的 config文件来简单配置自己的内核配置文件 .config ; 1.解压内核及一些基础工作; bash-3.00# pwd /usr/src/kernel26 bash-3.00# ls config-2.6.12.3 kernel-generic linux-2.6.12.3.tar.bz2.sign kernel-modules linux-2.6.12.3.tar.bz2 bash-3.00#tar jxvf linux-2.6.12.3.tar.bz2 bash-3.00# mv linux-2.6.12.3 .. 把解压手内核目录移到上一级目录中,也就是/usr/src中 bash-3.00# cd .. bash-3.00# ls kernel26 linux-2.4.29 linux-2.6.12.3.tar.bz2 speakup-2.4.29 linux linux-2.6.12.3 rpm bash-3.00#cd linux-2.6.12.3 bash-3.00# pwd /usr/src/linux-2.6.12.3 bash-3.00# cp ../kernel26/config-2.6.12.3 . 把内核配置文件复制到当前工作目录linux-2.6.12.3 bash-3.00#cp config-2.6.12.3 .config 把config-2.6.12.3复制为.config 2.简要的配置内核; bash-3.00#make menuconfig 进入配置内核的配置模式 ; 内核配置有两种方法,一种是直接置入内核;另一种是编成模块;两种方法各有优点;直接编入内核的,比如设备的启动,不再需要加载模块的这一过程了;而编译成模块,则需要加载设备的内核支持的模块;但直接把所有的东西都编入内核也不是可行的,内核体积会变大,系统负载也会过重。我们编内核时最好把极为重要的编入内核;其它的如果您不明白的,最好用默认。slackware的内核配置文件是最好的教程; 1]移动键盘,选中 Load an Alternate Configuration File 项,把.config 调进来方便我们配置;因为这个配置文件是Slackware已经配置好的,我们只是稍加修改就行。 2]针对自己机器存在的问题进行修改;比如我们在前文所提到的大内存支持的问题; 选择自己机器的CPU; 移动键盘到 Processor type and features ---> ,然后按ENTER进入; 找到 Processor family (486) ---> 按ENTER进入; 进入后我们发现有好多CPU的型号可选;一般的情况下要根据 bash-3.00# cat /proc/cpuinfo 输出的信息来选,比如我们的是Celeron (P4)一代的,应该选如下的,当然默认的 486也是可以正常运行的,既然我们重编一次内核,就得选中对应型号的,也许性能有所提高呢; Processor family (Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon) 对大内存支持;如果内存是1G或者1G以上,但小于4G的,就要选4G支持;如果超过4G的,要选64G的支持; High Memory Support (4GB) ---> (X) 4GB ( ) 64GB 还有比如声卡等硬件,需要我们一步一步的查看;如果有不明之处,就要按 [shift]+?的组合键来查看说明。一般的情况下,slackware的config文件早都配置好了,只需要我们来查看一下就可以了。 再举个例子:比如我现在所用的声卡是intel ac97的,我应该怎么配置呢? 首先要知道自己的声卡的芯片组,我们要通过lspci -v 来查看; bash-3.00# lspci -v 只查看声卡的,应该用如下的方法: bash-3.00# lspci -v |grep audio 00:1f.5 Multimedia audio controller: Intel Corp. 82801DB (ICH4) AC'97 Audio Controller (rev 03) 通过上面的输出,我们知道这台机器用的是intel AC97声卡;所以我们要特别注意AC97的配置; 找到 Device Drivers ---> Sound ---> < M > Sound card support 声卡的支持,这个是一定要选中的吧; < M > Advanced Linux Sound Architecture 对声卡支持的ALSA驱动的支持;下面有OSS驱动,只是一部份。如果想用OSS的驱动更全的,可以去买;其它的就看如下的选吧; < M > Sequencer support < M > Sequencer dummy client < M > OSS Mixer API < M > OSS PCM (digital audio) API [*] OSS Sequencer API < M > RTC Timer support [*] Verbose printk [ ] Debug

然后我们再向下看有 Generic devices ---> 进入里面 < M > Dummy (/dev/null) soundcard < M > Virtual MIDI soundcard < M > MOTU MidiTimePiece AV multiport MIDI < M > UART16550 serial MIDI driver < M > Generic MPU-401 UART driver ISA devices ---> 如果您用ISA声卡就在这里面选; PCI devices ---> 如果您用PCI声卡,就在这里面选,集成声卡也在这里; USB devices ---> 这是USB声卡内核支持选项;我有一个这样的声卡,但没有试过; PCMCIA devices ---> 这是PCMCIA声卡的选项,我还没有看过这样的声卡呢;如果您有,就在这里面动动手吧。 因为我用的是Intel 集成的声卡,所以要在PCI中选择,我们在 中可以看到有两个与INTEL有关的; < M > Intel/SiS/nVidia/AMD/ALi AC97 Controller 这个才是Intel AC97声卡的; < > Intel/SiS/nVidia/AMD MC97 Modem (EXPERIMENTAL) 这个是机器集成的INTEL猫的蜂鸣器的; 因为我发现如果把猫的蜂鸣器的驱动也选上,可能造成两个冲突。所以只能选上面的那个; 我们再回到 Open Sound System ---> 中看看,与我用的声卡是不是有关的? < M > Open Sound System (DEPRECATED) < M > Intel ICH (i8xx) audio support < M > OSS sound modules < M > Loopback MIDI device support < M > Microsoft Sound System support 我们也可以看到Open Sound System中也有好多的声卡驱动,大家根据前面的lspci -v 来选择吧。 3]对于操作系统所采用的文件系统的支持要编入内核,最好不要编成模块;(重要) File systems ---> <*> Reiserfs support 比如我的Slackware所采用的文件系统用的是reiserfs ,所以我要把它直接编入内核;好处是不受模块丢失或者损坏而不能启动系统;而有时您把系统所采用的文件系统编译成模块,出现VFS错误,也有这方面的事,可能是您没有把reiserfs加入到相应的加载模块的配置文件中,所以我们为了减少麻烦,把风险降到最低,还是要直接置入内模的好; 如果您还有其它的硬盘分区要读取,比如是ext3、ext2、fat、fat32、ntfs等,这样的可以编成模块来支持; 再举一例:如果您的的操作系统用的是ext3的文件系统,当然就要把ext3的直接编入内核,其它的可以编成模块来支持了; 4]对于硬盘及RAID的支持,要直接编入内核; 比如ATA、SATA、SCSI及RAID的支持直接内核支持;有时编完内核后,启动时不能识别硬盘和RAID,大多事情出在这里;Slackware中在这方面有的是模块支持,我们可以把它由< M >