讲述了解Linux内核创建新系统

运维 系统运维
然后编辑/boot/grub/menu.lst文件, 看一下你系统上已经存在(正在工作的)引导Linux内核信息, 拷贝其中的一个实例, 替换为你新的Linux内核和ramdisk:vim /boot/grub/menu.lst。

特别值得一提的是Linux内核源码包是必须学习的,这里我们主要讨论介绍Linux内核,包括介绍深谈安装新Linux内核等方面。Linux的基础知识,包括Fedora的安装、磁盘分区、Linux的基础操作,旨在让读者对Linux有个初步的认识。涉及文件管理、磁盘管理、用户与组群管理、man帮助、软件包管理、文件压缩和打印机管理。

去官方下载最新的Linux内核源码包

官方网址:www.kernel.org
当前最新版本:2.6.31,下载网址:http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.31.tar.bz2
您可以使用 wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.31.tar.bz2 下载

解压源码包

(这里有些人说要将源码解压到/usr/src目录下,其实是不正确的,你可以解压到任何目录)
cd ~wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.31.tar.bz2
tar -jxvf linux-2.6.31.tar.bz2

配置选项

cd linux-2.6.31
cp /boot/config-`uname -r` .config
make mrproper (删除上次编译产生的垃圾,初次编译不需要)
make menuconfig (启动Linux内核选项配置界面)
说明一下,make menuconfig会寻找linux-2.6.31目录下的.config配置文件,如果找不到,则使用与CPU相关的config文件作为默认的配置。当然,我们也可以拷贝当前系统的配置作为对照,如cp /boot/config-`uname -r` .config (.config是隐藏文件 ls -a查看)
注意:如果是同版本的Linux内核编译,还需要备份下当前模块
cd /lib/modules
mv 2.6.31 2.6.31_old
指定Linux内核识别码vim Makefile EXTRAVERSION = .custom-1 (第4行)

传统方式编译

make all (2.6以前版本需要手工运行如下命令)
(# make dep <==建立相依的属性关系!
# make clean    <==将旧的资料去除掉!
# make bzImage     <==开始编译核心!这个核心是经过压缩的 (30分钟左右)
# make modules <==开始编译模块!这个动作视您刚刚编译的模块数量!(1小时左右)
make modules_install (安装模块到/lib/modules/2.6.31),make install (系统将会把vmlinuz和System.map复制到/boot目录下同时修改grub/boot/grub/menu.lst,2.6以前版本需要手动拷贝vmlinuz和System.map)

RPM方式编译

会产生RPM包,方便提供给别人使用make rpm,编译完成之后,在~/rpmbuild /SRPMS/目录发现一个新的src.rpm包, 比如.SRPMS/kernel-2.6.31.custom-1.src.rpm, Linux内核rpm包位于~/rpmbuild/RPMS/i386/ (或RPMS/i586/, RPMS/i686/, 等. 看你的平台类型). 比如.RPMS/i386/kernel-2.6.31.custom-1.i386.rpm. 可以看到Linux内核识别码已添加到软件包的名字中.

安装新Linux内核

现在去新的rpmLinux内核包存在的目录(基于你的平台类型, 比如. ~/rpmbuild/RPMS/i386/)安装rpm包,cd ~/rpmbuild/RPMS/i386
rpm -ivh kernel-2.6.31.custom-1.i386.rpm(现在你甚至能够拷贝到其它的Fedora系统, 通过上面的方式安装. 你将不再需要编译Linux内核.)
接下来我们为新Linux内核创建一个ramdisk, 否则系统将不能引导新Linux内核:
mkinitrd /boot/initrd-2.6.31.custom-1.img 2.6.31.custom-1
然后编辑/boot/grub/menu.lst文件, 看一下你系统上已经存在(正在工作的)引导Linux内核信息, 拷贝其中的一个实例, 替换为你新的Linux内核和ramdisk:vim /boot/grub/menu.lst

比如, 我的menu.lst, 在我添加新的Linux内核信息前的情况:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.18-1.2798.fc6)
root (hd0,0)
kernel /vmlinuz-2.6.18-1.2798.fc6 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.18-1.2798.fc6.img
修改后的情况:

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.18-custom-2.6.18.2)
root (hd0,0)
kernel /vmlinuz-2.6.18-custom-2.6.18.2 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.18-custom-2.6.18.2.img
title Fedora Core (2.6.31.custom-1)
root (hd0,0)
kernel /vmlinuz-2.6.31.custom-1 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.31.custom-1.img
(你可以通过下面命令发现正确的vmlinuz和initrd文件:ls -l /boot)

重启系统,在Grub引导菜单中,选择linux-2.6.31.custom-1。Reboot,重启之后,大功告成,你的新Linux内核已经安装好了。

【编辑推荐】

  1. 处理Linux内核安全详解
  2. 讲解介绍Linux内核版本虚拟机安装
  3. 全面了解Linux内核循环链表
  4. Linux内核统一设备系统操作
  5. 处理Linux内核安全详解
责任编辑:佚名 来源: CSDN
相关推荐

2009-12-18 15:28:19

Linux内核

2009-12-18 18:53:18

2010-03-16 15:47:06

Ubuntu Linu

2012-04-11 09:26:13

内核Linux 开发

2009-12-24 09:47:17

Linux之父

2009-12-23 11:05:28

Linux内核

2009-12-09 14:03:18

2009-12-24 14:19:53

LINUX MAC驱动

2009-12-03 19:02:05

Linux

2009-12-17 17:19:45

Linux系统

2009-12-25 11:30:44

2009-12-22 13:15:59

Linux ueven

2017-01-16 15:20:03

Linux内核Oops

2009-12-18 17:53:45

Linux Apach

2010-01-07 13:53:43

Linux入门

2010-03-02 13:27:17

LinuxXFS文件系

2017-11-02 09:30:00

Linux内核开发2017版

2009-12-28 17:41:10

Fedora Linu

2009-12-17 14:11:29

Linux操作系统

2010-03-10 17:37:48

Linux磁盘配额
点赞
收藏

51CTO技术栈公众号