This commit is contained in:
runningwater 2013-11-03 13:08:31 +08:00
commit 19de7fecdb
175 changed files with 3478 additions and 2830 deletions

View File

@ -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.”,但根据上下文,此处语境不对,所以做了相应补充。据“食梦-”的提示原文也有人对此提出了质疑作者做了如下解释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/) 荣誉推出
[1]:https://www.kernel.org/

View File

@ -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.4arch下有以下文件夹
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系统。用户还可以运行WindowsSolarisFreeBSD或其他操作系统在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/) 荣誉推出

View File

@ -0,0 +1,236 @@
戴文的Linux内核专题03 驱动程序
===========================
驱动程序是使内核能够沟通和操作硬件或协议规则和标准的小程序。没有驱动程序内核不知道如何与硬件沟通或者处理协议内核实际上先发送指令给BIOS然后BIOS传给硬件。 Linux的内核代码在驱动程序文件夹中以源代码的形式包含了许多驱动程序。驱动文件夹中的每个文件夹会在下面说明。在配置和编译内核时这样有助于你了解驱动程序。否则用户可能会在编译时加入不必要的或者漏掉重要的驱动。驱动代码通常会包含一个单行注释来指出驱动的目的。 比如tc的驱动代码有一行的注释说是用于TURBOchannel总线。由于这些文档用户应该看驱动前几行的注释来了解它们的用途。
有几个术语你应该已经知道所以下面的信息应该是明白的。一个I/O设备指的是输入/输出设备。例如调制解调器和网卡,他们发送和接收数据。监视器是一个输出设备 - 只有信息出来。键盘、鼠标和游戏杆是数据输入系统。存储设备用于存储数据例如SD卡、硬盘、光盘、存储卡等。CPU处理器是计算机的“大脑”或“心脏” 如果没有它电脑就无法运作。主板则是一块连接板上不同组件的印刷线路板。主板及各个组件是计算机的运行的基础。许多计算机用户说主板是电脑的心脏主板上有CPU。主板包含了用于连接外设的端口外设包括输入、输出和存储设备。总线是主板的电路它连接着外设。网络设备用于两台或多台计算机之间的连接。端口则是用户可以插入另外一台设备或一根电缆的设备例如用户可以将插入一根火线记忆棒插入一个火线端口将以太网电缆插入一个以太网端口。光碟的读取是利用激光从可以散射或反射的激光的反射面上读出数据一个常见的光盘是DVD。许多系统说自己是32位或者64位这指的是寄存器、地址总线或数据总线的位数。例如在一块64位的主板上数据总线组件之间的银线有64根并排到目的的线。存储器地址以位(0和1)的形式在存储器中编址因此一个32位存储地址包含32个0和1来表示存储器上的某处地址。
许多驱动程序是通用驱动程序这意味着一个通用键盘驱动可以使内核可以处理几乎所有的键盘。然而有些驱动是专用驱动像苹果和Commodore就分别为苹果电脑和Amiga系统制造了专门的硬件。Linux内核中已经包含了许多诸如智能手机、苹果、Amiga系统、PS3、Android平板和许多其他设备的驱动程序。
注意有些设备的驱动不在本目录中。比如射频驱动在net和media文件夹下。
**accessibility** - 这些驱动提供支持一些辅助设备。在Linux 3.9.4中,这个文件夹中只有一个驱动就是盲文设备驱动。
**acpi** - 高级配置和电源接口ACPI : Advanced Configuration and Power Interface驱动用来管理电源使用。
**amba** - 高级微控制器总线架构AMBA : Advanced Microcontroller Bus Architecture是与片上系统SoC的管理和互连的协议。SoC是一块包含许多或所有必要的计算机组件的芯片。这里的AMBA驱动让内核能够运行在这上面。
**ata** - 该目录包含PATA和SATA设备的驱动程序。串行ATASATA是一种连接主机总线适配器到像硬盘那样的存储器的计算机总线接口。并行ATAPATA用于连接存储设备如硬盘驱动器软盘驱动器光盘驱动器的标准。PATA就是我们所说的IDE。
**atm** - 异步通信模式(ATM : Asynchronous Transfer Mode)是一种通信标准。这里有各种接到PCI桥的驱动(他们连接到PCI总线)和以太网控制器(控制以太网通信的集成电路芯片)。
**auxdisplay** - 这个文件夹提供了三个驱动。LCD 帧缓存framebuffer驱动、LCD控制器驱动和一个LCD驱动。这些驱动用于管理液晶显示器 —— 液晶显示器会在按压时显示波纹。注意:按压会损害屏幕,所以请不要用力戳LCD显示屏。
**base** - 这是个重要的目录包含了固件、系统总线、虚拟化能力等基本的驱动。
**bcma** - 这些驱动用于使用基于AMBA协议的总线。AMBA是由博通公司开发。
**block** - 这些驱动提供对块设备的支持像软驱、SCSI磁带、TCP网络块设备等等。
**bluetooth** - 蓝牙是一种安全的无线个人区域网络标准(PANs)。蓝牙驱动就在这个文件夹,它允许系统使用各种蓝牙设备。例如,一个蓝牙鼠标不用电缆,并且计算机有一个电子狗(小型USB接收器)。Linux系统必须能够知道进入电子狗的信号否则蓝牙设备无法工作。
**bus** - 这个目录包含了三个驱动。一个转换ocp接口协议到scp协议。一个是设备间的互联驱动第三个是用于处理互联中的错误处理。
**cdrom** - 这个目录包含两个驱动。一个是cd-rom包括DVD和CD的读写。第二个是gd-rom(只读GB光盘)GD光盘是1.2GB容量的光盘这像一个更大的CD或者更小的DVD。GD通常用于世嘉游戏机中。
**char** - 字符设备驱动就在这里。字符设备每次传输数据传输一个字符。这个文件夹里的驱动包括打印机、PS3闪存驱动、东芝SMM驱动和随机数发生器驱动等。
**clk** - 这些驱动用于系统时钟。
**clocksource** - 这些驱动用于作为定时器的时钟。
**connector** - 这些驱动使内核知道当进程fork并使用proc连接器更改UID(用户ID)、GID(组ID)和SID(会话ID)。内核需要知道什么时候进程fork(CPU中运行多个任务)并执行。否则,内核可能会低效管理资源。
**cpufreq** - 这些驱动改变CPU的电源能耗。
**cpuidle** - 这些驱动用来管理空闲的CPU。一些系统使用多个CPU其中一个驱动可以让这些CPU负载相当。
**crypto** - 这些驱动提供加密功能。
**dca** - 直接缓存访问DCA Direct Cache Access驱动允许内核访问CPU缓存。CPU缓存就像CPU内置的RAM。CPU缓存的速度比RAM更快。然而,CPU缓存的容量比RAM小得多。CPU在这个缓存系统上存储了最重要的和执行的代码。
**devfreq** - 这个驱动程序提供了一个通用的动态电压和频率调整(DVFS Generic Dynamic Voltage and Frequency Scaling)框架可以根据需要改变CPU频率来节约能源。这就是所谓的CPU节能。
**dio** - 数字输入/输出DIO Digital Input/Output总线驱动允许内核可以使用DIO总线。
**dma** - 直接内存访问(DMA)驱动允许设备无需CPU直接访问内存。这减少了CPU的负载。
**edac** - 错误检测和校正( Error Detection And Correction驱动帮助减少和纠正错误。
**eisa** - 扩展工业标准结构总线Extended Industry Standard Architecture驱动提供内核对EISA总线的支持。
**extcon** - 外部连接器EXTernal CONnectors驱动用于检测设备插入时的变化。例如extcon会检测用户是否插入了USB驱动器。
**firewire** - 这些驱动用于控制苹果制造的类似于USB的火线设备。
**firmware** - 这些驱动用于和像BIOS(计算机的基本输入输出系统固件)这样的设备的固件通信。BIOS用于启动操作系统和控制硬件与设备的固件。一些BIOS允许用户超频CPU。超频是使CPU运行在一个更快的速度。CPU速度以MHz(百万赫兹)或GHz衡量。一个3.7 GHz的CPU的的速度明显快于一个700Mhz的处理器。
**gpio** - 通用输入/输出(GPIO General Purpose Input/Output)是可由用户控制行为的芯片的管脚。这里的驱动就是控制GPIO。
**gpu** - 这些驱动控制VGA、GPU和直接渲染管理(DRM Direct Rendering Manager )。VGA是640*480的模拟计算机显示器或是简化的分辨率标准。GPU是图形处理器。DRM是一个Unix渲染系统。
**hid** - 这驱动用于对USB人机界面设备的支持。
**hsi** - 这个驱动用于内核访问像Nokia N900这样的蜂窝式调制解调器。
**hv** - 这个驱动用于提供Linux中的键值对(KVP Key Value Pair)功能。
**hwmon** - 硬件监控驱动用于内核读取硬件传感器上的信息。比如CPU上有个温度传感器。那么内核就可以追踪温度的变化并相应地调节风扇的速度。
**hwspinlock** - 硬件转锁驱动允许系统同时使用两个或者更多的处理器,或使用一个处理器上的两个或更多的核心。
**i2c** - I2C驱动可以使计算机用I2C协议处理主板上的低速外设。系统管理总线(SMBus System Management Bus)驱动管理SMBus,这是一种用于轻量级通信的two-wire总线。
**ide** - 这些驱动用来处理像CDROM和硬盘这些PATA/IDE设备。
**idle** - 这个驱动用来管理Intel处理器的空闲功能。
**iio** - 工业I/O核心驱动程序用来处理数模转换器或模数转换器。
**infiniband** - Infiniband是在企业数据中心和一些超级计算机中使用的一种高性能的端口。这个目录中的驱动用来支持Infiniband硬件。
**input** - 这里包含了很多驱动这些驱动都用于输入处理包括游戏杆、鼠标、键盘、游戏端口旧式的游戏杆接口、遥控器、触控、耳麦按钮和许多其他的驱动。如今的操纵杆使用USB端口但是在上世纪80、90年代操纵杆是插在游戏端口的。
**iommu** - 输入/输出内存管理单元(IOMMU Input/Output Memory Management Unit)驱动用来管理内存管理单元中的IOMMU。IOMMU连接DMA IO总线到内存上。IOMMU是设备在没有CPU帮助下直接访问内存的桥梁。这有助于减少处理器的负载。
**ipack** - Ipack代表的是IndustryPack。 这个驱动是一个虚拟总线,允许在载体和夹板之间操作。
**irqchip** - 这些驱动程序允许硬件的中断请求(IRQ)发送到处理器,暂时挂起一个正在运行的程序而去运行一个特殊的程序(称为一个中断处理程序)。
**isdn** - 这些驱动用于支持综合业务数字网(ISDN),这是用于同步数字传输语音、视频、数据和其他网络服务使用传统电话网络的电路的通信标准。
**leds** - 用于LED的驱动。
**lguest** - lguest用于管理客户机系统的中断。中断是CPU被重要任务打断的硬件或软件信号。CPU接着给硬件或软件一些处理资源。
**macintosh** - 苹果设备的驱动在这个文件夹里。
**mailbox** - 这个文件夹(pl320-pci)中的驱动用于管理邮箱系统的连接。
**md** - 多设备驱动用于支持磁盘阵列,一种多块硬盘间共享或复制数据的系统。
**media** - 媒体驱动提供了对收音机、调谐器、视频捕捉卡、DVB标准的数字电视等等的支持。驱动还提供了对不同通过USB或火线端口插入的多媒体设备的支持。
**memory** - 支持内存的重要驱动。
**memstick** - 这个驱动用于支持Sony记忆棒。
**message** - 这些驱动用于运行LSI Fusion MPT(一种消息传递技术)固件的LSI PCI芯片/适配器。LSI大规模集成这代表每片芯片上集成了几万晶体管、
**mfd** - 多用途设备(MFD)驱动提供了对可以提供诸如电子邮件、传真、复印机、扫描仪、打印机功能的多用途设备的支持。这里的驱动还给MFD设备提供了一个通用多媒体通信端口(MCP)层。
**misc** - 这个目录包含了不适合在其他目录的各种驱动。就像光线传感器驱动。
**mmc** - MMC卡驱动用于处理用于MMC标准的闪存卡。
**mtd** - 内存技术设备(MTD Memory technology devices)驱动程序用于Linux和闪存的交互这就就像一层闪存转换层。其他块设备和字符设备的驱动程序不会以闪存设备的操作方式来做映射。尽管USB记忆卡和SD卡是闪存设备但它们不使用这个驱动因为他们隐藏在系统的块设备接口后。这个驱动用于新型闪存设备的通用闪存驱动器驱动。
**net** - 网络驱动提供像AppleTalk、TCP和其他的网络协议。这些驱动也提供对调制解调器、USB 2.0的网络设备、和射频设备的支持。
**nfc** - 这个驱动是德州仪器的共享传输层之间的接口和NCI核心。
**ntb** - 不透明的桥接驱动提供了在PCIe系统的不透明桥接。PCIe是一种高速扩展总线标准。
**nubus** - NuBus是一种32位并行计算总线。用于支持苹果设备。
**of** - 此驱动程序提供设备树中创建、访问和解释程序的OF助手。设备树是一种数据结构用于描述硬件。
**oprofile** - 这个驱动用于从驱动到用户空间进程(运行在用户态下的应用)评测整个系统。这帮助开发人员找到性能问题
**parisc** - 这些驱动用于HP生产的PA-RISC架构设备。PA-RISC是一种特殊指令集的处理器。
**parport** - 并口驱动提供了Linux下的并口支持。
**pci** - 这些驱动提供了PCI总线服务。
**pcmcia** - 这些是笔记本的pc卡驱动
**pinctrl** - 这些驱动用来处理引脚控制设备。引脚控制器可以禁用或启用I/O设备。
**platform** -这个文件夹包含了不同的计算机平台的驱动像Acer、Dell、Toshiba、IBM、Intel、Chrombooks等等。
**pnp** - 即插即用驱动允许用户在插入一个像USB的设备后可以立即使用而不必手动配置设备。
**power** - 电源驱动使内核可以测量电池电量,检测充电器和进行电源管理。
**pps** - Pulse-Per-Second驱动用来控制电流脉冲速率。这用于计时。
**ps3** - 这是Sony的游戏控制台驱动- PlayStation3。
**ptp** - 图片传输协议(PTP)驱动支持一种从数码相机中传输图片的协议。
**pwm** - 脉宽调制(PWM)驱动用于控制设备的电流脉冲。主要用于控制像CPU风扇。
**rapidio** - RapidIO驱动用于管理RapidIO架构它是一种高性能分组交换用于电路板上交互芯片的交互技术也用于互相使用底板的电路板。
**regulator** - 校准驱动用于校准电流、温度、或其他可能系统存在的校准硬件。
**remoteproc** - 这些驱动用来管理远程处理器。
**rpmsg** - 这个驱动用来控制支持大量驱动的远程处理器通讯总线(rpmsg)。这些总线提供消息传递设施,促进客户端驱动程序编写自己的连接协议消息。
**rtc** - 实时时钟(RTC)驱动使内核可以读取时钟。
**s390** - 用于31/32位的大型机架构的驱动。
**sbus** - 用于管理基于SPARC的总线驱动。
**scsi** - 允许内核使用SCSI标准外围设备。例如,Linux将在与SCSI硬件传输数据时使用SCSI驱动。
**sfi** -简单固件接口(SFI)驱动允许固件发送信息表给操作系统。这些表的数据称为SFI表。
**sh** - 该驱动用于支持SuperHway总线。
**sn** - 该驱动用于支持IOC3串口。
**spi** - 这些驱动处理串行设备接口总线(SPI),它是一个在在全双工下运行的同步串行数据链路标准,。全双工是指两个设备可以同一时间同时发送和接收信息。双工指的是双向通信。设备在主/从模式下通信(取决于设备配置)。
**ssb** - ssb(Sonics Silicon Backplane)驱动提供对在不同博通芯片和嵌入式设备上使用的迷你总线的支持。
**staging** - 该目录含有许多子目录。这里所有的驱动还需要在加入主内核前经过更多的开发工作。
**target** - SCSI设备驱动
**tc** - 这些驱动用于TURBOchannelTURBOchannel是数字设备公司开发的32位开放总线。这主要用于DEC工作站。
**thermal** - thermal驱动使CPU保持较低温度。
**tty** - tty驱动用于管理物理终端连接。
**uio** - 该驱动允许用户编译运行在用户空间而不是内核空间的驱动。这使用户驱动不会导致内核崩溃。
**usb** - USB设备允许内核使用USB端口。闪存驱动和记忆卡已经包含了固件和控制器,所以这些驱动程序允许内核使用USB接口和与USB设备。
**uwb** - Ultra-WideBand驱动用来管理短距离高带宽通信的超低功耗的射频设备
**vfio** - 允许设备访问用户空间的VFIO驱动。
**vhost** - 这是用于宿主内核中的virtio服务器驱动。用于虚拟化中。
**video** - 这是用来管理显卡和监视器的视频驱动。
**virt** - 这些驱动用来虚拟化。
**virtio** - 这个驱动用来在虚拟PCI设备上使用virtio设备。用于虚拟化中。
**vlynq** - 这个驱动控制着由德州仪器开发的专有接口。这些都是宽带产品像WLAN和调制解调器VOIP处理器音频和数字媒体信号处理芯片。
**vme** - WMEbus最初是为摩托罗拉68000系列处理器开发的总线标准
**w1** - 这些驱动用来控制one-wire总线。
**watchdog** - 该驱动管理看门狗定时器,这是一个可以用来检测和恢复异常的定时器。
**xen** - 该驱动是Xen管理程序系统。这是个允许用户运行多个操作系统在一台计算机的软件或硬件。这意味着xen的代码将允许用户在同一时间的一台计算机上运行两个或更多的Linux系统。用户也可以在Linux上运行Windows、Solaris、FreeBSD、或其他操作系统。
**zorro** - 该驱动提供Zorro Amiga总线支持。
--------------------------------------------------------------------------------
via: http://www.linux.org/threads/the-linux-kernel-drivers.4205/
译者:[geekpi](https://github.com/geekpi) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出

View File

@ -0,0 +1,37 @@
戴文的Linux内核专题04 安全
================================================================================
![](http://www.linux.org/attachments/slide-jpg.278/)
Linux内核是所有Linux系统的核心。如果有任何恶意代码控制或破害了内核的任何一部分那么系统会严重受损文件可能被删除或损坏私人信息可能被盗等等。很明显保持内核安全涉及到用户的最大利益。值得庆幸的是由于Linux内核极其安全Linux是一个非常安全的系统。在用户比例上Linux病毒比Windows病毒更少并且Linux用户比Windows用户个人更少感染病毒。(这就是为什么许多公司使用Linux来管理他们的服务器的一个原因。) 然而我们仍然没有借口去忽视内核的安全。Linux有几个安全特性和程序但本文只讨论Linux安全模块(LSM)及其它的内核安全特性。
AppArmor应用盔甲最初是由Immunix写的安全模块。自从2009年以来Canonical维护着这些代码Novell在Immunix之后Canonical以前管理这些代码。这个安全模块已经从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 mandatory access control)工作,这种访问控制是通过限制程序或者用户执行一些任务来实现的。安全模块还有某些形式的列表规定了它们可以做什么不可以做什么。
Yama在Linux内核中一个新安全模块。Yama还没有作为标准的安全模块但是在将来他会成为第5个标准安全模块。Yama和其他安全模块一样使用相同的机制。
“grsecurity”是一系列Linux内核安全补丁的集合。多数补丁用于处理远程网络连接和缓冲区溢出的安全问题(以后讨论)。grsecurity中有一个叫PaX的有趣组件。PaX补丁允许内存里的代码使用最少的所需权限。例如存储程序的内存段被标为不可写。想想看为什么一个可执行的程序需要在内存中是可写的通过这个补丁恶意代码就不能修改目前正在执行的程序。缓冲区溢出是一种当程序由于bug或者恶意代码在内存上写入数据并让它的内存边界超出到其他程序的内存页上的安全事件。当Pax被激活时它会帮助阻止这些缓冲区溢出因为程序没有写到其他内存页上的权限了。
Linux入侵检测系统(LIDS)是一个内核安全补丁,提供了强制访问控制(MAC)的特性。这个补丁就像扮演LSM模块的角色。
Systrace是一个减少和控制应用程序访问系统文件和系统调用的工具。系统调用是对内核的服务请求。比如当一个文本编辑器写入一个文件到硬盘上时程序将会发送一个系统请求让内核写入文件到硬盘中。
这些是在Linux安全系统中非常重要的组件。这些安全模块和补丁使内核免于受到恶意代码的攻击。没有这些特性Linux系统将会变成一个不安全的操作系统。
--------------------------------------------------------------------------------
via: http://www.linux.org/threads/the-linux-kernel-security.4223/
译者:[geekpi](https://github.com/geekpi) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出

View File

@ -0,0 +1,72 @@
戴文的Linux内核专题05 配置内核 (1)
================================================================================
![](http://www.linux.org/attachments/slide-jpg.299/)
现在我们已经了解了内核,现在我们可以进入主要工作:配置并编译内核代码。配置内核代码并不会花费太长时间。配置工具会询问许多问题并且允许开发者配置内核的每个方面。如果你有不确定的问题或者特性,你最好使用配置工具提供的默认值。本系列教程会使读者逐步了解配置内核的整个过程。
配置代码前需要在源文件的文件夹内打开一个终端。当终端打开后,基于你喜好的配置界面,这里有几种不同的配置方法:
- make config - 纯文本界面 (最常用的选择)。
- make menuconfig - 基于文本彩色菜单和单选列表。这个选项可以加快开发者开发速度。需要安装ncurses(ncurses-devel)。
- make nconfig - 基于文本的彩色菜单。需要安装curses (libcdk5-dev)。
- make xconfig - QT/X-windows 界面。需要安装QT。
- make gconfig - Gtk/X-windows 界面。需要安装GTK。
- make oldconfig - 纯文本界面,但是其默认的问题是基于已有的本地配置文件。
- make silentoldconfig - 和oldconfig相似但是不会显示配置文件中已有的问题的回答。
- make olddefconfig -和silentoldconfig相似但有些问题已经以它们的默认值选择。
- make defconfig - 这个选项将会创建一份以当前系统架构为基础的默认设置文件。
- make ${PLATFORM}_defconfig - 创建一份使用arch/$ARCH/configs/${PLATFORM}_defconfig中的值的配置文件。
- make allyesconfig - 这个选项将会创建一份尽可能多的问题回答都为yes的配置文件。
- make allmodconfig - 这个选项将会创建一份将尽可能多的内核部分配置为模块的配置文件。
> 注意:内核代码可以放进内核自身,也可以成为一个模块。例如,用户可以将蓝牙驱动作为一个模块加入(独立于内核),或者直接放到内核栗,或者完全不加蓝牙驱动。当代码放到内核本身时,内核将会请求更多的内存并且启动会花费更长的时间。然而,内核会执行的更好。如果代码作为模块加入,代码将会一直存在于硬盘上直到被需要时加载。接着模块被加载到内存中。这可以减少内核的内存使用并减少启动的时间。然而,因为内核和模块在内存上相互独立所以会影响内核的性能。另一种选择是不添加一些代码。举例来说,内核开发人员假如知道系统永远都不会使用蓝牙设备,因此这个驱动就可以不加到内核中。这提升了内核的性能。然而,如果用户之后需要蓝牙设备,那么他么需要安装蓝牙模块或者升级内核才行。
- make allnoconfig - 这个选项只会生成内核所必要代码的配置文件。它对尽可能多的问题都回答no。这有时会导致内核无法工作在为编译该内核的硬件上。
- make randconfig - 这个选项会对内核选项随机选择(译注:这是做什么用途的?!)。
- make localmodconfig - 这个选项会根据当前已加载模块列表和系统配置来生成配置文件。
- make localyesconfig - 将所有可装载模块LKM都编译进内核(译者注:这里与原文 This will set all module options to yes - most (or all) of the kernel will not be in modules的意思不同作者也作出了解释http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-1.4274/#post-13307)。
贴士最好使用“make menuconfig”因为用户可以保存进度。“make config”不会提供这样的便利因为配置过程会耗费大量时间。
### 配置: ###
大多数开发者选择使用“make menucongfig”或者其他图形菜单之一。当键入上述配置命令后第一个问题是受否将内核编译成64位。选项有“Y”、“n”和“?”。问号用来解释这个问题“n”代表这个问题回答否(no),"Y"代表这个问题回答是(yes)。在这个教程里,我选择是。 这里我输入"Y"(这里是大小写敏感的)并输入回车。
注意当内核在32位系统上编译时编译工具会询问内核是否编译成32位。第一个问题在不同的处理器上不一样。
下一行显示的是"Cross-compiler tool prefix (CROSS\_COMPILE) []"交叉编译器工具前缀。如果你不是做交叉编译就直接按下回车。如果你正在交叉编译对ARM系统输入像"arm-unknown-linux-gnu-"对64位PC输入像"x86_64-pc-linux-gnu-"的字样。对其他处理器而言还有许多其他可能的命令,但是这个表太大了。一旦一名开发者知道他们想要支持的处理器,很容易就可研究出处理器需要的命令。
注意交叉编译是为别的处理器编译代码。比如一台Intel系统正编译着不在Intel处理器上运行的程序比如这个系统可能正在编译着要在ARM或AMD处理器上运行的代码。
注意:每一项选择会改变接下来显示什么问题及何时显示。我会(在教程里)包含上我的选择让读者可以在他们自己的系统上跟上配置的进度。
接下来,用户会看到“Local version - append to kernel release (LOCALVERSION) []”本地版本号附加到内核版本号后面。这使开发人员可以给定一个特殊版本号或命名他们自定义的内核。我将输入“LinuxDotOrg”这样内核版本会显示为“3.9.4-LinuxDotOrg”。接下来配置工具会询问“Automatically append version information to the version string (LOCALVERSION_AUTO) [N/y/?]”是否自动添加版本信息到版本号后。如果本地有一个git版本库git的修订号会被添加到版本号后面。这个例子中我们没有使用git所以我回答"no"。不然git修订号将会追加到版本号中。还记得vmlinuz和几个类似的文件么好了下一个问题就是问使用哪一种格式压缩内核。开发人员可以从五个选项中选择一个。它们是
1. Gzip (KERNEL_GZIP)
2. Bzip2 (KERNEL_BZIP2)
3. LZMA (KERNEL_LZMA)
4. XZ (KERNEL_XZ)
5. LZO (KERNEL_LZO)
Gzip是默认值所以我选择"1"并按回车。每种压缩格式和其他压缩格式相比都有更高或者更低的压缩比。更好的压缩比意味着更小的体积,但是与低压缩比文件相比,它解压时需要更多的时间。
现在这行显示“Default hostname (DEFAULT_HOSTNAME) [(none)]”(默认主机名)。这里可以配置主机名。通常地,开发者这行留空(我这里留空)以便以后Linux用户可以自己设置他们的主机名。
接下来开发者可以启用或者禁用交换分区。Linux使用一个叫做"swap space"的独立分区来使用虚拟内存。这相当于Windows中的页面文件。典型地开发者在这行“Support for paging of anonymous memory (swap) (SWAP) [Y/n/?]”是否支持匿名内存换页回答“Y”。
接下来的一行System V IPC (SYSVIPC) [Y/n/?]询问内核是否支持IPC。进程间通信使进程间可以通信和同步。最好启用IPC不然许多程序将无法工作。这个问题回答“Y”会使配置工具接下来问“POSIX Message Queues (POSIX_MQUEUE) [Y/n/?]”是否使用POSIX消息队列这个问题只会在IPC启用后看见。POSIX消息队列是一种给每条消息一个优先级的消息队列一种进程间通信形式。默认的选择是“Y”。按回车选择默认选择以大写选择指示默认
下一个问题“open by fhandle syscalls (FHANDLE) [Y/n/?]”是否使用文件句柄系统调用来打开文件是问当有需要进行文件系统操作的时候程序是否允许使用文件句柄而不是文件名进行。默认上这个选择是“Y”。
有时开发者在做了一些选择后某些问题会自动回答。比如下一个问题“Auditing support (AUDIT) [Y/?]”是否支持审计会在没有提示的情况下自动回答因为先前的选项需要这个特性。审计支持会记录所有文件的访问和修改。下一个关于审计的问题“Enable system-call auditing support (AUDITSYSCALL) [Y/n/?]”是否启用系统调用审计支持。如果启用所有的系统调用都会记录下来。如果开发者想要更好的性能那么最好尽可能地禁用审计特性并且不把它加入内核。而另外一些开发者可能为了安全监控而启用审计。这个问题我选择“n”。下一个审计方面的问题“Make audit loginuid immutable (AUDIT_LOGINUID_IMMUTABLE) [N/y/?]”是否要审计进程身份ID不可变是询问进程是否可以改变它们的loginuid(LOGIN User ID)如果启用用户空间的进程将无法改变他们的loginuid。为了更好的性能我们这里禁用这个特性。译注对于使用systemd这样的系统其是通过中央进程来重启登录服务的设置为“y”可以避免一些安全问题而使用较旧的SysVinit和Upstart的系统其需要管理员手工重启登录服务应该设置为“N”
注意当通过“make config”配置时这些通过配置工具回答的问题会显示出来但是用户无法改变答案。当通过"make menuconfig"配置时,无论用户按任何键都无法改变选项。开发者不需要去改变这些选项,因为之前的选择决定了另外一个问题的选择。
--------------------------------------------------------------------------------
via: http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-1.4274/
译者:[geekpi](https://github.com/geekpi) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出

View File

@ -0,0 +1,63 @@
Linus Torvalds 十句精彩语录 —— 来自 LinuxCon Europe 大会上的主旨发言
================================================================================
![](http://www.linux.com/images/stories/41373/Linus-and-Dirk.jpg)
*Linus Torvalds 和 Dirk Hohndel 在 Edinburgh举行的 LinuxCon Europe 大会主席台上*
Linux创始人 Linus Torvalds 坐在了在Edinburgh举办的[LinuxCon Europe][1]大会主席台上陪同他的是来自Intel公司linux主管和开源技术专家 Dirk Hohndel二人一起探讨linux的现在和未来并且回答了来自社区的问题。讨论的话题很广泛包括即将发布的3.12版内核, 内核维护者的理想性格,还有能让 Linus 熬夜去解决的一些问题linux桌面游戏等等。
以下是linus的十句精彩语录 来自大会上的主旨演讲, 按大会上发言时的顺序排列。
1、Linus 很满意当前内核版本三个月时间的发布周期,因为这样的话,开发者可以充分利用该时间段构建新的特性。即使他们错过了合并的窗口期, 等到下一次机会的到来,三个月的等待时间也不算很长, 他们也就不必急于提交代码了。
**“不必着急写代码,要确保代码运行正常且精心设计,不要担心期限问题。”**
2、快速变更的步调还允许开发人员快速合并他们的代码 然后继续下一步。
**“开发者在注意力持续时间问题上,有点类似于迟钝的林地动物。”**
3、**“对于一个维护者来说,最重要的不在于你是不是一个优秀的工程师, 而在于你得负责任, 别人可以指望你, 7天的每一个24小时 一年52个星期都是如此”。**
年轻的开发者想成为一名维护人员是比较困难的。要经过数年时间的观察期,让社区信任你, 注意到你确实坚守在这里。那即是说,只要你能证明自己是可信赖的,想成为一名维护者还是容易的,毕竟这是一份棘手的工作,必须时刻保持关注。
4、Dirk:“是什么让你熬夜?”
代码中的Bug还有其他一些技术问题并不会让Linux太担忧。
**“技术上的东西,可以这么说,即使你做了蠢事,但都是可以解决的。”**
5、真正让Linus熬夜的是与开发进度有关的社交性问题。
**“有时候情绪来了,可能好几天都比较有压力。 我也有脾气, 这对我来说没什么…… 但是其他人倾向于陷入到问题里边。结果浪费好几周时间,而且这些问题都挺让人纠结的。”**
6、当提到说服大公司继续贡献内核代码并且使用开源软件 linus持进化论观点。他们要么从开源获益要么就得承受经济上的损失。
**“我从事开源,因为有乐趣而且开源行得通…… 跟内核社区合作的公司会花费更少的时间并且使工作更有成效。”**
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认为 Valves Steam有助于linux桌面版的开发这是个极好的机会。他们打算为运行游戏的Linux发行版制定一个标准。。
**“这是标准化的最好的模式。标准不是说人们就坐在烟雾弥漫的房间里,写啊写。能够带来市场效益才称得上成功。”**
10、针对多样性 linus说他希望看到内核社区的发展壮大 有来自不同地区的更多的女性和开发者参与到其中。
**“女性太少了。但是我并不担心。过去我们就讨论过来自日本的开发者太少的问题。这是可以解决,只是时间问题。”**
--------------------------------------------------------------------------------
via: http://www.linuxfoundation.org/news-media/blogs/browse/2013/10/10-best-quotes-linus-torvalds-keynote-linuxcon-europe
译者:[l3b2w1](https://github.com/l3b2w1) 校对:[Caroline](https://github.com/carolinewuyan)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[1]:http://events.linuxfoundation.org/events/linuxcon-europe

View File

@ -0,0 +1,316 @@
Ubuntu 13.10安装后你要做的8件事
================================================================================
Ubuntu 13.10 已经发布了对于那些打算安装“纯净版”的用户安装完系统后你可以考虑下面的8件事。
![](http://dl.dropboxusercontent.com/u/1113424/img/ubuntu13.10-saucy-salamander.jpg)
### 1. 安装一些绚丽的小零件 ###
![](http://dl.dropboxusercontent.com/u/1113424/img/indicator-systemload.png)
**系统负载** 是系统监控工具GNOME里的一个小应用。它能在面板上展示出CPU、内存、网络使用、硬盘I/O等信息。点击下面的按钮从Ubuntu软件中心安装。
[![](https://apps.ubuntu.com/assets/images/scbutton-free-200px.png)][1]
或者通过命令行进行安装:
sudo apt-get install indicator-multiload
![](http://dl.dropboxusercontent.com/u/1113424/img/indicator-cpufreq.png)
**CPU频率**是一款等效于“GNOME-CPU调频”的应用。你可以实时的调整CPU的频率。点击下面的按钮从Ubuntu软件中心安装。
[![](https://apps.ubuntu.com/assets/images/scbutton-free-200px.png)][2]
或者通过命令行安装:
sudo apt-get install indicator-cpufreq
**我的天气**是一款显示当前天气的应用它能显示5天内的预报并支持四大天气服务站点OpenWeatherMap, Yahoo, Wunderground 和 World Weather Online。
通过命令行进行安装:
sudo add-apt-repository ppa:atareao/atareao
sudo apt-get update
sudo apt-get install my-weather-indicator
![](https://dl.dropboxusercontent.com/u/1113424/img/variety-wallpaper-changer.jpg)
[**Variety**][3]一款带有AppIndicator的应用但是基本上你只需要配置一次就可以用指示器来使用此软件了。Variety是一款很酷的壁纸更换的应用他能在设定的时间内自动下载并更换壁纸。用起来就有种高帅富的感觉。壁纸库每天都会有更新你可以很快的切换到另外一个壁纸收藏自己喜欢的壁纸留着日后再用。
通过以下命令行安装:
sudo add-apt-repository ppa:peterlevi/ppa
sudo apt-get update
sudo apt-get install variety
![](http://dl.dropboxusercontent.com/u/1113424/img/diodon-indicator.png)
你可能还需要一个剪切板管理器,试试**Diodon** 吧,这是款轻量型软件,支持文件、图像等。点击下面的按钮安装:
[![](https://apps.ubuntu.com/assets/images/scbutton-free-200px.png)][4]
或者通过命令行安装:
sudo apt-get install diodon diodon-plugins
### 2. 设置 Unity ###
![](http://dl.dropboxusercontent.com/u/1113424/img/unity-tweak-tool.png)
**Unity Tweak Tool**让用户能改变一些Unity设置比如自动隐藏、窗口最大化、“触发角”、Dash、Unity启动器或平视显示器、改变GTK或图标主题、改变字体和大小移动窗口控制器到右边等。
点击下面的按钮从软件中心安装
[![](https://apps.ubuntu.com/assets/images/scbutton-free-200px.png)][5]
或者通过命令行安装
sudo apt-get install unity-tweak-tool
### 3. 隐私设置 ###
![](http://dl.dropboxusercontent.com/u/1113424/img/ubuntu13.10-privacy-security_2.png)
你应该知道可以通过默认的Dash来查看最近访问的文件和其他的一些文件。系统设置可以通过设置**“安全和隐私”**来选择显示的文件类型。这样就不用看到那些软件、文件夹之类的了。你也可以清除最近的记录。
此外你在使用搜索框的时候,可以设定不显示网络搜索的结果。但是这会屏蔽掉所有的网络信息。所以当你仅仅是想**“屏蔽购物推荐”**的话,你可以输入下面的命令:
gsettings set com.canonical.Unity.Lenses disabled-scopes "['more_suggestions-amazon.scope', 'more_suggestions-u1ms.scope', 'more_suggestions-populartracks.scope', 'music-musicstore.scope', 'more_suggestions-ebay.scope', 'more_suggestions-ubuntushop.scope', 'more_suggestions-skimlinks.scope']"
更多插件屏蔽,点击[此处][6]
![](http://dl.dropboxusercontent.com/u/1113424/img/indicator-privacy.png)
另外一种在Ubuntu 13.10中设置隐私的方法是使用**隐私指示器**,这是一款让你快捷设置启用/屏蔽Zeitgeist 或者在线搜索结果的软件并能清除Zeitgeist日志和最近文件显示先边栏的“最近”里面
[**下载 Privacy Indicator**][7]此网页中含有deb文件下载
### 4. 使用混合显卡功能###
Ubuntu的开发人员已经在Ubuntu 13.10 (和 12.04 LTS版 )中实现了混合显卡技术,下面你会看到相关设置的说明。
![](http://dl.dropboxusercontent.com/u/1113424/img/nvidia-prime-nvsettings.png)
**Nvidia Optimus**:不幸的是Linux平台下Nvidia显卡驱动并不完全支持Optimus[更多][8]。
但是Ubuntu 13.10用了“nvidia-prime”包来过渡。这个包使默认支持Intel显卡芯片的Optimus平台也支持Nvidia显卡。通过下面指令你能Nvidia显卡一直处于工作状态就是说没有办法让它停止工作来节能了。这样笔记本就会功耗更大和过热--——**对我而言,我是不会 用这个的,除非过热的问题解决了**,如果没有解决的话,你可以取消这个设置。
再次不幸的是这不是唯一的问题。你会发现画面分割和热插拔并不工作。所以如果你想用多个显示器的话。你需要手动的在xorg.conf进行设置。这样的好处就是你可以玩那些不支持Intel显卡的游戏用支持VDPAU的媒体播放器等。
即便如此如果你还是想尝试一下的话请确保你使用的是默认的显示管理器LightDM并不是其他的如GDN等。此外如果你安装了Bumblebee你需要卸载掉它
sudo apt-get purge bumblebee* bbswitch-dkms
然后安装最新的Nvidia驱动和“nvidia-prime”
sudo apt-get install nvidia-319 nvidia-settings-319 nvidia-prime
最后重启电脑重启X是不够
如果你想撤销这些改变,你可以输入通过下面的指令:
sudo apt-get remove nvidia-319 nvidia-settings-319 nvidia-prime
然后重启
**AMD 混合显卡**:我并没有测试过这个因为我没有支持AMD显卡的系统但是根据Ubuntu wiki上的[**HybridGraphics**][9]包说明,应该是没有问题。(再次申明,我并不确定,因为我没试过)
要想在Ubuntu 13.10下获得合适的AMD显卡支持。你需要安装最新的 fglrx驱动和fglrx-pxpress
sudo apt-get install fglrx fglrx-pxpress
并重启电脑。重启X是没有用的
### 5. 延长电池寿命 ###
有两个工具可以延长电池的寿命laptop-mode-tools 和 TLP。这两个工具都是为了延长电池寿命[**TLP**][10] 似乎效果更好一点但是TLP仅有PPA如果你不想添加APPs时就安装 laptop-mode-tools吧。
注意:**不要同时安装laptop-mode-tools和TLP**
点击下面的按钮安装laptop-mode-tools。
[![](https://apps.ubuntu.com/assets/images/scbutton-free-200px.png)][11]
或者通过命令行安装:
sudo apt-get install laptop-mode-tools
输入下面命令安装TLP:
sudo add-apt-repository ppa:linrunner/tlp
sudo apt-get update
sudo apt-get install tlp tlp-rdw
sudo tlp start
这两个工具都不需要额外的配置。
另外一种节约电池的方法是**Bumblebee**是允许在独显运行软件或游戏的工具Bumblebee是一款支持笔记本上双显卡智能切换的软件。能停止Nvidia显卡当你不需要使用的时候。
**注意如果你想在显卡自动切换技术的第4步采用混合显卡时请不要安装Bumblebee**
点击下面的按钮进行安装:
[![](https://apps.ubuntu.com/assets/images/scbutton-free-200px.png)][12]
sudo apt-get install bumblebee bumblebee-nvidia
然后重启。
在Ubuntu中有个禁止"optirun"工作的[**bug**][13]。通过下面的命令解决这个问题。
- 32位系统
sudo ln -s /usr/lib/i386-linux-gnu/libturbojpeg.so.0 /usr/lib/i386-linux-gnu/libturbojpeg.so
- 64位系统
sudo ln -s /usr/lib/x86_64-linux-gnu/libturbojpeg.so.0 /usr/lib/x86_64-linux-gnu/libturbojpeg.so
当你想用Nvidia显卡时运行
optirun APP-EXECUTABLE
将"APP-EXECUTABLE"替换为你要运行的软件或者游戏的可执行文件。
### 6. 安装 编解码器, Java 和 加密DVD播放 ###
如果需要播放更多类型的音频视频文件,那就安装 **Ubuntu Restricted Extras**
[![](https://apps.ubuntu.com/assets/images/scbutton-free-200px.png)][14]
或者输入下面的命令行:
sudo apt-get install ubuntu-restricted-extras
我建议再安装一下“libavformat 和 libavcodec的无限制版”这样当你使用一些编辑器或者转换器的时候就不会出现丢失编码丢失的情况。点击下面的按钮进行安装
[![](https://apps.ubuntu.com/assets/images/scbutton-free-200px.png)][15]
或者输入一下命令行:
sudo apt-get install libavformat-extra-53 libavcodec-extra-53
你可能需要Java但是你得明确你到底需要的是什么不少用户仅仅使用**OpenJRE**和java游览器插件你可以点击下面的按钮安装
[![](https://apps.ubuntu.com/assets/images/scbutton-free-200px.png)][16]
或者输入命令行:
sudo apt-get install icedtea-7-plugin openjdk-7-jre
如果用于开发,你可能需要**OpenJDK**,点击下面的按钮进行安装:
[![](https://apps.ubuntu.com/assets/images/scbutton-free-200px.png)][17]
或者输入下面的命令行:
sudo apt-get install openjdk-7-jdk
如果你因为某些原因需要安装**Oracle Java**包含JDK,JRE,游览器插件的包)时,你可以通过下面的命令进行安装[**Oracle Java 7**][18]
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer
**加密DVD播放** 由于现在很多安装包都能在官方的库中找到或者有更好的替代物Medibuntu也渐渐的[**被废弃**][19]了。但是在播放加密视频时仍然需要livdvdcss包。
输入以下指令启动加密DVD播放功能:
sudo apt-get install libdvdread4
sudo /usr/share/doc/libdvdread4/install-css.sh
### 7. 安装最新的 Rhythmbox 和 VLC ###
![](http://dl.dropboxusercontent.com/u/1113424/img/rhythmbox-n-vlc.png)
在Ubuntu13.10中Rhythmbox 和 VLC并没有升级到最新的版本如果你想安装最新的版本你可以使用PPAs
请注意升级Rhythmbox后里面的[**第三方插件**][20]将停止工作。Rhythmbox插件可以正常的运行。
**Rhythmbox**Ubuntu 13.10下的版本2.99.1PPA中的版本3.0.1
sudo add-apt-repository ppa:jacob/media
sudo apt-get update
sudo apt-get install rhythmbox
**VLC**Ubuntu 13.10下的版本2.0.8PPA中的版本2.1.0
sudo add-apt-repository ppa:videolan/stable-daily
sudo apt-get update
sudo apt-get install vlc
### 8. Tweak Nautilus: 打开被禁用的递归搜索和文件快速预览 ###
![](http://dl.dropboxusercontent.com/u/1113424/img/nautilus-no-recursive.png)
在Nautilus V3.6之后提前键入查找功能就被去除掉了。之后版本的搜索就只是在当前文件夹和其子文件下进行搜索。这用起来就很不爽了如果你为此感到烦恼的话就安装Nautilus的补丁来启用[**被禁用的递归搜索**][21](你可以很方便的启用它)。
**用下面的命令将Nautilus升级到可以禁用递归搜过的版本**
sudo add-apt-repository ppa:dr3mro/personal
sudo apt-get update
sudo apt-get upgrade
nautilus -q
**然后使用下面的命令禁用递归搜索**
gsettings set org.gnome.nautilus.preferences enable-recursive-search false
如果你还想恢复递归搜索的功能,使用下面的命令行:
gsettings set org.gnome.nautilus.preferences enable-recursive-search true
![](http://dl.dropboxusercontent.com/u/1113424/img/gnome-sushi.png)
**GNOME Sushi**是一款快速预览的软件。点击下面的按钮安装。会安装gnome-sushi 和 unoconv来实现预览
[![](https://apps.ubuntu.com/assets/images/scbutton-free-200px.png)][22]
或者输入命令行:
sudo apt-get install gnome-sushi unoconv
要使用这个软件需选择一个文件图片、文本文档、音乐文件等然后点击SPACE按钮来预览。再次点击SPACE按钮或者关闭窗口可以关闭预览。
**现在!看完我们的介绍之后,你会选择哪个作为第一个安装的呢?**
--------------------------------------------------------------------------------
via: http://www.webupd8.org/2013/10/8-things-to-do-after-installing-ubuntu.html
译者:[Timeszoro](https://github.com/Timeszoro) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[1]:apt://indicator-multiload
[2]:apt://indicator-cpufreq
[3]:http://www.webupd8.org/2013/06/variety-wallpaper-changer-0415-released.html
[4]:apt://diodon,diodon-plugins
[5]:apt://unity-tweak-tool
[6]:http://www.webupd8.org/2013/10/how-to-disable-amazon-shopping.html
[7]:http://www.florian-diesch.de/software/indicator-privacy/
[8]:http://www.webupd8.org/2013/08/using-nvidia-graphics-drivers-with.html
[9]:https://wiki.ubuntu.com/X/Config/HybridGraphics#Known_issues
[10]:http://www.webupd8.org/2013/04/improve-power-usage-battery-life-in.html
[11]:apt://laptop-mode-tools
[12]:apt://bumblebee,bumblebee-nvidia
[13]:http://www.webupd8.org/2013/10/fix-bumblebee-libturbojpegso-issue-in.html
[14]:apt://ubuntu-restricted-extras
[15]:apt://libavformat-extra-53,libavcodec-extra-53
[16]:apt://icedtea-7-plugin,openjdk-7-jre
[17]:apt://openjdk-7-jdk
[18]:http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubuntu-via.html
[19]:http://gauvain.pocentek.net/node/61
[20]:http://www.webupd8.org/2012/08/rhythmbox-third-party-plugins-ubuntu-ppa.html
[21]:http://www.webupd8.org/2013/09/how-to-disable-recursive-search-in.html
[22]:apt://gnome-sushi,unoconv

View File

@ -14,7 +14,7 @@ Ubuntu 14.04 LTS服务器版和桌面版计划于2014年4月份发布。
via: http://www.omgubuntu.co.uk/2013/10/ubuntu-14-04-lts-named-trusty-tahr
译者:[Mr小眼儿](http://blog.csdn.net/tinyeyeser) 校对:[校对者ID](https://github.com/校对者ID)
译者:[Mr小眼儿](http://blog.csdn.net/tinyeyeser) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出

View File

@ -0,0 +1,112 @@
【观点】离了Linux我就活不了
================================================================================
本文是为那些想要尝试Linux的用户所写不过如果你已经是一名Linuxer这里也有一些你应该知道并为之自豪的事实。
讨厌长篇大论?直接跳到最后的部分 “**所有内容的整理**”。
### 为什么我离不开Linux ###
我坚持这样认为有我自己的原因。每隔几天或几个月我重启机器的时候Linux的启动过程都令我陶醉而你也许会惊奇大多数操作系统并不是这样的。
### 先想象一些场景:###
1. 你的机器经常崩溃。
2. 它慢的令人发指。
3. 未经你允许,文件文件夹就自动建立/删除。
4. 机器莫名其妙的关闭。
什么状况真相只有一个你中病毒了而在Linux上这样的情况几乎不会发生甚至可以说"根本没有"。:)
### 为什么/那又如何? ###
再想象一下此时此刻有成百上千个人正在为Linux编写和检查代码因此Linux一直在不断的发展壮大而几乎全世界任何开发者都可以看到“代码写的是什么甚至指出是否哪里有缺陷。
**1994年3月14日Linux 1.0.0发布那时它只有176250行代码。**
**到了2013年Linux 3.10发布时它已经拥有15803499行代码。**
另外一件事是Linux的设计方式。不像其它一些操作系统在Linux上几乎所有的复杂任务都需要root权限。例如在windows上你进入某些系统文件夹删除了一些东西为什么你会这么做呢也可能是病毒干的 —— 它们确实会这么干。另外,我见过有些人为了释放内存也会这么做)。虽然当时什么都没发生,但是在你下一次启动时...这里我不敢再往下描述了。而在Linux上任何时候当你试图对系统干点什么它都会提示你需要root密码。那如果我就是root用户而我又把系统搞砸了怎么办这是最坏的情况但是仍然会有很多人指导你如何修复它。
**当你在街上摔倒的时候,一群热心的陌生人跑过来帮助你,你会有什么感觉?爱和支持是无价的,你会感受的到!**
![](http://180016988.r.cdn77.net/wp-content/uploads/2013/10/linux.png)
**稳定性** - Linux机器可以无休止地运行下去。而通过一个简单的“uptime”命令就可以让你知道机器已经运行了多久。你永远不需要关机设备基本上都是热插拔的。当然其它有的操作系统也可以报告运行时间但是正如之前所说Linux机器很少崩溃、蓝屏、死机:D除非你有意要搞砸它。
老话说得好 “**Linux是很坚强的除非面对的是熊孩子**”
为了使机器远离病毒、木马你需要做很多工作。一项研究表明在没有任何防护措施的情况下连接到网络之后windows被入侵的平均时间是40分钟而在Linux上 - 你就像老板一样什么都不用做,也就是说,在操作系统之外不需要安装任何东西(,黑客也无法入侵)。
**安全性增强** - Iptables。这个命令行工具用来设置防火墙是极好的。同样还有许多其它创新工具比如*端口试探(port knocking)chroot监狱译者注chroot是在unix系统的一个操作用于改变当前程序及其子进程真实的磁盘根目录。改变根目录后的程序无法访问或命名正常路径下的文件。这样的根目录就叫做"chroot监狱chroot jail,chroot prison)"——来自维基百科 )。
**SELinux** - 如果设置执行了SELinux即使你赋予某个文件完全访问权限其他人也无法访问。
其它操作系统的源代码仅仅是开发操作系统的人才可以看到然而对于Linux每个人都可以访问源代码这意味着发生错误的可能性很小。即使有一些错误发生也可以及时修复。假如你受到了安全攻击开发操作系统的公司可能会用一周甚至一个月时间发布一个补丁这就意味着你的系统在这段时间仍然是脆弱的但是Linux有不计其数的用户贡献以及积极参与这是非常好的不是更好而是最好。
如果假设操作系统公司不修复bug呢之后会怎么样恭喜你只能与bug为伴了。然而在linux下有许多人修复bug或者如果你是一个很好的程序员也许你应该自己修复它并且将其贡献到开源社区。 **予人玫瑰,手留余香!**
当有这样一个免费且开源的优秀操作系统Linux为什么你还要花钱买一个呢当你决定投奔开源学习的机会将会非常多。如果你是一个好的程序员你应该拿到开源代码用你自己的方式构建它、设计它按你自己的想法去使用它。
**全世界的开发人员用宝贵的时间和天才的头脑为你带来这一款“谁与争锋”的操作系统就是Linux。**
**没有crapware**(译者注: 附赠软件,是一个贬义的俚语) - 操作系统是开源的,那其它工具呢?没错,有非常多的工具也是开源的,可以供用户使用。而在其它操作统统中,大部分软件可能会要求你订购服务、升级/购买。更糟糕的是在用了几天之后你可能会发现这个玩意儿竟然只是30天的试用版。在这方面Linux永远不会让你经历这样的沮丧。
**Linux还自带了预装应用程序这样简单几步安装之后就可以开始使用啦~**
在linux上大部分驱动是内核自带的因此当使用一些硬件组件时你不必到处去寻找驱动程序。
如果你仅仅是一个普通的桌面用户,没有多少事情要用命令行(CLI)来做 - Linux拥有各种桌面环境供你选择比如Gnome、KDE没错你可以称呼它为 "**新一代桌面环境**"
你有没有体验过你的操作系统在运行一段时间后行动迟缓而你只能通过重新安装系统解决这个问题。恩试试Linux吧你会感到惊喜的。它很多年一如既往运行飞快并且反应灵敏这样你就能专注于工作而不用处理反应迟缓的操作系统。
**没有后门(backdoor)** - 当你不了解一个操作系统的源代码时你怎么能确保它没有后门呢如果制造商公司留了一个隐秘的后门当你连接到网络的时候这会让你的隐私无所遁形。而在Linux上任何东西都是开放的因此没有后门可以隐藏在操作系统里。
这里还要谈另一个有趣的事大部分使用windows的用户可能会有一个沮丧的事就是当升级一些软件或者操作系统的时候需要重启机器。Linux不需要这样的重启。Linux是一个稳定的、完美运行多年也不需要重启的系统。
**让老机器品味重生** - Linux甚至可以在很老的硬件上完美运行。不像其它的操作系统需要升级硬件才能使用。
### 所有内容的整理..###
有免费的,为什么还要使用非法的(盗版)
- 赋予老机器第二春
- 开机很快
- 随时更新
- 没有垃圾软件
- 没有后门
- 没有病毒
- 稳定性
- 兼容性
- 安全性能增强
- 运行快,反应灵敏
- Linux不需要碎片整理
- 额选择Linux确实对环境有影响. (Google it)
- 自由无限的支持 - 论坛、邮件列表、IRC频道
- 工作区特性 - 下一代桌面
- 没有大麻烦
- 报告bug并得到修复
- 你不会感到孤单
- 我贡献,我快乐,予人玫瑰,手留余香
- 其它操作系统归公司所有微软拥有Windows苹果拥有Mac-OS。Linux我们拥有
总之,不仅仅是阅读这篇文章,你一定要亲自试试看,品味这种感觉 - 自由无价。
对我来说, **linuxing 是沉思**。 你呢? :)
**如果同意我的观点cheers现在是该把Linux这杯美酒“倾入”你的杯中慢慢“品味”了。**
**如果不同意我的观点再一次cheers。你可以用各种方法来证明我是错的。**
Google 一下"linuxing urban dictionary”译者注urban dictionary是一个专供网友发表一些特殊单词或短语解释的平台这上面有许多正常词典里面查不到的词条即使是正常词典里面有的在这里也会有新的精辟解释。网友们还可以对每一个词条进行投票)。
感谢阅读。来,笑一个 :D Cheers
--------------------------------------------------------------------------------
via: http://www.unixmen.com/cant-live-without-linux/
译者:[flsf](https://github.com/flsf) 校对:[Caroline](https://github.com/carolinewuyan) [Mr小眼儿](http://blog.csdn.net/tinyeyeser)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出

Some files were not shown because too many files have changed in this diff Show More