`
ithero
  • 浏览: 145602 次
社区版块
存档分类
最新评论

linux 内核升级

阅读更多

一 准备工作

1 查看linux内核版本

#uname -a
2 下载linux内核源码
    网址是:http://www.kernel.org 自选一个适合自己的内核吧
3 下载升级工具
网址同上,工具包括 
1)下载module-init-tools-3.2.tar.bz2
2)下载mkinitrd-4.1.18-2.i386.rpm
3)下载lvm2-2.00.25-1.01.i386.rpm
4)下载device-mapper-1.00.19-2.i386.rpm
这些工具可能有其他的版本,自己选吧.
二 配置工作
4、将下载好的内核源码包和4个升级工具都拷贝到/usr/src文件夹下。
5、拷贝完毕,开始解压新内核,具体操作请依次执行以下命令:
# cd /usr/src    (进入到/usr/src目录下,如果已经在/usr/src目录下,可不执行该命令)
# rm –rf linux    (删除linux文件夹。值得一提的是,如果内核先前从未编译过,则没有这个文件夹,此命令行可略过)
# tar jvxf linux-2.6.18.tar.bz2    (解压新内核)
# ln -s linux-2.6.18 linux    (重新生成linux文件夹)

6、安装module-init-tools工具
在/usr/src目录下,依次执行下列命令:
# tar jvxf module-init-tools-3.2.tar.bz2    (解压module-init-tools) 
# cd module-init-tools-3.2    (由/usr/src目录进入module-init-tools目录下)
#./configure --prefix=/ 
# make moveold
# make all install
#./generate-modprobe.conf /etc/modprobe.conf

7、安装另外三个升级工具
回到/usr/src目录下,依次执行下列3个命令来安装另外三个升级工具:
# rpm -ivh --nodeps mkinitrd-4.1.18-2.i386.rpm    (注意,这里一定要加入--nodeps参数,下同)
# rpm -ivh --nodeps lvm2-2.00.25-1.01.i386.rpm
# rpm -ivh --nodeps device-mapper-1.00.19-2.i386.rpm
如果不更新以上几个升级包,在后面编译内核时会提示以下错误:
        mkinitrd failed
        make[1]: *** [install] Error 1
        make: *** [install] Error 2

8、配置内核选项
# cd linux-2.6.18    (进入到/usr/src/linux-2.6.18目录下)
# make mrproper    (该命令可确保源代码目录下没有不正确的.o文件)
# make menuconfig (配置内核各选项)
此时会出现一个图形界面,列出了所有的内核配置选项,有的选项下还有子选项,你可以用方向键来选择,用Y键来确定。经过我多次试验,大多数选项默认就行,以下几个选项必须选择(请认真核对下面每一个选项,否则编译很有可能前功尽弃):
(1)Loadable Module support选项中,选上“Module unloading”和“Automatic kernel module loading”这两项;
(2)Device Drivers--->Block Devices中选上“Loopback device support”;
       Device Drivers--->Multi-device support(RAID and LVM)处要选上“device mapper    support”;
       Device Drivers--->Graphics support,一定要选上“ Support for frame buffer devices”;
       Device Drivers    --->USB support    --->选上“USB Mass Storage support”(如果是在实环境中,想要更多USB支持,就全选吧。我的是在虚拟机中,用不着了)
       Device Drivers    --->;Network device support    --->Ethernet (10 or 100Mbit)    ---><*>    AMD PCnet32 PCI support 
(3)File system--->(以下9个选项是关于ext2和ext3文件系统配置,选上ext2或ext3的即可,不可同时选上)
             Second extended fs support
             Ext2 extended attributes
             Ext2 POSIX Access Control Lists
             Ext2 Security Labels
             Ext3 journalling file system support
             Ext3 extended attributes
             Ext3 POSIX Access Control Lists
             Ext3 Security Labels
             JBB (ext3) debugging support
       File system--->DOS/FAT/NT Filesystems    --->选上“NTFS file system support”;
注意:
         ext2和ext3文件系统配置很重要,也是必需的,如果对Ext3、Ext2文件的支持直接编译进内核,在你reboot时机器就会当掉,出现如下错误信息:
            kernel panic : no init found ,try passing init = option to kernel.....
或者是:
            VFS:Cannot open root device "hdxy" or unknow-block(0,0)
            Please append a correct "root=" boot option
            kernel panic:VFS:Unable to mount root fs on unknown-block(0,0) 
或者是:
            mount: error 19 mounting ext3
            pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed: 2
            umount /initrd/proc fail: 2
            Freeing unused kernel memory: 244k freed
            Kernel panic – not syncing: No init found. Try passing init = option to kernel
(我的机器当时出现的是第二种情况,然我我使用的是grub直接命令启动,仔细看看grub命令就可以在这个时候不用重装系统了.
出现grub>命令行
grub> root (hd0,0)
grub> kernel /vmlinuz-2.6.10
grub> boot
启动成功,如果失败则可能要更改那些参数,我自己的机器上的是这个,但是其他的不知道,那天我的也试了很久.)

(4)如果你在vmware下编译内核,硬盘用的是scsi的,以下三个选项必选:
       Device Drivers ---><*>SCSI device support    (此项不选的话,下面两项就选择不上)
       Device Drivers ---><*>SCSI device support ---><*>SCSI disk support
       Device Drivers---><8>SCSI device support--->SCSI low-level drivers---><*>; BusLogic SCSI support
三 编译工作
9 开始编译
在/usr/src/linux-2.6.18目录下,执行以下命令即可编译。编译需要一段时间,给自己倒杯茶耐心等候吧!
# make dep    (建立编译时所需的从属文件。注意:如果内核从未编译过,此步可跳过)
# make clean    (清除内核编译的目标文件。注意:如果内核从未编译过,此步可跳过)
# make bzImage    (注意大小写。这一步才是真正编译内核)
      内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件bzImage。如果用make    zImage编译,内核很大的话,系统会提示你使用make     bzImage命令来编译,所以我直接用make bzImage来编译。
# make modules    (编译可加载模块)
# make modules_install    (安装可加载模块)
    安装成功后,系统会在/lib/modules目录下生成一个2.6.18子目录,里面存放着新内核的所有可加载模块。
# make install    (安装新内核)
注意:
          make install的时候可能会出现如下错误信息:
          No module BusLogic found for kernel 2.4.12
          mkinitrd failed
此问题一般只出现在SCSI硬盘+VMWARE+REDHAT架构中,因为BusLogic被编译进了内核而不是一个module的形式(2.4内核的Buslogic模块即使静态编译进内核也不行)。解决方式是直接将BusLogic.o文件复制过去:
# cp /usr/src/linux-2.6.18/drivers/scsi/BusLogic.o    /lib/modules/2.6.18/kernel/drivers/scsi
不过别忘记,复制过后再执行一下make install。这一步若卡住了,下面的都无法进行,
四 启动新内核
10 将新内核和System.map文件拷贝到/boot目录下,依次执行以下命令:     
# cp    /usr/src/linux-2.6.18/arch/i386/boot/bzImage     /boot/vmlinuz-2.6.18     
# cp    /usr/src/linux-2.6.18/System.map     /boot/System.map-2.6.18     
# cd    /boot    (进入boot目录)
# rm –rf    System.map    (删除原来的连接)     
# ln –s System.map-2.6.18    System.map     (重新建立连接)

启用新内核
   
 将编译好的新内核拷贝到系统目录/boot下,例如
  
 #cp /usr/src/linux/arch/i386/boot/zImage /boot/zImage-2.2.14
  
 然后,编辑系统引导配置文件/etc/grub.conf,仿照原有选项添入新内核选项,给它起一个明显好记的标签(label),记住此时最好保留原有内核以及相应的选项,这样不用害怕升级失败而机器启动不了,至少还可以使用旧的内核引导自己的计算机。保存编辑后退出,此时要记住运行命令:#grub,更新系统引导映象,这样对lilo.conf的修改才能起作用。

 

本文转自(http://hi.baidu.com/iruler/blog/item/b6a8be43ef97161172f05d78.html

 

make mrproper[说明见内核下的README] ,make bzImage ,make modules ,make modules_install,make install,这过程中已经包括了修改系统引导程序的配置 /boot/grub/menu.lst。如果没有修改,说明 make的过程中出现了一些问题。可以执行这个命令:new-kernel-pkg --mkinitrd --depmod --install 2.6.24 ,这个命令是把 vmlinuz 拷贝到/boot 下,并修改 /boot/grub/menu.lst 
应用一段别人的说明:

进入grub.conf文件,做两处修改:(1) 

将default=1改为default=0(不改的话也可以,只不过重启之后会默认进入2.4内核)(2) 

将kernel行的“LABEL=/”换成根目录所在的分区(df/对应的就是)此步很重要,修改错误将可能导致进不去系统(3)kernel最后加上enforing=0,或vi /etc/selinux/config,改为SELINUX=disabled,否则启动时会报policy什么什么的错示例:

default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.6.18)
root (hd0,0)
kernel /vmlinuz-2.6.18 ro root=/dev/hda2 enforcing=0
initrd /initrd-2.6.18.img
title Red Hat Linux (2.6.9)
root (hd0,0)
kernel /vmlinuz-2.6.9 ro root=LABEL=/
initrd /initrd-2.6.9.img

编译顺利通过。 

我的fc8上遇到一个问题:在make menuconfig的时候系统需要安装ncurses-devel,否则,系统无法显示图形化界面。xconfig 需要qt, g 需要 kde。

分享到:
评论

相关推荐

    linux内核升级步骤

    linux 内核升级步骤 Linux 内核升级是指将 Linux 操作系统的内核从低版本升级到高版本的过程。在本文中,我们将以 Linux 2.4 内核升级到 2.6 内核为例,详细介绍升级的步骤。 为何需要升级 Linux 内核?升级 Linux...

    linux内核升级的方法

    本文将详细讲解Linux内核升级的方法,同时会涉及一些相关的工具使用。 首先,升级Linux内核的基本流程包括以下几个步骤: 1. **获取新内核源码**: - 访问Linux内核官方网站(https://www.kernel.org/)下载最新...

    嵌入式系统/ARM技术中的Linux内核升级的基本步骤

    一、本次内核编译新内核所涉及软件版本  “gcc –version”可查寻GCC版本------4.3.2 20081105(Red Hat 4.3.2-7)  “make –v”可查询 Gnu make版本-----3.81  “ld –V(v)可查询GNU ld版本-----2.18.50.0...

    linux内核升级教程

    ### Linux内核升级教程知识点详解 #### 一、前言 在进行Linux内核升级之前,我们首先需要了解几个关键概念。Linux内核是Linux操作系统的核心部分,它负责管理系统的硬件资源并提供基本的服务给其他应用程序。随着...

    linux内核升级工具包

    本篇将详细介绍Linux内核升级工具包及其相关知识。 一、Linux内核升级的意义 Linux内核的升级不仅可以带来新的功能,而且能修复已知的安全漏洞,提高系统性能,增强硬件支持。例如,新版本的内核可能包含了对新型号...

    linux内核升级包源代码.rar

    本文将深入探讨Linux内核升级包的源代码及其重要性,主要关注C语言和汇编语言在内核开发中的应用。 在Linux内核升级过程中,源代码扮演着核心角色。源代码是程序员用高级语言(如C语言和汇编语言)编写的程序文本,...

    Linux内核升级全过程

    ### Linux内核升级全过程 在本篇文章中,我们将详细介绍如何完成Linux内核的升级过程,包括所需的工具介绍、内核的下载以及整个升级步骤。对于Linux用户而言,了解这一过程至关重要,因为它涉及到系统的稳定性和...

    suse Linux内核升级.doc

    ### SUSE Linux内核升级全解析 #### 一、引言 SUSE Linux作为一款知名的开源操作系统,其内核的升级对于系统性能的优化、安全性的增强以及功能的拓展至关重要。本文将基于“SUSE Linux内核升级.doc”文档中的信息...

    redhat linux内核升级为2.6

    ### Redhat Linux 内核升级至2.6.18 的详细步骤与注意事项 #### 一、背景介绍 本文档详细介绍了如何将 Redhat Linux 9.0 的内核从 2.4.20 升级到 2.6.18 的全过程。这一升级不仅能够带来性能上的提升,还能享受更...

    Linux 内核升级

    "Linux 内核升级" 基于给定的文件信息,我们可以总结出以下知识点: 1. Linux 内核升级的原因:在使用 Docker-ce 时,需要 overlay 模块,但是系统内核版本为 3.10,缺少该模块,故需要升级内核。 2. Linux 内核...

    linux内核升级的详细步骤

    Linux内核升级是系统管理员和开发人员为了获取最新的安全补丁、性能改进或新功能而进行的一项重要操作。本文将详细解析Linux内核升级的步骤,确保过程顺利且无误。 ### 第一步:检查当前内核版本 在升级之前,首先...

    适用于 x64 计算机的 WSL2 Linux 内核更新包

    描述中的内容与标题一致,再次强调了这个更新包是为x64(即64位)计算机设计的,用于WSL2的Linux内核升级。 **Linux内核** Linux内核是Linux操作系统的核心部分,负责管理系统的硬件资源,如处理器、内存和磁盘,...

    Linux内核升级、搭建HTTP服务器

    在Linux环境下,本次实训主要涉及三个关键知识点:Linux内核升级、HTTP服务器的构建以及动态网站的搭建。首先,我们来详细探讨这些内容。 **1. Linux内核升级** Linux内核是操作系统的核心部分,负责管理硬件资源...

    linux内核升级(2.4-2.6)

    本话题将详细探讨从2.4版本升级到2.6版本的Linux内核升级过程。 首先,了解为什么要从2.4升级到2.6。Linux内核2.4在2001年发布,主要特点是引入了更好的内存管理和设备驱动支持。然而,随着技术的进步,2.6内核在...

    Linux 内核升级到2.6.18成功笔录

    Linux 内核升级到 2.6.18 成功笔录 Linux 内核升级是 Linux 系统管理员的必备技能之一,本文档将详细介绍如何将 Linux 内核升级到 2.6.18,从下载内核源代码到编译和安装,整个过程中的重要步骤和注意事项都会被...

    K8s搭建部署、docker部署、linux内核升级,k8s升级操作

    K8s搭建部署、docker部署、linux内核升级,k8s升级操作

    linux内核升级详细教程

    ### Linux内核升级详细教程 #### 一、概述 Linux内核是Linux操作系统的核心部分,负责管理和调度硬件资源,提供底层设备控制等基础服务。随着技术的发展和需求的变化,Linux内核也在不断更新以增强其功能性和稳定...

    linux内核升级

    Linux 内核升级详解 Linux 内核升级是指升级 Linux 操作系统的内核,提高系统性能、安全性和稳定性。下面将详细介绍 Linux 内核升级的步骤、优点和可能出现的问题。 一、引言 ---------------- Linux 作为一个...

Global site tag (gtag.js) - Google Analytics