Linux应用开发(二十三)——移植Linux内核(一)


今天是大年初二,祝各位友友们新年快乐,虎年吉祥!

前言

新的一年,想了想就从Linux内核移植开始吧。过年这几天休息的同时,也在反思。前面学习完了Bootloader的移植。我在想还要不要继续深入下去,还是说巩固底子,去再深入开发板。最终我还是决定进入Linux内核,主要是认为可以先参考熟悉一下,等到开学有老师的指导,更加深入的去学习。

话不多说,今天这一篇博客就是简单介绍以下Linux内核。参考书籍依旧是韦东山老师的《嵌入式Linux应用开发完全手册》

欢迎各位友友一起参与,一起学习,探讨,进步!


本系列目标

  1. 了解Linux内核源码结构,了解内核启动过程
  2. 掌握内核配置方法
  3. 移植内核同时支持S3C2410和S3C2440
  4. 掌握MTD设备的分区方法
  5. 掌握YAFFS文件系统的移植方法

Linux内核下载

官网

在这里插入图片描述
直接根据你想要的版本下载,然后上传到虚拟机进行解压就行。参考书籍用的是2.6.22.6。我们保持一致

下载内核源码并上传虚拟机

在这里插入图片描述
在这里插入图片描述

解压查看源码结构

使用命令tar -jxvf linux-2.6.22.tar.bz2进行解压缩
在这里插入图片描述
在这里插入图片描述
上面那个2.6.13是之前移植U-Boot的使用用到的,没啥大的影响,我们主要看2.6.22版本的。

Linux版本及特点

Linux内核版本号可以从源代码的顶层目录下的Makefile中看到,比如下面的几行

在这里插入图片描述
其中的“VERSION”和“PATCHLEVEL”组成主版本号,比如2.4,2.5,2.6等,稳定版本的主版本号用偶数表示(比如2.4,2,6),每隔2~3年出现一个稳定版本.开发中的版本号用奇数来表示(比如2.3,2.5),它是下一个稳定版本的前身。
“SUBLEVEL”称为次版本号,它不分奇偶,顺序递增。每隔1~2个月发布一个稳定版本。
“EXTRAVERSION”称为扩展版本号,这里没有就是不是扩展版本(参考书籍有是.6),它不分奇偶。顺序递增。每周发布几次扩展版本号,修正最新的稳定版本的问题。值得注意的是,“EXTRAVERSION”也可以不是数字,而是类似“-rc6”的字样,表达的这是一个测试版本。在新的稳定版本发布之前,会先发布几个测试版本用于测试。

Linux内核的最初版本在1991年发布,这是Linus Torvalds为他的386开发的一个类Minix的操作系统。
Linux1.0的官网版发行于1994年3月,包含了386的官网支持,仅支持单CPU系统。
Linux1.2发行于1995年3月,它是第一个包含多平台(Alpha,Sparc,Mips等)支持的官方版本。
Linux2.0发行于1996年6月,包含很多新的平台支持,但是最重要的是,它是第一个支持SMP(对称多处理器)体系的内核版本。
Linux2.2在1999年1月发布,它带来了SMP系统性能的极大提升,同时支持更多的硬件。
Linux2.4于2001年1月发布,它进一步提升了SMP系统的扩展性,同时它也集成了很多用于支持桌面系统的特性:USB,PC卡(PCMCIA)的支持,内置的即插即用等。
Linux2.6于2003年12月发布,在Linux2.4的基础上做了极大的改进。2.6内核支持更多的平台,从小规模的嵌入式系统到服务器级别的64位系统;使用了新的调度器,进程的切换更高效;内核可被抢占,使得用户的操作可以得到更快速的响应;I/O子系统也经历很大的修改,使得它在各种工作负荷下都具有响应性;模块子系统,文件系统都做了大量的改进。另外,以前使用的Linux的变种Clinux(前面还有个符号,打不出来,应该是叫噶玛)来支持没有MMU的处理器(MMU:内存管理单元),现在2.6版本的Linux中已经合入了该变种的功能,也可以支持没有MMU的处理器。

在这里插入图片描述

总结

下一篇博客我们进行Linux内核移植的准备。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jacky~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值