戴文的Linux内核专题：01 介绍
译者按：
本文作者戴文.科利尔.约翰逊(Devyn Collier Johnson)今年才19岁，但是他在Linux内核、人工智能、编程语言方面拥有丰富的经验，本文是其在linux.org上连载的一系列关于内核的文章。文章写的深入浅出，本站不 ...
Linux 内核 介绍
译者按：
本文作者戴文.科利尔.约翰逊(Devyn Collier Johnson)今年才19岁，但是他在Linux内核、人工智能、编程语言方面拥有丰富的经验，本文是其在linux.org上连载的一系列关于内核的文章。文章写的深入浅出，本站不 ...

> 
> 译者按：
> 
> 
> 本文作者戴文.科利尔.约翰逊(Devyn Collier Johnson)今年才19岁，但是他在Linux内核、人工智能、编程语言方面拥有丰富的经验，本文是其在[linux.org上连载的一系列关于内核的文章](http://www.linux.org/threads/%EF%BB%BFthe-linux-kernel-introduction.4203/)。文章写的深入浅出，本站不揣浅陋，由LCTT成员geekpi进行了系列翻译，以分享给广大Linux爱好者。
> 
> 
> 


 


在1991年，一个叫林纳斯·本纳第克特·托瓦兹的芬兰学生制作了一个现在非常流行的操作系统的内核。他于1991年9月发布了Linux 0.01，并且于1992年以GPL许可证的方式授权了该内核。GNU通用许可证(GPL)允许人们使用、拥有、修改，以及合法和免费的分发源代码。这使得内核变得非常流行，因为任何人都可以免费地下载。现在任何人都可以生成他们自己的内核，这有助于人们学习如何获取、编辑、配置、编译并安装Linux内核。


内核是操作系统的核心。操作系统是一系列的管理硬件并允许用户在电脑上运行应用的程序。内核控制着硬件和应用。应用并不直接和硬件打交道，而是首先和内核交互。总之，软件运行在内核上，而内核操作着硬件。没有内核，电脑就是一个没用的物件。


用户制作他们自己的内核有各种各样的原因。许多用户也许想要一个只包含他们需要的代码的系统内核。比如说我的内核包含了火线设备驱动，但是我的电脑缺乏这些端口。当系统启动时，时间和内存就会浪费在那些我系统上并没有安装的设备上。如果我想要简化我的内核，我会制作自己不包含火线驱动的内核。至于另外一个理由，某个用户可能拥有一台有特殊硬件的设备，但是最新的Ubuntu版本中的内核缺乏所需的驱动。这个用户可以下载最新的内核(比当前Ununtu的Linux内核要新)，并制作他们自己的有相应驱动的内核。不管怎样，这两个原因是用户想要制作自己的Linux内核的普遍原因。


在下载内核前，我们应该讨论一些重要的术语和事实。Linux内核是一个宏内核，这意味着整个操作系统都运行在内核预留的内存里。说的更清楚一些，内核是放在内存里的。内核所使用的空间是内核预留的。只有内核可以使用预留的内核空间。内核拥有这些内存空间，直到系统关闭。与内核空间相对应的还是用户空间。用户空间是内存上用户程序拥有的空间。比如浏览器、电子游戏、文字处理器、媒体播放器、壁纸、主题等都是放在内存里的用户空间。当一个程序关闭的时候，任何程序都可以使用新释放的空间。在内核空间，一旦内存被占用，则没有任何其他程序可以使用这块空间。


Linux内核也是一个抢占式多任务内核。这意味该内核可以暂停一些任务来保证任何应用都有机会来使用CPU。举个例子，如果一个应用正在运行但是正在等待一些数据，内核会把这个应用暂停并允许其他的程序使用新释放的CPU资源，直到数据到来。否则的话，系统就会浪费资源给那些正在等待数据或者其他程序执行的的任务。内核将会强制程序去等待或者停止使用CPU。没有内核的允许，应用程序不能脱离暂停或者使用CPU。


Linux内核使得设备作为文件显示在/dev文件夹下。举个例子，USB端口位于/dev/bus/usb。硬盘分区则位于/dev/disk/分区。因为这个特性，许多人说：“在Linux上，一切皆文件”。（不过这些设备文件不能被直接使用，——译者补充）举个例子，如果一个用户想要访问在存储卡上的数据，他们是不能通过设备文件访问到这些数据的。（译注：此处原文是“If a user wanted to access data on their memory card, for example, they **cannot** access the data through these device files.”，但根据上下文，此处语境不对，所以做了相应补充。据“食梦-”的提示，原文也有人对此提出了质疑，作者做了如下解释：http://www.linux.org/threads/%EF%BB%BFthe-linux-kernel-introduction.4203/#post-12623）


Linux内核是可移植的。可移植性是Linux流行的一个最重要的原因。可移植性使得内核可以工作在各种处理器和系统上。一些内核支持的处理器的型号包括：Alpha、AMD、ARM、C6X、Intel、x86、Microblaze、MIPS、PowerPC、SPARC、UltraSPARC等，这还不是全部的列表。


在引导文件夹(/boot),用户会看到诸如“vmlinux”或者“vmlinuz”的文件。这两者都是已编译的Linux内核。以“z”结尾的是已压缩的。“vm”代表虚拟内存。在SPARC处理器的系统上，用户可以看见一个zImage文件。一小部分用户可以发现一个bzImage文件，这也是一个已压缩的Linux内核。无论用户有哪个文件，这些引导文件都是不能更改的，除非用户知道他们正在做什么。否则系统会变成无法引导，也就是说系统启动不了了。


内核源代码就是程序编码。有了源代码，程序员可以修改内核并能观察到内核是如何工作的。


### **下载内核:**


现在我们想更多地了解了内核，就要下载内核源代码了。进入kernel.org并点击那个巨大的下载按钮。下载完成后，解压下载的文件。


对于本文，我使用的源代码是Linux kernel 3.9.4.这个文章系列的所有指导对于所有的内核版本是相同的(或者非常相似的)


 


via: <http://www.linux.org/threads/%EF%BB%BFthe-linux-kernel-introduction.4203/>


译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](http://linux.cn/) 荣誉推出

