天天看点

内核编译 安装

1. 查看当前linux内核的版本号,使用命令uname -r或uname -a ,得出当前linux内核的版本号为linux-2.4.20-8。

2. 下载源码包linux -2.4.30.tar.bz2。拷贝到目录/usr/src

3. 进入/usr/src目录,使用命令对linux -2.4.30.tar.bz2软件包进行解包bzip2 –xvfj linux -2.4.30.tar.bz2 。

4. 执行make mrproper命令,这个步骤会删除/usr/srclinx-2.4.30目录中不稳定的 .o文件,附属文件以及内核配置文件。

5. 进行内核选项设置。make config :这是文字模式的设置方式,它以逐项问答的方式进行,若是答错了任何一个项目,都必须重新再设置一次。make oldconfig; 完全使用旧的内核功能设置,若不需要办更内核功能,应该使用这种方法。make menuconfig; 这是文字模式的设置方式,它包含一个菜单以设置内核编译选项。make xconfig; 这是图形界面的设置方式,make menuconfig的选项设置。

以下是配置举例(可用make menuconfig等命令):

网卡配置:

Network device support --->

Ethernet (10 or 100Mbit) --->

[*] Ethernet (10 or 100Mbit)

[*] EISA, VLB, PCI and on board controllers

<*> DECchip Tulip (dc21x4x) PCI support

USB support--->

<*> Support for USB

[ ] USB verbose debug messages

--- Miscellaneous USB options

[*] Preliminary USB device filesystem

--- USB Host Controller Drivers

<*> UHCI Alternate Driver (JE) support

< > OHCI (Compaq, iMacs, OPTi, SiS, AL

--- USB Device Class drivers

< > USB Audio support

< > USB MIDI support

<*> USB Mass Storage support

<*> USB Modem (CDC ACM) support

--- USB Human Interface Devices (HID)

<*> USB Human Interface Device (full HID) support

Input core support --->

<M> Input core support

<M> Keyboard support

<M> Mouse support

(1024) Horizontal screen resolution (NEW)

(768) Vertical screen resolution (NEW)

< > Joystick support

< > Event interface support

< > User level driver support

File systems--->

[*] Quota support

<*> VFS v0 quota format support

<M> Kernel automounter version 4 support

<M> Ext3 journalling file system support

File systems--->Native Language Support--->

<*> NLS ISO 8859-15 (Latin 9; Western European Languages with Euro)

<*> NLS UTF8

Networking options-->

<*> Packet socket

[*] Packet socket: mmapped IO

<*> Netlink device emulation

[*] Network packet filtering (replaces ipchains)

[ ] Network packet filtering debugging (NEW)

[*] Socket Filtering

<*> Unix domain sockets

[*] TCP/IP networking

[*] IP: multicasting

[*] IP: advanced router

[*] IP: kernel level autoconfiguration

[*] IP: DHCP support

IP: Netfilter Configuration --->全部选为M

6. 在完成以上的全部设置后,系统会响应信息,并提示需执行make dep命令,make dep命令用来连接linux程序代码与数据库。

7. 在连接程序代码与函数库后,必须删除不必要的模块和文件,可以执行命令make clean。

8. 在完成以上的两个步骤后,接下来是最费时的内核编译过程。通常内核编译的方法有以下三种:make bzImage 这是最常用的编译方法,在利用此法编译后,系统会在/usr/src/linux-2.4.30/arch/i386/boot目录下产生内核程序文件zImage。 make bzlilo这个方法除了会编译内核程序文件外,还会在lilo中设置相关的设置。 make bzdisk 这个方法除了会编译内核程序文件外,还会制作一张不含lilo的引导盘。我做这个实验时使用了make bzImage命令,完成命令后系统会在 /usr/src/linux-2.4.30/arch/i386/boot下生成一个名为bzImage的核心文件。

9. 在内核编译完成后,使用命令make modules 开始编译外挂模块,然后使用命令make modules_install安装编译完成的模块。最后使用命令depmod –a建立模块连接。

10. 在内核编译后并不表示已经完成了所有工作,接下来必须更换新的内核了,建议不要覆盖原有核心,而是安装为双启动:一是以防万一不成功,还可以用旧核心启动。二是学习配置几种启动方式,有时是需要的。将当前目录(/usr/src/linux-2.4.30)下编译好的核心文件改名-复制到/boot目录下,cp /usr/src/linux-2.4.30/System.map /boot/System.map-2.4.30;cp /usr/src/linux-2.4.30/arch/i386/boot/bzImage /boot/vmlinuz-2.4.30, 删除vmlinuz、System.map符号连接,建立新的符号连接,因为我们是使用双内核启动,所以就不删除vmlinuz、System.map符号连接,建立新的符号连接。

11. 这是整个内核编译的作后步骤了—修改引导文件的内容,我们使用的red hat linux 9使用的是GURB引导程序,所以我们要使用vi编辑/boot/grub/grub.conf文件。没有经过修改的原文件内容

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE: You do not have a /boot partition. This means that

# all kernel and initrd paths are relative to /, eg.

# root (hd0,2)

# kernel /boot/vmlinuz-version ro root=/dev/hda3

# initrd /boot/initrd-version.img

#boot=/dev/hda

default=1

timeout=20

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

title Red Hat Linux (2.4.20-8)

root (hd0,2)

kernel /boot/vmlinuz-2.4.20-8 ro root=LABEL=/

initrd /boot/initrd-2.4.20-8.img

修改这个文件就是在这个文件中加入linux-2.4.30的引导程序,根据linux-2.4.20-8的引导程序,可以在此文件中加入以下的内容:

title Red Hat Linux (2.4.30)

root(hd0,2)

kernel /boot/vmlinuz-2.4.30 ro root=/dev/hda3

接下来还要把文件中的 default选项的值修改为1,因为是双内核选择启动,保存此文件退出。

12. reboot 重新启动Linux。重新启动后进入red hat linux GRUB开机管理程序窗口,在此窗口会出现两个内核启动,一个是原内核即linux-2.4.20-8,一个是我们新编译的内核即linux-2.4.30,选择内核linux-2.4.30进入系统。

13. 到此为止,此次实验已经做完。但是由于我从老师那里下载到升级内核的patch-2.4.31.bz2软件包,所以决定继续升级自己的内核,首先将升级patch-2.4.31.bz2软件包下载到自己的机器,并制成 .iso格式的文件,linux挂接cdrom将patch-2.4.31.bz2软件包拷贝到/usr/src目录(cp /mnt/cdrom/patch-2.4.31.bz2 /usr/src)并进入该目录,先使用命令less /src/linux-2.4.30/Makefile查看没有升级前的内核版本号在此文件第二行可是看出SUBLEVEL=30,然后使用命令bzip2 –dc ../patch-2.4.31.bz2 | patch –p1 ,这时系统会自动升级内核,此命令执行完后,再次查看升级后的版本号得出SUBLEVEL=31,这说明升级成功。

继续阅读