ChinaUnix.net 首页 | 博客 | Linux | 论坛 | 人才 | 培训 | 知识库 | 资料 | 读书 | 手册 | 精华 | 下载 | 沙龙 | 搜索
Linux首页 | Linux论坛 | 论坛精华 | 开源新闻 | 技术文章 | 专题专栏 | 新手指南 | 迁移方案 | 产品方案 | 开源项目 | 开源图书 | 软件下载 | 人才招聘 | Linux博客
  搜索

  产品与方案
·中科红旗全面打造现代化邮政体系
·红旗助力“网上审批服务” 推动电子政务
·红旗正版化开创呼和浩特网吧建设新起点
·红旗Linux助信息产业部邮件服务器“快跑”
·中标普华Linux 为电子政务信息化保驾护航
·中标普华Linux助力基金产业
·中标普华Office率先支持UOF标准
·中标普华邮件系统助力西藏政府信息化建设
·红旗Linux助力国库集中支付系统改革
·红旗助中信卫星 掀起GIS通信应用风暴
·红旗软件助力烟草总局 全面建设“数字烟草”
·红旗助力“信访阳光工程”打造畅通信访渠道
·红帽联合FIS发布下一代实时核心银行平台
·红旗助力金盾 打造全无忧出入境信息系统
·红旗Linux全力打造中国邮政总局名址信息库
·爱尔兰证交所从Unix迁移到红帽企业Linux
·一流的意大利银行选择使用红帽企业Linux
·PLUS Finanzservice选择使用红帽企业Linux
·红帽助力TransACT Communications 公司
·法国零售业巨头Lapeyre采用Redhat Linux
·旅游预订网站选择使用红帽企业Linux
·马哈拉施特拉邦政府的红帽解决之道
·美国联邦政府案例
·红帽为慕尼黑展览会提供现代化集群系统
·Yuba郡用开源软件和红帽产品提高了效率
·红帽企业Linux助印度理工建立高性能计算中心
·采用红帽Linux 将系统维护时间缩短了65%
·从UNIX迁移到Linux使Peñoles公司获益非浅
·Hikal公司用红帽企业Linux开展任务关键的ERP项目
·KDE3.5.4新版本发布
·芝加哥商业交易所从Unix向Linux迁移
·南方基金管理有限公司成功案例 Red Hat Linux
·广东北电通讯设备有限公司成功案例
·挪威国家石油公司从UNIX迁移到红帽Linux,成本减半
·中央电视台CCTV动画部案例 Red Hat Linux

  图书

鸟哥的Linux私房菜基础学..


Linux程序设计.第3版


Linux设备驱动开发详解


  下载
·Endian Firewall
·linux kernel(Linux 内核)
·CentOS
·Fedora Core 6
·Scientific Linux
·Slackware 11.0
·Gentoo Linux
·ubuntu-6.10-i386服务器版本
·ubuntu-6.10-amd64服务器版
·ubuntu-6.10-i386桌面版
·ubuntu-6.10-amd64桌面版
·Engarde Linux
您的位置: Linux时代 > 技术文档 > 新手入门 >

打造适合自己Slackware机器的内核

日期:2007-01-08 作者:北南南北 来自:Linuxsir


用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/
从上面的地址找镜像,一般的情况下美国和日本的要快一点;

比如我们通过下面的地址得到 testing的内核 linux-2.6.12.3的源码目录;
ftp://slackware.mirrors.tds.net/pub/...inux-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>改成<*>来支持;

5]对于咱们所没有的设备,可以在内核中不选,熟能生巧罢了;

比如我没有ISDN设备 ,所以就把ISDN去掉;
ISDN subsystem --->
< > Linux telephony support


如果您没有1394的设备 ,当然可以把1394的支持也去掉;
等等。。。。。。。


内核配置就说这么多吧,太多了,我也说不清楚,水平有限啊;

配置好后先要保存

Save Configuration to an Alternate File

出来一个

Enter a filename to which this configuration ,should be saved as an alternate. Leave blank to abort.
.config

按回车就行了,这样就保存住了;


然后退出 < Exit > ,这时也会出现保存 ;


如果你想把.config保存起来,可以再复制一份到安全一点的目录,以备后用;

3]编译内核

bash-3.00# make
bash-3.00# make modules_install

这样就编译好了,并把模块也安装在了 /lib/modules目录中了,请看:

bash-3.00# ls /lib/modules/
2.4.29 2.6.12.3

现在我们得安装内核了,但我们也没有必要急着安装,我们可以用Slackware提供的脚本来打包,然后再来安装,这样移除也方便,对不对?

4]用Slackware提供的脚本为内核及moudules打包;

我们在前面已经说了,把linux-2.6.12.3在镜像上的目录下的所有东西载下来。所以我们要用到这些东西了。我在前面把所有的东西都下载到了/usr/src/kernel26目录中。

所以我们要用他所提供的脚本打包;

bash-3.00# cd /usr/src/kernel26/
bash-3.00# ls
config-2.6.12.3 kernel-generic kernel-modules linux-2.6.12.3.tar.bz2 linux-2.6.12.3.tar.bz2.sign

a)首先我们为内核打包:请运行如下命令:

bash-3.00# bash-3.00# cp kernel-generic/slack-desc .

我们要把 kernel-generic/slack-desc 复到制当前操作目录中,只是一个说明文件;不复制也行;反正是自己用,也不是给别人用的;


bash-3.00# sh kernel-generic/kernel-generic.SlackBuild

输出是什么呢?

kernel-generic/kernel-generic.SlackBuild: line 33: [: too many arguments
Building kernel-generic-2.6.12.3-i486-1.tgz
using these source files. Please check and then hit
enter to make the package.

KERNEL = /usr/src/linux-2.6.12.3/arch/i386/boot/bzImage
SYSMAP = /usr/src/linux-2.6.12.3/System.map
CONFIG = /usr/src/linux-2.6.12.3/.config

看到了吧,我们用的配置文件在 /usr/src/linux-2.6.12.3/.config ;然后按回车;

注意:如果您把打包脚本 kernel-generic.SlackBuild 复制到了 /usr/src/linux-2.6.12.3 ,并在 /usr/src/linux-2.6.12.3中执行它,提示运用的配置文件是 CONFIG = /usr/src/linux-2.6.12.3/config* ,所以要看好了。其实这个文件我们可能没有配置,是slackware原始自带的,我们在前面已经说了,我们配置的文件是.config;除非你有把. config另存为config-2.6.12.3。

如果要用我们配置好的内核文件,要进入内核源码目录,把.config 拷贝一份名为 config-2.6.12.3的;


b)然后我们要为内核的模块打包;

bash-3.00# sh kernel-modules/kernel-modules.SlackBuild


我们把包都打好了,他们究竟在哪里呢?
在/tmp目录中,请看如下:

bash-3.00# ls -lh /tmp/kernel-*
-rw-r--r-- 1 root root 1.9M 2005-08-06 11:59 /tmp/kernel-generic-2.6.12.3-i486-1.tgz
-rw-r--r-- 1 root root 11M 2005-08-06 12:13 /tmp/kernel-modules-2.6.12.3-i486-1.tgz

3.安装编译好的内核及模块。

我们其实已经把编译好的模块早就安装好了,但我们最好重新安装一下。这样卸载也方便。

bash-3.00#cd /tmp
bash-3.00# installpkg kernel-generic-2.6.12.3-i486-1.tgz
bash-3.00# installpkg kernel-modules-2.6.12.3-i486-1.tgz

这样就把内核及模块配置好了。


4.查看系统引导管理器grub或者lilo的配置文件。

内核在安装的时候,可能已经改了一些东西,比如 /boot内的变化,比如vmlinuz直接链到了 vmlinuz-generic-2.6.12 ,所以如果想要让新老内核都能让系统引导管理器grub和lilo的菜单上能看得到,必须改 grub.conf或者lilo.conf

我们必须保留老内核的在grub和lilo的启动菜单,毕竟我们编内核不能百分百的成功,对不对??安全第一吧;


正在修订之中,以让其更可能的全面一点,算是版本0.1吧。

原文链接:http://www.linuxsir.org/bbs/showthread.php?t=212595

本文被浏览



 相关新闻

Slackware Linux启动过程详解2006-11-27 17:46:35
Slackware 11.0使用手记2006-11-23 15:48:30
slackware 11.0 安装及基本配置2006-10-11 16:46:09
开发者发行版:Slackware Linux 11.0 RC52006-09-19 10:10:55
Slackware 10安装手记2005-01-30 13:59:23
Slackware HandBook项目发布2005-01-30 10:42:35
在 slackware 中使用红外遥控器2005-01-26 17:46:09
开发者发行版:Slackware 10.1 Beta12005-01-24 10:09:20


 相关评论
关于我们 | 联系方式 | 广告合作 | 诚聘英才 | 网站地图 | 免费注册

Copyright © 2001-2006 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们

京ICP证041476号