我们在前面的几个章节介绍了 Linux
其实指的就是核心而已,而整个 Linux 的世界当中,最重要的也就是核心了!他控制了您的服务器的所有硬件,也控制了所有的您想要的功能,例如软件磁盘阵列(RAID)、各种适配卡的驱动模块、防火墙的新增功能等等。透过管理您的
Linux 核心,将可让您的服务器跑得更加的顺畅,也更稳定您的服务器所提供的相关服务呢!此外,为了让硬件驱动程序与相关的核心功能修订容易,所以
Linux 核心是支持『模块化』的,也就是说,您核心所想要的功能可以『后来才加挂上去』喔!那么如何加挂上去呢?这就需要了解一下所谓的『模块』了!当然,连同模块的相关指令就得也要会用啰!^_^
到底什么是核心呢?还记得我们在前面的 BASH shell
部分提到过:计算机真正在工作的东西其实是『硬件』,例如数值运算要使用到
CPU、数据储存要使用到硬盘、图形显示会用到显示卡、音乐发声要有音效芯片、连接
Internet 可能需要网络卡等等。那么如何控制这些硬件呢?那就是核心的工作了!也就是说,你所希望计算机帮你达成的各项工作,都需要透过『核心』的帮助才行!当然啰,如果你想要达成的工作是核心所没有提供的,那么你自然就没有办法透过核心来控制计算机使他工作啰!
举例来说,如果你想要有某个网络功能 ( 例如核心防火墙机制 ) ,但是你的核心偏偏忘记加进去这项功能,那么不论你如何『卖力』的设定该网络套件,很抱歉!不来电?换句话说,你想要让计算机进行的工作,都必须要『核心有支持』才可以!!这个标准不论在
Windows 或 Linux 这几个操作系统上都相同!如果有一个人开发出来一个『全新的硬件』,目前的核心不论
Windows 或 Linux 都不支援,呵呵!那么不论你用什么系统,哈哈!这个硬件都是英雄无用武之地啦!那么是否了解了『核心』的重要了呢?没错!所以我们才需要来了解一下如何编译我们的核心啦!
既然核心与硬件是息息相关的,那么是否意味着每次有厂商推出新版本的硬件时,我们都需要『重新编译核心』啊?好加在!并不需要的喔!因为我们
Linux 的核心相当的具有弹性,他是支持模块化的,也就是说,只要新硬件可以推出搭配核心的驱动模块(
也就是大家口头上常常讲的『驱动程序』 ),那么我们只要将该模块挂加载核心,核心就可以支持该硬件啦!
但是,很多朋友还是常常感到困惑,就是 Linux 上面针对最新硬件的驱动程序总是慢了几个脚步,所以觉得好像
Linux 的支持度不足!其实不可以这么说的,为什么呢?因为在 Windows
上面,对于最新硬件的驱动程序需求,基本上,也都是厂商提供的驱动程序才能让该硬件工作的,因此,在这个『驱动程序开发』的工作上面来说,应该是属于硬件
发展厂商的问题,因为他要我们买他的硬件,自然就要提供消费者能够使用的驱动程序啦!所以,如果大家想要让某个硬件能够在
Linux 上面跑的话,那么似乎可以发起一人一信的方式,强烈要求硬件开发商发展
Linux 上面的驱动程序!这样一来,也可以促进 Linux 的发展呢!
Linux Distribution:
那么 Red Hat /
Fedora / Mandrake
这些东西又是什么呢?那个咚咚我们称为 Linux distributions
啊!虽然 Linux 的核心已经是个完整的小型操作系统了,但是如果没有其它工具与软件的辅助,那么这个操作系统能够提供的服务是很有限的。为了让使用者能够很有效的使用
Linux 提供的功能,很多的厂商就将一些工具软件与服务器软件搭配核心,再加上自己的创意来完成一个可以透过光盘安装的功能完善的
Linux 系统,这样的咚咚我们就称为 Linux distributions 啰!
那么因为这些 Linux distributions 都是利用同样的 Linux 核心来制作属于他们的操作系统,就连服务器与工具软件也都是大同小异,比较不同的可能是在程序设计上面与操作接口的友善程度而已啊!所以啰,认真的学习某一个
distribution 也就够了!其它的 distribution 绝大部分都是相同的耶!
Linux 核心放在哪里?
好问题!那么 Linux 核心放在哪里呢?嘿嘿!还记得我们在开机的流程里头有说明过,那个开机的顺序是:
这个『核心』是除了 BIOS 之外,一个操作系统中最早被启动的东西,他包含了所有可以让硬件与软件工作的信息,所以,如果没有搞定核心的话,那么你的系统肯定会有点小问题!好了,那么是不是将『所有目前核心有支持的东西都给他编译进去我的核心中,那就可以支持目前所有的硬件与可执行的工作啦!』,
这话说的是没错啦,但是你是否曾经看过一个为了怕自己今天出门会口渴、会饿、会冷、会热、会被车撞、会摔跤、会被性骚扰,而在自己的大包包里面放了大瓶矿
泉水、便当、厚外套、短裤、防撞钢梁、止滑垫、电击棒....等一大堆东西,结果却累死在半路上的案例吗?当然有!但是很少啦!我相信不太有人会这样做!
( 会这么做的人通常都已经在医院了~ )
取而代之的是会看一下天气,冷了就只带外套,热了就只带短衣、如果穿的漂亮一点又预计晚点回家就多带个电击棒、出远门到没有便利商店的地方才多带矿泉
水....说这个干什么!对啦!就是要您了解到,核心的编译重点在于『你要你的
Linux 作什么?』,是啦!如果没有必要的工作,就干脆不要加在你的核心当中了!这样才能让你的
Linux 跑得更稳、更顺畅!这也是为什么我们要编译核心的最主要原因了!
说到这里突然想到以前国军研究的『经国号战斗机』事件,在当时,经国号里头的配备都是『最棒的!』包括测量仪器、瞄准配备、武器系统等等,但是呢,却配上一部普普通通的客机用引擎!挖哩ㄌㄟ?最早期试飞的时候,经国号竟然只能『在跑道上滑行!』真是悲哀!同样的道理,
Linux 的核心也是这样的,如果你的硬件与核心之间没有办法达到良好的配合,那么
Linux 确实可能会跑得不很顺畅!!
Linux 的核心有几个主要的特色,除了『Kernel 可以随时、随各人喜好而更动』之外,Kernel
的『版本更动次数太频繁』也是一个特点!所以啰,除非你有特殊需求,否则一次编译成功就可以啦!不需要随时保持最新的核心版本,而且也没有必要
( 编译一次核心要粉久的ㄋㄟ! ) 。话说到这里又突然想到今天看到的一篇文章,大意是说老板想要雇用的人会希望是
Linux 的老手,因为他们比较容易了解问题的所在,除此之外,如果有任何问题发生,由于其使用
Linux 是可以随时修补漏洞的!但是如果是 Windows 的话,就得要将机器关闭,直到
MS 推出修补套件后才能再启用~
那么是否『我就一定需要在安装好了 Linux 之后就赶紧给他编译核心呢?』,老实说,『并不需要的』!这是因为几乎在每一个
distribution 当中,他们已经预设好了相当大量的模块了,所以几乎使用者常常或者可能会使用到的数据都已经被编译成为模块
( 这个『模块』的意义后面会再解释 ) ,也因此,呵呵!我们使用者确实不太需要重新来编译核心!尤其是『一般的使用者,由于系统已经将核心编译的相当的适合一般使用者使用了,因此一般入门的使用者,基本上,不太需要编译核心』。OK!那么鸟哥闲闲没事干跑来写个什么东西?既然都不需要编译核心还写编译核心的分享文章,鸟哥卖弄才学呀!?很抱歉,
VBird 虽然是个『不学有术』的混混,却也不会平白无故的写东西要您来指教~当然是有需要才会来编译核心啦!编译核心的时机可以归纳为几大类:
新功能的需求:
我需要新的功能,而这个功能只有在新的核心里面才有,那么为了获得这个功能,只好来重新编译我的核心了
( 例如 iptables 这个防火墙机制只有在 2.4.xx 版本里面才有,而新出产的 AGP
显示卡,很多也需要新的核心推出之后,才能正常而且有效率的工作!) 再举个例子,在之前的
Red Hat 7.2 的版本中,由于预设是将 CD-ROM 编译成核心的『模块』,也就是说,核心本身还没有支持
CD-ROM 的功能,必须要挂上模块之后才能使用与读取这个 CD-ROM !是否觉得很麻烦呢?呵呵!那么这个时候,如果你想要直接让
kernel 支持 CD ROM 的话,就得要重新编译核心啰;
由于原本 Linux 的核心大多是针对 Intel 的 CPU 来作开发的,所以如果你的
CPU 是 AMD 的系统时,有可能 ( 注意!只是有可能,不见得一定会如此 ) 会让系统跑得『不太稳!』就鸟哥的经验来看,使用旧的
Pentum 系列的旧机器安装 Linux 的结果,还没有胡乱当机的经验!但是安装在
K6-2, K6-3 上面的 Linux ,通常需要重新编译一下核心会比较稳定一些!
2. 解压缩:
[root @test
/root]# cd /usr/src <==kernel
的预设 source 档案放置目录
[root @test
/src]# mv linux linux.old <==将旧的核心编译的目录搬移成其它目录
[root @test
/src]# tar -zxvf /root/linux-2.4.18.tar.gz <==将核心档案解压缩吧!
[root @test
/src]# mv linux linux-2.4.18
[root @test
/src]# ln -s linux-2.4.18 linux <==建立连结!
需要比较留意的是,核心所放置的地点『一定是
/usr/src/linux』这一个目录,然而由于不论哪一版核心编译都是这一个目录底下编译的,所以我个人相当的建议将每一版的核心都使用不同的目录来指定,然后以
link
的方式将该目录 link 到 linux 就可以啦!较为简单而且明了!底下的动作请都在
/usr/src/linux 底下进行呦!
基本上建议只要『上下左右 空白 及 Enter 』这六个按键就好了!不要使用
Esc ,否则一不小心就有可能按错的!
开始设定:
底下的设定项目非常的多,其中,如果您使用的是比 2.4.18 还要新的版本时,那么有可能会出现更多的选项!如果不确定选项的内容是什么?请千万以
Help 进入看一下该项目的设定值,如果还是不清楚怎么办?那么就直接以 Kernel
的默认值保留即可!我在底下的设定中,仅列出个人认为比较重要的项目,其它的项目您就得自己看一下啰?其实,基本上,只要底下这些项目您都了解之后,那么核心编译大抵上就没有很严重的困扰啰!
[root @test
linux]# make mrproper
<==去除 .o 的编译过的档案
[root @test
linux]# make menuconfig <==以文字选单的模式进行编译!
底下开始编译!
Code maturity
level options --->
<==关于核心测试功能的 code 开启项目;
[ ] Prompt for development and/or incomplete code/drivers <==因为我们没有要研发核心,所以不选
Loadable module
support ---> <==这个就是我们之前说的『模块』啦!
[*] Enable loadable
module support
<==让核心可以加载模块项目(必选)
[ ] Set version information on all module symbols
<==这个除非你要使用旧版本的数据,通常不选!
[*]
Kernel module loader <==也是必选啦!
Processor type
and features ---> <==选择
CPU 的型号项目
(Pentium-MMX) Processor family <==请依照您的实际情况选择您的
CPU 型号
< > Toshiba Laptop support <==底下这两个有使用到(笔记型计算机)才选择!
< > Dell laptop support
<M> /dev/cpu/microcode - Intel IA32 CPU microcode support <==如果是使用
Intel 的,可以编译成模块
<M> /dev/cpu/*/msr - Model-specific register support <==如果是使用
Intel 的,可以编译成模块
<M> /dev/cpu/*/cpuid - CPU information support <==如果是使用
Intel 的,可以编译成模块
(off) High Memory Support <==这个东西跟你的
RAM 有关系,RAM小于 1 GB 则使用 off 即可
[ ] Math emulation <==是否需要数值模拟?当然不需要!我们的
CPU 都够强了!
[ ] MTRR (Memory Type Range Register) support <==P6
(PII等级以上) 并且要跑 X-Window 才加上吧,与 AGP 有关
[ ] Symmetric
multi-processing support <==如果是双
CPU 的主机板才选择!否则就不要选了!
[*] Local APIC support on uniprocessors (NEW) <==如果你的
CPU 有支持 APIC 则选择!通常可以选择起来啦!
[*] IO-APIC support on uniprocessors <==跟上面的理由一致!选择起来吧!
General setup
---> <==一般设定部分
[*] Networking
support <==底下四个一定要选,跟基本的硬件装置有关!
[*] PCI support
(Any) PCI access mode
[*] PCI device
name database
[ ] EISA support <==底下这两个则与主机板上面的插槽有关!除非笔记型,否则不选
[ ] MCA support
[*] Support for hot-pluggable devices <==有点类似随插即用吧!可以选择呦!
PCMCIA/CardBus support --->
< > PCMCIA/CardBus support <==因为我没有笔记型,所以不选,若为笔记型计算机,请选择!
PCI Hotplug Support --->
[*] System V IPC <==底下这三个东西对于效能都不错!可以选择呦!
[*] BSD Process Accounting
[*] Sysctl support
(ELF) Kernel core (/proc/kcore) format <==底下这几个东西可以编译成模块啦!但是我直接编到核心啰!
<*> Kernel support for a.out binaries
<*> Kernel support for ELF binaries
<*> Kernel support for MISC binari
[*] Power Management support
< > Advanced Power Management BIOS support <==如果你想要你的
BIOS 接管电源管理,可以选择!我是不选的啦!
Memory Technology
Devices (MTD) --->
< > Memory Technology Device (MTD) support <==没必要就不要选吧!
Parallel port
support --->
< > Parallel
port support <==由于我的主机上面并没有接打印机,所以没选!如果你有打印机的话,一定要选择
Plug and Play
configuration --->
<*> Plug and Play support <==底下两个
随插即用! 马上勾选!
<*> ISA Plug and Play support
Block devices
---> <==一些比较冷门的储存机器!如果不确定的话,直接编译成模块吧!没关系的!
<*> Normal PC floppy disk support
< > XT hard disk support
< > Compaq SMART2 support
< > Compaq Smart Array 5xxx support
< > Mylex DAC960/DAC1100 PCI RAID Controller support
< > Loopback device support
< > Network block device support
< > RAM disk support
Multi-device
support (RAID and LVM) --->
[ ] Multiple devices driver support (RAID and LVM) <==除非要完
RAID (磁盘阵列)与 LVM ,否则不用选!
Networking
options ---> <==这一部份是最重要的除非特别强调,否则能编成模块就编成模块!
<*> Packet
socket
[*] Packet socket: mmapped IO
<M> Netlink device emulation (NEW)
[*] Network packet filtering (replaces ipchains)
[ ] Network packet filtering debugging (NEW)
[*] Socket Filtering
<*> Unix domain sockets
[*] TCP/IP networking
[*] IP: multicasting
[*] IP: advanced router
[*] IP: policy routing (NEW)
[*] IP: use netfilter MARK value as
routing key (NEW)
[*] IP: fast network address translation
(NEW)
[*] IP: equal cost multipath (NEW)
[*] IP: use TOS value as routing key (NEW)
[*] IP: verbose route monitoring (NEW)
[ ] IP: large routing tables (NEW)
[*] IP: kernel level autoconfiguration
[*] IP: DHCP support (NEW)
[*] IP: BOOTP support (NEW)
[*] IP: RARP support (NEW)
<M> IP: tunneling
<M> IP: GRE tunnels over IP
[*] IP: broadcast GRE over IP (NEW)
[*] IP: multicast routing
[*] IP: PIM-SM version 1 support (NEW)
[*] IP: PIM-SM version 2 support (NEW)
[*] IP: TCP Explicit Congestion Notification support
[*] IP: TCP syncookie support (disabled per default)
IP: Netfilter Configuration ---> <==这就是防火墙机制里头的
iptables 啦!都编成模块!
<M> Connection tracking (required for masq/NAT) (NEW)
<M> FTP protocol support (NEW)
<M> IRC protocol support (NEW)
<M> IP tables support (required for filtering/masq/NAT) (NEW)
<M> limit match support (NEW)
<M> MAC address match support (NEW)
<M> netfilter MARK match support (NEW)
<M> Multiple port match support (NEW)
<M> TOS match support (NEW)
<M> AH/ESP match support (NEW)
<M> LENGTH match support (NEW)
<M> TTL match support (NEW)
<M> tcpmss match support (NEW)
<M> Connection state match support (NEW)
<M> Packet filtering (NEW)
<M> REJECT target support (NEW)
<M> Full NAT (NEW)
<M> MASQUERADE target support (NEW)
<M> REDIRECT target support (NEW)
<M> Packet mangling (NEW)
<M> TOS target support (NEW)
<M> MARK target support (NEW)
<M> LOG target support (NEW)
<M> TCPMSS target support (NEW)
<M> ipchains (2.2-style) support (NEW)
<M> ipfwadm (2.0-style) support (NEW)
<M> The IPX protocol
[ ] IPX: Full internal IPX network (NEW)
< > Appletalk protocol support
< > DECnet Support
< > 802.1d Ethernet Bridging
QoS and/or fair queueing --->
[ ] QoS and/or fair queueing
Telephony Support
--->
<==这东西我也不知道怎么玩~~
< > Linux telephony support
ATA/IDE/MFM/RLL
support ---> <==储存界面的选择!当然
IDE 一定要选的啦!! 里面如果有看到属于您的芯片组,请记得将他选择起来!例如如果使用
VIA 的芯片组,那么最后一项VIA82CXXX chipset support就一定要选择起来呢!如果你是跟
VBird 一样,使用较老旧的主机板,那么就用系统默认值也就可以了!
<*> ATA/IDE/MFM/RLL support
IDE, ATA and ATAPI Block devices --->
<*> Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
<*> Include IDE/ATA-2 DISK support
[*] Use multi-mode by default
<*> Include IDE/ATAPI CDROM support
---- IDE chipset support/bugfixes
[*] CMD640 chipset bugfix/support
[*] RZ1000 chipset bugfix/support
[*] Generic PCI IDE chipset support
[*] Sharing PCI IDE interrupts support
[*] Generic PCI bus-master DMA support
[*] Use PCI DMA by default when available
[*] Intel PIIXn chipsets supportt
[*] PIIXn Tuning supportt
SCSI support
---> <==我的旧机器上并没有安装
SCSI 卡!我确定我不会使用到 SCSI ,但是如果你可能会安装的话,请编译!
< > SCSI support
Fusion MPT
device support --->
I2O device
support --->
< > I2O support
Network device
support ---> <==仔细的将你的网络设备编译进来吧!这个也很重要的!
[*] Network device support
<*> Dummy net driver support <==这个一定要装!但是请注意!如果你之前已经使用了
MRTG 了!这个装完之后 MRTG 要重跑一次!
<M> Bonding driver support
<M> EQL (serial line load balancing) support
<M> Universal TUN/TAP device driver support
<M> General Instruments Surfboard 1000
Ethernet (10 or 100Mbit) ---> <==这里面有相当多的卡,我只列出我要的卡而已!请选择你自己的网络卡呦!
[*] Ethernet (10 or 100Mbit)
[*] EISA, VLB, PCI and on board controllers
<*> EtherExpressPro/100 support
<M> RealTek RTL-8139 PCI Fast Ethernet Adapter
support
[*] Use PIO instead of MMIO
[*] Support for older RTL-8129/8130
boards
<M> VIA Rhine support <==这就是传说中的
D-Link 530 那块卡的驱动程序啦!
<*> PPP (point-to-point protocol) support <==这个一定要编进核心!不然就无法使用
ADSL 的 rp-pppoe 拨接啰!
[*] PPP filtering (NEW)
<M> PPP support for async serial ports (NEW)
<M> PPP support for sync tty ports (NEW)
<M> PPP Deflate compression (NEW)
<M> PPP BSD-Compress compression (NEW)
<M> PPP over ATM (EXPERIMENTAL) (NEW)
Amateur Radio
support ---> <==底下这四个应该不需要安装吧!?
IrDA (infrared)
support --->
ISDN subsystem
--->
Old CD-ROM
drivers (not SCSI, not IDE) --->
Input core
support ---> <==这个也编成模块就好啰!
<M> Input core support
<M> Keyboard support
<M> Mouse support
(1024) Horizontal screen resolution (NEW)
(768) Vertical screen resolution (NEW)
<M> Joystick support
<M> Event interface support
Character devices
---> <==接口设备的选项!最重要的地方在
AGP 的设定项目!因为我没有 AGP 所以没有设定!
[*] Virtual terminal
[*] Support for console on virtual terminal
<*> Standard/generic (8250/16550 and compatible UARTs) serial support
[*] Unix98 PTY support
<M> Mouse Support (not serial and bus mice)
[*] PS/2 mouse (aka "auxiliary device") support
< > /dev/agpgart (AGP Support) <==这个相当的重要!就是
AGP 显示卡的支持核心!请选择(若你有 AGP 的话!)
[ ] Intel 440LX/BX/GX and I815/I830M/I840/I850 support
<==下面的选项要上面的打勾之后才会出现!
[ ] Intel I810/I815/I830M (on-board) support
请特别留意选择你的适合的主机板芯片组呢!
[ ] VIA chipset support
[ ] AMD Irongate, 761, and 762 support
[ ] Generic SiS support
[ ] ALI chipset support
[ ] Serverworks LE/HE support
[ ] Direct Rendering Manager (XFree86 DRI support)
[ ] Build drivers for old (XFree 4.0) DRM (NEW)
--- DRM 4.1 drivers
< > 3dfx Banshee/Voodoo3+
< > ATI Rage 128
< > ATI Radeon
< > Intel I810
< > Matrox g200/g400
< > SiS (NEW)
[ ] Direct Rendering Manager (XFree86 DRI support)
Multimedia
devices --->
File systems
---> <==底下的选项主要在提供核心支持的档案格式!相当的重要!如果忘记编入的话,系统可是会读不到东西!
[*] Quota support <==没有他!
Quota 就无法起来!请选择呦!
<M> Kernel automounter support
<*> Kernel automounter version 4 support (also supports v3)
<M> Ext3 journalling file system support (EXPERIMENTAL)
<M> DOS FAT fs supportt
<M> MSDOS fs supportt
<M> UMSDOS: Unix-like file system on top of
standard MSDOS fss
<M> VFAT (Windows-95) fs supportt
<M> Compressed ROM file system support
[*] Virtual memory file system support (former shm fs)
<*> ISO 9660 CDROM file system support <==在
Red Hat 7.2 这里就是被编成模块了!才需要每次加载!
[*] Microsoft Joliet CDROM extensionss
<M> Minix fs support
<M> NTFS file system support (read only)
[*] /proc file system support
[*] /dev/pts file system for Unix98 PTYs
<*> Second extended fs support
<M> System V/Xenix/V7/Coherent file system support
Network File Systems --->
<M> Coda file system support (advanced network fs)
<*> NFS file system support <==NFS
也是需要的呦!
<M> SMB file system support (to mount Windows shares etc.)
<==网芳总是需要的吧!
[*] Use a default NLS (NEW)
Default Remote NLS Option: "cp950" (NEW) <==支持中文的语系!
Partition Types --->
Native Language Support ---> <==除了底下说的几个
* 的之外,其它的全部都编译成为模块!(以备不时之需!)
Default NLS Option: "iso8859-1" (NEW)
<*> Traditional Chinese charset (Big5) (NEW)
<*> NLS ISO 8859-1 (Latin 1; Western European Languages) (NEW)
<M> for others
Console drivers
--->
[*] VGA text console
Sound
--->
< > Sound card support <==你有声卡吗?那就编译他吧!
USB support
--->
<M> Support for USB
Kernel hacking
--->
好了!编译完成之后选择『Save
Configuration to an Alternate File』然后写成一个你喜欢的档名,这个档案内容就是你刚刚编译完成的数据啦!然后选择
<Exit> 之后,再储存一次到系统当中!接着下来就准备要编译啰!
另外,上面的设定您可以 按这里
来下载,然后捉到您的 /usr/src/linux 目录下,进入 make menuconfig 画面之后,选择『Load
an Alternate Configuration File』,然后写入档名 VBird-2.4.18 ,这样一来,
Linux 核心的预设选项则成为上面的样子啰!然后再请您一个一个的进行修正啦!目前我的机器以上面的档案案例来工作中,一切正常的啦!
不过,上面的资料主要是适用在鸟哥的个人机器上面的,我们这个网站主要的核心也是这样编出来的!因为我重视的地方在于『网络服务器』上面,所以里头的设定少掉了相当多的个人桌上型
Linux 的硬件编译!所以,如果你想要编译出一个适合您的机器的核心,那么可能还有相当多的地方需要来修正的!不论如何,请随时以
Help 那个选项来看一看内容吧!反正 Kernel 重编的机率不大!花多一点时间重新编译一次!然后将该编译完成的参数档案储存下来,未来就可以直接将该档案叫出来读入了!所以花多一点时间安装一次就好!那是相当值得的!
核心搬移完毕之后就 OK 了吗?当然不对啰!还记得在开机流程里面介绍的
Linux 的开机管理员吗?没错,那就是 lilo 跟 grub 啰,所以,接着下来我们要作的就是开机的设定啰?由于
lilo 与 grub 我们之前就提过了,所以这里不详细的介绍每个对象的内容,仅说明一下我的测试核心的规划!通常,我都喜欢直接以硬盘开机来测试新的核心,而由于害怕新的核心没有办法工作
( 注:很多时候,由于不同的 distribution 他所考虑的内容不一样,因此,很有可能您编译完成的核心并无法在您的
Linux distribution 上面工作的,所以,虽然他可以被编译成功,但是我们还是得测试测试他呢!
) 因此,我都会将旧的核心继续留下来,因为如果万一新核心没有办法工作,那么最起码我还可以使用旧的核心继续来管理我的
Linux 呢!这个时候就必需要有多重开机系统啦!
Lilo 的安装设定:
那么如果您是使用 lilo 的话,就需要修改 /etc/lilo.conf
啰!依据刚刚我们建立的名为 /boot/vmlinuz-2.4.18 的核心档案,您的 /etc/lilo.conf
内容应该有点像是这样:
[root @test
linux]# vi /boot/grub/menu.lst
timeout 10
color black/cyan
yellow/cyan
i18n (hd0,0)/boot/grub/messages
keytable (hd0,0)/boot/us.klt
altconfigfile
(hd0,0)/boot/grub/menu.once
default 0
title linux-2.4.18
kernel (hd0,0)/boot/vmlinuz-2.4.19
root=/dev/hda1 devfs=mount
title linux-2.4.19-16mdk
kernel (hd0,0)/boot/vmlinuz-2.4.19-16mdk
root=/dev/hda1 devfs=mount
initrd (hd0,0)/boot/initrd.img
title failsafe
kernel (hd0,0)/boot/vmlinuz
root=/dev/hda1 devfs=nomount failsafe
initrd (hd0,0)/boot/initrd.img
上面的黄色字体是经过修改之后的结果?很简单吧!这样就搞定了!然后就可以开机测试看看啰!但是,如果是
Lilo 转换到 grub 的使用者,还得再安装 grub 呢!可以这样做做看:
[root @test
boot]# grub-install /dev/hda
Installation
finished. No error reported.
This is the
contents of the device map /boot/grub/device.map.
Check if this
is correct or not. If any of the lines is incorrect,
fix it and
re-run the script `grub-install'.
(hd0) /dev/hda
或者直接进入 grub 的指令列进行安装:
[root @test
boot]# grub
GRUB version 0.92 (640K lower / 3072K upper memory)
[ Minimal
BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename. ]
grub> root
(hd0,0)
Filesystem
type is ext2fs, partition type 0x83
grub> setup
(hd0)
Checking
if "/boot/grub/stage1" exists... yes
Checking
if "/boot/grub/stage2" exists... yes
Checking
if "/boot/grub/e2fs_stage1_5" exists... yes
Running
"embed /boot/grub/e2fs_stage1_5 (hd0)"... 17 sectors are embedded.
succeeded
Running
"install /boot/grub/stage1 (hd0) (hd0)1+17 p (hd0,0)/boot/grub/stage2
/boot/grub/menu.lst"...
succeeded
Done.