From 2e1a2aeb273d47a5ba1035e1a2e2ccc2b269e738 Mon Sep 17 00:00:00 2001 From: geekpi Date: Tue, 29 Oct 2013 09:56:16 +0000 Subject: [PATCH 1/6] =?UTF-8?q?[=D2=D1=B7=AD=D2=EB]=2004=20The=20Linux=20K?= =?UTF-8?q?ernel--Security?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../04 The Linux Kernel--Security.md | 39 ------------------- .../04 The Linux Kernel--Security.md | 38 ++++++++++++++++++ 2 files changed, 38 insertions(+), 39 deletions(-) delete mode 100755 sources/The Linux Kernel/04 The Linux Kernel--Security.md create mode 100755 translated/The Linux Kernel/04 The Linux Kernel--Security.md diff --git a/sources/The Linux Kernel/04 The Linux Kernel--Security.md b/sources/The Linux Kernel/04 The Linux Kernel--Security.md deleted file mode 100755 index 1df84aa534..0000000000 --- a/sources/The Linux Kernel/04 The Linux Kernel--Security.md +++ /dev/null @@ -1,39 +0,0 @@ -Translating--------------geelpi - -04 The Linux Kernel: Security -================================================================================ -![](http://www.linux.org/attachments/slide-jpg.278/) - -The Linux kernel is the core of all Linux systems. If any malicious code controls or damages any part of the kernel, then the system can get severely damaged, files can be deleted or corrupted, private information can be stolen, etc. Clearly, it is in the user's best interest to keep the kernel secure. Thankfully, Linux is a very secure system because of the kernel and its security. There are less Linux viruses than Windows viruses even in proportion to the number of users, and Linux users get less viruses than Windows users. (This is one reason why many companies use Linux to manage their servers.) However, this is no excuse to neglect the kernel's security. Linux has may security features and programs, but only the Linux Security Modules (LSM) and other kernel security will be discussed in this article. - -AppArmor (Application Armor) is a security module originally made by Immunix. Since 2009, Canonical maintains the code (Novell handled the code after Immunix and before Canonical). This security module has been in the mainstream Linux kernel since version 2.6.36. AppArmor restricts the abilities of programs. AppArmor uses file paths to keep track of program restrictions. Many Linux administrators claim that AppArmor is the easiest security module to configure. However, many Linux users feel that this module provides the worst security compared to alternatives. - -Security-Enhanced Linux (SELinux) is an alternative to AppArmor originally made by the United States National Security Agency (NSA). SELinux has been in the mainstream kernel since version 2.6. SELinux makes modifications to the kernel and user-space tools. SELinux gives executables (mainly daemons and server applications) the minimum privileges required to complete their tasks. SELinux could also be used to control user privileges. SELinux does not use file paths like AppArmor, instead SELinux uses the filesystem to mark executables when keeping track of permissions. Because SELinux uses the filesystem itself for managing executables, SELinux cannot offer protection on all filesystems while AppArmor can provide protection. - -NOTE: A daemon (pronounced DAY-mon) is a program that runs in the background. - -NOTE: Although AppArmor, SELinux, and others are in the kernel, only one security module can be active. - -Smack is another choice for a security module. Smack has been in the mainstream Linux kernel since version 2.6.25. Smack is supposed to offer more security than AppArmor and easier configuration than SELinux. - -TOMOYO, another security module, has been in the Linux kernel since version 2.6.30. TOMOYO offers security, but its main use is analyzing the system for security flaws. - -AppArmor, SELinux, Smack, and TOMOYO make up the four standard LSM modules. All for work by using mandatory access control (MAC) which is a type of access control that restricts a program or user from executing some task. The LSMs have some form of a list of entities and what they are permitted and not permitted to do. - -Yama is a new security module that comes with the Linux kernel. Yama is not yet considered a standard LSM module, but in the future, it may be the fifth standard LSM module. Yama uses the same principals as the other security modules. - -"grsecurity" is a collection of security patches for enhancing the Linux kernel's security. The majority of the patches apply to remote network connections and buffer overflows (discussed a little later). One interesting component of grsecurity is PaX. PaX patches allow code on memory to use the least amount of needed privileges. For example, memory containing programs is marked as non-writable. Think about it, why would an executed program need to be written while in memory? Now, malicious code cannot change currently executed applications. A buffer overrun is the event where a program (bug or malicious code) write data on memory and goes past its space boundary into the memory pages for other applications. When PaX is active, it helps to prevent these buffer overruns because the program will not have permission to write on other memory pages. - -The Linux Intrusion Detection System (LIDS) is a kernel security patch that adds Mandatory Access Control (MAC) features. This patch acts like a LSM module. - -Systrace is a utility that reduces and controls application's access to system files and use of system calls. System calls are service requests to the kernel. For instance, when a text editor writes a file to the hard-drive, the applications makes a system call requesting that the kernel write the file to the hard-drive. - -These are very important components in the Linux security system. These security modules and patches keep malicious code from attacking the kernel. Without these features, Linux systems would be unsecure computer operating systems. - --------------------------------------------------------------------------------- - -via: http://www.linux.org/threads/the-linux-kernel-security.4223/ - -译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 diff --git a/translated/The Linux Kernel/04 The Linux Kernel--Security.md b/translated/The Linux Kernel/04 The Linux Kernel--Security.md new file mode 100755 index 0000000000..9d3e9e4038 --- /dev/null +++ b/translated/The Linux Kernel/04 The Linux Kernel--Security.md @@ -0,0 +1,38 @@ +04 Linux 内核: 安全 +================================================================================ +![](http://www.linux.org/attachments/slide-jpg.278/) + +Linux内核是所有Linux系统的核心。如果有任何恶意代码控制或损害了内核的任何一部分,那么系统会严重受损,文件可以被删除或损坏,私人信息可能被盗等等。很明显,保持内核安全涉及到用户的最大利益。值得庆幸的是,由于内核及其安全,Linux是一个非常安全的系统。在用户比例上,Linux病毒比Windows病毒更少,并且Linux用户比Windows用户个人更少感染病毒。(这就是为什么许多公司使用Linux来管理他们的服务器的一个原因。) 然而,我们仍然没有借口去忽视内核的安全。Linux可能有些安全特性和程序,但只有Linux安全模块(LSM)和其他内核安全将会在本文中讨论。 + +AppArmor是最初是由Immunix写的安全模块。自从2009年以来,Canonical维护着代码(Novell在Immunix之后Cononical以前处理过代码)。这个安全模块已经从2 6.36版本进入Linux主流分支。AppArmor限制了程序的能力。AppArmor使用文件路径来跟踪程序限制。许多Linux管理员称AppArmor是最容易配置的安全模块。然而,而许多Linux用户觉得这个模块提供了最糟糕的安全替代品。 + +安全增强Linux(SELinux)是AppArmor的替代品,它最初由美国国家安全局开发(NSA).SELinux自从2.6版本就进入主线内核。SELinux是限制修改内核和用户空间的工具。SELinux给可执行文件(主要是守护进程和服务端程序)最小特权去完成它们的任务。SELinux也可以用来控制用户权限。SELinux不像AppArmor那样使用文件路径,而SELinux在追踪权限时使用文件系统去标记可执行文件。因为SElinux本身使用文件系统管理可执行文件,所以SELinux不能像AppArmor那样对整个文件系统提供保护。 + +注意:守护进程是在后台运行的程序 + +注意:虽然在内核中有AppArmor、SELinux等,但只能有一个安全模块被激活。 + +Smack是安全模块的另一种选择。Smack从2.6.25起进入主线内核。Smack应该比AppArmor更安全但比SElinux更容易配置。 + +TOMOYO,是另外一种安全模块,在2.6.30进入主线内核。TOMOYO可以提供安全,但是它的主要用途是分析系统安全缺陷。 + +AppArmor、SELinux、Smack和TOMYO组成了四个标准Linux安全模块。这些都通过使用强制访问控制(MAC)工作,这是通过限制程序或者用户执行一些任务的访问控制。安全模块还有某些形式的列表规定了它们可以做什么不可以做什么。 + +Yama在Linux内核中新的安全模块。Yama还没有作为标准的安全模块,但是在将来他会成为第5个标准安全模块。Yams和其他安全模块一样使用相同的原理。 + +“grsecurity”是一系列Linux内核安全补丁的集合。多数补丁应用于远程网络连接和缓冲溢出(以后讨论)。grsecurity一个有趣的组件是PaX。PaX补丁允许内存上的代码最少地使用到特权。例如,含有程序的内存被标为不可写。想想看,为什一个可执行的程序需要在内存中是可写的?现在恶意代码不能修改目前正在执行的程序。缓冲溢是一种当程序由于bug或者恶意代码在内存上写入数据并让它的内存边界超出到其他程序的内存页上的事件。当Pax被激活时,它会帮助阻止这些缓冲溢出因为程序没有写到其他内存页上的权限。 + +Linux入侵检测系统(LIDS)是一个内核安全补丁,提供了强制访问控制(MAC)的特性。这个补丁就像扮演LSM模块的角色。 + +Systrace是一个减少和控制应用程序访问系统文件和系统调用的工具。系统调用是对内核的服务请求。比如,当一个文本编辑器写入一个文件到硬盘上时,程序将会发送一个系统请求让内核写入文件到硬盘中 + +These are very important components in the Linux security system. These security modules and patches keep malicious code from attacking the kernel. Without these features, Linux systems would be unsecure computer operating systems. +这些是在Linux安全系统中非常重要的组件。这些安全模块和补丁使内核免于受到恶意代码的攻击。没有这些特性,Linux系统将会变成一个不安全的操作系统。 + +-------------------------------------------------------------------------------- + +via: http://www.linux.org/threads/the-linux-kernel-security.4223/ + +译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 59145282516abd5bc369b8652305b776064c70a1 Mon Sep 17 00:00:00 2001 From: geekpi Date: Tue, 29 Oct 2013 10:01:24 +0000 Subject: [PATCH 2/6] =?UTF-8?q?[=B7=AD=D2=EB=D6=D0]=2005=20The=20Linux=20K?= =?UTF-8?q?ernel--Configuring=20the=20Kernel=20Part=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../05 The Linux Kernel--Configuring the Kernel Part 1.md | 2 ++ 1 file changed, 2 insertions(+) mode change 100644 => 100755 sources/The Linux Kernel/05 The Linux Kernel--Configuring the Kernel Part 1.md diff --git a/sources/The Linux Kernel/05 The Linux Kernel--Configuring the Kernel Part 1.md b/sources/The Linux Kernel/05 The Linux Kernel--Configuring the Kernel Part 1.md old mode 100644 new mode 100755 index 3883b9066f..85a92ca485 --- a/sources/The Linux Kernel/05 The Linux Kernel--Configuring the Kernel Part 1.md +++ b/sources/The Linux Kernel/05 The Linux Kernel--Configuring the Kernel Part 1.md @@ -1,3 +1,5 @@ +Translating------------------geekpi + 05 The Linux Kernel: Configuring the Kernel Part 1 ================================================================================ ![](http://www.linux.org/attachments/slide-jpg.299/) From 2f759a65f074e23f660cc69ad034a074d72e85cc Mon Sep 17 00:00:00 2001 From: flsf Date: Tue, 29 Oct 2013 20:21:01 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E7=BF=BB=E8=AF=91=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...c & ttyplay – Record And Play Terminal Sessions In Linux.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/ttyrec & ttyplay – Record And Play Terminal Sessions In Linux.md b/sources/ttyrec & ttyplay – Record And Play Terminal Sessions In Linux.md index 06161e17c2..babecbaa5a 100644 --- a/sources/ttyrec & ttyplay – Record And Play Terminal Sessions In Linux.md +++ b/sources/ttyrec & ttyplay – Record And Play Terminal Sessions In Linux.md @@ -1,3 +1,4 @@ +flsf ttyrec & ttyplay – Record And Play Terminal Sessions In Linux ================================================================================ Sometimes you might want to record a terminal session in order to save a complex command line operation for your future reference or for knowledge sharing purpose. Then you might also want the recorded file size to be as small as possible and finally a player that would play the recorded file at a playback speed of your desire. In this article we will discuss two command line utilities (**ttyrec and ttyplay**) that let you record, save and play terminal sessions. @@ -115,4 +116,4 @@ via: http://mylinuxbook.com/ttyrec-ttyplay-record-and-play-terminal-sessions-in- [1]:http://www.youtube.com/embed/7znzFsc0P8M?version=3&rel=1&fs=1&showsearch=0&showinfo=1&iv_load_policy=1&wmode=transparent [2]:http://0xcc.net/ttyrec/ -[3]:http://0xcc.net/ttyrec/ \ No newline at end of file +[3]:http://0xcc.net/ttyrec/ From 41f1621260a068fa939e953b60c8871201125864 Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 29 Oct 2013 21:19:18 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E5=8F=91=E5=B8=83=EF=BC=9AThe=20Linux=20Ke?= =?UTF-8?q?rnel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../01 The Linux Kernel--Introduction.md | 37 +++++ .../02 The Linux Kernel--The Source Code.md | 136 ++++++++++++++++++ .../The Linux Kernel/00 About the author.md | 22 ++- .../01 The Linux Kernel--Introduction.md | 36 ----- .../02 The Linux Kernel--The Source Code.md | 136 ------------------ 5 files changed, 181 insertions(+), 186 deletions(-) create mode 100644 published/01 The Linux Kernel--Introduction.md create mode 100755 published/02 The Linux Kernel--The Source Code.md delete mode 100644 translated/The Linux Kernel/01 The Linux Kernel--Introduction.md delete mode 100755 translated/The Linux Kernel/02 The Linux Kernel--The Source Code.md diff --git a/published/01 The Linux Kernel--Introduction.md b/published/01 The Linux Kernel--Introduction.md new file mode 100644 index 0000000000..0ddf13a146 --- /dev/null +++ b/published/01 The Linux Kernel--Introduction.md @@ -0,0 +1,37 @@ +戴文的Linux内核专题:01 介绍 +================================================================================ + +在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.”,但根据上下文和实际经验看,应该是**“can 能”**) + +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/) 荣誉推出 + +[1]:https://www.kernel.org/ + diff --git a/published/02 The Linux Kernel--The Source Code.md b/published/02 The Linux Kernel--The Source Code.md new file mode 100755 index 0000000000..30d06b31ff --- /dev/null +++ b/published/02 The Linux Kernel--The Source Code.md @@ -0,0 +1,136 @@ +戴文的Linux内核专题:02 源代码 +================================================================================ + +在下载并解压内核源代码后,用户可以看到许多文件夹和文件。尝试去找一个特定的文件或许是一个挑战。谢天谢地,源代码以一个特定的方式组织的。这使开发者能够轻松找到任何文件或者内核的一部分。 + +内核源代码的根目录下包含了以下文件夹 + + arch + block + crypto + Documentation + drivers + firmware + fs + include + init + ipc + kernel + lib + mm + net + samples + scripts + security + sound + tools + usr + virt + +还有一些文件在源代码的根目录下。它们会在下面列出。 + +**COPYING** -许可和授权信息。Linux内核在GPLv2许可证下授权。该许可证授予任何人有权免费去使用、修改、分发和共享源代码和编译代码。然而,没有人可以出售源代码。 + +**CREDITS** - 贡献者列表 + +**Kbuild** - 这是一个设置一些内核设定的脚本。打个比方,这个脚本设定一个ARCH变量,这是开发者想要生成的内核支持的处理器类型。 + +**Kconfig** - 这个脚本会在开发人员配置内核的时候用到,这会在以后的文章中讨论。 + +**MAINTAINERS** - 这是一个目前维护者列表,他们的电子邮件地址,主页,和他们负责开发和维护的内核的特定部分或文件。当一个开发者在内核中发现一个问题,并希望能够报告给能够处理这个问题的维护者时,这是是很有用的。 + +**Makefile** - This script is the main file that is used to compile the kernel. This file passes parameters to the compiler as well as the list of files to compile and any other necessary information. +这个脚本是编译内核的主要文件。这个文件将编译参数和编译所需的文件和必要的信息传给编译器。 + +**README** - 这个文档提供给开发者想要知道的如何编译内核的信息。 + +**REPORTING-BUGS** - 这个文档提供如何报告问题的信息。 + +内核的代码是以“.c”或“.h”为扩展名的文件。 “.c”的扩展名表明内核是用众多的编程语言之一的C语言写的, “h”的文件是头文件,而他们也是用C写成。头文件包含了许多“.c”文件需要使用的代码,因为他们可以引入已有的代码而不是重新编写代码,这节省了程序员的时间。否则,一组执行相同的动作的代码,将存在许多或全部都是“c”文件。这也会消耗和浪费硬盘空间。(译注:头文件不仅仅可节省重复编码,而且代码复用也会降低代码错误的几率) + +所有上面列出的文件夹中的文件都组织得很好。文件夹名称至少可以帮助开发人员很好地猜测文件夹中的内容。下面提供了一个目录树和描述。 + +**arch** - 这个文件夹包含了一个Kconfig文件,它用于设置这个目录里的源代码编译所需的一系列设定。每个支持的处理器架构都在它相应的文件夹中。如,Alpha处理器的源代码在alpha文件夹中。请记住,随着时间的推移,一些新的处理器将被支持,有些会被放弃。对于Linux v3.9.4,arch下有以下文件夹: + + alpha + arc + arm + arm64 + avr32 + blackfin + c6x + cris + frv + h8300 + hexagon + ia64 + m32r + m68k + metag + microblaze + mips + mn10300 + openrisc + parisc + powerpc + s390 + score + sh + sparc + tile + um + unicore32 + x86 + xtensa + +**block** – 此文件夹包含块设备驱动程序的代码。块设备是以数据块方式接收和发送的数据的设备。数据块都是一块一块的数据而不是持续的数据流。 + +**crypto** - 这个文件夹包含许多加密算法的源代码。例如,“sha1_generic.c”这个文件包含了SHA1加密算法的代码。 + +**Documentation** - 此文件夹包含了内核信息和其他许多文件信息的文本文档。如果开发者需要一些信息,他们也许能在这里找到所需要的信息。 + +**drivers** - 该目录包含了驱动代码。驱动是一个控制硬件的软件。例如,要让计算机知道键盘并使其可用,键盘驱动是必要的。这个文件夹中存在许多文件夹。每个文件夹都以硬件的种类或者型号命名。例如,'bluetooth'包含了蓝牙驱动程序的代码。还有其他很明显的驱动像SCSI、USB和火线等。有些驱动程序可能会比较难找到。例如,操纵杆驱动不在'joystick'文件夹中,它们却在./drivers/input/joystick。同样键盘和鼠标驱动也在这个input文件夹中。 'Macintosh'包含了苹果的硬件代码。 'Xen'包含了Xen hypervisor代码。(hypervisor是一种允许用户在一台计算机上运行多个操作系统的软件或硬件。这意味着在Xen允许用户在一台计算机上同时运行的两个或两个以上的Linux系统。用户还可以运行Windows,Solaris,FreeBSD或其他操作系统在Linux系统上。)driver文件夹下还有许多其他的文件夹,但他们在这篇文章中无法一一列举,他们将在以后的文章中提到。 + +**firmware** - fireware中包含了让计算机读取和理解从设备发来的信号的代码。举例来说,一个摄像头管理它自己的硬件,但计算机必须了解摄像头给计算机发送的信号。Linux系统会使用vicam固件(firmware)来理解摄像头的通讯。否则,没有了固件,Linux系统将不知道如何处理摄像头发来的信息。另外,固件同样有助于将Linux系统发送消息给该设备。这样Linux系统可以告诉摄像头重新调整或关闭摄像头。 + +**fs** - 这是文件系统的文件夹。理解和使用的文件系统所需要的所有的代码就在这里。在这个文件夹里,每种文件系统都有自己的文件夹。例如,ext4文件系统的代码在ext4文件夹内。 在fs文件夹内,开发者会看到一些不在文件夹中的文件。这些文件用来控制整个文件系统。例如,mount.h中会包含挂载文件系统的代码。文件系统是以结构化的方式来存储和管理的存储设备上的文件和目录。每个文件系统都有自己的优点和缺点。这是由文件系统的设计决定的。举例来说,NTFS文件系统支持的透明压缩(当启用时,会在用户不知道的情况下自动压缩存储文件)。大多数文件系统缺乏此功能,但如果在fs文件夹里编入相应的文件,它们也有这种能力。 + +**include** - include包含了内核所需的各种头文件.这个名字来自于C语言用"include"来在编译时导入头文件。 + +**init** - init文件夹包含了内核启动的处理代码(INITiation)。main.c是内核的核心文件,这是用来衔接所有的其他文件的源代码主文件。 + +**ipc** - IPC代表进程间通讯。此文件夹中的代码是作为内核与进程之间的通信层。内核控制着硬件,因此程序只能请求内核来执行任务。假设用户有一个打开DVD托盘的程序。程序不直接打开托盘,相反,该程序通知内核托盘应该被打开。然后,内核给硬件发送一个信号去打开托盘。这些代码同样管理kill信号。举例来说,当系统管理员打开进程管理器去关闭一个已经锁死的程序,这个关闭程序的信号被称为kill信号。内核接收到信号,然后内核会要求程序停止或直接把进程从内存和CPU中移除(取决于kill的类型)。命令行中的管道同样用于进程间通信。管道会告诉内核在某个内存页上写入输出数据。程序或者命令得到的数据是来自内存页上的某个给定的指针。 + +**kernel** - 这个文件夹中的代码控制内核本身。例如,如果一个调试器需要跟踪问题,内核将使用这个文件夹中代码来将内核指令通知调试器跟踪内核进行的所有动作。这里也有跟踪时间的代码。在内核文件夹下有个"power"文件夹,这里的代码可以使计算机重新启动、关机和挂起。 + +**lib** - 这个文件夹包含了内核需要引用的一系列内核库文件代码。 + +**mm** - mm文件夹中包含了内存管理代码。内存并不是任意存储在RAM芯片上的。相反,内核小心地将数据放在RAM芯片上。内核不会覆盖任何正在使用或保存重要数据的内存区域。 + +**net** - net文件夹中包含了网络协议代码。这包括IPv6、AppleTalk、以太网、WiFi、蓝牙等的代码,此外处理网桥和DNS解析的代码也在net目录。 + +**samples** - 此文件夹包含了程序示例和正在编写中的模块代码。假设一个新的模块引入了一个想要的有用功能,但没有程序员说它已经可以正常运行在内核上。那么,这些模块就会移到这里。这给了新内核程序员一个机会通过这个文件夹来获得帮助,或者选择一个他们想要协助开发的模块。 + +**scripts** - 这个文件夹有内核编译所需的脚本。最好不要改变这个文件夹内的任何东西。否则,您可能无法配置或编译内核。 + +**security** - 这个文件夹是有关内核安全的代码。它对计算机免于受到病毒和黑客的侵害很重要。否则,Linux系统可能会遭到损坏。关于内核的安全性,将在以后的文章中讨论。 + +**sound** - 这个文件夹中包含了声卡驱动。 + +**tools** - 这个文件夹中包含了和内核交互的工具。 + +**usr** - 还记得在以前的文章中提到vmlinuz和其他类似的文件么?这个文件夹中的代码在内核编译完成后创建这些文件。 + +**virt** - 此文件夹包含了虚拟化代码,它允许用户一次运行多个操作系统。这与先前提到的Xen是不同的。通过虚拟化,客户机操作系统就像任何其他运行在Linux主机的应用程序一样运行。通过Xen这样的hypervisor(注:虚拟机管理程序),两个操作系统可以同时管理硬件。在虚拟化中,在客户机操作系统上运行在Linux内核上,而在hypervisor中,它没有客户系统并且所有的系统不互相依赖。 + +提示: 绝不在内核源代码内移动文件,除非你知道你在做什么。否则,编译会由于缺失文件失败。 + +Linux内核的文件夹结构保持相对稳定。内核开发者会做一些修改,但总体来说,这些设置对整个内核版本都是一样。驱动程序文件夹的布局也基本保持一样。 + +-------------------------------------------------------------------------------- + +via: http://www.linux.org/threads/the-linux-kernel-the-source-code.4204/ + +译者:[geekpi](https://github.com/geekpi) 校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 diff --git a/translated/The Linux Kernel/00 About the author.md b/translated/The Linux Kernel/00 About the author.md index 5999dce680..e564d85571 100644 --- a/translated/The Linux Kernel/00 About the author.md +++ b/translated/The Linux Kernel/00 About the author.md @@ -10,30 +10,24 @@ 看看我的壁纸: [http://gnome-look.org/usermanager/search.php?username=DevynCJohnson&action=contents&PHPSESSID=32424677ef4d9dffed020d06ef2522ac][2] -我的人工智能项目: - -- [https://launchpad.net/neobot][3] - -Ubuntu 13.10 (AMD64) - -- [https://launchpad.net/~devyncjohnson-d][4] -- [DevynCJohnson@Gmail.com][5] +我的人工智能项目: [https://launchpad.net/neobot][3] +个人信息: -**性别**:性别:男 +**性别**:男 -**生日**:Aug 31, 1994 (Age: 19) +**生日**: Aug 31, 1994 (年龄: 19) **主页**:https://launchpad.net/~devyncjohnson-d **位置**:United States -戴文.科利尔.约翰逊(Devyn Collier Johnson)在家接受他伟大的父母教育并已从一所大学毕业,现在已加入了另外一所大学。他的父亲,杰瑞特.韦恩.布斯(Jarret Wayne Buse)拥有很多的计算机证书,并且他已经撰写并出版了许多关于计算机的书籍。他也做一些编程,并给了戴文的人工智能程序提供过一些帮助和点子。他的妈妈,卡桑德拉.安.约翰逊(Cassandra Ann Johnson),是一名家庭主妇,在家教育了许多他的许多兄弟姐妹。戴文.科利尔.约翰逊和他的父母住在印第安纳并把他的时间集中在大学和个人的电脑编程上。 +戴文.科利尔.约翰逊(Devyn Collier Johnson)在家接受了他伟大的父母的家庭式培养,现在已从一所大学毕业,正在读另外一所大学。他的父亲,杰瑞特.韦恩.布斯(Jarret Wayne Buse)拥有很多的计算机认证,并且他已经撰写并出版了许多关于计算机的书籍。他也做一些编程,并给了戴文的人工智能程序提供过一些帮助和点子。他的妈妈,卡桑德拉.安.约翰逊(Cassandra Ann Johnson),是一名家庭主妇,在家培养了他的许多兄弟姐妹。戴文.科利尔.约翰逊和他的父母住在印第安纳,他的时间主要用在大学和个人的电脑编程上。 -戴文.科利尔.约翰逊十六岁毕业于一所高中。他作为一名走读生进入大学并一直保持在优秀学生名单上。他的专业是电气技术工程。戴文.科利尔.约翰逊已经学习了很多计算机语言。一些是他自学的而有的则是他父亲教导并且帮助他理解的。一些他了解的语言包括Xaiml、AIML、Unix Shell、Python3、VPython、PyQT、PyGTK、Coffeescript、GEL、SED、HTML4/5、CSS3、SVG和XML。戴文另外还了解一点其他的语言。他在2012年4月获取了4项计算机证书他们是NCLA、Linux+、LPIC-1、和DCTS。 他的Linux专业ID是LPI000254694。 +戴文.科利尔.约翰逊十六岁毕业于一所高中。他作为一名走读生进入大学并一直保持在优秀学生名单上。他的专业是电气技术工程。他已经学习了很多计算机语言。一些是他自学的而有的则是他父亲教导并且帮助他学会的。一些他了解的语言包括Xaiml、AIML、Unix Shell、Python3、VPython、PyQT、PyGTK、Coffeescript、GEL、SED、HTML4/5、CSS3、SVG和XML。此外还了解一点其他的语言。他在2012年4月获取了4项计算机证书他们是NCLA、Linux+、LPIC-1、和DCTS。 他的Linux专家认证ID是LPI000254694。 -在2012年7月,戴文.科利尔.约翰逊决定从头开始做他的聊天机器人。他设计了自己的标记语言(Xaiml)和AI引擎(ProgramPY-SH 或者 Pysh)。在2013年3月,戴文在Launchpad.net上发布了他的机器人。这个机器人名为Neo,取自原始印欧语中单词的“new” +在2012年7月,戴文.科利尔.约翰逊决定从头开始做他的聊天机器人。他设计了自己的标记语言(Xaiml)和AI引擎(ProgramPY-SH 或者 Pysh)。在2013年3月,戴文在Launchpad.net上发布了他的机器人。这个机器人名为Neo,取自原始印欧语中单词的“new”。 戴文还维护了其他几个项目。他制作Opera和Firebox的主题 ([https://addons.mozilla.org/en-US/firefox/user/DevynCJohnson/][6]) ([https://my.opera.com/devyncjohnson/account/][7]); 他还有许多其他的图形设计项目。他的大多数编程项目托管在 [https://launchpad.net/~devyncjohnson-d][4], 另外在Sourceforge.net上也有镜像,其他的一些杂项可以通过下面的链接找到。 @@ -49,7 +43,7 @@ Ubuntu 13.10 (AMD64) via: http://www.linux.org/members/devyncjohnson.4843/ -译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID) +译者:[geekpi](https://github.com/geekpi) 校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 diff --git a/translated/The Linux Kernel/01 The Linux Kernel--Introduction.md b/translated/The Linux Kernel/01 The Linux Kernel--Introduction.md deleted file mode 100644 index c99e34fd7b..0000000000 --- a/translated/The Linux Kernel/01 The Linux Kernel--Introduction.md +++ /dev/null @@ -1,36 +0,0 @@ -01 Linux 内核: 介绍 -================================================================================ -在1991年,一个叫林纳斯·本纳第克特·托瓦兹的芬兰学生制作了一个现在非常流行的操作系统内核。他于1991年9月发布了Linux 0.01并且于1992年以GPL许可证的方式授权了该内核。GNU通用许可证(GPL)允许人们使用、拥有、修改以及合法和免费的分发源代码。这使得内核变得非常流行因为任何人都可以免费地下载。现在任何人都可以制作他们自己的内核,这对于了解如何获取、编辑、配置、编译并且安装Linux内核或许是有帮助的。 - -内核是操作系统的核心。操作系统是一系列管理硬件和允许用户在一台电脑上运行应用的程序。内核控制着硬件和应用。应用并不直接和硬件打交道,而是先进入内核。总之,软件运行在内核上而内核操作着硬件。没有内核,电脑就是一个没用的物件。 - -有很多理由用户想制作他们自己的内核。许多用户也许想要一个只包含需要的代码来运行他们的系统的内核。比如说我的内核包含了火线设备驱动,但是我的电脑缺乏这些端口。当系统启动的时,时间和内存就会浪费在那些我系统上并没有安装的设备上。如果我想要简化我的内核,我会制作自己不包含火线驱动的内核。至于另外一个理由,某个用户可能拥有一台有特殊硬件的设备,但是最新的Ubuntu版本中的内核缺乏所需的驱动。这个用户可以下载最新的内核(比当前Ununtud的Linux内核更新几个版本)并制作他们自己的有相应驱动的内核。不管怎样,这两个是用户想要制作自己的Linux内核的普遍原因。 - -在下载内核前,我们应该讨论一些重要的术语和事实。Linux内核是一个宏内核,这意味着整个操作系统是作为内核空间保留在内存上。说的更新出一些,内核是放在内存上。内核使用的空间是预留给内核的。只有内核可以使用预留的内核空间。内核拥有这些内存上的空间直到系统关闭。与内核空间相对应的还是用户空间。用户空间是内存上用户程序拥有的空间。比如浏览器、电子游戏、文字处理器、媒体播放器、壁纸、主题等都是内存上的用户空间。当一个程序关闭的时候,任何程序都可能使用新释放的空间。在内核空间,一旦内存被占用,没有任何其他程序可以使用这块空间。 - -Linux内核也是一个抢占式多任务内核。这意味这内核可以暂停一些任务来保证任何应用有机会来使用CPU。举个例子,如果一个应用正在运行但是正在等待一些数据,内核会把这个应用暂停并允许其他的程序使用新释放的CPU资源知道数据到来。否则,系统将会浪费资源给那些正在等待数据或者其他程序执行的的任务。内核将会强制程序去等待或者停止使用CPU。没有内核的允许,应用程序不能不暂停或者使用CPU。 - -Linux内核使得设备作为文件显示在/dev文件夹下。举个例子,USB端口位于/dev/bus/usb。硬盘分区则位于/dev/disk/by-label。这是这个特性许多人说:“在Linux上,一切皆文件”。举个例子,如果一个用户想要访问在存储卡上的数据,他们不能通过设备文件访问这些数据。 - -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) 校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[1]:https://www.kernel.org/ - diff --git a/translated/The Linux Kernel/02 The Linux Kernel--The Source Code.md b/translated/The Linux Kernel/02 The Linux Kernel--The Source Code.md deleted file mode 100755 index 934b59256f..0000000000 --- a/translated/The Linux Kernel/02 The Linux Kernel--The Source Code.md +++ /dev/null @@ -1,136 +0,0 @@ -02 Linux 内核: 源代码 -================================================================================ -在下载并解压内核源代码后,用户可以看到许多文件夹和文件。尝试去找一个特定的文件或许是一个挑战。谢天谢地,源代码以一个特定的方式排序。这使开发者能够轻松找到任何文件或者内核的一部分 - -内核源代码的根目录下包含了以下文件夹 - - arch - block - crypto - Documentation - drivers - firmware - fs - include - init - ipc - kernel - lib - mm - net - samples - scripts - security - sound - tools - usr - virt - -这里另外还有一些文件在源代码的根目录下。它们在下表中列出。 - -**COPYING** -许可和授权信息。Linux内核在GPLv2许可证下授权。该许可证授予任何人有权免费去使用、修改、分发和共享源代码和编译代码。然而,没有人可以出售源代码。 - -**CREDITS** - 贡献者列表 - -**Kbuild** - 这是一个设置一些内核设定的脚本。打个比方,这个脚本设定一个ARCH变量,ARCH是处理器的类型,这是一个开发者想要内核支持的类型。 - -**Kconfig** - 这个脚本会在开发人员配置内核的时候用到,这会在以后的文章中讨论。 - -**MAINTAINERS** - 这是一个目前维护者列表,他们的电子邮件地址,主页,和特定的文件或者他们正在从事的开发和修复的内核的一部分。这对当一个开发者在内核中发现一个问题并希望能够报告这个问题给能够处理这个问题的维护者时是很有用的。 - -**Makefile** - This script is the main file that is used to compile the kernel. This file passes parameters to the compiler as well as the list of files to compile and any other necessary information. -这个脚本是编译内核主文件。这个文件将编译参数和编译所需的文件和必要的信息传给编译器 - -**README** - 这个文档提供给开发者想要知道的如何编译内核的信息。 - -**REPORTING-BUGS** - 这个文档提供如何报告问题的信息。 - -为内核的代码是以“.c”或“.h”为扩展名的文件。 “.c”的扩展名表明内核是用众多的编程语言之一C写的, “h”的文件是头文件,而他们也是用C写成。头文件包含了许多“.c”文件需要使用的代码。,因为他们可以使用已经存在的代码而不是编写新的代码,这节省了程序员的时间。否则,一组执行相同的动作的代码,将存在许多或全部都是“c”文件。这也会消耗和浪费硬盘空间。 - -所有上面列出的文件夹中的文件都有良好的组织。文件夹名称至少可以帮助开发人员很好地猜测文件夹中的内容。下面提供了一个目录树和描述。 - -**arch** - This folder contains a Kconfig which sets up some settings for compiling the source code that belongs in this folder. Each supported processor architecture is in the corresponding folder. So, the source code for Alpha processors belong in the alpha folder. Keep in mind that as time goes on, some new processors will be supported, or some may be dropped. For Linux Kernel v3.9.4, these are the folders under arch: -此文件夹包含了编译代码所需的一系列设定的Kconfig文件。每个支持的处理器架构都在它相应的文件夹中。所以,Alpha处理器的源代码在alpha文件夹中。请记住,随着时间的推移,一些新的处理器将被支持,有些会被放弃。对于Linux v3.9.4,arch下有以下文件夹: - alpha - arc - arm - arm64 - avr32 - blackfin - c6x - cris - frv - h8300 - hexagon - ia64 - m32r - m68k - metag - microblaze - mips - mn10300 - openrisc - parisc - powerpc - s390 - score - sh - sparc - tile - um - unicore32 - x86 - xtensa - -**block** – 此文件夹包含块设备驱动程序的代码。块设备是以块接收和发送的数据的设备。数据块都是大块的数据而不是持续的数据流。 - -**crypto** - 这个文件夹包含许多加密算法的源代码。例如,“sha1_generic.c”这个文件包含了SHA1加密算法的代码。 - -**Documentation** - 此文件夹包含了内核信息和其他许多文件信息的纯文本文档。如果开发者需要一些信息,他们可以在这里找到所需要的信息。 - -**drivers** - 该目录包含了驱动代码。驱动是一块控制硬件的软件。例如,要让计算机知道键盘并使其可用,键盘驱动器是必要的。这个文件夹中存在许多文件夹。每个文件夹都以硬件的种类或者型号命名。例如,'bluetooth'包含了蓝牙驱动程序的代码。还有其他明显驱动器像SCSI,USB和火线。有些驱动程序可能会比较难找到。例如,操纵杆驱动不在'joystick'文件夹中。相反,它们在./drivers/input/joystick。同样键盘和鼠标驱动也在这个文件夹中。 'Macintosh'包含了苹果的硬件代码。 'Xen'包含了Xen hypervisor代码。hypervisor是一种允许用户在一台计算机上运行多个操作系统的软件或硬件。这意味着在Xen允许用户在一台计算机上同时运行的两个或两个以上的Linux系统。用户还可以运行Windows,Solaris,FreeBSD或其他操作系统在Linux系统上。driver文件夹下还有许多其他的文件夹,但他们在这篇文章中无法一一列举,他们将在以后的文章中提到。 - -**firmware** - fireware中包含了让计算机读取和理解从设备发来的信号的代码。举例来说,一个摄像头管理它自己的硬件,但计算机必须了解摄像头给计算机发送的信号。Linux系统会使用vicam固件了解摄像头。否则,没有了固件,Linux系统将不知道如何处理摄像头发来的信息。另外,固件同样有助于将Linux系统发送消息给该设备。这样Linux系统可以告诉摄像头重新调整或关闭摄像头。 - -**fs** - 这是文件系统的文件夹。理解和使用的文件系统所需要的所有的代码就在这里。在这个文件夹里,每种文件系统都有自己的文件夹。例如,ext4文件系统的代码在ext4文件夹内。 在fs文件夹内,开发者会看到一些不在文件夹中的文件。这些文件用来处理文件系统整体。例如,mount.h中会包含挂载文件系统的代码。文件系统是以结构化的方式来存储和管理的存储设备上的文件和目录。每个文件系统都有自己的优点和缺点。这是由文件系统的编写决定的。举例来说,NTFS文件系统支持的透明压缩(当启用时,会在用户没注意的情况下自动压缩文件)。大多数文件系统缺乏此功能,但如果在fs文件夹里编入相应的文件,它们也有这种能力。 - -**include** - include包含了内核所需的各种头文件.这个名字来自于C语言用"incluide"来在编译时导入头文件. - -**init** - init文件夹包含了内核启动处理代码(INITiation).main.c是内核的核心文件.这是用来链接其他文件的主要源代码文件. - -**ipc** - IPC代表进程间通讯。此文件夹中的代码是作为内核与进程之间的通信层。内核控制着硬件因此程序只能请求内核来执行任务。假设用户有一个打开DVD托盘的程序。程序不直接打开托盘。相反,该程序通知内核托盘应该被打开。然后,内核给硬件发送一个信号去打开托盘。这些代码同样管理kill信号。举例来说,当系统管理员打开进程管理器去关闭一个已经锁死的程序,这个关闭程序的信号被称为kill信号。内核接收到信号,然后会要求程序停止(取决于kill的类型)或内核直接把进程从内存和CPU中移除。命令行中的管道同样用于进程间通信 。管道会告诉内核在某个内存页上写入输出数据。程序或者命令得到的数据是来自内存页上的某个给定指针. - -**kernel** - 这个文件夹中的代码控制内核本身。例如,如果一个调试器需要跟踪问题,内核将使用这个文件夹中代码来将内核指令通知调试器。这里还有踪时间的代码。内核文件夹下有个"power"文件夹 。这个文件夹中的代码可以使计算机重新启动,关机,挂起。 - -**lib** - 这个文件夹包含了内核需要引用的一系列内核库文件代码 - -**mm** - mm文件夹中包含了内存管理代码。内存并不是随机放置在RAM上 。相反,内核小心地将数据放在RAM上。内核不会覆盖任何正在使用或保存重要数据的内存区域。 - -**net** - net文件夹中包含了网络协议代码。这包括IPv6,AppleTalk,以太网, WiFi,蓝牙等的代码,此外,处理网桥和DNS解析的代码也在net目录。 - -**samples** -此文件夹包含了程序示例和正在编写中的模块代码。假设一个新的模块引入了一个希望的功能,但没有程序员声明可以正常运行在内核上。那么,这些模块就会移到这里。这给了新内核程序员一个机会通过这个文件夹获得帮助并选择一个他们想要帮助开发的模块。 - -**scripts** -这个文件夹有内核编译所需的脚本。最好不要改变这个文件夹内的任何东西。否则,您可能无法配置或编译内核。 - - -**security** - 这个文件夹是有关内核安全的代码。它对计算机免于受到病毒和黑客的侵害很重要。否则,Linux系统可能会遭到损坏。关于内核的安全性,将在以后的文章中讨论。 - -**sound** - 这个文件夹中包含了声卡驱动。 - -**tools** - 这个文件夹中包含了和内核交互的文件。 - -**usr** - 还记得在以前的文章中提到vmlinuz和其他类似的文件么?这个文件夹中的代码在内核编译完成后创建这些文件。 - -**virt** -此文件夹包含了虚拟化代码,它允许用户一次运行多个操作系统。 这与先前提到的Xen是不同的。通过虚拟化,客户机操作系统就像任何其他运行在Linux主机的应用程序一样运行。通过hypervisor(注:虚拟机管理程序)如Xen,这两个操作系统同时管理硬件。在虚拟化中,在客户机操作系统上运行在Linux内核上,而在hypervisor中,它没有客户系统并且所有的系统不互相依赖。 - -提示: 决不在内核源代码内动文件,除非你知道你在做什么。否则,编译会由于缺失文件失败。 - -Linux内核的文件夹结构保持相对稳定。内核开发者已经做了一些修改,但总体来说,这种设置对整个内核版本相同。驱动程序文件夹的布局也保持基本相同。 - --------------------------------------------------------------------------------- - -via: http://www.linux.org/threads/the-linux-kernel-the-source-code.4204/ - -译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 3bc6eca03219e8829fca3269068cdf358e661565 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Wed, 30 Oct 2013 09:56:42 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E6=A0=A1=E5=AF=B9=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... Quotes from Linus Torvalds' Keynote at LinuxCon Europe.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translated/10 Best Quotes from Linus Torvalds' Keynote at LinuxCon Europe.md b/translated/10 Best Quotes from Linus Torvalds' Keynote at LinuxCon Europe.md index 40877840f1..8aab9aec3f 100644 --- a/translated/10 Best Quotes from Linus Torvalds' Keynote at LinuxCon Europe.md +++ b/translated/10 Best Quotes from Linus Torvalds' Keynote at LinuxCon Europe.md @@ -24,7 +24,7 @@ Linus Torvalds 十句精彩语录 —— 来自 LinuxCon Europe 大会上的主 4. Dirk:“是什么让你熬夜?” Linus: 代码中的Bug,还有其他一些技术问题, 不过这些问题并不难解决。 -**“技术上的东西,可以这么说,即使你做了蠢事,但都是可以解决的。** +**“技术上的东西,可以这么说,即使你做了蠢事,但都是可以解决的。** 5. 真正让Linus熬夜的是与开发进度有关的社交性问题。 **有时候情绪来了,可能好几天都比较有压力。 我也有脾气, 这对我来说没什么…… 。 但是其他人倾向于陷入到问题里边。结果浪费好几周时间,而且这些问题都挺让人纠结的。** @@ -53,4 +53,4 @@ via: http://www.linuxfoundation.org/news-media/blogs/browse/2013/10/10-best-quot 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[1]:http://events.linuxfoundation.org/events/linuxcon-europe \ No newline at end of file +[1]:http://events.linuxfoundation.org/events/linuxcon-europe From 25a03379495dfdb3d9fd00cfb2cd58b8f2edc4ef Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Wed, 30 Oct 2013 10:43:28 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...us Torvalds' Keynote at LinuxCon Europe.md | 39 ++++++++++++------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/translated/10 Best Quotes from Linus Torvalds' Keynote at LinuxCon Europe.md b/translated/10 Best Quotes from Linus Torvalds' Keynote at LinuxCon Europe.md index 8aab9aec3f..038534803f 100644 --- a/translated/10 Best Quotes from Linus Torvalds' Keynote at LinuxCon Europe.md +++ b/translated/10 Best Quotes from Linus Torvalds' Keynote at LinuxCon Europe.md @@ -10,46 +10,55 @@ Linus Torvalds 十句精彩语录 —— 来自 LinuxCon Europe 大会上的主 以下是linus的十句精彩语录, 来自周三早上的主旨演讲, 按大会上发言时的顺序排列。 -1. Linus 很满意当前内核版本三个月时间的发布周期,因为这样的话,开发者可以充分利用该时间段构建新的特性。即使他们错过了合并的窗口期, 等到下一次机会的到来,三个月的等待时间也不算很长, 他们也就不必急于提交代码了。 -**不必担心你的代码。确保代码运行良好,并得到精心设计就行了。不要担心期限问题。** +1. Linus 很满意当前内核版本三个月时间的发布周期,因为这样的话,开发者可以充分利用该时间段构建新的特性。即使他们错过了合并的窗口期, 等到下一次机会的到来,三个月的等待时间也不算很长, 他们也就不必急于提交代码了。 +**不必着急写代码,要确保代码运行正常且精心设计,不要担心期限问题。** -2. 快速变更的步调还允许开发人员快速合并他们的代码, 然后继续前进。 +2. 快速变更的步调还允许开发人员快速合并他们的代码, 然后继续下一步。 **“开发者在注意力持续时间问题上,有点类似于迟钝的林地动物。”** **3. “对于一个维护者来说,最重要的不在于你是不是一个优秀的工程师, 而在于你得负责任, 别人可以指望你, 7天的每一个24小时, 一年52个星期都是如此”。** -年轻的开发者想成为一名维护人员是比较困难的。要经过数年时间的观察期,让社区信任你, 注意到你确实坚守在这里。那即是说,只要你能证明自己是可信赖的,想成为一名维护者还是容易的(因为你经受住了时间的考验),毕竟这是一份棘手的工作 -4. Dirk:“是什么让你熬夜?” -Linus: 代码中的Bug,还有其他一些技术问题, 不过这些问题并不难解决。 +年轻的开发者想成为一名维护人员是比较困难的。要经过数年时间的观察期,让社区信任你, 注意到你确实坚守在这里。那即是说,只要你能证明自己是可信赖的,想成为一名维护者还是容易的,毕竟这是一份棘手的工作,必须时刻保持关注。 + +4. Dirk:“是什么让你熬夜?” + +代码中的Bug,还有其他一些技术问题并不会让Linux太担忧。 + +**“技术上的东西,可以这么说,即使你做了蠢事,但都是可以解决的。** -**“技术上的东西,可以这么说,即使你做了蠢事,但都是可以解决的。** 5. 真正让Linus熬夜的是与开发进度有关的社交性问题。 -**有时候情绪来了,可能好几天都比较有压力。 我也有脾气, 这对我来说没什么…… 。 但是其他人倾向于陷入到问题里边。结果浪费好几周时间,而且这些问题都挺让人纠结的。** +**有时候情绪来了,可能好几天都比较有压力。 我也有脾气, 这对我来说没什么…… 但是其他人倾向于陷入到问题里边。结果浪费好几周时间,而且这些问题都挺让人纠结的。** -6.当提到说服大公司继续贡献内核代码并且使用开源软件, linus持达尔文观点。他们要么从开源获益,要么就得承受经济上的损失。 +6.当提到说服大公司继续贡献内核代码并且使用开源软件, linus持进化论观点。他们要么从开源获益,要么就得承受经济上的损失。 -**我从事开源,因为有乐趣而且开源行得通……。 跟开源社区合作的公司会花费更少的时间并且使工作更有成效。** +**我从事开源,因为有乐趣而且开源行得通…… 跟内核社区合作的公司会花费更少的时间并且使工作更有成效。** + +**7. 如果你的公司认为内核的微小改动可以带来竞争优势,你恐怕将会面临经济问题。最好还是考虑一下生产廉价的高质量的硬件好了。** -**7. 如果你有一家公司, 对内核的微小的改动会给你带来竞争优势, 你很可能就要面对经济上的问题。最好还是考虑一下生产廉价的高质量的硬件好了。** ![](http://www.linux.com/images/stories/41373/Linus-Torvalds-LinuxCon-Europe.jpg) + *Linux 创始人 Linux Torvalds 回答现场观众的提问,2013 LinuxCon Europe大会。* + 8. 有关linux桌面版的现状,linus有几点要谈。linux桌面仍然可以改善。但是各个发行版之间的内讧已然是个问题。 -**我写linux就是因为想让它在桌面上跑…… 我希望人们可以一起努力…… 把登陆界面搞得更漂亮一点** -9. Linus说, Valve’s Steam有助于linux桌面版的开发,这是个极好的机会。他们要为打算运行游戏的Linux发行版制定一个标准。 +**我开始设计 Linux 时候就是想看到它在桌面上运行。我希望大家能更好的合作,一起设计一个真正漂亮的登录界面。** + +9. Linus认为 Valve’s Steam有助于linux桌面版的开发,这是个极好的机会。他们打算为运行游戏的Linux发行版制定一个标准。。 + +**这是标准化的最好的模式。标准不是说人们就坐在烟雾弥漫的房间里,写啊写。能够带来市场效益才称得上成功。** -**这是标准化的最好的模式。标准不是说人们就坐在房间里,写啊写。标准能够带来市场效益才称得上成功。** 10. 针对多样性, linus说他希望看到内核社区的发展壮大, 有来自不同地区的更多的女性和开发者参与到其中。 **女性太少了。但是我并不担心。过去我们就讨论过来自日本的开发者太少的问题。这是可以解决,只是时间问题。** + -------------------------------------------------------------------------------- via: http://www.linuxfoundation.org/news-media/blogs/browse/2013/10/10-best-quotes-linus-torvalds-keynote-linuxcon-europe -译者:[译者ID](https://github.com/l3b2w1) 校对:[校对者ID](https://github.com/校对者ID) +译者:[译者ID](https://github.com/l3b2w1) 校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出