ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:31.77KB ,
资源ID:8024827      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8024827.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(定制内核.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

定制内核.docx

1、定制内核第六章 定制内核4.3 定制内核对于Linux系统管理员来说,定制系统内核是一件相当简单的事情,这主要是因为它提供源代码和编译器。困难之处仅仅是必须理解每一个选项是什么。你可以看到我也不能完全解释配置内核时的各种选项,一般来说,由于内核配置包含了如此多的东西,你只要关心和自己有关的东西就可以了。4.3.1 配置系统内核配置内核的命令是满简单的,不过选项实在是太多了,所以我们强烈建议你使用基于菜单的配置程序。要配置内核,首先必须安装内核的源代码,通常可以使用rpm命令,安装的目标位置是/usr/src/下面,例如我用2.2.14的内核,源代码就被安装到/usr/src/linux-2.2

2、.14这个目录下。如果你是从网络上下载的gz或tgz文件,请将它展开的/usr/src目录下。另外,一般建议建立一个名为/usr/src/linux的符号连接:ln s linux-2.2.12 linux然后进入这个目录,内核源代码的目录一般是这样的:openlab# lsCOPYING Makefile System.map include lib scriptsCREDITS README arch init mm vmlinuxDocumentation REPORTING-BUGS drivers ipc modulesMAINTAINERS Rules.make fs kernel

3、 net可以有三种启动配置程序的方法:make config启动交互式的命令行配置程序make menuconfig启动文本菜单形式的配置程序make xconfig启动图形界面的配置程序,这个命令必须在X Window下执行,我们将以这个命令的界面为例子,其他两种配置的内容是一样的,只是输入方式有所不同。图4.6 配置内核每个菜单选项被按下后都会出现一个子菜单,给出一些选择项,例如:Code manturity level options会给出下面的选择菜单:图4.7 内核配置(2)设置好了一个子菜单之后,按下next可以进入下一个选单,每个选项都可以用help按钮取得帮助。对我们而言,下面

4、的一些选择可能是重要的:(注意这里只给出一些主要的选择项,其他的你可以自己根据help判断,而且那些选项对服务器通常没有多少影响)Code manturity level options子选单Prompt for development and/or incomplete code/drivers(y/n)这个选项问你是否有兴趣尝试那些还处在开发测试阶段的内核功能,除非你是Linux的测试人员,否则选N,因为这些内核功能还不是十分可靠,对于服务器最好不用。Processor type and features子选单Processor family这个选项问你的处理器类型,可以选择从386到Pe

5、ntium Pro/MMX(Pentium II)在内的任何一种,但是如果你选择了Pentium处理器,编译出的内核将不能在386/486上运行。相反,386代码可以在任何可以运行Linux的系统上运行,但是可能无法发挥Pentium II的全部性能,自己选择合乎自己系统的选项。Math emulation 数学协处理器仿真,选否。Maximum Physical Memory 设置系统可以使用的最大内存量,缺省是1GB,不过如果你正好有一台梦幻级x86系统,可能必须将它改成2GB。Symmetric multi-processing support,这个选项用于支持多处理器,如果你有两个以上

6、的处理器,选yes,否则选N。Loadable module support子选单Enable loadable module support 是否使用可装载模块,选yes,否则无法使用装载模块功能。Kernel module loader 自动装载模块功能,这个功能允许核心在必要时自动装入对应的模块,不过这样很容易出错,通常应该禁止。Set version information on all symbols for modules 这个选项通常禁止。General setup子选单Network support 网络支持,选yesPCI support PCI设备支持,选yesPlug a

7、nd Play 子选单Plug and Play support 即插即用功能的支持,由于目前Linux的即插即用特性还不是很好,通常禁止。Block Devices子选单这个选单用来设置内核支持的外部存储设备,通常,除了你的服务器上确实存在的设备之外,其他的设备都可以选N,如果没有什么把握,也可以使用m选项将其编译为可装载模块。当然你启动Linux用的磁盘的驱动程序必须选Y。Network options子选单大部分的选项都可以选yes,除了下面的一些选项:IP:optimize as router not host 这个选项将按照路由器设置调整你的TCP/IP工作模式,如果你用Linux作

8、为软件路由器,那么可以选Y,否则选N。IP:tunneling 这个选项允许IP隧道,这对早期的的Netware是很重要的一种TCP/IP实现方式,但今天已经不再需要。如果担心由个别的程序使用这个功能,将它编译为模块。The IPX protocol 是否支持IPX协议。如果需要支持老式的netware 3.x或4.x文件服务,需要打开这个选项,否则禁止。Apple Talk DDP 是否支持AppleTalk,选禁止。TCP syncookie support 这个选项是一个补丁,用于对付“SYN flood”攻击,选yes。SCSI support 子选单和 SCSI low-level

9、drivers子选单在这两个选单里选择你使用的SCSI控制器和设备类型,通常启动磁盘的驱动程序必须编译进内核(y)Network device support 子选单及相关选单在这几个选单里选择你使用的网络适配器类型。通常我们将它们编译成可装载模块(m)。Character devices子选单缺省设置通常就已经很好了,不过有一个选项必须注意,即Maximum number of Unix98 PTYs in use(0-2048)这个选项可以理解为最大的telnet进程数(包含ssh,rsh,rlogin等),缺省值是256,这对一般系统已经足够,然而也许你要开设一个有几百人上站的BBS,在

10、这种情况下,将它提高到2048。Filesystems 子选单它设置内核中支持的文件系统类型,可以参考第二章的解释。Network File Systems子选单设置支持的网络文件系统,NFS和SMB文件系统是必须支持的,其他系统可以编译成模块。Partition Types 子选单选择系统支持的分区格式。Native language Support子选单可以将各种语言的支持程序都编译成模块。kernel hacking 子选单Magic SysRq Key 这个选项允许你通过sysrq(Alt+PrintScreen)来强行控制系统,即使在系统崩溃之后。除非你准备调试内核,否则选N。当全部

11、选项设置完毕后,选择主选单的Save and Exit退回,然后开始编译:openlab$ make bzImagemake bzImage命令将按照你的选择重新编译系统内核源代码并生成核心映像,这需要一段时间。注意建立启动映像有两个办法,即make zImage或者make bzImage。其中,make bzImage对核心映像进行压缩,由于服务器用到的核心驱动比较多,通常应该选择make bzImage,否则用make zImage可能发生映像文件太大而无法安装的情况。下一步是编译模块,使用命令openlab$ make modules将产生对应的内核模块。4.3.2 使用新内核编译通过

12、了一个新内核之后,可以用新内核引导系统,这样就可以使用新内核提供的功能了。为了使用新内核进行引导,首先要把编译出的内核模块安装到/lib/modules目录下,这可以用modules_install选项完成openlab$ make modules_install这个操作必须在root权限下执行。然后需要为新的内核创建启动选择,通常我们建议不要用新内核覆盖旧内核,而是用lilo程序配置一个新的启动选择项,首先我们要把生成的内核映像拷贝出来,这个映像按照我们的设定应该是/usr/src/linux/arch/i386/boot/bzImage另外,为了正确地装入模块,下面的文件也是必要的:/us

13、r/src/linux/System.map将这两个文件拷贝到合适的地方,例如/bootimage,然后在lilo.conf中建立新的启动项,例如:(加粗体的是增加的内容)boot=/dev/hdamap=/boot/mapinstall=/boot/boot.bprompttimeout=50image=/boot/vmlinuz-2.2.5-15label=linuxroot=/dev/hda1read-onlyimage=/bootimage/bzImagelabel=newroot=/dev/hda1read-only然后执行lilo程序,显示linux *new表示核心已经安装成功,

14、重新启动,在lilo:提示符下输入new回车,就可以启动新的内核了。在新内核测试确认无误以后,将default改成新内核对应的项,重新运行lilo程序,就不需要手工引导新内核了。4.3.3 从灾难中恢复安装在主引导扇区的的Lilo是容易被破坏的,一旦发生这种情况,系统将无法启动,这也是教科书上一般建议从软盘启动系统的原因之一。但是,如同我们所说的那样,我们不主张这样做,相反,我们主张准备一张Linux启动盘,然后在万一出现问题时从软盘引导系统并且进行灾难恢复。通常,可以制作标准的Linux软盘系统,然后用软盘启动系统,这需要将软盘做成Linux启动格式,但是更好的办法是将系统引导到DOS下,然

15、后用loadlin.exe程序来引导Linux。为了达到这个目的,你首先要找到一个能够正确引导系统的内核,根据你的系统中的/etc/lilo.conf就可以知道目前使用的内核映像是哪一个文件,将它拷贝到一张在DOS下格式化的软盘。然后到安装Linux的光盘上找到loadlin.exe程序,拷贝到软盘上。要使用loadlin,首先用DOS软盘启动系统,然后在包含内核映像的软盘上使用loadlin.exe,例如你的映像文件为bzImage,而Linux系统的根分区是hda1,则可以使用下面的语法:loadlin.exe bzImage root=/dev/hda1 roro表示第一趟连接/文件系统

16、的时候使用read-only方式,这也是lilo.conf中使用的方式。执行这一条命令之后,Linux将象平时一样启动,只是使用的是软盘上的内核。启动完毕之后,只要正确设置/etc/lilo.conf并且重新执行lilo程序就可以恢复lilo了。不过由于Linux内核建立在保护模式下,所以最好用纯DOS方式启动loadlin,不要使用emm386和himem,更不要在windows 95的dos框中执行loadlin。另外一种常见的灾难是由于某些原因,系统的启动脚本发生错误,特别是与网络相关的脚本发生了错误,或是某些网络文件系统损坏等等。如果发生这样的情况,常常必须进入运行级1来修改系统脚本。

17、要想在启动时直接进入某个运行级,可以在lilo:提示符下使用命令行,例如,你的启动选项中某个启动项为sel,要使用这个启动项的运行级1,在lilo:下输入sel 1回车后,就会自动进入运行级1。运行级1有其特殊的含义,因为它代表“单用户模式”,这个模式启动系统时无需输入口令就可以获得一个root shell。如果你忘记了超级用户口令,就可以使用这个办法进入系统更改口令。当然这带来了一些安全性问题,特别是在可能有人接触你的机器时,解决的方法是为lilo设置口令,见有关安全性的部分。还有一种比较可怕的灾难是文件系统损坏,这时只能从包含Linux根文件系统的软盘加载文件,然后手工安装文件系统了。4.

18、4 使用硬盘4.4.1 为系统安装新的硬盘或迟或早你的硬盘空间总会耗尽,当硬盘空间开始紧张的时候,你可以通过删除文件腾出一些空间,然而必须存储的文件总是比你能买到的硬盘的容量大一些。在这种情况下,更有效的方法是为系统添加一块新的硬盘,在笔者写这部分内容的时候,28GB的IDE和37GB的SCSI硬盘已经成为新的时尚。(PC的最大好处就是你可以在任何有必要的时候扩展你的系统!)如同一般书上建议的那样,SCSI硬盘在服务器方面具有对IDE硬盘的先天优势。不过,与NT不同,Linux并不十分依赖于SCSI,高性能的磁盘缓冲在很大程度上抵消了IDE的弱点,因为你可以把买SCSI控制器的钱转用于购买12

19、8MB内存。当然,如果你的服务比较繁重,特别是内存比较紧张而需要使用交换,那么SCSI的性能优势会迅速的体现出来。许多服务器主板上带有SCSI控制器,你可以将SCSI硬盘直接连接在上面,否则你需要一块SCSI控制卡,不过,一定要确认你的Linux内核支持你购买的SCSI控制卡,就我知道的,Linux对SCSI的支持远不象对以太网卡那样令人满意。然后,为了确保工作,你需要将SCSI支持加入内核,并且编译相应的SCSI卡驱动程序。相对来说,IDE硬盘的安装极其简单,只要确认你的系统BIOS能够识别你的硬盘,将IDE硬盘正确连接,上电就可以了,而且几乎可以肯定Linux内核会自动识别你的硬盘。由于作

20、者假定你有一定的DIY基础,所以不打算处理如SCSI连接,IDE的跳线等等问题,你可以自己查阅有关的资料,或者最简单的找人给你安装一遍。4.4.2 分区和建立文件系统如同在DOS和Windows 9x下一样,一个新的硬盘必须通过分区和格式化(在Linux下叫做“建立文件系统”)才能被Linux所使用。通常我们总是建议将新的分区格式化为ext2文件系统。分区可以使用许多程序来完成,例如fdisk,cfdisk,Disk Druid等等。在安装那一章我们已经看到了DiskDruid程序和CFDISK程序,这里我们主要介绍的是fdisk。每个Linux发行版本都会带有这个程序,而且它的使用虽然不直观

21、,却非常简单。要使用fdisk程序,使用命令fdisk 设备名,例如,要给第二个IDE主磁盘分区,使用fdisk /dev/hdc然后出现下面的选项:The number of cylinders for this disk is set to 3467.There is nothing wrong with that, but this is larger than 1024,and could in certain setups cause problems with:1) software that runs at boot time (e.g., LILO)2) booting and

22、 partitioning software from other OSs(e.g., DOS FDISK, OS/2 FDISK)Command (m for help):注意这里的提示信息,这里警告你的柱面数大于1024。Linux可以支持柱面数大于1024的硬盘,但是启动分区通常必须保留在1024以内,如果你的启动分区太大,那么Lilo程序可能无法正常安装(在目前的发行版本中的lilo都不能支持超过1024个柱面的启动分区,如果一定要这样用,你需要去下载新版本的lilo)。按下m键并回车可以得到命令列表:a 设置活动分区b 对磁盘进行BSD类型的分区c 切换DOS兼容标志d 删除某个分区

23、l 列出已知的分区类型m 显示这个帮助信息n 建立新的分区o 清空分区表p 显示当前分区形式q 放弃并退出s 对磁盘进行Sun 风格的分区t 改变某个分区的标志u 改变显示的单位v 校验分区表w 存盘并退出x 专家模式这些命令的含义都十分简单,例如,要建立一个新的分区,使用命令nCommand (m for help): nCommand actione extendedp primary partition (1-4)p就是普通的分区,而e代表扩展分区。如果要建立一个普通的分区,输入p并且回车:pPartition number (1-4):输入1,表示使用第一个分区表项,然后将输入起始和结

24、束柱面号,完毕后,返回分区界面。由于普通的分区(主分区)的分区表项只能使用1-4的数值,也就是最多只有四个,这在许多情况下是不够用的,因此我们通常还要使用扩展分区:Command (m for help): nCommand actione extendedp primary partition (1-4)ePartition number (1-4): 1First cylinder (1-3467, default 1):Using default value 1Last cylinder or +size or +sizeM or +sizeK (1-3467, default 3467

25、):Using default value 3467上述操作把整个硬盘划成了扩展分区,在存在扩展分区时,就可以使用逻辑分区划分了(类似于DOS的逻辑盘):Command (m for help): nCommand actionl logical (5 or over)p primary partition (1-4)注意在有扩展分区的时候出现了l选项,这个选项将扩展分区分划为逻辑盘,分区方法与前面基本上是一样的,区别在于逻辑分区的分区号是从5开始。Command actionl logical (5 or over)p primary partition (1-4)lFirst cylind

26、er (1-3467, default 1):Using default value 1Last cylinder or +size or +sizeM or +sizeK (1-3467, default 3467): +1000M上述操作建立了一个1GB的逻辑分区,如此下去可以建立更多的逻辑分区。分区结束之后,可以用p命令显示,确认无误后用w命令存盘退出。如果有必要,重新启动计算机。分区正确后,下一步要为Linux建立文件系统,这可以用mkfs命令完成:mkfs -V -t 文件系统类型 -l -c 分区名 -V选项输出完整的信息,-l从系统中读入坏块的列表,-c选项用于在建立文件系统的同

27、时检测磁盘介质。文件系统类型选ext2。openlab# mkfs -t ext2 -c /dev/hdc1mke2fs 1.15, 18-Jul-1999 for EXT2 FS 0.5b, 95/08/09Filesystem label=OS type: LinuxBlock size=1024 (log=0)Fragment size=1024 (log=0)32128 inodes, 128488 blocks6424 blocks (5.00%) reserved for the super userFirst data block=116 block groups8192 blo

28、cks per group, 8192 fragments per group2008 inodes per groupSuperblock backups stored on blocks:8193, 24577, 40961, 57345, 73729,Checking for bad blocks (read-only test): doneWriting inode tables: doneWriting superblocks and filesystem accounting information: done建立了文件系统之后,就可以连接到系统上使用了。但是,一般情况下,我们总是

29、希望启动系统时自动挂接文件系统,这可以通过编辑/etc/fstab来实现,/etc/fstab是一个用来描述文件系统的文件:openlab# cat /etc/fstab/dev/hda1 / ext2 exec,dev,suid,rw,usrquota,grpquota 1 1/dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0/dev/hda2 /usr ext2 defaults 1 2/dev/fd0 /mnt/floppy ext2 noauto,owner 0 0none /proc proc defaults 0 0none /dev

30、/pts devpts gid=5,mode=620 0 0它的基本格式是这样:设备名 连接点 文件系统类型 选项 备份频度 文件系统检查的趟数其中,最后的检查趟数是一个用在fsck中的数值,对于根文件系统,这个值为1,其他本地文件系统是2,如果设置为0,那么将不检查这个文件系统。至于备份频度栏,只要设置为1就可以了。显然,cdrom不需要备份,也不需要做完整性检查,所以都是0。现在要把新分的这个分区加入进去,设备名是/dev/hdc1,可以随便设置一个连接点,比如/export,文件系统显然是ext2,选项由于现在还没有设置,可以直接设为defaults,所以只要加入这样一行:/dev/hd

31、c1 /export ext2 defaults 1 2然后建立/export目录,重新启动计算机就可以使用新的硬盘了。如果你觉得重新启动太复杂,也可以使用mount a命令。4.4.3 交换分区通常很少需要更改交换分区的大小,或是使用新的交换,无论如何我们还是解释一下,建立swap分区的工作和建立常规文件系统几乎是一样的,仅有两点区别:第一个区别是,建立swap分区的办法是,首先建立一个常规的Linux分区:fdisk /dev/hda2n# fdisk /dev/hda1Command (m for help):Command (m for help): nCommand actione extendedp primary partition (1-4)pPartition number (1-4):4First cylinder (46-3467, default 1): 46Last cylinder or +size or +sizeM or +s

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

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