2014-12-18 00:00:00
来 源
中存储网
Ubuntu
之前编译Linux内核各种问题,不得不放弃,刚好最近Linux 3.0内核放出,所以决定再次编译内核。 1991年Linux内核的第一个版本0.00发布,1996年Linux内核进入2.0时代,Linux内核停留在2.+已经十几年,经过40次发布,Linux内核终于离开了2.6的命名,迎来Linux 3

之前编译Linux内核各种问题,不得不放弃,刚好最近Linux 3.0内核放出,所以决定再次编译内核。

1991年Linux内核的第一个版本0.00发布,1996年Linux内核进入2.0时代,Linux内核停留在2.+已经十几年,经过40次发布,Linux内核终于离开了2.6的命名,迎来Linux 3.0时代。

不过Linux之父Linus说,Linux3.0只是数字上的变化而已,除了更新了大量驱动外,并没有更新任何激动人心的功能。

Anyway,作为一个名Linux爱好者,体验新内核是有必要的。网上各种教程,但还是遇到各种问题,接下来记录下我的编译过程。

一,首先,查看当前内核版本,uname -r

下载最新Linux-3.0-rc7内核的源码,ftp://ftp.kernel.org/pub/linux/kernel/v3.0/testing/,90几兆那个,当然Ubuntu下也可以用apt-get,命令我忘了。

二,将下载的源码放在你喜欢的路径,网上许多教程说必须放在/usr/src/目录下,其实没必要,反而会引起许多权限问题,我是放在/home/water/下,然后解压之。tar -zxvf linux-3.0-rc7.tar.gz.

三,进入解压这个文件包之后的目录,cd linux-3.0-rc7。一旦之前编译过这份代码,那么必须清理下源码sudo make clean , sudo make mrproper。

四,据说可以把老内核的配置相关文件直接拷过来,cp /boot/config-`uname -r` ./.config,不过一般都是根据自己的需要重新配置啦~~打开内核配置sudo make menuconfig。结果出问题了。提示什么也忘了,百度之,sudo apt-get install build-essential kernel-package libncurses5-dev fakeroot,其实就是安装必要的软件。

五,最麻烦的就是配置内核,这个http://lamp.linux.gov.cn/Linux/kernel_options.html有内核选项的翻译,不过看完还是很多不懂。接下来是我从网上拷过来的,可以参考下(不过作者忘了说一点,有一个选项kernel hacking,主要是在系统崩溃时,保护系统,一般用户可以不用,否则编译出来的内核会有几百兆,并且编译时间需要好几个小时,里面的选项可以全部去掉)。

配置用到的键只有几个,esc退出菜单;空格改变选项状态;光标键上下左右移动,回车选定。

选项意义:M是编译成可以随时加入的模块,*是编译进入内核,空就是不要。

配置选项非常多,具体配置可以参考金步国先生翻译的资料:Linux 2.6.19.x 内核编译配置选项。

为了一次成功,请大家遵循一个原则,一旦你自己使用的内核已经选用了某个选项,一旦你没用充分的理由,不要随便改动。这样虽然内核不那么精简,但是不容易出现问题。

大家可以精简的部分是硬件模块部分,对于自己没有的硬件要毫不犹豫的清除。

一旦你很执着,或者你有洁癖,你也可以一项项对过去,按照金步国先生的资料描述去选择基本上没有问题。

1、在“General setup”里面的“Prompt for development and/or incomplete code/drivers”金步国认为是不需要。但是一旦你的硬件比较新,那几乎  是必须选的,这样,大家才可以找到4965无线网卡,alsa声音驱动等等。

Kernel log buffer size 我选15,双核。一旦你用ia64,要选16。

Control Group support 集群支持?可以不要

Choose SLAB allocator (SLUB (Unqueued Allocator)) 内存管理模式slab和slub选择slub。  2、在“Block layer”里,假如没有2TB的硬盘,就去掉:Support for Large Block Devices 。Support for Lar   ge Single Files 也不需要,谁有2TB的 文件?

3、Processor type and features中是关于cpu的,要认真选。

Symmetric multi-processing support是打开多核的开关,我的cpu是双核的,选中。

Processor family (Core 2/newer Xeon) 我的是Core 2/newer Xeon。找到自己的cpu后,把Generic x86 support选   项取消。

Subarchitecture Type 选(PC-compatible)

Maximum number of CPUs 输入自己的核心数目,我输入2。

SMT (Hyperthreading) scheduler support说的是超线程技术,P4有支持的,我的t8100不支持,当前大部分市场上的   家用cpu都不支持。

High Memory Support (4GB) 1G以下选1G;我是3G,选4G;4G以上的选16G

在“ Timer frequency ”里,默认是250Hz,较新的cpu都可以选择了1000Hz,性能更好。  4、Power management options中把APM (Advanced Power Management) BIOS support关闭。现在的电脑都用acpi了   。

CPU Frequency scaling 是笔记本cpu节电技术

Default CPUFreq governor (conservative) cpu节电模式有四个,笔记本默认选conservative比较好。

ACPI Processor P-States driver 必须选,不然CPU Frequency就不能用。

后面的可选自己硬件相关的,我选的是Intel Enhanced SpeedStep和 Intel Speedstep on ICH-M chipsets,其他的   统统消灭。  5、Bus options的选择

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

PCI support

PCI Express support 现在新买的机器基本上都是PCI Express了

ISA support 较新的新机器没有ISA设备,可以去掉

MCA support 去掉

NatSemi SCx200 support 去掉

PCI Hotplug Support

Support for PCI Hotplug (EXPERIMENTAL) 一旦没有PCI热插拔设备,去掉

这里的选项可以考虑全部编译进内核,而不是以模块形式存在。

6、Device Drivers是重点,由于linux不但面向个人工作站,更多的是面向服务器的应用,所以可以把自己机器上没有   的硬件全部去掉,而不用面面俱到。但是通用型的选项要慎重。

比如在网卡的部分,除了我的千兆网卡 Broadcom Tigon3 support和4965无线网卡Intel Wireless WiFi 4965AGN,其余的硬件支持统统去掉。再比如声卡部分,我的是hd声卡,我只是在PCI devices中,选intel hd 声卡,再选Build ID   T/Sigmatel HD-audio c   odec support,除此之外的硬件支持全部去掉。

声卡还有一个细节,在Ubuntu7.10里面,需要在/etc/modprobe.d/alsa-base后面添加options snd-hda-intel probe_mask=1 model=3stack,这样我的笔记本喇叭才可以发声,不然只有外接耳机或者音箱。这次编译以后,这个动作就不必了,但是两个耳机插口只有一个可以用了。

再比如我的电脑中没有agp,就可以直接把agp相关的选项全部取消。

要注意的:

ATA/ATAPI/MFM/RLL support

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

SCSI emulation support 要用刻录机,必须选。

SCSI device support 现在都是SATA硬盘,一定要选*

SCSI disk support 一旦你的/boot放在SATA硬盘上,一定要选*。

SCSI CDROM support 虽然康宝刻录机是ide接口的,但是必须把它当成scsi接口的,这是老问题了。用刻录机,必须选

Graphics support

Support for frame buffer devices 选中,进入选择

VESA VGA graphics support 选上,不然字符界面启动会有问题,

后面的显卡选择:由于我的显卡是nvidia 8400gs,要自己安装nvidia公司的驱动,所以一个都没有选。这样导致ubunt   u开机动画会出问题,我索性在grub中的splash字符全部删除,把开机动画关闭。字符界面很正常。

Console display driver support 有人开机后字符控制台错误,就是这部分选项没有选,出问题了。

Framebuffer Console support 需要打开。

Bootup logo 开机图标,会在自检的画面上加上个性图标。需要在grub上添加“vga=”的选项,可以参考http://dotimes.com/articles/t23-slackware-framebuffer.html

7、File systems

Filesystem in Userspace support 简称fuse。是必选的,一旦你要用windows分区。

CD-ROM/DVD Filesystems

ISO 9660 CDROM file system support 一般选*

DOS/FAT/NT Filesystems

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

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

NTFS write support 一旦想对 NTFS分区进行写操作,选*

必须将启动盘的文件系统编译进内核,默认是编译成模块,这样无法启动系统。ubuntu采用的文件系统是ext3,请把ext2  ,ext3相关的必要选项都编译进入内核。

8、Virtualization这个大类是我多花几百元买t8100的主要原因,因为t8100支持intel vt技术

使linux上的虚拟机的性能大幅度提高。这里的选项我除了amd的,其他都编译成模块。

9、全部设置完成,最后一项是保存设置。

按照我的习惯,先在上一层目录保存一个备份,文件名类似 ../config20080630

然后再保存到当起目录,文件名 .config

退出设置程序。

六,开始编译

sudo make-kpkg clean

sudo make-kpkg  --initrd --append-to-version=water-linux3.0 kernel_image kernel-headers

其中water-linux3.0可以任意,表示你给内核的版本名字,不过听说最后一定要以数字结尾。

我的编译过程出问题了,提示问题如下:dpkg-deb: control directory has bad permissions 2755 (must be >=0755 and

大概就是对源码文件夹加上这句chmod -R a-s  linux-3.0-rc7。

七,最后生成的文件

然后开始安装内核(生成的deb文件跟源码文件夹在同一个文件夹里),

sudo dpkg -i   linux-image-(按tab键)

然后重新启动

sudo reboot

看下内核是否更新了。

uname -r

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。