编译Linux内核

1.需要先安装编译环境

进入 root 帐户:

> su

输入密码

安装必要的工具:

> apt-get install build-essential

(安装 gcc, make 等)

> apt-get install libncurses-dev

(安装 make menuconfig 时必须的库文件)

> apt-get install kernel-package, fakeroot

(Debian 系统里生成 kernel-image 的一些配置文件和工具)

> apt-get install initramfs-tools, module-init-tools

2.安装 kernel-source:

可以从 Ubuntu 的源安装,这样的好处是简单,而且安装的内核是Debian 化了的,缺点是内核不是最新的内核。

> apt-get install linux-source

也可以从 www.kernel.org 下载内核安装。kernel.org 的境象应该很多,选一个最快的来下载,因为要下载的文件很大。我这里介绍的是安装 2.6.24 的内核,加上了 ck 的补丁。

下载 linux-2.6.24.tar.bz2 和 patch-2.6.24.bz2 ,并且把它们都存放在 /usr/src 目录下。

> tar xvjf linux-2.6.24.tar.bz2

> ln -s linux-2.6.24 linux

(如果已经有了 linux 目录,则要先将其删除)

> cd linux

> bzcat ../patch-2.6.24.bz2 | patch -p1

至此,内核源文件以及补丁就都安装好了。

3.编译内核

把源码包解压到 /usr/src/linux-2.6.24,然后在/usr/src/下创建一个名为linux的指向/usr/src/linux-2.6.24的链接(link)。

在shell中输入

root@FE2000:~# cd ..

root@FE2000:/# cd /usr/src/linux

root@FE2000:/usr/src/linux# make mrproper

root@FE2000:/usr/src/linux# make menuconfig

或者make gconfig

此时qconf已经读取了默认配置,你也可以这样做:

在qconf中点File->Load 去读取其他的设置文件。

比如 /boot/config-2.6.18-23-686

下面在qconf中配置.config文件。选“Y”(打勾)就是把它编译到内核中,选“M”(打点)把它编译成模块,供内核动态调用。选“N”就是不安装。也可以保持默认选项……

下面只是简单提几项:

General setup

Optimize for size (Look out for broken compilers!) 发烧友可以选Y以获得更小的内核。

Processor type and features

Symmetric multi-processing support 如果你没有多线程处理器这个可以选N

Processor family 根据你的CPU来选择。

High Memory Support 1G以上内存的选“4GB”, 1G以下的,将来也不打算升级到1G的,选“off”.

Bus options (PCI, PCMCIA, EISA, MCA, ISA)

PCI support

PCI Express support 老式机器没有PCI-E设备的可以选N

ISA support 较新的新机器没有ISA设备,可以选N

MCA support 一般选N

NatSemi SCx200 support 一般选N

PCI Hotplug Support

Support for PCI Hotplug (EXPERIMENTAL) 如果没有PCI热插拔设备,选N

Device Drivers

Block devices

Packet writing on CD/DVD media

Enable write caching (EXPERIMENTAL) 如果你有刻录机,想启用写缓存功能,选Y

ATA/ATAPI/MFM/RLL support

Include IDE/ATA-2 DISK support 如果你的/boot是放在IDE硬盘上,那么这里一定要选Y,选M都不行。否则启动时会出现“waiting for root file system”的提示而停滞不前。

SCSI device support 如果有SATA硬盘,就选Y

SCSI disk support 如果你的/boot放在SATA硬盘上,一定要选Y。

Character devices

I2C support 一般可以选Y或者M

Graphics support 不建议把显卡驱动编译进内核。,选M,编译成模块方便日后升级驱动。

Support for frame buffer devices

VESA VGA graphics support 可以选Y

Logo configuration

Bootup logo 如果想看到Linux启动logo,选Y

Sound

Sound card support 选Y, 除非你没有声卡

其他的驱动,酌情添加删除,根据机器配置删除不需要的驱动可以缩短编译时间。你可以在命令行下输如lspci或者dmesg查看硬件信息。

File systems

CD-ROM/DVD Filesystems

ISO 9660 CDROM file system support 一般选Y

DOS/FAT/NT Filesystems

VFAT (Windows-95) fs support 有FAT32分区就选Y吧

NTFS file system support 有NTFS分区就选Y吧

NTFS write support 如果想对 NTFS分区进行写操作,选Y

Native Language Support

Simplified Chinese charset (CP936, GB2312) 选Y或者M使读取FAT分区不会遇到中文乱码现象

设置完毕后,按一下保存按钮,无论原先载入的是哪个配置文件,qconfig都将设置保存到 /usr/src/linux/.config 这个隐含文件。

下面输入make开始编译,这一过程大约需要40-100分钟,具体的要看你的机器速度啦……

root@FE2000:/usr/src/linux# make

安装内核

root@FE2000:/usr/src/linux# make install

编译模块

root@FE2000:/usr/src/linux# make modules

安装模块

root@FE2000:/usr/src/linux# make modules_install

然后

root@FE2000:/usr/src/linux# cd /

root@FE2000:/usr/src/linux# /usr/sbin/mkinitramfs -o /boot/initrd.img-2.6.24 2.6.24

如果有出错提示,可能是因为 initramfs-tools 没有装,先把它装上吧。

如果没有这一步骤,那么开机就会出现提示

……

initrd /initrd.img-2.6.24

Error 15: File not found

4.修改内核启动选项

最后打开 /boot/grub/menu.lst

在 ## ## End Default Options ## 下面添加类似下面的两段

title Ubuntu, kernel 2.6.24

root (hd0,4)

kernel /vmlinuz-2.6.24 root=/dev/hdd6

initrd /initrd.img-2.6.24

savedefault

boot

title Ubuntu, kernel 2.6.24 (recovery mode)

root (hd0,4)

kernel /vmlinuz-2.6.24 root=/dev/hdd6 ro single

initrd /initrd.img-2.6.24

boot

注意 root和kernel字段要模仿menu.lst下面已有的内容写。

下面是 (hd0,4),那么你也写(hd0,4),下面写root=/dev/hdd6,你也写root=/dev/hdd6,只是内核的版本号改为现在编译的版本号。

然后把下面重复的savedefault删除。

重新启动计算机,在GRUB中选择新内核启动。(仅供参考,实际应用中还有很多不同之处欢迎讨论)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,548评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,497评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,990评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,618评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,618评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,246评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,819评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,725评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,268评论 1 320
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,356评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,488评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,181评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,862评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,331评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,445评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,897评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,500评论 2 359

推荐阅读更多精彩内容