linux内核编程4部曲之一:linux内核编译(2.6.12版本)图文解说 2012-05-17 00:38:37

分类: LINUX

linux内核编程4部曲之一:linux内核编译(2.6.12版本)图文解说

linux内核编程4部曲之二:增加linux内核系统调用

linux内核编程4部曲之三:修改O(1)调度算法

linux内核编程4部曲之四:模块编程

一、编译环境

ubuntu 5.10,要编译的内核源码版本2.6.12 
二、下载并解压源代码 
首先从linux内核的官网www.kernel.org把源代码下载下来。为了和后面实验要求符合,我们要下载使用O(1)调度器的源码。因此这里下载了2.6.12版本源码。下载 下linux-2.6.12.tar.bz2,将下载源码放入/usr/src/目录下。如下图所示:
解压该源码:
   
三、构建编译环境
现在我们得到的只是源代码,只是许许多多的文本文件,要想使这些文件成为可以运行的程序,需要使用编译器进行编译以及链接。编译器有很多,但在里linux下一般都使用gnu的开源编译器套件,这里包括gcc等,现在我们安装基本的编译器套件,如图所示:
    
四、安装ncurses库
这里使用Ubuntu系统,因为系统自带的ncurses库在支持make menuconfig的时候会出错,所以,依然要安装ncurses库,这里我们从源码安装。首先去ncurses官网http://ftp.gnu.org/pub/gnu/ncurses/ 上下载源码。这里我们下载5.9版本,并通过简单的安装方式.configure   和make、make install方式安装。如下图所示:
   
五、配置内核
一切准备工作做完,现在我们就可以配置内核了,这里我们使用make menuconfig方式。如下图:
在使用make menuconfig这个命令后,会出现如下的字符界面,我们就可以在这个界面上对内核进行配置。但是如果这不是你第一次配置这个内核,那么请先运行:make mrproper来清除以前的配置,回到默认配置,然后再运行:make menuconfig.

在这里,我们以对cpu支持的配置为例,其余的选项就不一一详述,首先查看本机的cpu类型,如下图:

在这里我们可以看到,我的电脑的cpu是AMD Athlon的,因此我们在cpu选项里面选用AMD,如下图所示:

在这里需要注意的是:

A、 cpu的设置在linux内核编译过程中,不是必需的,即使保持默认的386选项(我们刚才把它改成了AMD),内核也能正常运行,只不过运行慢一些而已。

B、 一般容易出问题的地方在于Device Driver的设置。我在一开始就遇到了在内核编译完,通过grub引导系统过程中报 “ALERT! /dev/sda1 does not exist . Dropping to a shell!”的错误。这是因为硬盘驱动没有配置好而造成的。运行lspci命令,查看到下面这行:

由此确定,需要配置SCSI、PCI-X、Fusion-MPT驱动,需要在响应的驱动选项里将[M]设置为[*],因为硬盘驱动是在系统开机的时候加载,所以不能以模块形式加载。

把这几个驱动内部的选项全部改为[*]:

六、编译内核

对内核的配置完成之后,现在就可以开始编译内核了,只需要一个简单的make命令即可,之后我们就只能慢慢等,直到编译完成,在我的电脑上,大概用了25分钟。下图是运行make后的部分输出。

七、安装内核

编译完成之后,我们需要安装内核,主要分为如下几步:

1)、安装模块

安装模块,对于内核来说,每一个内核版本有自己的模块目录,默认在/lib/modules/内核版本号这个目录下,make modules_install会创建对应的目录,并把对应的模块文件拷贝过去。注意,这一步必须要在编译过内核再做。

2)、拷贝bzImage文件

bzImage文件是内核映像文件,是启动内核所必需的,我们应当把它拷贝到/boot目录下。在这里,我为自己新建了一个目录,我们把它拷贝过去,并且按照一般内核映像文件的命名方式为它改名为vmlinuz-2.6.12。

3)、制作initrd文件

initrd文件命名为initrd.img-2.6.12

4)、修改grub启动项

要能引导起我们的新系统,需要更改grub配置,增加启动选项。ubuntu 5.10的grub版本比较低,配置文件为/boot/grub/menu.lst,高版本的grub可能在/boot/grub/grub.cfg里。在原有启动项基础上,添加我们自己的启动项,并把它设为默认启动项,配置如下:

5)重启

不出意外的话,我们的内核已经正常加载了,运行uname -a,会发现,内核版本已经是2.6.12了。

自己编译    安装时发生

Kernel panic - not syncing: VFS: Unable to mount root fs on

根据上面的修改,可以了
倒数第二步可以运行  update-grup来完成

ubuntu05.04 linux2.6.10 内核安装相关推荐

  1. linux编译mesa,如何在Ubuntu 16.04,17.10中安装Mesa 17.3.3

    最新的MESA 3D图形库17.3.3现在在Ubuntu-X team PPA存储库中为Ubuntu 16.04和Ubuntu 17.10提供. Mesa 17.3.3实现了OpenGL 4.5 AP ...

  2. ubuntu 12.04及12.10无法安装 ia32-libs

    administrator@ubuntu:~$ sudo apt-get install ia32-libs [sudo] password for administrator:  正在读取软件包列表 ...

  3. ubuntu05.04安装,及编译模块问题

    1安装ubuntu05.04过程中把vm虚拟机调到低版本6.x版本 2.下载编译内核2.6.10时,用linux去解压,windows解压时会覆盖同名文件(大小写不同),用linux下图形解压,好像命 ...

  4. 戴尔 XPS 13安装Ubuntu 16.04和Windows 10双系统

    机器:戴尔DELL XPS13-9360-R1905S 尊享版13.3英寸轻薄窄边框笔记本电脑(i7-7560U 16G 512GSSD FHD Win10)无忌银 原装系统:Windows 10 一 ...

  5. ubuntu 12.04/11.10 PPA 安装 Nvidia 295.59

    2019独角兽企业重金招聘Python工程师标准>>> Nvidia 295.59 增加支持以下GPUs: NVS 5400M NVS 310 GeForce GT 620M GeF ...

  6. Ubuntu 14.04/14.10下安装VMware Workstation 11图文教程

    VMware workstation 是一个可以进行桌面操作的虚拟软件.它可以让我们在一台电脑或者虚拟机中运行多个虚拟机. 由VMware公司研发和维护.由于是商业软件,我们需要买他们家的许可证或者说 ...

  7. Julia的安装与配置详解(包含在Ubuntu 18.04和Windows 10系统上Julia的安装)

    Julia的安装与配置详解((包含在Ubuntu 18.04和Windows 10系统上Julia的安装) Julia的安装 使用二进制文件安装Julia 在Ubuntu上安装Julia 在Windo ...

  8. Ubuntu16.04 Modelsim 10.2c安装

    博主环境:X230 Ubuntu16.04 64bit 参考文章http://www.jianshu.com/p/ad131936a6c4 原文是在14.04的环境下进行安装,博主在16.04的环境下 ...

  9. Windows 10 硬盘安装 Ubuntu 20.04 教程 (MBR)

    Windows 10 硬盘安装 Ubuntu 20.04 没有U盘,一直想装Ubuntu,于是结合了网上的各种材料,成功安装. 步骤: 1.配置分区: 2.安装EasyBCD,配置引导 3.安装Ubu ...

最新文章

  1. 吴恩达专访:我的人工智能科研之路
  2. 不停歇的 Java 即将发布 JDK 16,新特性速览!
  3. js 转化为实体符_js转html实体的方法
  4. mac solr mysql 配置文件_Solr配置文件浅析
  5. 论文浅尝 | 用于开放领域的问题生成
  6. 静态库-动态库混合编译
  7. unity, 内置shader下载地址
  8. 《计算机网络实验》网络参数配置与常用网络命令使用,超级详细教程
  9. 利用shell脚本解决区块链Fabric学习时下载Docker镜像失败和费时问题
  10. (十九)通俗易懂理解——无人驾驶概述
  11. 项目经理常用的12大工具及5大最佳项目管理软件
  12. python使用xpath爬取网页数据
  13. Oracle 11G启动自动内存管理AMM
  14. 解决Unable to find encoder for type stored in a Dataset问题
  15. JS 事件冒泡、捕获。学习记录
  16. 工程技术TOP期刊《Engineering》观点评述:基于脑电图的脑-机接口系统在实用化进程中面临的挑战...
  17. 56网首发2012APEC青创会主题微电影
  18. free ebooks: http://stackoverflow.com/questions/194812/list-of-freely-available-programming-books
  19. 南邮 OJ 1055 叙拉古猜想
  20. python视频教程推荐it教程网_2019年最新Python黑马头条推荐系统项目开发视频教程完整版...

热门文章

  1. 皮一皮:童话里都是骗人的...
  2. MongoDB Server 3.4版本将于2020年1月31日停止支持
  3. Spring Cloud Alibaba基础教程:Nacos配置的加载规则详解
  4. torch same padding
  5. app:compileDebugJavaWithJavac
  6. pytorch eval
  7. multi-target not supporte
  8. ping 一会通一会不通
  9. 统计模型参数量与FLOPs
  10. torch模拟sigmoid