




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Kernel HOWTO 简体中文版 作者: Brian Ward 1briblah.math.tu-graz.ac.at译者: v0.80, 26 May 1997. 翻译日期: 2006年6月 _ 这是一份关于如何配置、编译、升级内核以及排错的详细向导 _ 1. 简介 * 1.1 请先看这里! * 1.2 文章风格说明 2. 重要问题与解答 * 2.1内核是做什么的? * 2.2 我为什么要更新内核? * 2.3 较新的内核支持那些硬件? * 2.4 我需要那个版本的 gcc 或是 libc ? * 2.5 什么是可加载模块? * 2.6 我需要多大的磁盘空间? * 2.7 这需要多久的时间? 3. 如何真正进行内核的配置? * 3.1 获得内核源代码 * 3.2 内核源代码包的解压 * 3.3 配置内核 * 3.4 编译计划 (The Makefile) 4. 编译内核 * 4.1 清除与确认 * 4.2 编译时期 * 4.3 其它可以make的东西 * 4.4 安装内核 5. 修补内核 * 5.1 使用修补文件 * 5.2 如果有错误发生 * 5.3 砍掉 .orig 文件 * 5.4 其它的修补文件 6. 与内核相关的软件 * 6.1 kbd * 6.2 util-linux * 6.3 hdparm * 6.4 gpm 7. 一些问题 * 7.1 make clean * 7.2 巨大或缓慢的内核 * 7.3 内核无法编译 * 7.4 新版的内核似乎不能启动 * 7.5 你忘了执行 LILO,或系统根本不能启动 * 7.6 系统显示 warning: bdflush not running * 7.7 系统说 undefined symbols 而且无法编译 * 7.8 无法让我的 IDE/ATAPI CD-ROM 正常工作 * 7.9 系统显示关于 obsolete routing requests 的奇怪提示 * 7.10 防火墙功能无法在 1.2.0 上工作 * 7.11 Not a compressed kernel Image file (不是内核压缩镜像) * 7.12 升级至 1.3.x 后在控制台终端机上的问题 * 7.13 内核升级后似乎无法编译东西 * 7.14 增加上限 8. 升级至 2.0.x 的注意事项9. 可加载模块 * 9.1 安装模块工具 * 9.2 与内核发行的模块 10. 其它配置选项 * 10.1 General setup (一般设定) * 10.2 Networking options (网络选项) 11. 常用技巧 * 11.1 重导 make 或是 patch 指令的输出 * 11.2 条件式的内核安装 * 11.3 内核更新 12. 其它可能相关有用的 HOWTOs13. 杂项 * 13.1 作者 * 13.2 预定目标 * 13.3 贡献者 * 13.4 版权声明,许可,等 _ 1. 简介 你是否需要阅读这份文件? 如果你有下列任和一个问题的话,是的: * 哎呀!这套 wizzo-46.5.6 软件说它需要 1.8.193 版的内核,而我却仍然只有 1.0.9 版! * 比较新的内核之一里面有你正好需要的一个设备驱动程序 * 你对于如何编译内核真的一无所知 * 在 README 文件里面真的就是全部的数据了吗? * 你来,你试,它还是不动 * 你你被一些人要求为他们安装内核 1.1 请先看此! 这份文件中的某些演示假设你会使用GNU tar,find 以及 xargs 这些是 Linux 套件里的标准工具,应该不是问题 文件中也假设你知道你系统的文件系统结构,如果你并不知道,最好赶快备份一份 mount 指令在系统正常运作下,所显示的结果作为参考(或者是一份 /etc/fstab 的列表,如果你能够看得懂) 这些信息很重要,而且,除非你重新分区或添加新的磁盘,重新安装你的系统以及做诸如此类的操作,否则它们不会变动 本文写作时最新产品的内核版本号是 2.0.30,也就是说本文的参考及例子是对应于该版本的 虽然我尝试让这篇文章尽量跟版本无关,内核却不断地在发展中 因此如果你取得一新的版本,它不可避免地会有一些不同 当然,这应该不会造成大问题,但它可能会制造一些混淆 有两种版本的 Linux 内核源代码,即稳定版 和 开发版 的 产品版本从1.0.x 开始而且目前是以偶数编号发表的; 如1.0.x ,1.2.x 是稳定版内核,2.0.x 也是这些版本的内核应该比较稳定,在发表时是没有代码漏洞(bug)的版本 开发版中的内核 (1.1.x, 1.3.x 等等) 是作为测试用的,给那些想要测试最新功能和为代码debug的人用的 已经警告过你了 1.2 文章风格说明(此处因为文字格式改变,提示内容仅供参考) 看起来像这样 text 的文字应该是某些将出现你的屏幕上的东西,一个文件名, 或是某样可被直接键入的东西,像是命令,或命令的选项(如果你看的是纯文本文件,它看起来没什么不同) 命令与其它的输入经常被框起来(用 ),这经常引起典型的标点符号问题: 如果这样的项目出现在句子的最后面,人们时常会在命令后面加上一句号 ., 因为美国人的引号习惯将句号放入引号里面 即使用常识(而不幸的是,这假设了拥有此常识的人是习惯于美国式的引号)想也知道应先将这标点去掉,但很多人总是忘记 所以在此情形下我将句号放在引号外头换句话说,当我叫你要打 make config 时, 我会写 make config,而不是 make config. 2. 重要问题与解答2.1内核到底是做什么的? 在 Unix 系统中,内核像是你的程序与硬件的一个管理者和法官 首先,它为所有执行中的程序(程序)做内存管理,并且确保它们都能够平均(或不平均,如果你愿意)的分享处理器的运算资源 此外,它还提供了一个良好的接口让刚刚提到的程序能利用它与你的硬件沟通 其实内核所处理的工作比这还要更复杂一些,不过这些基本的功能是首先要知道的 2.2 我为什么要更新内核? 比较新的内核一般来说会提供更强的能力与更多种奇奇怪怪的硬件驱动(也就是说,它们拥有更多的设备驱动程序), 它们能够尽享更好的进程管理,它们运行的效率更高,它们可能比旧的版本来的更稳定,而且它们修正了旧版里的一些错误 大部分的人是因为他们需要那些新的设备驱动程序以及错误补丁的部份而更新内核 2.3 较新的内核支持那些硬件? 请看 4Hardware-HOWTO 文件 另一个方法是,你可以查看 Linux 源代码中的 config.in 文件, 或者就在当你试着去 make config 时找出来 make config 将会让你看到标准的内核源代码支持的所有硬件,但这并不是 Linux 所支持的全部硬件; 许多普通的设备驱动程序(像是 PCMCIA 驱动程序以及某些磁带机的驱动程序)是个别维护及发行的可加载模块 2.4 我需要那个版本的 gcc 或是 libc ? Linus 对这个问题的建议放在 Linux 源代码的 README 文件里头 如果你没有该版本或是更新的版本,新版的 gcc 应该会告诉你是否需要更新 libc 的版本 这两个操作都不会有什么问题,只要照着说明做就可以了 2.5 什么是可加载模块? 它们是内核的一部分(通常是设备驱动程序),但是并没有编译到内核里面去 它们被分别编译,然后几乎可以在任何时候将它们插入运行中的内核或从中拔出 由于它的便利性,这已经成为一种增加东西到内核里去的较好方式 许多常用的设备驱动程序,例如 PCMCIA 驱动程序以及 QIC-80/40 磁带机的驱动程序就是可加载模块 2.6 我需要多大的磁盘空间? 这与你系统的配置有关首先,压缩过后的 Linux 源代码在 2.0.10 版时约占 6 MB 许多平台在解压缩后仍会保留一份压缩的源文件解压缩以后这将占掉约 24MB 但这还不是全部 你将会需要更多的磁盘空间来实际编译这些东西 这与你配置多少东西到你的内核里有关例如,在某部机器上,我有网络,3Com 3C503 的驱动程序, 并且配置了三种文件系统,而这全部共需要 30 MB加上压缩过的 linux 内核源代码,这个配置大概需要用掉你 36MB 在另外一个系统上,不需要支持网络设备(但仍然需要支持网络),加上声卡,结果吃掉更多空间 还有,一个新版本的内核几乎总是比旧版本的占更大的空间 所以,一般来说,如果你有许多种硬设备的话,确定你有足够的硬盘空间来容纳这个配置 (以今日的价格来说,对于储存空间的问题我不能不建议你再买一个硬盘) 2.7 这需要多久的时间? 对大部份的人而言,答案是很久你的处理机速度有多快,以及你拥有的内存大小将是决定所需时间的主要因素, 但是,在把多少东西配置到内核里这方面还是可以做点努力 在一台有 16 MB 内存的 486DX4-100 计算机上,一个有五种文件系统、支持网络、以及声卡驱动程序的 1.2 版内核可以在二十分钟以内完成 类似的配置,在一台 386DX/40(8 MB 内存)上大约需要要1.5 个小时 在编译内核时通常一些好的建议是去喝一点咖啡,看点电视,织些毛线,或任何你喜欢的事 如果你的机器真的很慢的话你也该换台较快的机器 3. 如何真正进行内核的配置?3.1 取得内核源代码文件名称一般是以标记成 linux-x.y.z.tar.gz 为代表,其中的 x.y.z 是版本编号 较新的版本以及补丁文件一般是放在类似 v1.1 以及 v1.2 这样的子目录下 数字最大的是最新的版本,而且通常是测试版,也就是说如果你对beta 或 alpha 版感到不安的话,你应该停留在主要的发行版本上 强烈建议你去找 mirror 的 ftp 节点,而不要直接到 ftp.funet.fi 去! 底下是一些 mirrors 以及其它节点的简要列表: USA: :/pub/Linux/kernelUSA: :/pub/linux/sources/systemUK: sunsite.doc.ic.ac.uk:/pub/unix/Linux/sunsite.unc-mirror/kernelAustria: ftp.univie.ac.at:/systems/linux/sunsite/kernelGermany: ftp.Germany.EU.net:/pub/os/Linux/Local.EUnet/Kernel/LinusGermany: rmatik.rwth-aachen.de:/pub/Linux/PEOPLE/LinusFrance: ftp.ibp.fr:/pub/linux/sources/system/patchesAustralia: .au:/pub/linux/kernel 一般来说, 的 mirror 站是很好找的 /pub/Linux/MIRRORS 文件包含了已知的 mirror 节点 如果你没有办法上 ftp ,有 个存放 linux 的 BBS 系统列表会定期刊登在 comp.os.linux.announce 上,试着到那边去找一下 如果你想寻找一般的 Linux 信息与套件,去 / 3.2 解开内核源代码 确定你是以root的身份登录的,然后 cd 到 /usr/src 如果你安装 Linux 时已经安装了内核源代码,在这个目录底下应该已经存在一个叫做 linux 的子目录 这是旧版的 linux 内核源代码如果你还有磁盘空间而且想要玩得安全一点,那么你会想要保留这个子目录的 有个好主意是根据你目前使用的内核版本来修改这个子目录的名称 uname -r 这个指令将会告诉你目前的内核版本 所以,如果 uname -r 显示 1.0.9,你就可以把 linux 改名(用 mv)为 linux-1.0.9 如果你是个鲁莽型的人,那就直接把这个子目录清除掉 无论是哪一种情况,反正只要确定在解开全部的内核源代码之前,/usr/src 目录下没有 linux 这个子目录就对了 在 /usr/src 目录下,用 tar zxpvf linux-x.y.z.tar.gz 来解开内核源代码的包装 (如果你拿到的是 .tar 的文件,后面没有加上 .gz,那就用 tar xpvflinux-x.y.z.tar) 你将会看到原始程序的内容飞逝而过当它完成以后,在/usr/src 将会出现一个新的 linux 子目录 cd 到 linux 目录下然后查看README 文件, 里面应该会有一段标题为 INSTALLING the kernel 或类似的文字 如果可以的话,先依照说明里的指示 建立该有的符号链接,移除过时的.o 文件等等等诸如此类的工作 3.3 配置内核 注意:这部份内容有些是重复 Linus 的 README 文件中的相应章节或加以修订在 /usr/src/linux 下执行 make config 这个命令将会进入一个指讯问模式, 而这个讯问模式会问你各种问题它需要 bash ,所以要确定 bash 是 /bin/bash,/bin/sh 或 $BASH 还有其它种 make config 的方式你可能会觉得更容易使用 对那些执行 X Window 的人你如果有装 GTK 的话可以试着用 make xconfig make menuconfig 是给那些有装 (n)curses 而且喜欢文字模式选单的人用的 这些接口有个明显的好处: 如果在配置过程中你不小心犯了错,可以简单地回去修正 你现在该准备好回答这些问题,通常用 y 或 n 就可以了 设备驱动程序通常会有一个 m 选项 这表示模块(module),表示说系统将会编译它,但不会直接放进内核里,而是做为一可加载模块 一个有趣的说法是表示maybe有一些很明显或是不重要的选项将不会在此加以说明 请见8其它配置选项一节对其中的简短说明 在 2.0.x 或以后的版本中有一个 ? 选项,提供了这个配置参数的简短描述这些信息应该都是最新的 Kernel math emulation (内核的数学运算模拟) 如果你没有数学辅助运算处理机(你只有一台单纯的 386 或 486SX),那么你在这里要回答 y如果你已经有数学辅助运算处理机却还回答 y, 那也不必太担心 linux 还是会去使用它而忽略掉内核的仿真程序 唯一的影响是编译出来的内核变大了(用掉更多的内存) 我听说数学运简模拟很慢; 虽然和本节无太大关系,还是应该注意这对 X Window 系统的效率会有很大影响 Normal (MFM/RLL) disk and IDE disk/cdrom support (标准硬盘支持) 你在这里差不多都得回答 y它代表的意思是内核将会支持标准的 PC 硬盘,例如大多数人使用的 IDE 接口硬盘这不包括 SCSI 设备的支持; 这将在后面设定 然后你会被问到关于 old disk-only 与 new IDE 驱动程序的事 你应该两者选一; 主要的差别是旧的驱动程序只支持单一接口两部磁盘驱动器, 而新的驱动程序支持第二接口及 IDE/ATAPI 光驱新的驱动程序比旧的大约多 4K, 而且应该是改良的,也就是说除了可能包含些许错误之外,它应该会改善你的磁盘效率,特别是如果你有较新的 EIDE 硬件的话 Networking support (网络支持) 原则上,如果你有连接网络,譬如说,你有 Internet 联机,或是你将使用SLIP,PPP,term 或其它方式拨接到 Internet 上的话,回答 y 然而,某些软件套件(例如 X Window 系统)需要网络支持,即使你的机器并不真正连接到网路上这情形你也应该回答 y 然后,你会被问到是否需要支持 TCP/IP 网络,如果你不十分确定,就回答 y Limit memory to low 16MB (限制内存在 16 MB) 可能会有一些不良的 386 DMA 控制器无法正确地寻址到 16 MB 以上的内存地址; 如果你的机器刚好有这种(罕见)情况时,那么你也就只好回答 y 了 System V IPC 一个 IPC (进程内通讯,Interprocess Communication) 的定义就在 Perl 书中的批注 这并不大奇怪,一些 Perl 程序设计者用它来让行程之间互相沟通,就像许多其它套件(最著名如 DOOM)一样 因此除非你完全了解你在做什么,不然最好别回答 n Processor type (386, 486, Pentium, PPro) (微处理机种类) (在较旧版本的内核中为: Use -m486 flag for 486-specific optimizations, 使用 -m486 参数针对 486 做优化) 按照惯例,这是对一特别的微处理机做某种优化; 内核仍可在其它芯片上运行得很好,但可能会比较大些 不过,在较新版本的内核上,已经不是这个样子了因此你应该正确地回答你要编译的微处理机种类 386 的内核可以在所有的机器上工作 SCSI support (SCSI 的支援) 如果你有 SCSI 设备,那么就回答 y 接着会有提示要求更进一步的信息,像是你是否要支持光驱,磁盘驱动器,还有你使用的是那一种 SCSI 适配卡 这部份请参阅 9SCSI-HOWTO,有更详细的说明 Network device support (网络设备支持) 如果你有网卡,或者你想要使用 SLIP,PPP,或是并列端口适配卡,那就回答y 接着会有提示问你使用的是那一种网卡,或要使用那一种通讯协议 Filesystems (文件系统) 这将会有提示要你回答所要支持的文件系统种类,大概有: Standard (minix) 新的套件不再建立 minix 文件系统,而且很多人不使用它,但是把它配置在内核里仍然是个好主意 某些急救磁盘程序会用到它,而且仍然有许多软盘磁盘可能用 minix 文件系统,因为 minix 文件系统对于处理软盘较好 Extended fs 这是扩充文件系统的第一版,现在已经不再使用使用的时机是,如果你有需要,你就会知道的如果你觉得怀疑,你就不需要它 Second extended 这是现在新发行的套件所广泛采用的文件系统,你可能会有其中一种,所以必须回答 y xiafs filesystem 这个文件系统曾经一度很普遍,但是在写这份文件时,我已经不知道有任何人在使用它了 msdos 如果你想要在 linux 下使用你硬盘中的 MS-DOS 分割区,或是想将用MS-DOS 格式化的软盘片挂进来的话,回答 y ums-dos 这种文件系统能使 MS-DOS 文件系统拥有更多像 Unix 的特性,像是长文件名等等这对那些不使用 MS-DOS 的人(像我)并不是很有用 /proc 另一种神奇的东西(我猜这个概念是无耻地从贝尔实验室里偷过来的)它不是你硬盘分割区里的任何东西,而是内核与程序之间的文件系统接口许多程序工具(像 ps)都会用到它 有时可以试着用 cat /proc/meminfo 或 cat /proc/devices 某些 shell (特别像是 rc) 使用了 /proc/self/fd (在其它系统里叫做 /dev/fd) 来做输出输入动作 你几乎应该回答 y; 许多重要的 Linux 工具都依赖它来运作的 NFS 如果你在网络环境下而且想要由 NFS 来使用其它机器的文件系统,回答y ISO9660 绝大部分的光盘片都使用这个文件系统如果你有光驱而且想在Linux 下使用,回答 y OS/2 HPFS 在编写这份文件的时候,这个文件系统还只支持到 OS/2 HPFS 的读取 System V and Coherent 这是为 System V 以及 Coherent 系统的分割区而设的(它们是另一种在 PC 上的 Unix 系统) 但是我不知道我需要那些文件系统! 好吧,键入 mount它看起来会像这样: blah# mount /dev/hda1 on / type ext2 (defaults) /dev/hda3 on /usr type ext2 (defaults) none on /proc type proc (defaults) /dev/fd0 on /mnt type msdos (defaults) 仔细看看每一行;在 type 后面的那个字就是文件系统的格式 在这个例子中,我的 / 和 /usr 分割区是 second extended 格式, 我使用了 /proc ,而且挂有一张以 msdos (bleah) 为文件系统格式的磁盘 如果你有使用 /proc,可以试试 cat /proc/filesystems 它会给你一份目前使用的内核所支持的文件系统列表 这配置并不常使用不重要的文件系统会使内核显得臃肿; 参见可加载模块一节的说明以避免此情况,以及 10陷阱一节说明为何臃肿的内核不好 Character devices (字符设备) 在这里,你将会发现许多设备名称,用来设定你的打印机,总线鼠标,PS/2 滑鼠(大部分笔记型计算机使用内建的 PS/2 鼠标), 以及一些磁带机驱动程序,以及其它的字符设备当有合适的选项时,回答 y 注意:Selection 这个程序使你可以在 X window 之外使用鼠标在各个虚拟控制台间做剪贴的动作 如果你有串行鼠标的话,这真的很棒,因为它与 X window之间的沟通良好, 不过如果你用其它种类的鼠标就需要点技巧了Selection 曾经一度是选择的配置配项,不过现在已经是标准了 注意二: Selection 现在已经过时了现在新的程序名叫 gpm 它能做更神 奇的事,像是转换鼠标协议,处理多重鼠标等 Sound card (声卡) 如果你想听到 biff 程序大叫的话,回答 y 然后等一下会编译另一个配置程 式并详细询问你所有关于声卡的问题 (注意: 当它问你是否安装完整版本的 驱动程序时,你可以回答 n 以减少你内核内存并只选用你真正需要的) 如 果你有声卡我强烈建议看一下 11Sound-HOWTO 以知道更多的细节 其它配置选项 没有将所有的选项都列出来,因为有些经常改变,或是相当自明的(例如 3Com 3C509 support 就是编译这种特别以太网络卡的驱动程序), 有一个十分容易理 解的所有选项列表(包括将它们放到 Configure 指令稿的方法)可在这个 URL 找 到(由 Axel Boldt 12axeluni-paderborn.de 所收集): 13http:/math-www.uni-paderborn.de/axel/config_help.html 或经由匿名 FTP 站: 14/pub/Linux/kernel/config/krnl_cnfg_hlp.x.y z.tgz 其中 x.yz 是版本号码 其后来的内核中(2.0.x 及其后的),这已被整合到内核源代码中 Kernel hacking 这是从 Linus 的 README 里摘录的: kernel hacking 配置的细节通常会产生一个更大或是更慢的内核(或者是又 大又慢), 而且可能因为将一些例程配置成很活跃地去尝试中断一些不良的程序 码以便找出内核里的问题( kmalloc() ), 而使得内核变得比较不稳定所以 要产生一个内核产品的话,你在这里应该回答 n 3.4 现在呢? (The Makefile) 在你完成 make config 之后,应该会有一个讯息告诉你内核已经配置好了, 以 及要你去check the top-level Makefile for additional configuration 等等讯息 所以查看一下 Makefile你应该不必改变它,但是看看无妨 一旦新内核完成 ,你也可以用 rdev 指令来改变其中的选项 4. 编译内核4.1 清除与确认 当用来进行配置的指令稿执行完成时,它会告诉你去 make dep 以及 clean 所以要执行make dep这将确保所有的相依关系,例如 include files 都 没问题 除非你的计算机真的很慢,否则它不会花太久时间的 完成后,在较旧 版本的内核中你还应该做 make clean 这会清除内核编译的所有目的文件以及 其它东西在重建一个内核之前不要忘记这个步骤 4.2 编译时期 在完成 make dep 及 make clean 工作之后,你现在可以执行 make zImage 或 make zdisk (这部份需要长时间) make zImage 将会编译内核 ,并且在 arch/i386/boot 留给你一个叫做 zImage 的文件这就是新的压缩 内核 make zdisk 做的事也一样,但是它会把内核放到你所希望的磁盘去, 只要把这张磁盘放在 A: zdisk对于测试新内核很方便;如果它当掉(或 工作不正常),只要把磁盘拿掉再用旧的内核启动即可 如果你意外地删除了核 心或是什么的,它也是个方便的启动办法 当你把一台磁盘的内容倾倒到另外一 台去时,你也可以用它来安装新的系统(除了这些之外还有更多用途!) 所有近来的内核都是压缩过的,所以有个 z 在名字前面压缩过的内核执行的 时候会自动将自己解压缩 4.3 其它可以make的东西 make mrproper 将会做更广泛的 清除 工作 这个动作有时候是必须的,所 以你可能会希望在每次修补的时候执行它 make mrproper 还会将你的配置文件 案杀掉,所以如果你认为它重要的话应该先做一备份(在 .config) make oldconfig 会尝试由一旧的配置文件来配置你的内核它会为你执行 make config 如果你还未曾编译过内核或没有旧的配置文件,那么你可能不 该做这个,因为你几乎确定会更改预设的配置 参见可加载模块一节对 make modules 的说明 4.4 安装内核 在你已经获得一个看起来能够照你希望运作的新内核之后,现在是安装它的时候 了 大部份的人使用 LILO (Linux Loader) 来做这件事 make zlilo 将会 安装内核,然后对它执行 LILO,使你完成所有开机的准备, 但是这只有在 LILO 已经以下列这种方式配置好的时候才可以:内核为 /vmlinuz , lilo 在 /sbin 下,而且与你的 LILO 配置(/etc/lilo.conf)一致 另一方面,你可能需要直接使用 LILO这是一个相当容易安装的软件,然而,它 的配置文件常使人困扰 查看配置文件(不是旧版的 /etc/lilo/config 就是新版的 /etc/lilo.conf),看看里面有些什么 它看起来像这样子的东西: image = /vmlinuz label = Linux root = /dev/hda1 . 首先,image = 设定为已经安装的内核大部份的人似乎都用 /vmlinuz label 则是给 lilo 用来决定现在要启动的是那个内核或操作系统, 而 root 则是这个特别的操作系统的根目录 / 备份一份旧的内核,然后将你做 的 zImage 拷贝进去(例如,如果你用 /vmlinuz 的话,就像这样 cp zImage /vmlinuz) 然后,执行 lilo,但是在较旧的系统上,你可能必须执行 /etc/lilo/install 或甚至是 /etc/lilo/lilo -C /etc/lilo/config 如果你想知道更多有关于 LILO 的配置,或是你并没有 LILO 但是你想要安装的 话, 从你喜欢的 ftp 节点取得最新的版本然后依说明行事 要能够从硬盘启动你的旧内核其中之一的话(这是另一个在新内核出状况的情况下 保护你自己的方法), 把 LILO 配置文件中所有的(包括) image = xxx 拷贝到文件 案的最底端, 然后把 image = xxx 改成 image = yyy 其中的 yyy 是你 备份旧内核所存档的名字 接着,把 label = zzz 改成像是 label = linux-backup 然后重新执行 lilo 你可能得要加上一行 delay=x,其中的 x 是以十分之一秒为单位的时间, 这是告诉 LILO 在启动前先等一下,所以你可 以中断它的执行(例如用 shift 键) 然后键入所备份的启动映射之 label (在 发生了某些令人不愉快的事情的情况下) 5. 修补内核5.1 使用修补档 内核的小幅更新是以修补档的方式发行例如,如果你的版本是 1.1.45 , 而且 你注意到出现了一个 patch46.gz 可以用来升级它, 这代表你可以藉由使用这 个修补档将版本升级到 1.1.46 你也许会想要先备份内核源代码(make clean 然后 cd /usr/src; tar zcvf old-tree.tar.gz linux 将会为你造出 一份 tar 压缩文件,里面就是整个内核源代码与其文件架构) 现在接着继续上面的例子,假设你已经取得了 patch46.gz 并放在 /usr/src 下 cd 到 /usr/src 然后执行 zcat patch46.gz | patch -p0 (如果并不是 压缩过的修补档,那么就执行 patch -p0 patch46), 你将会看到许多东西 飞逝而过(或是慢慢跳过,如果你的计算机真的很慢的话)告诉你它正试着修补程序 ,以及是否成功 通常,这个过程快得无法仔细看清楚它的动作,所以你会无法 确定它到底有没有成功地执行 所以你可能会想在 patch 指令中加上 -s 选项 ,告诉 patch 程序只报告错误讯息就好 (这样你就不会得到许多嗨! 我的电 脑正在做某些改变!的感觉,不过你可能宁愿这样) 那么就得找找看一些可能 不是那么顺利的事cd 到 /usr/src/linux 并找寻文件名结尾为 .rej 的文件 某些版本的 patch(比较旧的版本,它们可能是在比较早期的文件系统上编译的 )会把这些没有成功的操作记录在文件名有 # 的文件里 你可以用 find 来替 你找; find . -name *.rej -print 会将现行目录及子目录下所有具 .rej 结尾的文件名印到标准输出 如果一切正确无误的话,执行第三节跟第四节所讨论的 make clean ,config 以及 dep 关于 patch 指令另外还有一些选项如前所述,patch -s 将会抑制除了错误以 外的所有其它讯息 如果你把内核源代码放在 /usr/src/linux 以外的地方 ,在该目录下用 patch -p1 也可以干净利落的执行修补任务 其它的 patch 选 项在在线手册(man page)里都有很详细的描述 5.2 如果有错误发生 (注意: 本节提到的大部份是指旧版的内核) 通常最常发生的问题是当 patch 修改一个叫做 config.in 的文件时,这个文件 案看起来不怎么对劲, 因为你修改了一些选项来配合你的机器这个问题已经小 心的注意过了,但还是可能有人会在较旧的版本上遭遇这个问题 要修正这个问 题的话,查看 config.in.rej 这个文件里留下些什么讯息 有修改过的部份正 常来说会在每一行开始的地方标上 + 和 - 查看有标记的附近几行,然后 记得它们是设成 y 或是 n 现在编辑 config.in 文件,然后在适当的地 方 把 y 改成 n 以及 n 改成 y执行 patch -p0 config.in.rej 如果成功的话(没有错误),那么你就可以继续配置与编译的工作 这个 config.in.rej 档还是会留在那里,但是你可以砍掉它 如果你仍然遭遇其它问题,那么可能是你安装了一份损坏的修补档 如果 patch 显示 previously applied patch detected: Assume -R?, 你可能使用 了一些比你目前的版本编号还低的修补档; 如果你回答 y,它会尝试将你的程 式码降级,而且几乎一定会失败; 如此,你就需要重新取得一份新的内核源代码 要还原到修补前的状态的话,在原先的修补档上执行 patch -R 当修补档真的失败的时候,最好的办法是从一个干净的内核源代码(例如从 linux-x.x.x.tar.gz 文件其中之一)开始,再重新执行 5.3 砍掉 .orig 文件 只要做过几次修补以后,那些 .orig 的文件将会开始堆积 例如,我的一个 1.1.51 版的程序代码最后一次做清扫是在 1.1.48 版(我想是吧) 删除这些 .orig 文件会节省许多的磁盘空间 find . -name *.orig -exec rm -f ; 将会替你照料这件事某些版本的 patch 会用 来代替 .orig 有其它更好的的办法可砍掉这些 .orig 文件,就是利用 GNU 的 xargs: find . -name *.orig | xargs rm 或是更安全但有些啰嗦的方法: find . -name *.orig -print0 | xargs -null rm -5.4 其它的修补档 有一些并不是由 Linus 发行的其它修补档出现(我将称之为非标准的) 如 果你使用了它们,Linus 的修补档可能会而无法正确地执行, 那么你不是得将它 们还原就是得因此而去修改内核源代码或是修补档这个工作对初学者通常是很 讨厌, 所以如果你不想去修改内核源代码(结果通常不大好),在使用 Linus 的 修补档之前先还原这些非标准的修补档,或重新安装新的程序代码 然后试试这非 标准的修补档能不能用如果不能的话,那么要不你就继续使用旧的内核, 试着 修改修补档使其能用,要不就等待(可能是乞求)新版非标准修补档出现 非标准的修补档有多普遍? 你有可能曾经听过它们我使用 Bill Paul 的不闪烁 修补档来修改我的虚拟控制台,因为我讨厌会闪烁的游标(这个修补档经常为新版 内核而更新) 由于大部份较新的设备驱动程序都已经被发展成可加载模块形式 ,因此许多非标准的修补档的重要性已逐渐降低 6. 附加的套件 你的 Linux 内核有许多在内核源代码本身里面并没有说明的特性; 这些特性一 般是经由外来的软件来利用,在这里列出一部分最普遍的: 6.1 kbd Linux 的控制台有着比你所能吃惊更多的特色这包括切换字型,重新对映你的 键盘,切换显示模式(较新版的内核)的能力等等 kbd 这套软件里有能够让使用 者做这些动作的支持程序,还加上一大堆的字型以及几乎足以适用任何键盘的一 些键盘对映表 它可在放置内核原始码的同一站台找到 6.2 util-linux Rik Faith ( 15) 收集了一大堆 Linux 的工具,叫做 util-linux 现在是由 Nicolai Langfeldt ( 16util-linuxmath.uio.no) 所维护 可从 的 17/pub/Linux/system/misc 取得 它包 括了像 setterm,rdev 以及 ctrlaltdel 与内核有关的工具 就像 Rik 所说的 ,不要想都不想就把它装上去! 你不需要安装此套件中的每一个东西,而且如果 你这样做的话可能会引起严重的问题 6.3 hdparm 像很多软件一样,这曾经是一个内核修补文件及其支持程序 这些修补档被放入商 业内核中,而用来最佳化以及调适你硬盘的支持程序一般是分开发行的 6.4 gpm gpm 是 general purpose mouse 的简写
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年公共关系专家危机处理技巧考核试卷及答案解析
- 机电电工基础知识培训课件
- 2025年安全管理培训考试模拟题及答案
- 2025年服务机器人应用技术员初级面试模拟题及答案
- 2025年安全生产监督测试题
- 2025年AI造型师职位面试准备问题集
- 2025年通信工程师中级技能考试模拟题及答案解析
- 新年祝福卡教学课件小班
- 2025年农家乐客房笔试秘籍
- 2025年工会安全检查员面试模拟题集
- GB/T 14038-2008气动连接气口和螺柱端
- 10000中国普通人名大全
- 电力安全工作规程习题集-变电部分
- 2021年徐州邳州市教师进城考试笔试模拟试题及答案解析
- 乳腺癌病人的护理优秀教学设计
- 广西建设工程质量安全监督总站建设工程检测见证取样员手册
- 《三字经》PPT课件(完整版)
- 钣金件检验的基本要求
- 公路工程施工安全技术规范-JTG-F90-2015
- 高职创新无人机实训室建设方案
- 现在完成时——英语公开课课件
评论
0/150
提交评论