linux安装新内核,Ubuntu系统编译安装Linux新内核

尽管网上有各种各样编译内核的方法,但是基本上都是借助于工具,虽然编译安装很方便,但是屏蔽了最基本的内核编译安装过程,下面我借助于Ubuntu 9.04,linux内核版本为2.6.28系统,来编译Linux 2.6.38内核,并把这个内核安装该系统上。

安装make ,gcc, make-kpkg,运行menuconfig等等和编译内核相关的工具:

$sudo  apt-get install build-essential kernel-package   libncurses5-dev

本机系统信息,示意图如下:

uid-29547110-id-5032529.html

第二部分 编译步骤

2.1 下载内核源码包

从 下载linux-2.6.38.tar.bz2内核源码包,用:

$tar xvf linux-2.6.38.tar.bz2

解压源码包,产生linux-2.6.38的文件夹

备注:这个网址现在下载不了,但是可以从其他网上下载,O(∩_∩)O~,另外当编译内核源码时,产生的.o文件默认是和源码放在一块的,使用选项“make O=out/dir”使得我们可以另外建立一个文件夹来存放编译产生的.o文件(也包括编译产生的.config文件),例如在我的电脑中解压linux-2.6.38.tar.bz2源码包,产生linux-2.6.38,这个文件夹放在/home/seed/build_kernel目录(我是以seed用户登录,seed对build_kernel有读写权限)

编译产生的结果文件放在/home/seed/build_kernel/output目录中,示意图如下:

uid-29547110-id-5032529.html

2.2编译内核

备注:如果在编译过程中出现:make menuconfig' requires the ncurses libraries的错误提示,则运行:$sudo apt-get install libncurses* 来安装libncurses库。

第一步:首先进入linux-2.6.38目录,清空上次编译产生的临时.o文件(对于第一次解压可以不需要做清理),命令如下:

$cd linux-2.6.38

$make O=/home/seed/build-kernle/output mrproper(本条命令在第一次解压进入linux-2.6.38 目录时,可以不做)

第二步:配置内核

配置内核主要有有两种方式流行的方式:

第一种方式:在系统原有配置文件的基础上,进行修改,方法如下:

把原有的配置文件拷入/home/seed/build-kernel/output目录下,重命名为.config,然后进行配置,命令如下:

$cp /boot/config-`uname -r` /home/seed/build-kernel/output/

$make O=/home/seed/build-kernle/output oldconfig

根据提示在原有的.config配置文件基础上,进行修改。

示意图如下:

uid-29547110-id-5032529.html

第二种方式:重新配置一个新的内核,不参考系统原有的config文件(本次更新,我用的是这种方式)

命令如下:

$cd linux-2.6.38

$make O=/home/seed/build-kernle/output menuconfig

这样会弹出一个配置菜单,根据菜单来配置内核。示意图如下:

uid-29547110-id-5032529.html

根据途中的提示进行配置,全部设置完成,最后一项是保存设置,在/home/seed/build/kernel/output目录生成文件 .config

退出设置程序。

备注:

关于每个配置选项的作用,可以查看相应选项的帮助文档,需要具体配置的主要由以下几个方面:

1、在“Block layer”里,假如没有2TB的硬盘,就去掉:Support for Large Block Devices 。Support for Large Single Files 也不需要,很少有2TB的文件。

2、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热插拔设备,去掉

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

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

4、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分区进行写操作,选*

具体配置可以在网上google相关的资料。

第三步:编译内核

使用命令:

$cd linux-2.6.38

$make O=/home/seed/build-kernle/output

第四步:安装内核

使用命令:

$cd linux-2.6.38

$sudo make O=/home/seed/build-kernle/output modules_install install(使用了root权限)

示意图如下:

uid-29547110-id-5032529.html第五步:制作initrd-2.6.38引导镜像

initrd-2.6.38是一个镜像文件,类似ramdisk,把一段程序打包到img里,然后在开机的时候在内存里开辟一段区域,一般是2m,释放到那里运行,都是一些初始化的程序,比如sisc_mod、ext3、sd_mod等模块和insmod、nash等命令。不同内核,初始化的img可以相同,也可以不同,如果没有,可以在grub.conf里加上no initrd,它就跳过initrd的检测和执行了,以前好像就没有,后来才有的。它的作用是在没有mount /分区以前,系统要执行一些操作,比如挂载scsi驱动,它就把initrd释放到内存里,作一个虚拟的/,然后执行其根目录下的一个脚本 “linuxrc”,运行insmod和nash命令挂装模块。

使用命令:

$sudo update-initramfs -c -k 2.6.38(使用了root权限)

示意图如下:

uid-29547110-id-5032529.html

第六步:添加引导项

在/boot/grup/menu.lst文件中添加引导项,示意图如下:

uid-29547110-id-5032529.html

第七步:重启电脑,使用新内核

示意图如下:

uid-29547110-id-5032529.html

uid-29547110-id-5032529.html

备注:只有在第五步和第七步使用root权限,其他的命令均没有必要使用root权限(root权限尽量避免滥用)

参考资料:

编译命令参考linux-2.6.38.tar.bz2源码包中README文件

内核配置参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值