新手指南 Linux编译内核操作流程Word格式.docx

上传人:b****6 文档编号:17055709 上传时间:2022-11-28 格式:DOCX 页数:14 大小:26.50KB
下载 相关 举报
新手指南 Linux编译内核操作流程Word格式.docx_第1页
第1页 / 共14页
新手指南 Linux编译内核操作流程Word格式.docx_第2页
第2页 / 共14页
新手指南 Linux编译内核操作流程Word格式.docx_第3页
第3页 / 共14页
新手指南 Linux编译内核操作流程Word格式.docx_第4页
第4页 / 共14页
新手指南 Linux编译内核操作流程Word格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

新手指南 Linux编译内核操作流程Word格式.docx

《新手指南 Linux编译内核操作流程Word格式.docx》由会员分享,可在线阅读,更多相关《新手指南 Linux编译内核操作流程Word格式.docx(14页珍藏版)》请在冰豆网上搜索。

新手指南 Linux编译内核操作流程Word格式.docx

[root@localhostbeinan]#cd/usr/src/

[root@localhostsrc]#tarjxvflinux-2.6.12.3.tar.bz2

提示:

本文以linux-2.6.12.3为例,其实通过发行版的升级版的kernel-devel和从kernel.org下载下来的差不多,大同小异;

不同的是通过在线升级的rpm格式的内核源码包,有配置文件.config可以参考;

安装到的目的地是/usr/src/kernel对FC4.0来说;

如果您要高编译和配置内核,

四、内核的配置;

1、进入目录执行makemrproper,对于从kernel.org下载而来的tar.bz格式的源码包;

[root@localhostsrc]#cdlinux-2.6.12.3/

[root@localhostlinux-2.6.12.3]#

[root@localhostlinux-2.6.12.3]#makemrproper

[root@localhostlinux-2.6.12.3]#makemenuconfig

对于FedoraCore4.0,如果您是通过在线安装的kernel和kernel-devel新版本的包,比如是2.6.12-1.1398_FC4-i686,你可以直进入/usr/src/kernel/相应的目录中直接执行makemenuconfig;

利用发行版本提供的.config来配置,这样方便点。

不要makemrproper,否则.config就没有了;

这也是为什么要用发行版本提供的内核源码升级包的原因;

其它配置和安装大同小异;

模仿总可以吧;

2.简要的配置内核;

进入配置内核的配置模式后,我们可能一无所知,看下面;

内核配置有两种方法,一种是直接置入内核*;

另一种是编成模块M;

两种方法各有优点;

直接编入内核的,比如设备的启动,不再需要加载模块的这一过程了;

而编译成模块,则需要加载设备的内核支持的模块;

但直接把所有的东西都编入内核也不是可行的,内核体积会变大,系统负载也会过重。

我们编内核时最好把极为重要的编入内核;

其它的如果您不明白的,最好用默认。

1)移动键盘上下左右键,按Enter 

进入一个目录。

把指针移动到Exit就退出当前目录到上级目录;

2)针对自己机器存在的问题进行修改,比如大内存的支持;

选择自己机器的CPU;

移动键盘到 

Processor 

type 

and 

features 

--->

 

,然后按ENTER进入;

找到 

family 

(Pentium-Pro) 

按ENTER进入;

进入后我们发现有好多CPU的型号可选;

一般的情况下要根据

bash-3.00# 

cat 

/proc/cpuinfo 

输出的信息来选,比如我们的是Celeron 

(P4)一代的,应该选如下的,当然默认的 

486也是可以正常运行的,既然我们重编一次内核,就得选中对应型号的,也许性能有所提高呢;

(Pentium-4/Celeron(P4-based)/Pentium-4 

M/Xeon)

对大内存支持;

如果内存是1G或者1G以上,但小于4G的,就要选4G支持;

如果超过4G的,要选64G的支持;

High 

Memory 

Support 

(4GB) 

(X) 

4GB

( 

) 

64GB

还有比如声卡等硬件,需要我们一步一步的查看;

如果有不明之处,就要按 

[shift]+?

的组合键来查看说明。

一般的情况下,2.6.x的内核会根据机器的情况自动配出一个文件,只需要我们来查看一下,把重要的地方改改就行了;

再举个例子:

比如我现在所用的声卡是intel 

ac97的,我应该怎么配置呢?

首先要知道自己的声卡的芯片组,我们要通过lspci 

-v 

来查看;

[root@localhost 

beinan]#lspci 

-v

只查看声卡的,应该用如下的方法:

beinan]# 

lspci 

|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>

card 

support 

声卡的支持,这个是一定要选中的吧;

Advanced 

Linux 

Architecture 

对声卡支持的ALSA驱动的支持;

下面有OSS驱动,只是一部份。

如果想用OSS的驱动更全的,可以去买;

其它的就看如下的选吧;

Sequencer 

support

dummy 

client

OSS 

Mixer 

API

PCM 

(digital 

audio) 

API[*] 

RTC 

Timer 

support[*] 

Verbose 

printk

Debug

大多是默认的就好,如果您不知道是做什么用的,或者怎么用;

然后我们再向下看有

Generic 

devices 

进入里面

Dummy 

(/dev/null) 

soundcard

Virtual 

MIDI 

MOTU 

MidiTimePiece 

AV 

multiport 

MIDI

UART16550 

serial 

driver

MPU-401 

UART 

ISA 

如果您用ISA声卡就在这里面选;

PCI 

如果您用PCI声卡,就在这里面选,集成声卡也在这里;

USB 

这是USB声卡内核支持选项;

我有一个这样的声卡,但没有试过;

PCMCIA 

这是PCMCIA声卡的选项,我还没有看过这样的声卡呢;

如果您有,就在这里面动动手吧。

因为我用的是Intel 

集成的声卡,所以要在PCI中选择,我们在 

中可以看到有两个与INTEL有关的;

Intel/SiS/nVidia/AMD/ALi 

AC97 

这个才是Intel 

AC97声卡的;

>

Intel/SiS/nVidia/AMD 

MC97 

Modem 

(EXPERIMENTAL) 

这个是机器集成的INTEL猫的蜂鸣器的;

因为我发现如果把猫的蜂鸣器的驱动也选上,可能造成两个冲突。

所以只能选上面的那个;

我们再回到 

Open 

System 

中看看,与我用的声卡是不是有关的?

(DEPRECATED)

ICH 

(i8xx) 

sound 

modules

Loopback 

device 

Microsoft 

我们也可以看到Open 

System中也有好多的声卡驱动,大家根据前面的lspci 

来选择吧。

3)对于操作系统所采用的文件系统的支持要编入内核,最好不要编成模块;

(重要)

比如我的Fedoracore4.0所采用的文件系统用的是ext3,所以我要把它直接编入内核;

好处是不受模块丢失或者损坏而不能启动系统;

而有时您把系统所采用的文件系统编译成模块,出现VFS错误,也有这方面的事,可能是您没有把ext3加入到相应的加载模块的配置文件中,所以我们为了减少麻烦,把风险降到最低,还是要直接置入内模的好;

Filesystems--->

*>

Ext3journallingfilesystemsupport

[*]Ext3extendedattributes

[*]Ext3POSIXAccessControlLists

[*]Ext3SecurityLabels

如果您还有其它的硬盘分区要读取,比如是reiserfs、ext2、fat、fat32、ntfs等,这样的可以编成模块来支持;

再举一例:

如果您的的操作系统用的是reiserfs的文件系统,当然就要把reiserfs的直接编入内核,其它的可以编成模块来支持了;

4)对于硬盘及RAID的支持,要直接编入内核;

比如ATA、SATA、SCSI及RAID的支持直接内核支持;

有时编完内核后,启动时不能识别硬盘和RAID,大多事情出在这里;

Slackware中在这方面有的是模块支持,我们可以把它由模块M改成内核*来支持;

如果您不明白,就按默认进行;

SATA的硬盘的支持除了选中SATA的支持、IDE设备的支持以外,还要选中SCSI的支持;

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

比如我没有ISDN设备,所以就把ISDN去掉;

ISDNsubsystem--->

>

Linuxtelephonysupport

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

等等。

如果您有USB的设备,要把USB方面好好看看;

比如大家常用的移动硬盘;

USB猫等,还有扫描仪等;

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

配置好后先要保存

SaveConfigurationtoanAlternateFile

出来一个

Enterafilenametowhichthisconfiguration,shouldbesavedasanalternate.Leaveblanktoabort.

.config

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

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

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

五、编译内核;

[root@localhostlinux-2.6.12.3]#make

[root@localhostlinux-2.6.12.3]#makemodules_install

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

[root@localhostlinux-2.6.12.3]#ls/lib/modules/

2.6.11-1.1369_FC42.6.12.3

六、安装内核及配置grub或lilo;

1、复制bzImage等相关文件,并创建initrd文件;

[root@localhostlinux-2.6.12.3]#cparch/i386/boot/bzImage/boot/vmlinuz-2.6.12.3

[root@localhostlinux-2.6.12.3]#cpSystem.map/boot/System.map-2.6.12.3

[root@localhostlinux-2.6.12.3]#cd/boot

[root@localhostlinux-2.6.12.3]#/sbin/mkinitrdinitrd-2.6.12.3.img2.6.12.3

我们把编译出来的bzImage,拷入到/boot目录,拷贝成vmlinuz-2.6.12.3;

并且用mkinitrd来创建imitrd-xxx.img文件,其中xxx为内核的版本号,是通过查看/lib/modules来版本来对应的,我们是编译出来的是2.6.12.3,所以就运行上面的命令创建,创建的出来的是initrd-2.6.12.3.img;

不创建这个文件,有时是启动不起来的,比如提示VFS错误等;

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

如果想要让新内核能让系统引导管理器grub和lilo的菜单上能看得到,必须改grub.conf或者lilo.conf,但我们必须保留老内核的在grub和lilo的启动菜单,毕竟我们编内核不能百分百的成功,对不对?

安全第一吧;

我只说grub的,我没有lilo,也不会用。

所以咱们还是GRUB吧,FC4系统引导管理器是GRUB,所以我们谈谈GRUB的设置;

查看/etc/grub.conf;

比如我的grub.conf的内容是这样的;

#grub.confgeneratedbyanaconda

#

#Notethatyoudonothavetorerungrubaftermakingchangestothisfile

#NOTICE:

Youdonothavea/bootpartition.Thismeansthat

#allkernelandinitrdpathsarerelativeto/,eg.

#root(hd0,7)

#kernel/boot/vmlinuz-versionroroot=/dev/hda8

#initrd/boot/initrd-version.img

#boot=/dev/hda

default=0

timeout=5

#splashimage=(hd0,7)/boot/grub/splash.xpm.gz

#hiddenmenu

titleFedoraCore(2.6.11-1.1369_FC4)

root(hd0,7)

kernel/boot/vmlinuz-2.6.11-1.1369_FC4roroot=LABEL=/rhgbquiet

initrd/boot/initrd-2.6.11-1.1369_FC4.img

titleWinXP

rootnoverify(hd0,0)

chainloader+1

我们要把老内核的启动保留下来,以防不测,我们只加入新的内核的启动;

所以我加上这样一段;

titleFedoraCore(2.6.12.3)

root(hd0,7)

kernel/boot/vmlinuz-2.6.12.3roroot=LABEL=/rhgbquiet

initrd/boot/initrd-2.6.12.3.img

咱们再来看一下改过后的配置文件;

kernel/boot/vmlinuz-2.6.12.3roroot=LABEL=/rhgbquiet

initrd/boot/initrd-2.6.12.3.img

然后重新启动机器,如果出现VFS错误,可能就是我写重要的那个地方出了错误;

注意:

如果重新启用内核后,原来安装的显示卡驱动,比如NVIDIA和ATI的驱动还要重新安装

一、什么是内核;

内核官方:

http:

//www.kernel.org

内核洋文用kernel,我刚才翻了一下词典,kernel中文意思是内核、核心、中心、精髓的意思;

也是果仁、果核的意思。

从字面理解,kernel是一事物的中心,植物的果实最重要的也是果仁和果核;

:

)由此我们可以推断内核是操作系统的中心。

我们知道LinusTorvalds开发了Linux,其实他开发的就是内核,按内核官方主页的理解,这个内核就是Linux;

其它的扩展和应用都是围绕内核而展开的。

所有Linux应用程序都会和内核发生直接或者间接的接触;

比如硬件需要内核支持,网络的通信也需要内核支持;

文件系统更需要内核支持......

直言我的能力的不行,如果您想了解和学习解操作系统,我写的教程只是初级应用,理论性的东西不是一言两语能说的清楚的,更不是应用者能说的清楚的。

二、为什么需要编译内核和管理内核

硬件是需要内核支持才行,有些硬件的支持没有被编入内核,这也需要我们重编内核;

内核的包含的不仅仅是设备的驱动,还有其它的内容,比如网络协议的支持,防火墙的支持......比如iptables的实现,有些功能是需要内核支持的,如果内核与iptables相关的内容没有被编入,iptables相关的功能就无法实现;

三、内核编译方法

请参考:

《编译内核操作流程——为新手指南》

四、管理内核模块的相关命令

1、lsmod列加以挂载的内核模块;

lsmod是列出目前系统中已加载的模块的名称及大小等;

另外我们还可以查看/proc/modules,我们一样可以知道系统已经加载的模块;

[root@localhostbeinan]#lsmod

2、modinfo查看模块信息;

modinfo可以查看模块的信息,通过查看模块信息来判定这个模块的用途;

[root@localhostbeinan]#moinfo模块名

举例:

[root@localhostbeinan]#modinfone2k-pci

filename:

/lib/modules/2.6.11-1.1369_FC4/kernel/drivers/net/ne2k-pci.ko

author:

Do

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 图表模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1