2008年04月27日
 
    整理了一下Linux内核编译的方法,原始内核版本为Linux-2.4.20.8,新内核版本为Linux-2.4.22,其它内核版本编译方法类似。
    一 准备工作
    首先当然是获得内核了,可以到
    http://www.kernel.org/
    下载。
    获得内核压缩包后(假设为linux-2.4.22.tar.gz),先将其复制到/usr/src目录下,然后转到/usr/src目录并进行解压操作,命令如下(假设当前目录为内核包所在目录)
     cp linux-2.4.22.tar.gz /usr/src
     cd /usr/src
     tar -zxvf linux-2.4.22.tar.gz
    二 生成编译所需要的配置文件
    首先进入解压后的内核文件,命令如下
     cd /usr/src/linux-2.4.22
    然后输入make menuconfig,可以调出内核配置界面,在该界面上可以以图形的方式生成编译内核所需要的配置文件,非常方便!
    下图是它的主界面
    
    一般选择默认值即可,即按Esc键退出,选择yes保存设置,如下图所示:
    
    到此,所有准备工作完毕,下面进入实际编译阶段了。
    三 开始编译
    主要包括以下几步操作。
    1.输入make dep,这行命令的意思是让系统对内核代码进行预处理。
    2.输入make bzlmage后开始编译,可能需要比较长的时间完成该过程,视具体机器性能而定。
    3.输入make modules开始编译模块
    4.输入make modules_install开始安装模块
    5.输入make install将编译好的内核进行安装。
    一般来说,以上过程不会遇到什么异常情况
    四.编译完成
    编译完成后的内核是这个文件
     /usr/src/linux-2.4.22/arch/i386/boot/bzlmage
    如下所示:
    
    
    
    五.修改启动程序配置以及新内核的启动
    编译完成后可以进入引导程序(boot loader)的配置文件看看,对于不同的引导程序(LILO和GRUB),其配置文件所在路径不同。
     对于LILO,路径为:/etc/lilo.conf
     对于GRUB,路径为:/boot/grub/menu.lst
    本系统为GRUB引导,因此进入/boot/grub/menu.lst,命令如下
     cd /boot/grub
     vi menu.lst
    文件内容如下图所示:
    
    可见,boot loader已经可以加载两种版本的内核了,在该文件中可以很容易修改一些信息,如默认加载的内核版本,引导程序停留时间,修改内核在引导界面的名称等等。
    重新启动机器,可以看到,此时在引导界面可以有两种版本的内核进行选择了,如下图所示。
    
    我们选择linux-2.4.22,也就是刚刚编译好的内核,正常进入后可以通过/proc/version文件以确定当前启动的内核版本确实为2.4.22,命令如下
     cd /proc
     vi version
    version文件内容如下:
    
    可见,内核编译成功!

自己动手编译Linux内核的更多相关文章

  1. 如何解决编译linux内核(解决声卡问题),遭遇fatal error: linux/limits.h: 没有那个文件或目录

    最近帮一位上海的朋友搞一块小板,在ubuntu15.04 vivid上已经加载了对应了.ko驱动包 但关键是系统根本就枚举不到该声卡ALC5640,试了OpenSUSE也是一样的结果,看来是内核漏加载 ...

  2. Centos下编译Linux内核

    Linux内核编译是一件简单却费事的事.但是独立的编译linux内核会帮助你很好的理解Linux内核的工作机理. 首先编译linux内核我们需要在当前linux操作系统下安装gcc编译器,因为我是Ce ...

  3. 编译linux内核时出错

    在编译linux内核的时候使用make menuconfig 可能出现下面的错误 *** Unable to find the ncurses libraries or the*** required ...

  4. Mac下重新编译Linux内核

    Mac下重新编译Linux内核 操作系统实验,要求添加系统调用并重新编译内核,这里记录一下编译内核的过程 0.下载VirtualBox 博主一直用parallel desk,但因为驱动等问题,在PD上 ...

  5. 为什么要编译Linux内核?

    新的内核修订了旧内核的bug,并增加了许多新的特性.如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译Linux内核. 通常,更新的内核会支持更多的硬件,具 ...

  6. 编译Linux内核(Mac OS平台)

    操作系统第一次实验需要编译Linux内核,我之前在Mac上一直使用的都是Parallels Desktop这个软件,所以这次也将课程网站上提供的Ubuntu安装在了PD上,但是编译完内核后无法进入Ub ...

  7. 自定义配置编译linux内核

    1 编译linux内核原因一般情况下,我们是不需要重新去编译linux内核的,但如果你发现你需要修改内核的某个部分或者说你需要的某个模块并没有编译进内核,那里你可以通过重新编译内核来满足你的需求,比如 ...

  8. 《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #2 如何编译Linux内核

    HACK #2 如何编译Linux内核 本节介绍编译Linux内核的方法.当发现bug而修改源代码或者添加新功能时,就需要对内核进行重新编译,生成二进制映像文件.另外,如果想要使用发布版内核中无效的功 ...

  9. make 编译 linux 内核是单线程的任务 才用-j4命令使用4 线程加速

    今天使用 make 编译 linux 内核,发现CPU只用了30%多一点,而我的电脑是4核的,所以如果没有意外的话,make 编译 linux 内核的任务是用单线程做的. 又了解到,使用-j4参数可以 ...

随机推荐

  1. js获取精确的元素宽高(普通获取高度会有误差)

    当js获取元素宽高时, 并不是一个精确的数字,如果想获取真正的宽高大致方法如下 var oStyle = obj.currentStyle ? obj.currentStyle : window.ge ...

  2. Could not find com.android.tools.build:aapt2:3.2.0-alpha14-4748712.

    https://blog.csdn.net/lx6101989/article/details/80334232 android studio 升级到了3.0 取消了apt 报了这个错 在最上级的bu ...

  3. hdu3261

    题意: 求至少出现k次的最长字符串(可重复) 题解: 后缀数组维护height数组只要找连续k个的最小值 代码: #include <cstdio> #include <algori ...

  4. python学习之条件语句(if循环)

    Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块.可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和非空(null)值为tru ...

  5. 统计难题 HDU1251

    简单方法: #include<bits/stdc++.h> using namespace std; int main() { ]; map<string,int>ma; ) ...

  6. work工作消息队列Round-robin与Fair dispatch

    一:介绍 1.模型 有两种情形,分别是轮训分发与公平分发. 2.出现的场景 考虑到simple queue中的缺点. 因为生产者发送消息后,消费者消费要花费时间,这个会造成消息的堆积. 二:Round ...

  7. windows通过Visual Studio Code中配置GO开发环境(转)

    一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...

  8. 007.基于Docker的Etcd分布式部署

    一 环境准备 1.1 基础环境 ntp配置:略 #建议配置ntp服务,保证时间一致性 etcd版本:v3.3.9 防火墙及SELinux:关闭防火墙和SELinux 名称 地址 主机名 备注 etcd ...

  9. 通过反射的方式注入自己的ShutdownHook并清除其他HOOK

    String className = "java.lang.ApplicationShutdownHooks"; Class<?> clazz = Class.forN ...

  10. 跳过从Win7/8升级,直接格式化全新安装 Windows 10 并自动永久激活系统的方法教程

    跳过升级,直接激活全新 Win10 的方法步骤教程: 下载 Windows 10 系统的 ISO 镜像 在你当前的 Win7 / Win 8 / 8.1 系统中,使用 DaemonTools 或右键选 ...