mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-02-28 01:01:09 +08:00
commit
c2cc62220b
@ -1,11 +1,9 @@
|
||||
CNprober 翻译完成... 619913541
|
||||
|
||||
10招让你的Git技能提升一个台阶
|
||||
已经会用Git了?不会这十招怎么行
|
||||
================================================================================
|
||||
|
||||
之前我们发了一些教程让你熟悉[Git基础][1]和[在团队合作环境中使用Git][2].我们讨论的这些Git命令足够让一个开发者在Git的世界里生存下去。在这篇教程里,我们试着探索如何高效地管理你的时间以及如何充分利用Git提供的特性。
|
||||
|
||||
> 注意:这里介绍的命令中有的包含方括号(例如:`git add -p [file_name]`)。在这些例子中,你应该用你自己的数字,标识符等替代方括号里的内容,并且去掉方括号。
|
||||
> 注意:这里介绍的命令中有的包含方括号(例如:`git add -p [file_name]`)。在这些例子中,你应该用你自己的数字、标识符等替代方括号里的内容,并且去掉方括号。
|
||||
|
||||
### 1. Git自动补全 ###
|
||||
|
||||
@ -62,7 +60,7 @@ CNprober 翻译完成... 619913541
|
||||
|
||||
假设你提交了一些不需要的东西,然后你进行了hard重置回到之前的状态。后来,你发现在这个过程中你丢失了其他一些重要的信息,你想要把这些信息找回来,或者至少可以查看一下这些信息。这就需要`git reflog`帮忙。
|
||||
|
||||
简单的`git log`只能告诉你最近的提交,这个提交的父提交,父提交的父提交,等等。但是`git reflog`是一个HEAD指向的提交的列表。记住,这个列表依赖于你自己的操作环境,它不是库的一部分,也不包含在push或者merge中。
|
||||
简单的`git log`只能告诉你最近的提交,这个提交的父提交,父提交的父提交,等等。但是`git reflog`是一个HEAD指向的提交的列表。记住,这个列表依赖于你自己的本地操作环境,它不是库的一部分,也不包含在push或者merge中。
|
||||
|
||||
如果执行`git log`命令,可以看到提交历史,这是我的库的一部分:
|
||||
|
||||
@ -74,7 +72,7 @@ CNprober 翻译完成... 619913541
|
||||
|
||||
### 6. 暂存文件的一部分更改以便进行一次提交 ###
|
||||
|
||||
通常依据特性来提交是一个好的实践方法,意思是说,每一个提交都只添加一个特性或者修复一个bug。想一下如果你一次修复了两个bug或者添加了两个特性但是都还没有提交该怎么办。这种场景下,你可以将他们一起提交。但是有一个更好的办法:单独暂存这些文件,然后分开提交。
|
||||
通常依据特性来提交是一个好的实践方法,意思是说,每一个提交都只添加一个特性或者修复一个bug。想一下如果你一次修复了两个bug或者添加了两个特性但是都还没有逐个提交该怎么办。这种场景下,你可以将他们一起提交。但是有一个更好的办法:单独暂存这些文件,然后分开提交。
|
||||
|
||||
让我们假设你对一个文件做了多个更改,然后想让这些更改分开提交。这时,我们用带`-p`的添加命令。
|
||||
|
||||
@ -88,7 +86,7 @@ CNprober 翻译完成... 619913541
|
||||
|
||||

|
||||
|
||||
似乎Git认为所有的更改都是同一个目的的一部分,所以把他们分组到同一个块里。这时,你可以:
|
||||
看起来Git认为所有的更改都是同一个目的的一部分,所以把他们分组到同一个块里。这时,你可以:
|
||||
|
||||
- 输入 y 暂存块
|
||||
- 输入 n 不暂存块
|
||||
@ -100,13 +98,13 @@ CNprober 翻译完成... 619913541
|
||||
|
||||

|
||||
|
||||
如你所见,我们已经添加了第1和第3行,忽略了第2行。你可以看到库的状态并且进行一次提交。
|
||||
如你所见,我们已经逐个添加了第1和第3行,忽略了第2行。你可以看到库的状态并且进行一次提交。
|
||||
|
||||

|
||||
|
||||
### 7. 合并多个提交 ###
|
||||
|
||||
为了进行核查或者发起一个合并请求(这经常发生在开源项目里),对代码进行了修改提交。但在最后代码被接受之前,你也许会被要求修改你的代码。于是你修改代码,但是下一次核查的时候又一次被要求进行修改。不知不觉中,你就已经有了好几个提交。理论上你应该用rebase命令把他们合并起来。
|
||||
为了进行核查或者发起一个合并请求(这经常发生在开源项目里),对代码进行了修改提交。但在最后代码被接受之前,你也许会需要修改你的代码。于是你修改代码,但是下一次核查的时候又一次需要进行修改。不知不觉中,你就已经有了好几个提交。理论上你应该用rebase命令把他们合并起来。
|
||||
|
||||
git rebase -i HEAD~[number_of_commits]
|
||||
|
||||
@ -118,7 +116,7 @@ CNprober 翻译完成... 619913541
|
||||
|
||||

|
||||
|
||||
接着你被要求提供一个对新提交的说明。这个过程会重写你的提交历史。
|
||||
接着你应该提供一个对新提交的说明。这个过程会重写你的提交历史。
|
||||
|
||||

|
||||
|
||||
@ -182,7 +180,7 @@ CNprober 翻译完成... 619913541
|
||||
|
||||
via: http://www.sitepoint.com/10-tips-git-next-level/
|
||||
|
||||
译者:[love_daisy_love](https://github.com/CNprober) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[love\_daisy\_love](https://github.com/CNprober) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -1,8 +1,11 @@
|
||||
主流搜索引擎闯入Linux命令行世界
|
||||
================================================================================
|
||||
(LCTT译注:这里,我们姑且认为您身处能够访问Internet的地方!)
|
||||
|
||||
为什么会有人要从终端搜索互联网上的东西?我不清楚,这里头可能有许多的原因。但是,因为没人要求答案总比没人知道答案少令人失望一点。这里,列出了一些流行的搜索引擎的命令行工具,可以让你们通过Linux终端来访问它们。
|
||||
|
||||
### 1. Google ###
|
||||
|
||||
让我们从一个巨头开始吧:Bing!好吧,只是开个玩笑,事实上应该是Google。坦白讲,你根本不需要使用命令行工具来进行Google搜索。只需要简简单单的一个命令:
|
||||
|
||||
$ xdg-open https://www.google.com/search?q="[query]"
|
||||
@ -84,11 +87,12 @@ Twitter是迎合潮流的一个很好的搜索引擎。我们已经在[如何在
|
||||
#### Adrien Brochard ####
|
||||
|
||||
我是一位来自法国的Linux爱好者。在尝试了多个发行版后,我最后认可了Archlinux。然而,我一直在试着通过积累一些知识和技巧来改善我的系统。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://xmodulo.com/2014/06/access-popular-search-engines-command-line-linux.html
|
||||
|
||||
译者:[GOLinux](https://github.com/GOLinux) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[GOLinux](https://github.com/GOLinux) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -1,8 +1,9 @@
|
||||
怎样去查找并杀掉非法的MySQL查询
|
||||
怎样把坏的MySQL查询找到并杀死?
|
||||
================================================================================
|
||||
有时,相关数据库系统的复杂性可能被压倒.幸运地,这种复杂性是一种优势,与 MySQL工具一起管理查询. 在本教程中, 我将向你们展示 **怎样去查找并杀掉任何非法的MySQL查询**.
|
||||
|
||||
为了浏览当前正在运行的查询, 登陆到MySQL终端,然后运行‘show processlist’命令:
|
||||
有时,关系型相关数据库系统的复杂性会把你搞晕,不过幸运的是,使用MySQL工具来管理查询就就可以避免这些复杂性。 在本教程中,我将向你们展示 **怎样去查找并杀掉任何非法的MySQL查询**。
|
||||
|
||||
为了浏览当前正在运行的查询,登陆到MySQL终端,然后运行‘show processlist’命令:
|
||||
|
||||
mysql> show processlist;
|
||||
|
||||
@ -16,10 +17,10 @@
|
||||
+--------+--------+-----------------+---------+---------+-------+-------+------------------+-----------+---------------+-----------+
|
||||
4 rows in set (0.03 sec)
|
||||
|
||||
首先 你应该查看'Time'项, 这里记录了进程执行 "doing the thing it's doing" 操作的秒数. ‘command’项处于‘Sleep’
|
||||
状态的进程正在等待查询, 因此,它并没有消耗任何资源. 对于其他任何进程而言,‘Time’超过一定的秒数表明出现问题.
|
||||
首先你应该查看'Time'项,这里记录了进程执行 "做其当做的事情" 操作的秒数。‘command’项处于‘Sleep’
|
||||
状态的进程表示其正在等待接受查询,因此,它并没有消耗任何资源。对于其他任何进程而言,‘Time’超过一定的秒数表明出现问题。
|
||||
|
||||
在这种情况下,只能通过运行‘show processlist’命令来查询.如果我们有一个糟糕的写查询,让我们来看看情况如何:
|
||||
在上面的例子中,唯一运行的查询是我们的‘show processlist’命令。让我们来看看如果我们有一个写的很烂的查询是怎么样的:
|
||||
|
||||
mysql> show processlist;
|
||||
|
||||
@ -35,19 +36,19 @@
|
||||
+--------+--------+-----------------+-----------+---------+-------+--------------+----------------------------------+-----------+---------------+-----------+
|
||||
6 rows in set (0.00 sec)
|
||||
|
||||
啊哈!现在我们看到这里的查询几乎运行了30s. 如果我们不想让它继续运行,可以使用它的'Id'去执行kill命令:
|
||||
啊哈!现在我们看到有一个查询运行了将近30秒。如果我们不想让它的进程继续运行,可以将它的'Id'传递给kill命令:
|
||||
|
||||
mysql> kill 132033;
|
||||
Query OK, 0 rows affected (0.00 sec)
|
||||
mysql>
|
||||
|
||||
(注意 由于我们没有改变任何数据,MySQL总是报告0行被影响.)
|
||||
(注意 由于我们没有改变任何数据,MySQL总是报告0行被影响。)
|
||||
|
||||
明智的使用kill命令能够清除积压的查询.记住,但那不是一种永久的方法 - 如果这些查询来自你的应用,你需要去重写它们,或者将继续看到相同的问题.
|
||||
明智的使用kill命令能够清除积压的查询。然而,要记住的是,那不是一种永久的方法 - 如果这些查询来自你的程序,你需要去重写它们,或者将继续看到相同的问题不断出现。
|
||||
|
||||
### 另请参阅 ###
|
||||
|
||||
关于不同‘Command’的MySQL文档:
|
||||
关于不同‘命令’的MySQL文档:
|
||||
|
||||
- [https://dev.mysql.com/doc/refman/5.7/en/thread-commands.html][1]
|
||||
|
||||
@ -55,7 +56,7 @@
|
||||
|
||||
via: http://xmodulo.com/2014/07/find-kill-misbehaving-mysql-queries.html
|
||||
|
||||
译者:[hunanchenxingyu](https://github.com/hunanchenxingyu) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[hunanchenxingyu](https://github.com/hunanchenxingyu) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -1,10 +1,10 @@
|
||||
如何在Ubuntu14.04中禁用叠加滚动条【小贴士】
|
||||
[小技巧]如何在Ubuntu14.04中禁用叠加滚动条
|
||||
================================================================================
|
||||

|
||||
|
||||
Hello 伙计们,
|
||||
|
||||
这是一个如何在Ubuntu中禁用叠加滚动条的小贴士。注意,在本文中不是删除叠加功能,相反,你将启用或禁用它。
|
||||
这是一个如何在Ubuntu中禁用叠加滚动条的小技巧。注意,在本文中讲的不是删除叠加功能,而是告诉你如何启用或禁用它。
|
||||
|
||||
### 禁用 ###
|
||||
|
@ -1,6 +1,6 @@
|
||||
@@ -1,63 +0,0 @@
|
||||
Linux基础,如何在命令行中查看目录的大小
|
||||
Linux基础:如何在命令行中查看目录的大小
|
||||
=====================================================================
|
||||
|
||||
这是写给Liunx新用户的一系列文章中的第一篇,在这系列文章我将会写一些对新用户来说非常好用的**Linux基础命令**。
|
||||
|
||||
**注意**:本文的目标读者是仅有小量甚至是没有任何Linux命令行使用经验的读者。
|
||||
@ -59,7 +59,7 @@ Linux基础,如何在命令行中查看目录的大小
|
||||
|
||||
via: http://www.unixmen.com/linux-basics-find-size-directory-commands/
|
||||
|
||||
译者:[cvsher](https://github.com/cvsher) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[cvsher](https://github.com/cvsher) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,57 @@
|
||||
Dropbox原生Linux客户端首次展示QT界面
|
||||
================================================================================
|
||||
**Dropbox原生Linux客户端的最新试验版首次展示了全新的QT界面。**
|
||||
|
||||
Dropbox表示这次的UI重写,将同时应用到Windows和Linux,将修复“大量”长期遗留下来的错误和问题。这个跨平台的工具也将整体提升性能。
|
||||
|
||||
在全新的设置向导和登录界面(见下面的图片)旁边是几个重新设计过的启动画面。
|
||||
|
||||

|
||||
登录界面
|
||||
|
||||

|
||||
设置界面
|
||||
|
||||

|
||||
欢迎界面
|
||||
|
||||
### 目前还不稳定 ###
|
||||
|
||||
Dropbox开发人员提醒参与测试的人,目前大部分新界面“还很粗糙”,在使用中可能会碰到大量的界面问题。新界面还不能配合一些辅助工具一起工作,例如屏幕阅读器。
|
||||
|
||||

|
||||
|
||||
新UI使用了(目前)系统自带的QT界面主题。它本身也不算很丑,不过在Ubuntu桌面上看起来不怎么合适,特别是和之前的版本比较。据说内存占用也变多了,在空闲情况下有时候会从60MB一下子跳到178MB。那些使用低端设备的人应该忍耐一下试用这个版本的诱惑-至少在这个特别的问题解决之后。
|
||||
|
||||
Dropbox 2.11.0 (试验版本) for Linux的完整改动日志:
|
||||
|
||||
- 用QT重写了Windows & Linux界面
|
||||
- 在移动和重命名文件后会尝试识别
|
||||
- 新的设置/登录体验
|
||||
- 更快上传小文件
|
||||
- 新的启动画面
|
||||
|
||||
### 下载Dropbox Linux Build 2.11.x ###
|
||||
|
||||
想尝鲜的话,可以通过下面的链接下载和你系统对应的安装包。
|
||||
|
||||
- [Dropbox Experimental (64bit) Offline Linux Installer][1]
|
||||
- [Dropbox Experimental (32bit) Offline Linux Installer][2]
|
||||
|
||||
下载完后,解压到主目录。它默认是隐藏的,所以打开终端,’`cd`‘到‘`.dropbox-dist/dropbox-lnx`‘目录下,然后运行‘`./dropbox start`‘。
|
||||
|
||||
演示Dropbox终端操作的gif动画:
|
||||
|
||||

|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.omgubuntu.co.uk/2014/07/dropbox-experimental-linux-build-qt-rewrite
|
||||
|
||||
原文作者:[Joey-Elijah Sneddon][a] 译者:[zpl1025](https://github.com/zpl1025) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://plus.google.com/117485690627814051450/?rel=author
|
||||
[1]:https://d1ilhw0800yew8.cloudfront.net/client/dropbox-lnx.x86_64-2.11.0.tar.gz
|
||||
[2]:https://d1ilhw0800yew8.cloudfront.net/client/dropbox-lnx.x86-2.11.0.tar.gz
|
@ -0,0 +1,43 @@
|
||||
Oracle Linux 7.0发布!
|
||||
===
|
||||

|
||||
|
||||
**Oracle已经发布了Oracle Linux 7.0操作系统,新系统带来了大量的新特性,比如“第三代坚不可摧的内核 UEK”(Unbreakable Enterprise Kernel Release 3)和一个新的默认文件系统**
|
||||
|
||||
为了这次新的发行版的发布,Oracle的开发者们已经放出过两个预览版,现在最终版终于来了。果然,它有着大量的改进,其中包括使用新的XFS作为默认的文件系统**[注:原文为操作系统,应该是笔误]**,可选的Btrfs文件系统,Linux Containers (LXC), DTrace,Ksplice,加强版Xen和UEK R3。
|
||||
|
||||
作为广泛流行的文件系统EXT4的对抗者,XFS有一个显著优势。它所允许用户的文件系统的大小达到了500TB,这比你在EXT4文件系统中所能达到最大值的十倍还多。唯一的缺点是单个文件的大小最大仅为16TB。
|
||||
|
||||
这个发行版的一大特色是它支持两种内核。一个是红帽兼容性内核(RHCK),基于Linux内核版本3.10,第二个是Oracle自己的内核版本“第三代坚不可摧的内核”(UEK R3),版本号从3.8.13开始,因为它基于3.8的Linux内核。你或许还记得Linux内核3.8.x已经寿终正寝,但是看来Oracle一直在维护着自己的分支。
|
||||
|
||||
“已经能够从Oracle软件发布云上下载了,Oracle Linux 7可以免费下载和部署。所有的bug修复和安全勘误会被发布到Oracle的公共yum服务器上,不管有没有付费,用户都能安装同样的代码,并且从免费到付费的迁移十分简单,无需重新安装。”
|
||||
|
||||
“当发布最新的Linux更新,工具以及推送给客户和参与者新功能的时候,需要为现代化的数据中心提供企业级的解决方案。为此最新的发行版是构建在Oracle对OpenStack这样的新兴技术提供支持的基础上,”从官方声明可以看出。
|
||||
|
||||
通过变更记录来看,Ksplice已经为了实现零宕机的内核完成了安全更新和bug修复,systemd也成了新的系统管理工具,Grub2现在是默认的启动引导程序,并且支持新的固件类型(比如UEFI),还有一个加强版Anaconda安装器,一个新的Apache Web服务器,支持GPT,和大量的安全特性被添加进来。
|
||||
|
||||
更多关于最新的Oracle Linux发行版的详细内容可以参考官方[声明][1]。
|
||||
|
||||
立即下载Oracle Linux 7.0:
|
||||
|
||||
|
||||
- [Oracle Enterprise Linux 6.5 (ISO) 64-bit][2][iso] [3 GB]
|
||||
- [Oracle Enterprise Linux 6.5 (ISO) 32-bit][3][iso] [3.60 GB]
|
||||
- [Oracle Enterprise Linux 7.0 (ISO) 64-bit][4][iso] [4.50 GB]
|
||||
|
||||
|
||||
---------------------------------
|
||||
|
||||
原文: http://news.softpedia.com/news/Oracle-Linux-7-0-OS-Has-XFS-as-Default-File-System-and-Unbreakable-Enterprise-Kernel-Release-3-451894.shtml
|
||||
|
||||
作者:[Silviu Stahie][a]
|
||||
译者:[guodongxiaren](https://github.com/guodongxiaren)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://news.softpedia.com/editors/browse/silviu-stahie
|
||||
[1]:http://www.oracle.com/us/corporate/press/2245947
|
||||
[2]:http://mirrors.dotsrc.org/oracle-linux/OL6/U5/i386/OracleLinux-R6-U5-Server-i386-dvd.iso
|
||||
[3]:http://mirrors.dotsrc.org/oracle-linux/OL6/U5/x86_64/OracleLinux-R6-U5-Server-x86_64-dvd.iso
|
||||
[4]:https://edelivery.oracle.com/linux/
|
@ -1,59 +0,0 @@
|
||||
The Native Dropbox Linux Client Debuts New Qt Interface
|
||||
================================================================================
|
||||
**The latest experimental build of the native Dropbox Linux client has debuted with an all new Qt interface.**
|
||||
|
||||
Dropbox say that the UI rewrite, which will be used on both Windows and Linux, will fix a ‘large number’ of long-standing bugs, issues and glitches. The cross-platform toolkit is also set to improve general performance.
|
||||
|
||||
Alongside an all new setup wizard and login screen (see below) is a handful of redesigned splash screens.
|
||||
|
||||

|
||||
Login Screen
|
||||
|
||||

|
||||
Setup Screen
|
||||
|
||||

|
||||
Congratulations Screen
|
||||
|
||||
### Not Stable Yet ###
|
||||
|
||||
Dropbox developers caution that since much of the new interface “is still rough around the edges” testers should expect to encounter various visual bugs while using it. The new UI does not yet work with accessibility tools like screen readers.
|
||||
|
||||

|
||||
|
||||
The new UI uses (for now) the stock Qt theme. This isn’t ugly per se, but it does look a little out of place on the Ubuntu desktop, especially compared to previous builds. Memory usage is also reportedly higher, in some cases jumping from 60MB when idle to more than 178MB. Those on low-end devices should resist the temptation to try this build — at least until this particular bug has been addressed.
|
||||
|
||||
Full change log for Dropbox 2.11.0 (Experimental) for Linux:
|
||||
|
||||
- Rewrite of the Windows & Linux UI in Qt
|
||||
- File identifiers detect when files have been moved/renamed
|
||||
- New setup/login experience
|
||||
- Faster uploads for small files
|
||||
- New splash screens
|
||||
|
||||
### Download Dropbox Linux Build 2.11.x ###
|
||||
|
||||
To try the experimental builds just download the correct archive for your system using the links below.
|
||||
|
||||
- [Dropbox Experimental (64bit) Offline Linux Installer][1]
|
||||
- [Dropbox Experimental (32bit) Offline Linux Installer][2]
|
||||
|
||||
Once downloaded, extract the archive to your Home folder. It’s hidden by default, so using the Terminal, ‘`cd`‘ into the ‘`.dropbox-dist/dropbox-lnx`‘ folder and run ‘`./dropbox start`‘.
|
||||
|
||||
Dropbox terminal navigation gif:
|
||||
|
||||

|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.omgubuntu.co.uk/2014/07/dropbox-experimental-linux-build-qt-rewrite
|
||||
|
||||
原文作者:[Joey-Elijah Sneddon][a]
|
||||
|
||||
译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://plus.google.com/117485690627814051450/?rel=author
|
||||
[1]:https://d1ilhw0800yew8.cloudfront.net/client/dropbox-lnx.x86_64-2.11.0.tar.gz
|
||||
[2]:https://d1ilhw0800yew8.cloudfront.net/client/dropbox-lnx.x86-2.11.0.tar.gz
|
145
sources/news/20140725 GOG.com Now Supports Linux.md
Normal file
145
sources/news/20140725 GOG.com Now Supports Linux.md
Normal file
@ -0,0 +1,145 @@
|
||||
GOG.com Now Supports Linux!
|
||||
================================================================================
|
||||
> 50 games for the free OS available right NOW!
|
||||
|
||||
[][1]
|
||||
|
||||
A while ago, [we've announced our plans][2] to add Linux support as one of the features of our digital platform, with 100 games on the launch day sometime this fall. We've put much time and effort into this project and now we've found ourselves with over 50 titles, classic and new, prepared for distribution, site infrastructure ready, support team trained and standing by, and absolutely no reason to wait until October or November. We're still aiming to have at least 100 Linux games in the coming months, but we've decided not to delay the launch just for the sake of having a nice-looking number to show off to the press. It's not about them, after all, it's about you. So, one of the most popular site feature requests on our [community wishlist][3] is granted today: Linux support has officially arrived on GOG.com!
|
||||
|
||||
The first 50+ titles we've have in store for you come from all the corners of our DRM-Free catalog. Note that we've got many classic titles coming officially to Linux for the very first time, thanks to the custom builds prepared by our dedicated team of penguin tamers. That's over twenty fan-favorite GOG.com classics, like [FlatOut][4]&[Flatout 2][5], , [Darklands][6], or [Realms of the Haunting][7] we've personally ushered one by one into the welcoming embrace of Linux gamers. That's already quite a nice chunk of our back-catalog, and you can expect more from our dedicated Linux team soon!
|
||||
|
||||
Now, for the recent titles. We've got some indie games with native Linux versions that finally find their well-deserved spot in our store. Among them, debuting on Linux, [CLARC][8] - a well received original comedic Sci-Fi puzzler. On top of that, be on the lookout for two new additions to the GOG.com catalog: [Gods Will Be Watching][9] (coming in a couple of hours) and [Unrest:Special Edition][10] (Linux build coming right up!), both of them very fresh and intriguing. This is the very first time we can provide you with all the PC versions of a premiere game, and we will continue to do so in the future. If there's a Linux version of a title we're releasing, our aim is to deliver it to you Day-1. But enough about us, let's talk about the games. Here's what you can be playing on Linux today:
|
||||
|
||||
- [**Anomaly Warzone Earth**][11]
|
||||
- [**Ascendant**][12]
|
||||
- [**Bionic Dues**][13]
|
||||
- [**Blake Stone: Aliens of Gold**][14] - first time on Linux!
|
||||
- [**Blake Stone: Planet Strike**][15] - first time on Linux!
|
||||
- [**Bloodnet**][16] - first time on Linux!
|
||||
- [**Braveland**][17]
|
||||
- [**CLARC**][18] - first time on Linux!
|
||||
- [**Darklands**][19] - first time on Linux!
|
||||
- [**Darwinia**][20]
|
||||
- [**Defcon**][21]
|
||||
- [**Don't Starve + DLC**][22]
|
||||
- [**Dragonsphere**][23] - first time on Linux!
|
||||
- [**Duke Nukem 3D: Atomic Edition**][24]
|
||||
- [**FlatOut**][25] - first time on Linux!
|
||||
- [**Flatout 2**][26] - first time on Linux!
|
||||
- [**Fragile Allegiance**][27] - first time on Linux!
|
||||
- [**Gemini Rue**][28]
|
||||
- [**Gods Will Be Watching**][29]
|
||||
- [**Hammerwatch**][30]
|
||||
- [**Hocus Pocus**][31] - first time on Linux!
|
||||
- [**Kentucky Route Zero**][32]
|
||||
- [**The Last Federation**][33]
|
||||
- [**Legend of Grimrock**][34]
|
||||
- [**Litil Divil**][35] - first time on Linux!
|
||||
- [**Long Live the Queen**][36]
|
||||
- [**MouseCraft**][37]
|
||||
- [**Multiwinia**][38]
|
||||
- [**Normality**][39] - first time on Linux!
|
||||
- [**Pinball Gold Pack**][40] - first time on Linux!
|
||||
- [**Pinball World**][41] - first time on Linux!
|
||||
- [**Pirates! Gold Plus**][42] - first time on Linux!
|
||||
- [**Realms of the Haunting**][43] - first time on Linux!
|
||||
- [**Rex Nebular and the Cosmic Gender Bender**][44] - first time on Linux!
|
||||
- [**Rise of the Triad: Dark War**][45] - first time on Linux!
|
||||
- [**Shattered Haven**][46]
|
||||
- [**The Shivah HD**][47]
|
||||
- [**Sid Meier's Colonization**][48] - first time on Linux!
|
||||
- [**Sid Meier's Covert Action**][49] - first time on Linux!
|
||||
- [**Sir, You Are Being Hunted**][50]
|
||||
- [**Slipstream 5000**][51] - first time on Linux!
|
||||
- [**Space Pirates and Zombies**][52]
|
||||
- [**Spacechem**][53]
|
||||
- [**Stargunner**][54] - first time on Linux!
|
||||
- [**SteamWorld Dig**][55]
|
||||
- [**Super Hexagon**][56]
|
||||
- [**Surgeon Simulator 2013**][57]
|
||||
- [**Sword of the Samurai**][58] - first time on Linux!
|
||||
- [**Teslagrad**][59]
|
||||
- [**Unrest:Special Edition**][60] (Linux build on the way!)
|
||||
- [**Uplink**][61]
|
||||
- [**VVVVVV**][62]
|
||||
|
||||
As if this wasn't exciting enough, we've put more than half of these titles on a [special promo][63]! Head out to the [promo page][64] and find out which of them you can get up to 75% off until Tuesday, 9:59AM GMT. Of course, all of the games from the list above that you already own will be updated with Linux versions with no additional cost for you, just as you might have expected from GOG.com.
|
||||
|
||||
"OK, but how will Linux support actually work on GOG.com" - you might ask. For both native Linux versions, as well as special builds prepared by our team, GOG.com will provide distro-independent tar.gz archives and support convenient DEB installers for the two most popular Linux distributions: Ubuntu and Mint, in their current and future LTS editions. Helpful and responsive customer support has always been an important part of the GOG.com gaming experience. We wouldn't have it any other way when it comes to Linux, and starting today our helpdesk offers support for our official Linux releases on Ubuntu and Mint systems.
|
||||
|
||||
Diversity and freedom of choice have always been an important part of the GOG.com way. We're very glad that we could improve our service with the addition of the free (and DRM-Free) alternative to the commercial operating systems. Talking with gamers is just as important, so we're counting on your feedback! If you've got any questions, suggestions, or run into any trouble, just tell us in the forum thread below this post. Just please be gentle, this is [our very first time][65] with Linux. Happy launch day, everyone!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.gog.com/news/gogcom_now_supports_linux
|
||||
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.gog.com/promo/linux_launch_promo_240714
|
||||
[2]:http://www.gog.com/news/gogcom_soon_on_more_platforms
|
||||
[3]:http://www.gog.com/wishlist/site#search=linux
|
||||
[4]:http://www.gog.com/game/flatout
|
||||
[5]:http://www.gog.com/game/flatout_2
|
||||
[6]:http://www.gog.com/game/darklands
|
||||
[7]:http://www.gog.com/game/realms_of_the_haunting
|
||||
[8]:http://www.gog.com/game/clarc
|
||||
[9]:http://www.gog.com/game/gods_will_be_watching
|
||||
[10]:http://www.gog.com/game/unrest_special_edition
|
||||
[11]:http://www.gog.com/game/anomaly_warzone_earth
|
||||
[12]:http://www.gog.com/game/ascendant
|
||||
[13]:http://www.gog.com/game/bionic_dues
|
||||
[14]:http://www.gog.com/game/blake_stone_aliens_of_gold
|
||||
[15]:http://www.gog.com/game/blake_stone_planet_strike
|
||||
[16]:http://www.gog.com/game/bloodnet
|
||||
[17]:http://www.gog.com/game/braveland
|
||||
[18]:http://www.gog.com/game/clarc
|
||||
[19]:http://www.gog.com/game/darklands
|
||||
[20]:http://www.gog.com/game/darwinia
|
||||
[21]:http://www.gog.com/game/defcon
|
||||
[22]:http://www.gog.com/game/dont_starve
|
||||
[23]:http://www.gog.com/game/dragonsphere
|
||||
[24]:http://www.gog.com/game/duke_nukem_3d_atomic_edition
|
||||
[25]:http://www.gog.com/game/flatout
|
||||
[26]:http://www.gog.com/game/flatout_2
|
||||
[27]:http://www.gog.com/game/fragile_allegiance
|
||||
[28]:http://www.gog.com/game/gemini_rue
|
||||
[29]:http://www.gog.com/game/gods_will_be_watching
|
||||
[30]:http://www.gog.com/game/hammerwatch
|
||||
[31]:http://www.gog.com/game/hocus_pocus
|
||||
[32]:http://www.gog.com/game/kentucky_route_zero_season_pass
|
||||
[33]:http://www.gog.com/game/last_federation_the
|
||||
[34]:http://www.gog.com/game/legend_of_grimrock
|
||||
[35]:http://www.gog.com/game/litil_divil
|
||||
[36]:http://www.gog.com/game/long_live_the_queen
|
||||
[37]:http://www.gog.com/game/mousecraft
|
||||
[38]:http://www.gog.com/game/multiwinia
|
||||
[39]:http://www.gog.com/game/normality
|
||||
[40]:http://www.gog.com/game/pinball_gold_pack
|
||||
[41]:http://www.gog.com/game/pinball_world
|
||||
[42]:http://www.gog.com/game/pirates_gold_plus
|
||||
[43]:http://www.gog.com/game/realms_of_the_haunting
|
||||
[44]:http://www.gog.com/game/rex_nebular_and_the_cosmic_gender_bender
|
||||
[45]:http://www.gog.com/game/rise_of_the_triad__dark_war
|
||||
[46]:http://www.gog.com/game/shattered_haven
|
||||
[47]:http://www.gog.com/game/the_shivah
|
||||
[48]:http://www.gog.com/game/sid_meiers_colonization
|
||||
[49]:http://www.gog.com/game/sid_meiers_covert_action
|
||||
[50]:http://www.gog.com/game/sir_you_are_being_hunted
|
||||
[51]:http://www.gog.com/game/slipstream_5000
|
||||
[52]:http://www.gog.com/game/space_pirates_and_zombies
|
||||
[53]:http://www.gog.com/game/spacechem
|
||||
[54]:http://www.gog.com/game/stargunner
|
||||
[55]:http://www.gog.com/game/steamworld_dig
|
||||
[56]:http://www.gog.com/game/super_hexagon
|
||||
[57]:http://www.gog.com/game/surgeon_simulator_2013
|
||||
[58]:http://www.gog.com/game/sword_of_the_samurai
|
||||
[59]:http://www.gog.com/game/teslagrad
|
||||
[60]:http://www.gog.com/game/unrest_special_edition
|
||||
[61]:http://www.gog.com/game/uplink_hacker_elite
|
||||
[62]:http://www.gog.com/game/vvvvvv
|
||||
[63]:http://www.gog.com/promo/linux_launch_promo_240714
|
||||
[64]:http://www.gog.com/promo/linux_launch_promo_240714
|
||||
[65]:http://youtu.be/qBxbPts5tOk
|
@ -1,3 +1,4 @@
|
||||
乌龙茶 占坑
|
||||
Valve SteamOS: A Linux-based Gaming Operating System Announced
|
||||
================================================================================
|
||||

|
||||
@ -31,4 +32,4 @@ via: http://www.cyberciti.biz/linux-games/valve-announces-linux-based-steamos/
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://store.steampowered.com/livingroom/SteamOS/
|
||||
[1]:http://store.steampowered.com/livingroom/SteamOS/
|
||||
|
@ -1,593 +0,0 @@
|
||||
translating by disylee 20140701
|
||||
110 Fun Open Source Games and Apps
|
||||
================================================================================
|
||||
Once again, we're celebrating the arrival of summer with a list of some of the best open source games available. We've updated [last year's list][1] with some new arrivals, as well as getting rid of some of the older games that are no longer under active development. You'll find arcade, board, casual, puzzle, educational, first-person shooter, music, racing, role-playing, adventure, simulator and strategy games, as a well as a few apps that aren't really games but are still a lot of fun.
|
||||
|
||||
This year, more open source games than ever before are now available for mobile devices, primarily Android devices. Hopefully, this trend will continue in coming years.
|
||||
|
||||
Please note that this list is not a ranking. The apps are arranged in categories and listed alphabetically within each category.
|
||||
|
||||
If you would like to suggest a game for next year's version of the list, feel free to make note in the comments section below.
|
||||
|
||||
### Arcade Games ###
|
||||
|
||||
#### 1. [Andy's Super Great Park][2] ####
|
||||
|
||||
Retrieve balloons while avoiding obstacles as you ride a roller coaster. Comes with 25 main levels, plus 18 more levels you can unlock by getting a high score. Operating System: Windows, Linux, Android.
|
||||
|
||||
#### 2. [Armagetron Advanced][3] ####
|
||||
|
||||
A 3D Tron clone, this game challenges you to guide your light cycle so that opponents run into a wall before you do. It supports single-player or networked games with up to 16 players. Operating System: Windows, Linux, OS X, Android.
|
||||
|
||||
#### 3. [BZFlag][4] ####
|
||||
|
||||
Also known as "Battle Zone Capture the Flag," BZFlag is a popular online tank game. In development since 1992, it features 3D graphics, multiple game modes and competitive multi-player matches. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 4. [Chromium B.S.U.][5] ####
|
||||
|
||||
Don't let the name fool you—it has nothing to do with the Chromium browser. It's a fast-paced, top-scrolling shooter where the difficulty is set so that games will last less than fifteen minutes. Operating System: Windows, Linux.
|
||||
|
||||
#### 5. [The Legend of Edgar][6] ####
|
||||
|
||||
Legend of Edgar is an old-school platform game where the hero must overcome obstacles and enemies in order to accomplish his quest. It includes lots of different weapons and large levels. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 6. [JVGS][7] ####
|
||||
|
||||
Instead of highly detailed graphics, JVGS takes a minimalist approach where stick figures cross a landscape that looks like it was hand-drawn in pencil. The main character in this highly unusual game is a poet who is losing his memories. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 7. [No Gravity][8] ####
|
||||
|
||||
This space-based arcade shooter takes players to the year 8002 where they must complete a variety of missions. Related, but not free, games are also available for Android and iOS. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 8. [Open Sonic][9] ####
|
||||
|
||||
Based on the Sonic the Hedgehog games, Open Sonic offers cooperative gameplay where the user can control three characters at once. Only two levels are available in the original game, but several fans have built mods that offer additional play. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 9. [Powermanga][10] ####
|
||||
|
||||
Similar to the old arcade game Galaga, Powermanga is a 2D, top-scrolling space shooter. It's got more than 41 levels, and it can run on older hardware. Operating System: Linux.
|
||||
|
||||
#### 10. [Scorched3D][11] ####
|
||||
|
||||
Scorched3D is a modern take on the DOS game Scorched Earth, and it's noteworthy for its excellent graphics. You can play in single-player mode or connect to one of the many online servers for multi-player action. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 11. [Sonic Robo Blast 2][12] ####
|
||||
|
||||
Another Sonic-inspired platform game, SRB2 is a 3D platform game built using the Doom engine. It includes three different playable characters and more than twenty levels. Operating System: Linux.
|
||||
|
||||
#### 12. [SuperTux][13] ####
|
||||
|
||||
SuperTux is a lot like the old Mario Bros. games, but with Tux the Linux penguin as the hero. It's a 2D side-scrolling platform game with nine different bad guys and 26 levels to play. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 13. [Those Funny Funguloids][14] ####
|
||||
|
||||
This one-of-a-kind game challenges players to collect mushrooms in space. The website proclaims, "Never before has collecting mushrooms been this mildly entertaining. At least not in outer space. It's more of a lifestyle than a game, really." Operating System: Windows, Linux.
|
||||
|
||||
#### 14. [Teeworlds][15] ####
|
||||
|
||||
This online game describes itself as a "retro multiplayer shooter." It's a side-scrolling 2D game with support for up to 16 players and several different game modes. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 15. [XMoto][16] ####
|
||||
|
||||
In this game, you ride a motorbike through a side-scrolling landscape while collecting strawberries and avoiding the spiky "wreckers." It's harder than it looks! Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 16. [Yo Frankie!][17] ####
|
||||
|
||||
Created with the Blender open source 3D animation tool, Yo Frankie! features characters from the open source movie Peach. Players must guide Frankie, a sugar glider, or Momo, a monkey, over, around and through the obstacles in a highly detailed 3D environment. Operating System: Windows, Linux, OS X.
|
||||
|
||||
### Board Games ###
|
||||
|
||||
#### 17. [Domination][18] ####
|
||||
|
||||
Java-based Domination brings the board game Risk to your PC or Android device. The latest version lets you play against your Google+ friends through the Google Play Game Services Real-time Multiplayer feature. Operating System: Windows, Linux, OS X, Android.
|
||||
|
||||
#### 18. [GNU Backgammon][19] ####
|
||||
|
||||
This "world-class" backgammon engine gets better every time you play against it, and it can analyze your play to help you get better. The interface is very nice with customizable graphics. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 19. [Scrabble 3D][20] ####
|
||||
|
||||
With this variation of Scrabble you can choose your own board—the classic version, Superscrabble, 3D Scrabble or your own custom board. Play against the AI or connect to an online server for multi-player games. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 20. [PokerTH][21] ####
|
||||
|
||||
This high-quality Texas Hold 'Em app features an excellent, customizable interface. To play online and see how you rank against other players, register online at Poker-Heroes.com. Operating System: Windows, Linux, OS X, Android.
|
||||
|
||||
#### 21. [PySolFC][22] ####
|
||||
|
||||
Did you know there were more than 1,000 variations of Solitaire? This huge collection features "games that use the 52 card International Pattern deck, games for the 78 card Tarock deck, eight and ten suit Ganjifa games, Hanafuda games, Matrix games, Mahjongg games, and games for an original hexadecimal-based deck." Operating System: Windows, Linux, OS X.
|
||||
|
||||
### Casual and Puzzle Games ###
|
||||
|
||||
#### 22. [2048][23] ####
|
||||
|
||||
In this simple but addictive puzzle game, the player moves blocks around to combine like numbers. You win when you hit 2048. Operating System: Online, iOS, Android.
|
||||
|
||||
#### 23. [Billiards][24] ####
|
||||
|
||||
Billiards aims to be realistic enough to let you practice cue sports when you don't have a table available. It has a good-looking 3D interface, but also runs in 2D for systems without a good graphics processor. Operating System: Linux.
|
||||
|
||||
#### 24. [Cube Trains][25] ####
|
||||
|
||||
Lay tracks to connect tunnels and bridges while maneuvering around obstacles. You can play the many built-in levels or create one of your own. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 25. [Enigma][26] ####
|
||||
|
||||
Similar to the old Oxyd and Rock'n'Roll games, Enigma challenges users to find identical stones amid mazes, traps, laser beams and other obstacles. With more than 1,000 levels, this is one puzzle game that will keep you occupied for a long, long time. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 26. [Fish Fillets NG][27] ####
|
||||
|
||||
In this puzzle game, players must try to find a safe way out of each of the 70 levels. Along the way, fish and other underwater residents offer humorous commentary on the user's progress. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 27. [Frozen Bubble][28] ####
|
||||
|
||||
One of the oldest bubble shooter games around, Frozen Bubble features Tux the Linux Penguin and more than 100 levels for single-players. You can also play against two to five other players via a LAN or the Internet. Operating System: Windows, Linux.
|
||||
|
||||
#### 28. [GnomeGames][29] ####
|
||||
|
||||
This collection includes fifteen different casual games that you can play in five minutes or less. It includes Sudoku, a minesweeper game, Mahjong, a version of Reversi and more. Operating System: Linux.
|
||||
|
||||
#### 29. [I Have No Tomatoes][30] ####
|
||||
|
||||
How many tomatoes can you smash in ten minutes? This "extreme leisure time activity" comes from the same team as Those Funny Funguloids. Operating System: Windows, Linux.
|
||||
|
||||
#### 30. [KDE Games][31] ####
|
||||
|
||||
This is the collection of casual games for the KDE desktop. It includes a solitaire variation, a version of breakout, a golf game, a version of Risk, a minesweeper, sudoku and more. Operating System: Windows, Linux.
|
||||
|
||||
#### 31. [Neverball][32] ####
|
||||
|
||||
In this game, players must tilt the floor to guide a ball through an obstacle course. The game includes lots of levels or you can design your own. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 32. [Pingus][33] ####
|
||||
|
||||
Did you spend hours playing Lemmings back in the 90s? If so, Pingus is for you. It's a remake of Lemmings (with penguins instead of lemmings) with 77 different levels. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 33. [Pushover][34] ####
|
||||
|
||||
This puzzle game features ants who can push over dominoes arranged in various patterns. The player must get all the dominoes to fall and send the special trigger through the exit in order to get to the next level. Operating System: Windows.
|
||||
|
||||
#### 34. [Zaz][35] ####
|
||||
|
||||
Another bubble shooter, Zaz challenges you to hit balls as they travel along a preset path. The twist is that your shooter is also traveling along a path, making things just a little more difficult. Operating System: Windows, Linux.
|
||||
|
||||
### Educational Games ###
|
||||
|
||||
#### 35. [ChildsPlay][36] ####
|
||||
|
||||
Designed for those age five and under, ChildsPlay helps teach sounds, letters, numbers and basic keyboard skills. It also includes some games like memory, pong and pacman. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 36. [GBrainy][37] ####
|
||||
|
||||
Exercise your mind with GBrainy's logic, word, math and memory games. It's fun and educational for players of all ages. Operating System: Windows, Linux.
|
||||
|
||||
#### 37. [GCompris][38] ####
|
||||
|
||||
Made for children ages 2 to 10, GCompris includes more than 100 different activities, most of them educational. It includes math, geography, science, reading, keyboarding and art games, plus chess, sudoku, memory and much more. Operating System: Windows, Linux.
|
||||
|
||||
#### 38. [TuxMath][39] ####
|
||||
|
||||
Solve arithmetic problems quickly before the incoming comets kill the penguins. This simple game reinforces math facts for elementary age students. Operating System: Windows, Linux, OS X.
|
||||
|
||||
### First-Person Shooter Games ###
|
||||
|
||||
#### 39. [Alien Arena][40] ####
|
||||
|
||||
Built "for fraggers by fraggers," Alien Arena is an intense deathmatch shooter with a retro sci-fi theme. Many different sites offer hosted servers for online games, and there are also plenty of fan sites with playing tips and more. Operating System: Linux, Windows, OS X.
|
||||
|
||||
#### 40. [AssaultCube][41] ####
|
||||
|
||||
Because of its light weight, AssaultCube can run on older hardware, despite its very good realistic graphics. It supports single-player or multi-player games and includes 26 different maps and 12 different game modes. Operating System: Linux, Windows, OS X.
|
||||
|
||||
#### 41. [Classic Nexuiz][42] ####
|
||||
|
||||
Downloaded more than 6 million times, Nexuiz is one of the most popular open source shooter games. A few years ago, a new closed-source version of the game was created, but you can still download the classic version from the link above or from SourceForge. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 42. [OpenArena][43] ####
|
||||
|
||||
This multi-player game is a clone of Quake III Arena and features 13 different weapons, 51 arenas, 18 player characters and 12 types of games. The project's owners warn, "Due to violent and occasional racy content, it's unsuitable for children under the age of 17." Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 43. [Red Eclipse][44] ####
|
||||
|
||||
This casual first-person shooter has received excellent reviews. Features include Parkour, impulse boosts, dashing, several game modes and a built-in level editor. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 44. [Tremulous][45] ####
|
||||
|
||||
This award-winning game mixes elements of a real-time strategy game with a first-person shooter. Users can choose to play as aliens or humans, always with the goal of eliminating the other team. Operating System: Windows, Linux, OS X, XBox.
|
||||
|
||||
#### 45. [TrueCombat][46] ####
|
||||
|
||||
TrueCombat claims to be "perhaps the best free tactical-realism shooter. EVER." It's a modern world combat simulator with two opposing teams. Note that in order to use it, you will also need Wolfenstein: Enemy Terriroty (see below). Operating System: Windows, Linux, OS X
|
||||
|
||||
#### 46. [Unvanquished][47] ####
|
||||
|
||||
Forked from Tremulous, Unvanquished pits "technologically advanced humans against hordes of highly adaptable aliens." It's under very active development with a new release every month. Operating System: Windows, Linux, OS X
|
||||
|
||||
#### 47. [Warsow][48] ####
|
||||
|
||||
The self-proclaimed "most fast-paced sport on the Web," Warsow is a cartoonish shooter featuring "Rocketlauncher-wielding pigs and lasergun-carrying cyberpunks." Unlike most shooters, it doesn't have a lot of blood and guts, and the emphasis is on movement. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 48. [Wolfenstein: Enemy Terriorty][49] ####
|
||||
|
||||
Although there are several proprietary Wolfenstein games, this one is open source. It's a World War II-era game that pits the Axis against the Allies. Operating System: Windows, Linux, OS X
|
||||
|
||||
#### 49. [World of Padman][50] ####
|
||||
|
||||
Based on the Quake engine, this shooter is very cartoonish with little gore. Quite a few online servers are available, or you can play offline. Operating System: Windows, Linux.
|
||||
|
||||
#### 50. [Xonotic][51] ####
|
||||
|
||||
Xonotic was forked from the classic version of Nexuiz. It has more than 22 different maps, 16 weapons and lots of different gameplay modes. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 51. [Zero Ballistics][52] ####
|
||||
|
||||
Part first-person shooter, part tank game, Zero Ballistics is set in a picturesque mountain environment and has more than 81 different tank setups available. Play deathmatch, team deathmatch or the unique beaconstrike game mode. Operating System: Windows, Linux, OS X.
|
||||
|
||||
### Music Games ###
|
||||
|
||||
#### 52. [Frets on Fire][53] ####
|
||||
|
||||
Frets on Fire is a lot like Guitar Hero, and it can even play Guitar Hero songs (though other songs are available as well). No worries if you don't have a guitar controller—you can also play with the keyboard. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 53. [StepMania][54] ####
|
||||
|
||||
This is a free version of Dance Dance Revolution, which challenges users to stay in rhythm to the beat of the music. You can use dance pads (if you have them) to play, or you can just use the keyboard. Operating System: Windows, Linux/Unix, OS X, XBox.
|
||||
|
||||
#### 54. [Ultrastar Deluxe][55] ####
|
||||
|
||||
If karaoke is your thing, you'll love Ultrastar Deluxe. For this game, you must sing along to the music on pitch and in the correct rhythm. It comes with more than 10,000 songs included. Operating System: Windows, Linux, OS X.
|
||||
|
||||
### Racing Games ###
|
||||
|
||||
#### 55. [Extreme Tux Racer][56] ####
|
||||
|
||||
Tux Racer is a much-loved older game that features Tux the Linux penguin sliding down a mountain on his belly. Extreme Tux Racer updates the classic game for today's players. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 56. [Speed Dreams][57] ####
|
||||
|
||||
This fork of the TORCS auto-racing game (see below) features an updated UI and many new cars and tracks. As in TORCS, the visuals are excellent. Operating System: Windows, Linux.
|
||||
|
||||
#### 57. [SuperTuxKart][58] ####
|
||||
|
||||
This cartoonish racer features Tux the Linux Penguin and friends driving go karts. Guide them around the tracks, while avoiding a horde of silly obstacles. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 58. [TORCS][59] ####
|
||||
|
||||
Short for "The Open Racing Care Simulator," TORCS is an outstanding realistic racing game with a large fan base. Race alone or against friends on one of the many tracks available. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 59. [Ultimate Stunts][60] ####
|
||||
|
||||
Inspired by the classic DOS game Stunts, Ultimate Stunts requires players to guide vehicles across broken bridges, jumps, loops, corkscrews and other obstacles. It allows offers the option of designing your own track with even more crazy stunts. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 60. [VDrift][61] ####
|
||||
|
||||
As much a simulator as a racing game, VDrift introduces players to world of drift racing with a realistic physics engine. It includes more than 45 cars, more than 45 tracks, and support for a wide variety of controllers. Operating System: Windows, Linux, OS X.
|
||||
|
||||
### Role-Playing and Adventure Games ###
|
||||
|
||||
#### 61. [Crossfire][62] ####
|
||||
|
||||
Sometimes described as a cross between NetHack and Gauntlet, Crossfire is an arcade adventure game with very old-school graphics. It has more than 3,000 different maps featuring more than 150 different monsters. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 62. [Epic Inventor][63] ####
|
||||
|
||||
Epic Inventor describes itself as a "side-scrolling action RPG." It's similar to Minecraft with simple, pixelated graphics and open-ended play. Operating System: Windows, Linux.
|
||||
|
||||
#### 63. [Excalibur: Morganna's Revenge][64] ####
|
||||
|
||||
This time-traveling epic puts you in the role of a futuristic space marine who must travel back to the time of King Arthur and Camelot. The graphics aren't anything special (think Minecraft), but the storyline and gameplay are good. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 64. [Flare][65] ####
|
||||
|
||||
Inspired by Diablo, this role-playing game places the emphasis on combat. It's still an alpha release but is playable. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 65. [Lips of Suna][66] ####
|
||||
|
||||
For adults only, this "tongue-in-cheek action RPG" features "violence, crude humor, nudity and other themes you can rarely see in other games anymore." It offers lots of action and a constantly changing landscape. Operating System: Windows, Linux.
|
||||
|
||||
#### 66. [The Mana World][67] ####
|
||||
|
||||
This is a massively multiplayer online role-playing game (MMORPG) that isn't so massive. (At the time of writing there were 31 people playing.) Still, it's a good attempt to create an ever-expanding world full of monsters, quests and mini-games. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 67. [NetHack][68]注:此链接原文有错误,和上面的链接地址一样了 ####
|
||||
|
||||
One of the classics, NetHack is an intricate dungeon crawler with extremely simple graphics. It's been called one of the 100 best video games of all time. Operating System: Windows, Linux, Classic Mac.
|
||||
|
||||
#### 68. [PlaneShift][69] ####
|
||||
|
||||
Set in the fantasy realm of Yliakum, this unique online role-playing game features ten different races and a well-developed world with its own economy, government, religion and rules. It's playable but still in the early stages of development. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 69. [Ryzom][70] ####
|
||||
|
||||
One of the better open source MMORPGs, award-winning Ryzom is set on the treelike planet of Atys, where several different races of beings interact and sometimes come into conflict. You can play for free, but those who choose to subscribe get some special benefits. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 70. [Stendhal][71] ####
|
||||
|
||||
This online role-playing game aims to be more friendly than most. The website explains, "You may be asked to help protect land, feed the hungry, heal the sick, make someone happy, solve a puzzle or simply lend a hand." Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 71. [Summoning Wars][72] ####
|
||||
|
||||
Up to eight people can play this fantasy role-playing game at once. There's a trailer for the game at Youtube that lets you see it in action. Operating System: Windows, Linux, OS X.
|
||||
|
||||
### Simulator Games ###
|
||||
|
||||
#### 72. [FlightGear][73] ####
|
||||
|
||||
Extremely realistic, FlightGear is a top-notch flight simulator that rivals proprietary software. It includes accurate terrain for the entire world and lifelike models of 20,000 airports and numerous aircraft. Operating System: Windows, Linux, OS X, others.
|
||||
|
||||
#### 73. [Golems][74] ####
|
||||
|
||||
With this physics simulator you can build almost anything you want and see how it would act in the real world. It's great for learning about basic machines, building robots, and inventing contraptions of all kinds. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 74. [LinCity NG][75] ####
|
||||
|
||||
Based on the original SimCity game, LinCity NG challenges players to build a sustainable metropolis with a thriving economy. Note that because it is based on older code, the graphics are similar to old DOS games. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 75. [Micropolis/OLPC SimCity][76] ####
|
||||
|
||||
Another SimCity imitator, Micropolis is a Java-based city simulator. It also features fairly old-school graphics rather than the 3D look of newer SimCity games. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 76. [Minetest][77] ####
|
||||
|
||||
Extremely similar to Minecraft, Minetest is set in an infinite world of basic building blocks. Players can explore, mine or craft new objects as they see fit. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 77. [Pioneer][78] ####
|
||||
|
||||
Pioneer describes itself as "a game of lonely space adventure." It transports players to an open-ended world where they decide what to do and where to go. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 78. [Oolite][79] ####
|
||||
|
||||
Based on Elite, Oolite is a space simulator where you can trade with other spacefarers or become embroiled in combat. It's been around for quite a while, and many expansions are available. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 79. [OpenCity][80] ####
|
||||
|
||||
This 3D city simulator does not aim to be a SimCity clone, but does offer a similar style of play. It's fairly basic but is playable. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 80. [OpenTTD][81] ####
|
||||
|
||||
Based on Transport Tycoon Deluxe, OpenTTD invites players to build a transportation empire. It supports up to 255 players at once and improves on the original TTD in many ways. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 81. [Rigs of Rods][82] ####
|
||||
|
||||
This vehicle simulator with a unique soft-body physics engine enjoys a very active and enthusiastic fan base. Use it to create land, sea or air vehicles and drive or fly them around the country. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 82. [Simutrans][83] ####
|
||||
|
||||
This transportation simulator offers the option of connecting to online games hosted throughout the world. Use buses, trucks, trains, trams, ships, airplanes, monorails, maglevs or other vehicles to move people and goods where they need to go. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 83. [Vega Strike][84] ####
|
||||
|
||||
This is another space simulator that lets you trade and fight throughout the galaxy. You choose whether to fly a trade route, accept a bounty-hunting mission, turn pirate or just explore the vastness of space. Operating System: Windows, Linux, OS X.
|
||||
|
||||
### Strategy Games ###
|
||||
|
||||
#### 84. [0 A.D.][85] ####
|
||||
|
||||
Now in its 16th alpha release, 0 A.D. is an award-winning civilization-building game that strives for historical accuracy. Choose to play as the Carthaginians, Celts, Greeks, Iberians, Mauryans, Persians or Romans. Operating System: Linux, Windows, OS X.
|
||||
|
||||
#### 85. [Advanced Strategic Command][86] ####
|
||||
|
||||
This turn-based strategy game is based on the Battle Isle series. Players battle on a grid-like landscape in single- or multi-player games. Operating System: Windows, Linux.
|
||||
|
||||
#### 86. [Battle for Wesnoth][87] ####
|
||||
|
||||
This turn-based tactical strategy game puts players in a mythic world where they fight to reclaim the throne. Orcs, elves, necromancers and hundreds of other familiar high fantasy characters populate a large environment. Supports both single- and multi-player games. Operating System: Linux, Windows, OS X, iOS.
|
||||
|
||||
#### 87. [BosWars][88] ####
|
||||
|
||||
This futuristic real time strategy game requires players to build up energy stores and an economy in order to support military battles. Play against the computer opponent or connect over a LAN for multi-player games. Operating System: Windows, Linux, BSD, OS X.
|
||||
|
||||
#### 88. [CommanderStalin][89] ####
|
||||
|
||||
This variation of BosWars is set in Stalin's Soviet Union. Be prepared for the inevitable Nazi attack! Operating System: Windows, Linux.
|
||||
|
||||
#### 89. [FreeCol][90] ####
|
||||
|
||||
Inspired by the games Colonization and Civilization, FreeCol is a turn-based civilization-building strategy game. You start in the New World in 1492 and win by creating an independent country with free speech. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 90. [FreeCiv][91] ####
|
||||
|
||||
Also inspired by Civilization, this turn-based strategy game starts in the stone age and ends in the space age. It includes 50 playable units and 541 nations and comes with several playable scenarios. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 91. [FreeOrion][92] ####
|
||||
|
||||
While it isn't a clone or remake, FreeOrion is loosely based on the Master of Orion games. It's a turn-based strategy game set in space. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 92. [Glest][93] ####
|
||||
|
||||
The forces of Tech battle the forces of Magic in this real-time strategy game. While it's still available for download, most Linux distributions now include the fork Megaglest (see below) instead of this older project. Operating System: Windows, Linux.
|
||||
|
||||
#### 93. [Globulation 2][94] ####
|
||||
|
||||
This real-time civilization-building strategy game aims to reduce the need for micro-management and allow players to focus on strategy. Single- or multi-player games and a level editor are available. Operating System: Windows, Linux.
|
||||
|
||||
#### 94. [Hedgewars][95] ####
|
||||
|
||||
One of the more lighthearted strategy games around, Hedgewars features "the antics of pink hedgehogs with attitude as they battle from the depths of hell to the depths of space." Features 31 environments, 48 set maps, infinite randomly generated maps, 55 weapons, 280 costumes and support for up to 8 players at once. Operating System: Windows, Linux, OS X, iOS.
|
||||
|
||||
#### 95. [Kernel Panic][96] ####
|
||||
|
||||
Set in a digital landscape, Kernel Panic is a real-time strategy game with Tron-like graphics. All the resources are free, so players don't need to worry about building an economy—only about fighting against the other hackers on the network. Operating System: Linux, Windows
|
||||
|
||||
#### 96. [Liquid War][97] ####
|
||||
|
||||
Way back in 2002, Liquid War was named the "most original Linux Game," and it's still worth a look. Control a liquid army as you try to consume your enemies. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 97. [MegaGlest][98] ####
|
||||
|
||||
This fork of Glest adds five new teams to the original Tech and Magic: Egypt, Indians, Norsemen, Persian or Romans. It offers 17 different map types, both single- and multi-player games, and tutorials for new players. Operating System: Windows, Linux.
|
||||
|
||||
#### 98. [Pax Brittanica][99] ####
|
||||
|
||||
Up to four players can battle at once using the same keyboard on this submarine strategy game. The controls are easy to learn (you only use one button), but the gameplay can be very intense. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 99. [Spring: 1944][100] ####
|
||||
|
||||
This World War II strategy game offers realistic units and strengths. Choose to play as the U.S., Germany, the U.S.S.R. or Great Britain. Operating System: Linux.
|
||||
|
||||
#### 100. [UFO: Alien Invasion][101] ####
|
||||
|
||||
Seventy years in the future, a secret organization struggles to defend earth from vicious alien invaders. Play as the humans or the aliens in single-player or multi-player combat. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 101. [Unknown Horizons][102] ####
|
||||
|
||||
In this civilization-building strategy game, the emphasis is on building a strong economy. You start with a handful of settlers and resources on an isolated archipelago and work to build a thriving city. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 102. [Warzone 2100][103] ####
|
||||
|
||||
Can you rebuild Earth after nuclear devastation? This game offers an unusually large tech tree and single- or multi-player games. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 103. [Widelands][104] ####
|
||||
|
||||
Inspired by Settlers II, Widelands is another real-time strategy game that challenges players to build a civilization. It features three tribes—Barbarians, Imperials, and Atlanteans—and unlike most civilization games, the player doesn't tell each unit what to do but instead gives orders and delegates, more like a real ruler. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 104. [Zero-K][105] ####
|
||||
|
||||
In this fast-moving real-time strategy game, robot armies fight a never-ending battle. Key features include more than 100 different units, a streamlined economy system, a realistic physics engine, terraforming and more. Operating System: Windows, Linux.
|
||||
|
||||
#### 105. [Zombies][106] ####
|
||||
|
||||
Can you kill all the zombies before they kill you? This turn-based game offers addictive gameplay and settings that allow the player to determine the level of gore. Operating System: OS X.
|
||||
|
||||
### Fun Non-Games ###
|
||||
|
||||
#### 106. [Celestia][107] ####
|
||||
|
||||
Perfect for budding astronomers and wanna-be astronauts, Celestia allows you to see the sky as it would appear at any point in time from any point in the known universe. Take a quick trip to Jupiter or plot your starwatching for the evening. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 107. [Electric Sheep][108] ####
|
||||
|
||||
Inspired by the Philip K. Dick novel Do Androids Dream of Electric Sheep? this screensaver connects your system to thousands of others to create abstract designs and patterns. Vote for your favorite patterns to see them reappear more often. Operating System: Windows, Linux, OS X, Android, iOS.
|
||||
|
||||
#### 108. [LCARS 24][109] ####
|
||||
|
||||
If you've got an old PC around the house (and who doesn't), why not turn it into a Star Trek-themed conversation piece. With this app, you get an alarm clock and file manager with graphics that look like they came right off the Enterprise. Operating System: Windows, DOS.
|
||||
|
||||
#### 109. [Stellarium][110] ####
|
||||
|
||||
Turn your PC into a planetarium. Stellarium can display the night skies from any point on earth at any time, and it's used by many planetariums to power their displays. Operating System: Windows, Linux, OS X.
|
||||
|
||||
#### 110. [Tux Paint][111] ####
|
||||
|
||||
Tux Paint makes it easy for pre-schoolers to create their own "drawings" on the computer. It features an interface with big buttons, fun sound effects and friendly characters. Operating System: Windows, Linux, OS X.
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.datamation.com/open-source/110-fun-open-source-games-and-apps-1.html
|
||||
|
||||
译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.datamation.com/open-source/101-most-fun-open-source-games-and-apps-1.html
|
||||
[2]:http://www.stuff-o-matic.com/asgp/
|
||||
[3]:http://armagetronad.org/index.php
|
||||
[4]:http://bzflag.org/
|
||||
[5]:http://chromium-bsu.sourceforge.net/
|
||||
[6]:http://www.parallelrealities.co.uk/p/legend-of-edgar.html
|
||||
[7]:http://www.penguspy.com/jvgs/
|
||||
[8]:http://www.nogravitythegame.com/classic/
|
||||
[9]:http://opensnc.sourceforge.net/home/index.php
|
||||
[10]:http://linux.tlk.fr/games/Powermanga/
|
||||
[11]:http://www.scorched3d.co.uk/
|
||||
[12]:http://www.srb2.org/
|
||||
[13]:http://supertux.lethargik.org/
|
||||
[14]:http://funguloids.sourceforge.net/
|
||||
[15]:http://www.teeworlds.com/
|
||||
[16]:http://xmoto.tuxfamily.org/
|
||||
[17]:http://www.yofrankie.org/
|
||||
[18]:http://domination.sourceforge.net/
|
||||
[19]:http://sourceforge.net/apps/mediawiki/scrabble/index.php?title=Main_Page
|
||||
[20]:http://sourceforge.net/apps/mediawiki/scrabble/index.php?title=Main_Page
|
||||
[21]:http://www.pokerth.net/
|
||||
[22]:http://pysolfc.sourceforge.net/
|
||||
[23]:http://gabrielecirulli.github.io/2048/
|
||||
[24]:http://www.nongnu.org/billiards/
|
||||
[25]:http://cubetrains.com/
|
||||
[26]:http://www.nongnu.org/enigma/
|
||||
[27]:http://fillets.sourceforge.net/
|
||||
[28]:http://www.frozen-bubble.org/
|
||||
[29]:http://live.gnome.org/GnomeGames
|
||||
[30]:http://tomatoes.sourceforge.net/about.html
|
||||
[31]:http://games.kde.org/
|
||||
[32]:http://neverball.org/
|
||||
[33]:http://pingus.seul.org/welcome.html
|
||||
[34]:http://pushover.sourceforge.net/
|
||||
[35]:http://zaz.sourceforge.net/
|
||||
[36]:http://www.schoolsplay.org/
|
||||
[37]:https://live.gnome.org/gbrainy
|
||||
[38]:http://gcompris.net/index-en.html
|
||||
[39]:http://tux4kids.alioth.debian.org/tuxmath/index.php
|
||||
[40]:http://icculus.org/alienarena/rpa/
|
||||
[41]:http://assault.cubers.net/
|
||||
[42]:http://www.alientrap.org/games/nexuiz
|
||||
[43]:http://openarena.ws/smfnews.php
|
||||
[44]:http://www.redeclipse.net/
|
||||
[45]:http://tremulous.net/
|
||||
[46]:http://www.truecombatelite.com/
|
||||
[47]:http://www.unvanquished.net/
|
||||
[48]:http://www.warsow.net/
|
||||
[49]:http://www.splashdamage.com/wolfet
|
||||
[50]:http://worldofpadman.net/website/news
|
||||
[51]:http://www.xonotic.org/
|
||||
[52]:http://www.zeroballistics.com/
|
||||
[53]:http://www.stepmania.com/
|
||||
[54]:http://www.stepmania.com/
|
||||
[55]:http://www.ultrastardeluxe.org/
|
||||
[56]:http://sourceforge.net/projects/extremetuxracer/
|
||||
[57]:http://www.speed-dreams.org/
|
||||
[58]:http://supertuxkart.sourceforge.net/
|
||||
[59]:http://torcs.sourceforge.net/
|
||||
[60]:http://www.ultimatestunts.nl/
|
||||
[61]:http://vdrift.net/
|
||||
[62]:http://crossfire.real-time.com/intro/index.html
|
||||
[63]:http://www.epicinventor.com/
|
||||
[64]:http://excaliburworld.com/emr/emr3/index.html
|
||||
[65]:http://flarerpg.org/media/
|
||||
[66]:http://lipsofsuna.org/
|
||||
[67]:http://themanaworld.org/
|
||||
[68]:http://themanaworld.org/
|
||||
[69]:http://www.planeshift.it/about.html
|
||||
[70]:http://www.ryzom.com/en/
|
||||
[71]:http://stendhalgame.org/
|
||||
[72]:http://sumwars.org/wiki/Main_Page
|
||||
[73]:http://www.flightgear.org/
|
||||
[74]:http://www.golemgame.com/
|
||||
[75]:http://lincity.sourceforge.net/
|
||||
[76]:https://code.google.com/p/micropolis/
|
||||
[77]:http://minetest.net/
|
||||
[78]:http://pioneerspacesim.net/
|
||||
[79]:http://www.oolite.org/
|
||||
[80]:http://www.opencity.info/
|
||||
[81]:http://www.openttd.org/en/
|
||||
[82]:http://www.rigsofrods.com/content/
|
||||
[83]:http://www.simutrans.com/
|
||||
[84]:http://vegastrike.sourceforge.net/
|
||||
[85]:http://play0ad.com/
|
||||
[86]:http://www.asc-hq.org/
|
||||
[87]:http://www.wesnoth.org/
|
||||
[88]:http://www.boswars.org/
|
||||
[89]:http://commanderstalin.sourceforge.net/
|
||||
[90]:http://www.freecol.org/
|
||||
[91]:http://freeciv.wikia.com/wiki/Main_Page
|
||||
[92]:http://freeorion.org/index.php/Main_Page
|
||||
[93]:http://glest.org/en/index.php
|
||||
[94]:http://globulation2.org/wiki/Main_Page
|
||||
[95]:http://www.hedgewars.org/
|
||||
[96]:http://springrts.com/wiki/Kernel_Panic
|
||||
[97]:http://www.ufoot.org/liquidwar/v5
|
||||
[98]:http://glest.org/en/index.php
|
||||
[99]:http://paxbritannica.henk.ca/
|
||||
[100]:http://spring1944.net/
|
||||
[101]:http://ufoai.org/wiki/News
|
||||
[102]:http://www.unknown-horizons.org/
|
||||
[103]:http://wz2100.net/
|
||||
[104]:http://wl.widelands.org/
|
||||
[105]:http://zero-k.info/
|
||||
[106]:http://codenautics.com/zombies/
|
||||
[107]:http://www.shatters.net/celestia/index.html
|
||||
[108]:http://community.electricsheep.org/
|
||||
[109]:http://lcars24.com/
|
||||
[110]:http://stellarium.org/
|
||||
[111]:http://tuxpaint.org/
|
82
sources/talk/20140724 Best Linux Browsers.md
Normal file
82
sources/talk/20140724 Best Linux Browsers.md
Normal file
@ -0,0 +1,82 @@
|
||||
Love-xuan翻译中
|
||||
Best Linux Browsers
|
||||
================================================================================
|
||||
> Pros and cons of the best browsers for the Linux desktop, including Firefox, Chrome and other browsers.
|
||||
|
||||
Choosing the best Linux browser for your needs requires just a bit of homework: Web browsers for the Linux desktop have evolved over the years, just as they have for other popular desktop platforms. With this evolution, both good and bad revelations have been discovered. Revelations from new functionality, to broken extensions, and so forth. In this article, I'll serve as your guide through these murky waters to help you discover the best in Linux browsers.
|
||||
|
||||
### **Firefox** ###
|
||||
|
||||
– [Firefox][1] has long been a friendly browser for Linux users. Accessible on both 32bit and 64bit Linux installs, Firefox also offers extensive extensions to choose from. It's a fast loading, easy to navigate Web browser that has found itself in a popular place with Linux users.
|
||||
|
||||
**The good**: It's easily installed from most common Linux software repositories, if not already installed on the distro by default. Thousands of extensions to choose from to make your Firefox browser more fully featured. Nearly every website on the Web (including government and banking sites) render properly.
|
||||
|
||||
Also important: Firefox respects your privacy. In addition to a straight forward privacy policy, they're not in the "same business" as Google. Therefore, most users feel more comfortable allowing Firefox to see their daily browsing activities whereas other browsers, might have more profit-driven interests. Firefox is also great for web developers, thanks to its element inspection tool, built right into the browser.
|
||||
|
||||
**The bad**: Not too long ago, I was finding that Firefox's frequent updates were breaking my extensions. This meant I needed to verify that my favorite extensions were compatible with new Firefox updates BEFORE I updated my browser.
|
||||
|
||||
To be blunt, this caused me to rethink which browser would be my default tool to browse the Internet. In fairness, Mozilla does post a blog post with each browser update for extension developers. In these posts, developers are told what has changed and what needs to be done to keep things working smoothly.
|
||||
|
||||
### **Chrome/Chromium** ###
|
||||
|
||||
– Google promotes its browser named [Chrome][2], however I tend to put [Chromium][3] into the same group as Chrome since Chromium is used as its base for development. Unlike Firefox, Chrome/Chromium was late to the game for Linux. Linux users only considered it worth trying at the time due to the fact that Chrome/Chromium was perceived by many as being the fastest browser.
|
||||
|
||||
**The good**: Even today, Chrome/Chromium is considered pretty fast. Even with the recent updates made to other competing browsers, Chrome/Chromium hasn't lost its speed. Extensions for Chrome/Chromium are plentiful and even better, updates to the browser have no affect on said extensions. This means that, unlike Firefox, I haven't dealt with extension incompatibilities. Like Firefox, Chrome/Chromium also has an element inspection tool, built right into the browser. After trying syncing options with other browsers, only Chrome/Chromium has proven itself to be truly idiot-proof. Without question, Chrome/Chromium syncing is the best in the browser space, from my perspective.
|
||||
|
||||
**The bad**: Chrome/Chromium doesn't always render pages correctly. Be it rare, some sites like Ebay don't always render correctly. Case in point, if I create a new Ebay submission, I find there are buttons missing in some cases. I've also found that sometimes Chrome/Chromium can lockup completely if an open tab is rendering heavy script. Sites like Google Plus and Facebook are the most common offenders.
|
||||
|
||||
### **Qupzilla** ###
|
||||
|
||||
– When it comes to lightweight browsers, I've found [Qupzilla][4] to be among the most awesome. Based on Webkit, it provides decent rendering support while maintaining a very small resource footprint.
|
||||
|
||||
**The good**: Qupzilla is ideal for lightweight desktop environments where you need a modern browser capable of rendering pages correctly and generally providing a solid web browser experience. It's extremely lightweight and will run on older PCs without missing a beat. Access Keys and [GreaseMonkey][5] extensions are installed (but disabled) by default.
|
||||
|
||||
Like Firefox and Chrome/Chromium, Qupzilla provides access to an element inspection tool as well. And finally, having [Adblock][6] installed by default makes this a clear lightweight winner for me.
|
||||
|
||||
**The bad**: HTML5 video doesn't seem to work reliably. Also, in order to watch Flash videos, you must visit the preferences and uncheck Click to Flash in the Extensions, Webkit plugins area. This is a poorly thought out decision to essentially disable Flash out of the box, while HTML5 video remains completely broken.
|
||||
|
||||
### **Midori** ###
|
||||
|
||||
– I like to call [Midori][7] the lightweight Chrome alternative. Like Google's browser(s), Midori offers a minimalist experience with its "hamburger menu," which is nice as it takes up less browser space. Not only do you get a solid browsing experience without the usual browser politics found elsewhere, Midori is also quite fast.
|
||||
|
||||
**The good**: Midori is fast, lightweight and feels familiar out of the box. I'm also happy to report that it renders pages correctly and works great with sites like YouTube. The best part, in my opinion, is the built-in functionality for creating browser profiles and actual launchable links for Web apps. For example, you can easily create a web app on your desktop for Gmail or Facebook. You can also setup user specific browser profiles as well, without creating new Linux user accounts.
|
||||
|
||||
**The bad**: Despite mentioning user extensions for this browser, the selection available is less than impressive. Also, the browser layout takes a bit of getting used to. A trash can for previously visited websites – seriously?
|
||||
|
||||
### **Opera** ###
|
||||
|
||||
– [Opera][8] has long been one of the misunderstood browsers out there. Very early on, Opera provided Linux support despite being dismissed by the overall Linux community. In addition to being a compatible, fast web browser that has been nothing but good to Linux users, it's also a full of configurable options.
|
||||
|
||||
**The good**: It's fast and it's full of user controllable settings. You can import and export everything from RSS feeds to email, and skin Opera with easy access to breathtaking themes. Plus, Opera offers an extensive library of extensions to choose from. Not to mention the ability to read RSS feeds and email, from your browser! Relive the days of the Mozilla Suite by using Opera's extended suite functionality. And perhaps best of all, Opera Turbo – super-charge your browser speed with selective compression to provide a faster experience.
|
||||
|
||||
**The bad**: A nag for the Terms of Service on its first run. Also, Opera Turbo can slightly alter your browsing experience – YouTube for example, may not show a video's thumbnail. Opera also provides so many options that it can feel a bit overwhelming to the casual user. And lastly, it's a closed source browser that hasn't been well recognized for desktop use. Most folks think of Opera as a mobile browser only these days.
|
||||
|
||||
### Which browser is right for you? ###
|
||||
|
||||
With so many great choices, it can be a tough call to say which browser is right for you. Speaking for myself, I've found that I rely heavily on Firefox and Chromium due to specific extensions I put to work each day. For someone with a lower end system or netbook, my suggestion is to try Midori first and if that's not a fit, fallback to Qupzilla.
|
||||
|
||||
So what about other web browsers for Linux? Such as the [Epiphany][9] browser or [Konqueror][10]? Browsers like these are great, but I feel strongly about the browsers I've shared above specifically. Each of the options listed above are browsers I use often and have found to be something I feel good about recommending to friends and family.
|
||||
|
||||
That said, by all means, share any browsers you're passionate about in the Comments below so others can benefit from your preferred method of browsing the Web.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.datamation.com/open-source/best-linux-browsers-1.html
|
||||
|
||||
原文作者:[Matt Hartley][a]
|
||||
|
||||
译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.datamation.com/author/Matt-Hartley-3080.html
|
||||
[1]:https://www.mozilla.org/en-US/firefox/new/
|
||||
[2]:https://www.google.com/intl/en_us/chrome/browser/
|
||||
[3]:http://www.chromium.org/
|
||||
[4]:http://www.qupzilla.com/
|
||||
[5]:https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/
|
||||
[6]:https://adblockplus.org/
|
||||
[7]:http://midori-browser.org/
|
||||
[8]:http://www.opera.com/
|
||||
[9]:https://wiki.gnome.org/Apps/Web
|
||||
[10]:http://www.konqueror.org/
|
150
sources/talk/20140724 What are useful online tools for Linux.md
Normal file
150
sources/talk/20140724 What are useful online tools for Linux.md
Normal file
@ -0,0 +1,150 @@
|
||||
What are useful online tools for Linux
|
||||
================================================================================
|
||||
As you know, GNU Linux is much more than just an OS. There is literally a whole sphere on the Internet dedicated to the penguin OS. If you read this post, you are probably inclined towards reading about Linux online. Among all the pages that you can find on the subject, there are a couple of websites that every Linux adventurer should have in his bookmarks. These websites are more than just tutorials or reviews. They are real tools that you can access from anywhere and share with everyone. So today I shall propose you a non-exhaustive list of sixteen websites that should be in your bookmarks. Some of them can also be useful for Windows or Mac users: that's the extent of their reach.
|
||||
|
||||
### 1. [ExplainShell.com][1] ###
|
||||
|
||||
[][2]
|
||||
|
||||
If you are interested in Linux command line, you should use this website. If you are not interested in Linux command line, you should use it even more as it will explain in detail how a command works. This could prevent you from launching a command detrimental to your computer, and is a good way to learn with a great interface.
|
||||
|
||||
### 2. [BashrcGenerator.com][3] ###
|
||||
|
||||
[][4]
|
||||
|
||||
If you want to begin with Linux command line, or if you want to quickly get a customized shell prompt but not sure how, this website will generate for you PS1 prompt code to place your .bashrc file in your home directory. You can drag and drop the elements that you would like to see in your prompt, like your username and the current time, and the website will write the code for you. It's easy and very readable. Definitely a must for the lazy.
|
||||
|
||||
### 3. [Vim-adventures.com][5] ###
|
||||
|
||||
[][6]
|
||||
|
||||
I only recently discovered this website, but it already sucked in many hours of my life. In short: a RPG game with Vim commands. Move your character in the isometric levels with the 'h,j,k,l' keys, gain new commands/abilities, collect keys, and learn how to use Vim proficiently very quickly.
|
||||
|
||||
### 4. [Try Github][7] ###
|
||||
|
||||
[][8]
|
||||
|
||||
The pitch is simple: learn Git in 15 minutes. This website simulates a console, and walks you though the steps of collaborative editing. The interface is very stylish and the intention is worthy. The only downside is for the Git allergic. But it is definitely a good skill to have, and a good place to learn it.
|
||||
|
||||
### 5. [Shortcutfoo.com][9] ###
|
||||
|
||||
[][10]
|
||||
|
||||
Another shortcut database, shortcutfoo is a bit more standard in its way to present its content to the user, but definitely more straight-forward than funny mini-games. The shortcuts of several programs are available and grouped by categories. As it might not be super complete for software like Vim, which is completely reliant on shortcuts, it is perfect for giving a quick tip or a general overview.
|
||||
|
||||
### 6. [GitHub Free Programming Books][11] ###
|
||||
|
||||
[][12]
|
||||
|
||||
As you might guess from the URL, this is a collection of free online books about programming, written collaboratively using Git. The content is awesome and the authors deserve to be praised for such work. It might not be the easiest read at first, but it is one of the most instructive for sure. We can only hope that the movement will keep growing.
|
||||
|
||||
### 7. [Collabedit.com][13] ###
|
||||
|
||||
[][14]
|
||||
|
||||
If you ever plan on giving a phone interview, you should check out collabedit beforehand. It allows you to create a document, select the programming language that you want to write in, and then share that document via the URL. The people opening the link will be able to freely interact in real time with the text, allowing you to judge their programming skills or just exchange snippets. It even comes with the proper syntax highlighting and a chat widget. In other words, it is the instant-Google Document of programmers.
|
||||
|
||||
### 8. [Cpp.sh][15] ###
|
||||
|
||||
[][16]
|
||||
|
||||
This is one of those websites that extend beyond just Linux, but it is so useful that it deserves its place here. In short, an online development environment for C++. Just write your code in your navigator and run it. As a bonus, you get an auto-indentation feature, Ctrl+Z, and the possibility to share the URL with your buddy. This is just one of those crazy things that you can do from a simple browser.
|
||||
|
||||
### 9. [Copy.sh][17] ###
|
||||
|
||||
[][18]
|
||||
|
||||
In continuation with crazy things that you can do from your browser, copy.sh lets you run a virtual machine online. Just that. It gained fame relatively recently, but the idea is just insane. From the navigator you can select among the defaults virtual images to run, or upload your own iso file. The code for that feat has been shared on [GitHub][19]. Just amazing.
|
||||
|
||||
### 10. [Commandlinefu.com][20] ###
|
||||
|
||||
[][21]
|
||||
|
||||
We all keep a big snippet of command-line "gems" on our computer. commandlinefu's goal is to release those snippets to the world. As a collaborative database, it resembles the Wikipedia of the command line. Everyone is free to register and post their favorite command on the website for everyone else to see. You will then be able to access that knowledge from everywhere and share it with everyone. If you are interested in mastering the shell, commandlinefu also proposes great features like random commands and a news feed to learn something new every day.
|
||||
|
||||
### 11. [Alias.sh][22] ###
|
||||
|
||||
[][23]
|
||||
|
||||
Another collaborative database, alias.sh (I love the URL) is a bit like commandlinefu but for shell aliases. You can share and discover useful aliases which will make your CLI experience so much better. I personally like the alias to get the dimensions of a picture.
|
||||
|
||||
function dim(){ sips $1 -g pixelWidth -g pixelHeight }
|
||||
|
||||
All the seconds you save with alias.sh probably accumulate with time, and turn to years by the end of your life.
|
||||
|
||||
### 12. [Distrowatch.com][24] ###
|
||||
|
||||
[][25]
|
||||
|
||||
Who does not know Distrowatch? Besides giving a precise ranking of Linux distributions based on their website popularity, Distrowatch is also a very useful database. Whether you are looking for a new distribution to try, or just curious, it presents an exhaustive account of every Linux you can find, with information like which default desktop environment it uses, or package system, or its default applications. And all the versions, and with easily accessible download links. In a word, the Linux database.
|
||||
|
||||
### 13. [Linuxmanpages.com][26] ###
|
||||
|
||||
[][27]
|
||||
|
||||
Everything is in the URL: access the manual pages for popular commands from anywhere. Not really sure if this would actually be useful for Linux users as you can access that from your actual terminal, but the intent is remarkable.
|
||||
|
||||
### 14. [AwesomeCow.com][28] ###
|
||||
|
||||
[][29]
|
||||
|
||||
This is maybe a bit less hardcore Linux, but definitely useful to some. Awesomecow is a search engine for finding alternatives to Windows software on Linux. It can be helpful for anyone migrating to the penguin, or nostalgic of a Windows program. I see this as a strength, showing that Linux can compete with the professional spheres when it comes sot software quality. Or at least try to.
|
||||
|
||||
### 15. [PenguSpy.com][30] ###
|
||||
|
||||
[][31]
|
||||
|
||||
Before Steam started to show up on Linux, gaming was probably one of the penguin's weakness. But the website penguspy made the effort of fighting that weakness by collecting all Linux compatible games in a database with a sexy interface. Games can be sorted by categories, release dates, ratings, etc. I really hope that websites like this are not going to disappear because of Steam as it remains one of my favorites of this list.
|
||||
|
||||
### 16. [Linux Cross Reference by Free Electrons][32] ###
|
||||
|
||||
[][33]
|
||||
|
||||
Finally, for all the experts and the curious, lxr is the anagram from Linux Cross Reference, and allows us to interactively view the Linux Kernel code online. The navigation is made easy via identifiers, and you can compare the different versions of the files with a standard diff markup. The interface is sober and straight-forward, and this is just a website that perfectly illustrates the concept of open source.
|
||||
|
||||
To conclude, there are a lot more websites which deserve to be listed, and this might be a topic for a part two to this post. But this is a good start. It serves as an appetizer to what can be found online as tools for Linux users. If you have any other pages that you would like to share, following this thematic, do so in the comments. And maybe contribute to a sequel to this list.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://xmodulo.com/2014/07/useful-online-tools-linux.html
|
||||
|
||||
原文作者:[Adrien Brochard][a](I am a Linux aficionado from France. After trying multiple distributions, I finally settled for Archlinux. But I am always trying to improve my system by stacking up tips and tricks.)
|
||||
|
||||
译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://xmodulo.com/author/adrien
|
||||
[1]:http://explainshell.com/
|
||||
[2]:https://www.flickr.com/photos/xmodulo/14517716647/
|
||||
[3]:http://bashrcgenerator.com/
|
||||
[4]:https://www.flickr.com/photos/xmodulo/14703872782/
|
||||
[5]:http://vim-adventures.com/
|
||||
[6]:https://www.flickr.com/photos/xmodulo/14681149696/
|
||||
[7]:https://try.github.io/
|
||||
[8]:https://www.flickr.com/photos/xmodulo/14517499739/
|
||||
[9]:https://www.shortcutfoo.com/
|
||||
[10]:https://www.flickr.com/photos/xmodulo/14517499799/
|
||||
[11]:https://github.com/vhf/free-programming-books/blob/master/free-programming-books.md
|
||||
[12]:https://www.flickr.com/photos/xmodulo/14517499989/
|
||||
[13]:http://collabedit.com/
|
||||
[14]:https://www.flickr.com/photos/xmodulo/14681150086/
|
||||
[15]:http://cpp.sh/
|
||||
[16]:https://www.flickr.com/photos/xmodulo/14700981001/
|
||||
[17]:http://copy.sh/v24/
|
||||
[18]:https://www.flickr.com/photos/xmodulo/14517479870/
|
||||
[19]:https://github.com/copy/v86
|
||||
[20]:http://www.commandlinefu.com/
|
||||
[21]:https://www.flickr.com/photos/xmodulo/14517495938/
|
||||
[22]:http://alias.sh/
|
||||
[23]:https://www.flickr.com/photos/xmodulo/14701762124/
|
||||
[24]:http://distrowatch.com/
|
||||
[25]:https://www.flickr.com/photos/xmodulo/14681149996/
|
||||
[26]:http://www.linuxmanpages.com/
|
||||
[27]:https://www.flickr.com/photos/xmodulo/14704165765/
|
||||
[28]:http://awesomecow.com/
|
||||
[29]:https://www.flickr.com/photos/xmodulo/14704165965/
|
||||
[30]:http://www.penguspy.com/
|
||||
[31]:https://www.flickr.com/photos/xmodulo/14517495728/
|
||||
[32]:http://lxr.free-electrons.com/
|
||||
[33]:https://www.flickr.com/photos/xmodulo/14712049464/
|
@ -0,0 +1,45 @@
|
||||
diff -u: What's New in Kernel Development
|
||||
================================================================================
|
||||
Once in a while someone points out a POSIX violation in Linux. Often the answer is to fix the violation, but sometimes Linus Torvalds decides that the POSIX behavior is broken, in which case they keep the Linux behavior, but they might build an additional POSIX compatibility layer, even if that layer is slower and less efficient.
|
||||
|
||||
This time, *Michael Kerrisk* reported a POSIX violation that affected file operations. Apparently, reading and writing to files during multithreaded operations could hit race conditions and overwrite each other's changes.
|
||||
|
||||
There was some discussion over whether this was really a violation of POSIX, but ultimately, who cares? Data clobbering is bad. After Michael posted some code to reproduce the problem, the conversation focused on what to do to fix it. But Michael did make an argument that "Linux isn't consistent with UNIX since early times. (E.g., page 191 of the 1992 edition of Stevens APUE discusses the sharing of the file offset between the parent and child after fork(). Although Stevens didn't explicitly spell out the atomicity guarantee, the discussion there would be a bit nonsensical without the presumption of that guarantee.)"
|
||||
|
||||
Al Viro joined Linus in trying to come up with a fix. Linus tried introducing a simple mutex to lock files so that write operations couldn't clobber each other, and Al offered his own refinements that improved on Linus' patch.
|
||||
|
||||
At one point, Linus explained the history of the bug itself. Apparently, once upon a time the file pointer, which told the system where to write into the file, had been locked in a semaphore so only one process could do anything to it at a time. But, they took it out of the semaphore in order to accommodate device files and other non-regular files that ran into race conditions when users were barred from writing to them whenever they pleased.
|
||||
|
||||
That was what introduced the bug. At the time, it slipped through undetected, because that actual reading and writing to regular files was still handled atomically by the kernel. It was only the file pointer itself that could get out of sync. And, because high-speed threaded file operations are a pretty rare need, it took a long time for anyone to run into the problem and report it.
|
||||
|
||||
An interesting little detail is that, while Linus and Al were hunting for a fix, Al at one point complained that the approach Linus was taking wouldn't support certain architectures, including *ARM* and *PowerPC*. Linus' response was, "I doubt it's worth caring about. [...] If the ARM/PPC people end up caring, they could add the struct-return support to gcc."
|
||||
|
||||
It's always interesting to see how corner cases crop up and get dealt with. In some cases, part of the fix has to happen in the kernel, part in GCC and part elsewhere. In this particular instance, Al felt the whole thing could be done in the kernel, and he was inspired to write his own version of the patch, which Linus accepted.
|
||||
|
||||
*Andi Kleen* wanted to add low-level CPU event support to *perf*. The problem was that there could be tons of low-level events, and it varied widely from CPU to CPU. Even storing the possible events in memory for all CPUs would significantly increase the kernel's running size. So, hard-coding this information into the kernel would be problematic.
|
||||
|
||||
He pointed out that the *OProfile* tool relied on publicly available lists of these events, though he said the OProfile developers didn't always keep their lists up to date with the latest available versions.
|
||||
|
||||
To solve these issues, Andi submitted a patch that allowed perf to identify which event-list was needed for the particular CPU on the given system, and automatically download the latest version of that list from its home location. Then perf could interpret the list and analyze the events, without overburdening the kernel.
|
||||
|
||||
There was various feedback to Andi's code, mostly to do with which directory should house the event-lists, and what the filenames should be called. The behavior of the code itself seemed to get a good reception. One detail that may turn out to be more controversial than the others was Andi's decision to download the lists to a subdirectory of the user's own home directory. Andi said that otherwise users might be encouraged to download the event-lists as the root user, which would be bad security practice.
|
||||
|
||||
Sasha Levin recently posted a script to translate the *hexadecimal offsets *from stack dumps into meaningful line numbers that pointed into the kernel's source files. So something like "ffffffff811f0ec8" might be translated into "fs/proc/generic.c:445".
|
||||
|
||||
However, it turned out that Linus Torvalds was planning to remove the hex offsets from the stack dumps for exactly the reason that they were unreadable. So Sasha's code was about to go out of date.
|
||||
|
||||
They went back and forth a bit on it. At first Sasha decided to rely on data stored in the System.map file to compensate, but Linus pointed out that some people, including him, didn't keep their System.map file around. Linus recommended using /usr/bin/nm to extract the symbols from the compiled kernel files.
|
||||
|
||||
So, it seems as though Sasha's script may actually provide meaningful file and line numbers for debugging stack dumps, assuming the stack dumps provide enough information to do the calculations.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxjournal.com/content/diff-u-whats-new-kernel-development-0
|
||||
|
||||
原文作者:[Zack Brown][a]
|
||||
|
||||
译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.linuxjournal.com/user/801501
|
@ -1,204 +0,0 @@
|
||||
alim0x translating
|
||||
|
||||
The history of Android
|
||||
================================================================================
|
||||
> Follow the endless iterations from Android 0.5 to Android 4.4.
|
||||
|
||||

|
||||
Android's home screen over the years.
|
||||
Photo by Ron Amadeo
|
||||
|
||||
Android has been with us in one form or another for more than six years. During that time, we've seen an absolutely breathtaking rate of change unlike any other development cycle that has ever existed. When it came time for Google to dive in to the smartphone wars, the company took its rapid-iteration, Web-style update cycle and applied it to an operating system, and the result has been an onslaught of continual improvement. Lately, Android has even been running on a previously unheard of six-month development cycle, and that's slower than it used to be. For the first year of Android’s commercial existence, Google was putting out a new version every two-and-a-half months.
|
||||
|
||||
注:youtube视频地址开始
|
||||
<iframe width="640" height="480" frameborder="0" src="http://www.youtube-nocookie.com/embed/1FJHYqE0RDg?start=0&wmode=transparent" type="text/html" style="display:block"></iframe>
|
||||
|
||||
Google's original introduction of Android, from way back in November 2007.
|
||||
注:youtube视频地址结束
|
||||
|
||||
The rest of the industry, by comparison, moves at a snail's pace. Microsoft updates its desktop OS every three to five years, and Apple is on a yearly update cycle for OS X and iOS. Not every update is created equal, either. iOS has one major design revision in seven years, and the newest version of Windows Phone 8 looks very similar to Windows Phone 7. On Android, however, users are lucky if anything looks the same this year as it did last year. The Play Store, for instance, has had five major redesigns in five years. For Android, that's normal.
|
||||
|
||||
Looking back, Android's existence has been a blur. It's now a historically big operating system. Almost a billion total devices have been sold, and 1.5 million devices are activated per day—but how did Google get here? With this level of scale and success, you would think there would be tons of coverage of Android’s rise from zero to hero. However, there just isn’t. Android wasn’t very popular in the early days, and until Android 4.0, screenshots could only be taken with the developer kit. These two factors mean you aren’t going to find a lot of images or information out there about the early versions of Android.
|
||||
|
||||
The problem now with the lack of early coverage is that *early versions of Android are dying*. While something like Windows 1.0 will be around forever—just grab an old computer and install it—Android could be considered the first cloud-based operating system. Many features are heavily reliant on Google’s servers to function. With fewer and fewer people using old versions of Android, those servers are being shut down. And when a cloud-reliant app has its server support shut off, it will never work again—the app crashes and displays a blank screen, or it just refuses to start.
|
||||
|
||||
Thanks to this “[cloud rot][1]," an Android retrospective won’t be possible in a few years. Early versions of Android will be empty, broken husks that won't function without cloud support. While it’s easy to think of this as a ways off, it's happening right now. While writing this piece, we ran into tons of apps that no longer function because the server support has been turned off. Early clients for Google Maps and the Android Market, for instance, are no longer able to communicate with Google. They either throw an error message and crash or display blank screens. Some apps even worked one week and died the next, because Google was actively shutting down servers during our writing!
|
||||
|
||||
To prevent any more of Android's past from being lost to the annals of history, we did what needed to be done. This is 20+ versions of Android, seven devices, and lots and lots of screenshots cobbled together in one space. This is The History of Android, from the very first public builds to the newest version of KitKat.
|
||||
|
||||
注:下面一块为文章链接列表,发布后可以改为发布后的地址
|
||||
----------
|
||||
|
||||
### Table of Contents ###
|
||||
|
||||
- [Android 0.5 Milestone 3—the first public build][10]
|
||||
- [Android 0.5 Milestone 5—the land of scrapped interfaces][11]
|
||||
- [Android 0.9 Beta—hey, this looks familiar!][12]
|
||||
- [Android 1.0—introducing Google Apps and actual hardware][13]
|
||||
- [Android 1.1—the first truly incremental update][14]
|
||||
- [Android 1.5 Cupcake—a virtual keyboard opens up device design][15]
|
||||
- ----[Google Maps is the first built-in app to hit the Android Market][16]
|
||||
- [Android 1.6 Donut—CDMA support brings Android to any carrier][17]
|
||||
- [Android 2.0 Éclair—blowing up the GPS industry][18]
|
||||
- [The Nexus One—enter the Google Phone][19]
|
||||
- [Android 2.1—the discovery (and abuse) of animations][20]
|
||||
- ----[Android 2.1, update 1—the beginning of an endless war][21]
|
||||
- [Android 2.2 Froyo—faster and Flash-ier][22]
|
||||
- ----[Voice Actions—a supercomputer in your pocket][23]
|
||||
- [Android 2.3 Gingerbread—the first major UI overhaul][24]
|
||||
- [Android 3.0 Honeycomb—tablets and a design renaissance][25]
|
||||
- ----[Google Music Beta—cloud storage in lieu of a content store][26]
|
||||
- [Android 4.0 Ice Cream Sandwich—the modern era][27]
|
||||
- ----[Google Play and the return of direct-to-consumer device sales][28]
|
||||
- [Android 4.1 Jelly Bean—Google Now points toward the future][29]
|
||||
- ----[Google Play Services—fragmentation and making OS versions (nearly) obsolete][30]
|
||||
- [Android 4.2 Jelly Bean—new Nexus devices, new tablet interface][31]
|
||||
- ----[Out-of-cycle updates—who needs a new OS?][32]
|
||||
- [Android 4.3 Jelly Bean—getting wearable support out early][33]
|
||||
- [Android 4.4 KitKat—more polish; less memory usage][34]
|
||||
- [Today Android everywhere][35]
|
||||
|
||||
----------
|
||||
|
||||
### Android 0.5, Milestone 3—the first public build ###
|
||||
|
||||
Before we go diving into Android on real hardware, we're going to start with the early, early days of Android. While 1.0 was the first version to ship on hardware, there were several beta versions only released in emulator form with the SDK. The emulators were meant for development purposes only, so they don’t include any of the Google Apps, or even many core OS apps. Still, they’re our best look into the pre-release days of Android.
|
||||
|
||||

|
||||
The emulator’s default qwerty-bar layout running the Milestone 3 build.
|
||||
Photo by Ron Amadeo
|
||||
|
||||
Before whimsical candy code names and [cross-promotional deals with multinational food corporations][2], the first public release of Android was labeled "m3-rc20a"—"m3" standing for "Milestone 3." While Google may not have publicized the version number—and this build didn't even have a settings app to check—the browser user agent identifies this as "Android 0.5."
|
||||
|
||||
In November 2007, two years after Google acquired Android and five months after the launch of the iPhone, [Android was announced][3], and the first emulator was released. Back then, the OS was still getting its feet under it. It was easily dismissed as "just a BlackBerry clone." The emulator used a qwerty-bar skin with a 320x240 display, replicating an [actual prototype device][4]. The device was built by HTC, and it seems to be the device that was codenamed "Sooner" according to many early Android accounts. But the Sooner was never released to market.
|
||||
|
||||
[According to accounts][5] of the early development days of Android, when Apple finally showed off its revolutionary smartphone in January 2007, Google had to "start over" with Android—including scrapping the Sooner. Considering the Milestone 3 emulator came out almost a year after Apple's iPhone unveiling, it's surprising to see the device interface still closely mimicked the Blackberry model instead. While work had no doubt been done on the underlying system during that year of post-iPhone development, the emulator still launched with what was perceived as an "old school" interface. It didn't make a good first impression.
|
||||
|
||||
At this early stage, it seems like the Android button layout had not been finalized yet. While the first commercial Android devices would use “Home," “Back," “Menu," and “Search" as the standard set of buttons, the emulator had a blank space marked as an "X" where you would expect the search button to be. The “Sooner" hardware prototype was even stranger—it had a star symbol as the fourth button.
|
||||
|
||||

|
||||
From left to right: the home screen, an open notification, and the “apps" folder.
|
||||
Photo by Ron Amadeo
|
||||
|
||||
There was no configurable home screen or widgets, just a simple dock of icons at the bottom that could be cycled through or tapped on. While touch screen support worked for some features, Milestone 3 was primarily controlled with a five-way d-pad—an anachronism that Android still supports to this day. Even this early version of Android could do animations. Icons would grow and shrink as they entered and exited the dock’s center window.
|
||||
|
||||
There was no notification panel yet, either. Notification icons showed up in the status bar (shown above as a smiley face), and the only way to open them was to press "up" on the d-pad while on the home screen. You couldn't tap on the icon to open it, nor could you access notifications from any screen other than home. When a notification was opened, the status bar expanded slightly, and the text of the notification appeared in a speech bubble. Once you had a notification, there was no manual way to clear it—apps were responsible for clearing their own notifications.
|
||||
|
||||
App drawer duties were handled by a simple "Applications" folder on the left of the dock. Despite having a significant amount of functions, the Milestone 3 emulator was not very forthcoming with app icons. "Browser," "Contacts," and "Maps" were the only real apps here. Oddly, "recent calls" was elevated to a standalone icon. Because this was just an emulator, icons for core smartphone functionality were missing, like alarm, calendar, dialer, calculator, camera, gallery, and settings. Hardware prototypes demoed to the press had [many of these][6], and there was a suite of Google Apps up and running by this point. Sadly, there’s no way for us to look at them. They’re so old they can't connect to Google’s servers now anyway.
|
||||
|
||||

|
||||
Milestone 3's menu system in the browser, the wallpaper interface, and the volume control.
|
||||
Photo by Ron Amadeo
|
||||
|
||||
The now-deprecated menu system was up and running in Milestone 3. Hitting the hardware menu button brought up a gray list with a blue gradient highlight, complete with hardware keyboard shortcuts. In the screenshot above, you can see the menu open in the browser. Going to a second level, like the zoom menu, turned the first level of the menu oddly transparent.
|
||||
|
||||
Surprisingly, multitasking and background applications already worked in Milestone 3. Leaving an app didn't close it—apps would save state, even down to text left in a text box. This was a feature iOS wouldn’t get around to matching until the release of iOS 4 in 2010, and it really showed the difference between the two platforms. iOS was originally meant to be a closed platform with no third-party apps, so the platform robustness wasn’t a huge focus. Android was built from the ground up to be a powerful app platform, and ease of app development was one of the driving forces behind its creation.
|
||||
|
||||
Before Android, Google was already making moves into mobile with [WAP sites][7] and [J2ME flip phone apps][8], which made it acutely aware of how difficult mobile development was. According to [The Atlantic][9], Larry Page once said of the company’s mobile efforts “We had a closet full of over 100 phones, and we were building our software pretty much one device at a time.” Developers often complain about Android fragmentation now, but the problem was much, much worse before the OS came along.
|
||||
|
||||
Google’s platform strategy eventually won out, and iOS ended up slowly adding many of these app-centric features—multitasking, cross-app sharing, and an app switcher—later on.
|
||||
|
||||

|
||||
The dialer screen that pops up when you press numbers on the home screen, an incoming call, and the call conferencing interface.
|
||||
Photo by Ron Amadeo
|
||||
|
||||
Despite not having a dialer icon, Milestone 3 emulator was equipped with a way to make phone calls. Pressing anything on the keyboard would bring up the screen on the left, which was a hybrid dialer/contact search. Entering only numbers and hitting the green phone hardware button would start a phone call, and letters would search contacts. Contacts were not searchable by number, however. Even a direct hit on a phone number would not bring up a contact.
|
||||
|
||||
Incoming calls were displayed as an almost-full-screen popup with a sweet transparent background. Once inside a call, the background became dark gray, and Milestone 3 presented the user with a surprisingly advanced feature set: mute, speakerphone, hold, and call conferencing buttons. Multiple calls were presented as overlapping, semi-transparent cards, and users had options to swap or merge calls. Swapping calls triggered a nice little card shuffle animation.
|
||||
|
||||

|
||||
The contacts list, an individual contact, editing a contact, and the recent calls screen.
|
||||
Photo by Ron Amadeo
|
||||
|
||||
Contacts was a stark, black and blue list of names. Contact cards had a spot for a contact picture but couldn't assign one to the space (at least in the emulator). The only frill in this area was XMPP presence dots to the left of each name in Contacts. An always-on XMPP connection has traditionally been at the heart of Android, and that deep integration already started in Milestone 3. Android used XMPP to power a 24/7 connection to Google’s servers, powering Google Talk, cloud-to-device push messaging, and app install and uninstall messages.
|
||||
|
||||

|
||||
The browser’s fake Google homepage, the address bar, and the history interface.
|
||||
Photo by Ron Amadeo
|
||||
|
||||
The browser ran Webkit 419.3, which put it in the same era as Mac OS X 10.4's Safari 2. The homepage was not Google.com, but a hard-coded home.html file included with Android. It looked like Google.com from a thousand years ago. The browser's OS X heritage was still visible, rendering browser buttons with a glossy, Aqua-style search button.
|
||||
|
||||
The tiny BlackBerry-style screen necessitated a separate address bar, which was brought up by a "go to" option in the browser's menu. While autocomplete didn't work, the address bar live searched your history as you typed. The picture on the right was the History display, which used thumbnails to display each site. The current thumbnail was in front of the other two, and scrolling through them triggered a swooping animation. But at this early stage, the browser didn’t support multiple tabs or windows—you had the current website, and that was it.
|
||||
|
||||

|
||||
A video-screengrab-derived Google Maps Photoshop, the directions interface, and the gallery test view.
|
||||
Photo by Ron Amadeo
|
||||
|
||||
From the beginning, Google knew maps would be important on mobile, even shipping a Maps client on the Milestone 5 emulator. That version of Google Maps was the first thing we came across that died from cloud rot. The client can't load information from Google’s servers, so the map displayed as a blank, gray grid. Nothing works.
|
||||
|
||||
Luckily, for the first screenshot above, we were able to piece together an accurate representation from the Android launch video. Old Google Maps seemed fully prepared for a non-touch device, listing hardware key shortcuts along the bottom of the screen. It’s unclear if places worked, or if Maps only ran on addresses at this point.
|
||||
|
||||
Hidden behind the menu were options for search, directions, and satellite and traffic layers. The middle screenshot is of the directions UI, where you could even pick a contact address as a start or end address. Maps lacked any kind of GPS integration, however; you can't find a "my location" button anywhere.
|
||||
|
||||
While there was no proper gallery, on the right is a test view for a gallery, which was hidden in the "API Demos" app. The pictures scrolled left and right, but there was no way to open photos to a full screen view. There were no photo management options either. It was essentially a test of a scrolling picture view.
|
||||
|
||||

|
||||
The time picker and calendar, with ridiculous kerning issues, and the vertical list test, featuring Ars.
|
||||
Photo by Ron Amadeo
|
||||
|
||||
There was also no settings app, but we can look at the original time and date pickers, thanks to the API Demos. This demonstrates how raw a lot of Android was: kerning issues all over the place, a huge gap in between the minute digits, and unevenly spaced days of the week on the calendar. While the time picker let you change each digit independently, there was no way to change months or years other than moving the day block out of the current month and on to the next or previous month.
|
||||
|
||||
Keep in mind that while this may seem like dinosaur remnants from some forgotten era, this was only released six years ago. We tend to get used to the pace of technology. It's easy to look back on stuff like this and think that it was from 20 years ago. Compare this late-2007 timeframe to desktop OSes, and Microsoft was trying to sell Windows Vista to the world for almost a year, and Apple just released OS X 10.5 Leopard.
|
||||
|
||||
One last Milestone 3 detail: Google gave Ars Technica a shoutout in the Milestone 3 emulator. Opening the “API Demos" app and going to "Views," "Focus," then "Vertical" revealed a test list headlined by *this very Website*.
|
||||
|
||||

|
||||
The new emulator skin that comes with Milestone 3, RC37a, which uses a more modern, all-touchscreen style.
|
||||
|
||||
Photo by Ron Amadeo
|
||||
|
||||
Two months later, in December 2007, Google released an update for the Milestone 3 emulator that came with a much roomier 480×320 device configuration. This was tagged "m3-rc37a." The software was still identical to the BlackBerry build, just with much more screen real estate available.
|
||||
|
||||
----------
|
||||
|
||||

|
||||
|
||||
[Ron Amadeo][a] / Ron is the Reviews Editor at Ars Technica, where he specializes in Android OS and Google products. He is always on the hunt for a new gadget and loves to rip things apart to see how they work.
|
||||
|
||||
[@RonAmadeo][t]
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/
|
||||
|
||||
译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://arstechnica.com/gadgets/2014/06/how-we-found-and-installed-every-version-of-android/
|
||||
[2]:http://arstechnica.com/gadgets/2013/09/official-the-next-edition-of-android-is-kitkat-version-4-4/
|
||||
[3]:http://arstechnica.com/gadgets/2007/11/its-official-google-announces-open-source-mobile-phone-os-android/
|
||||
[4]:http://www.zdnet.com/blog/mobile-gadgeteer/mwc08-hands-on-with-a-working-google-android-device/860
|
||||
[5]:http://www.theatlantic.com/technology/archive/2013/12/the-day-google-had-to-start-over-on-android/282479/
|
||||
[6]:http://www.letsgomobile.org/en/2974/google-android/
|
||||
[7]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/%E2%80%9D
|
||||
[8]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/%E2%80%9D
|
||||
[9]:http://www.theatlantic.com/technology/archive/2013/12/the-day-google-had-to-start-over-on-android/282479/
|
||||
[10]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/1/#milestone3
|
||||
[11]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/2/#milestone5
|
||||
[12]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/3/#0.9
|
||||
[13]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/6/#1.0
|
||||
[14]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/7/#1.1
|
||||
[15]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/8/#cupcake
|
||||
[16]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/9/#Mapsmarket
|
||||
[17]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/9/#donut
|
||||
[18]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/10/#2.0eclair
|
||||
[19]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/11/#nexusone
|
||||
[20]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/12/#2.1eclair
|
||||
[21]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/13/#alloutwar
|
||||
[22]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/13/#froyo
|
||||
[23]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/14/#voiceactions
|
||||
[24]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/14/#gingerbread
|
||||
[25]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/16/#honeycomb
|
||||
[26]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/19/#music
|
||||
[27]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/19/#ics
|
||||
[28]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/21/#googleplay
|
||||
[29]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/21/#4.1jellybean
|
||||
[30]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/21/#playservices
|
||||
[31]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/22/#4.2jellybean
|
||||
[32]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/23/#outofcycle
|
||||
[33]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/24/#4.3jellybean
|
||||
[34]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/25/#kitkat
|
||||
[35]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/26/#conclusion
|
||||
[a]:http://arstechnica.com/author/ronamadeo
|
||||
[t]:https://twitter.com/RonAmadeo
|
@ -1,71 +0,0 @@
|
||||
zpl1025
|
||||
Super Pi Brothers
|
||||
================================================================================
|
||||
I don't game as much as I used to. Although I've certainly spent countless hours of my life in front of a Nintendo, SNES, or after that, playing a first-person shooter on my computer (Linux only, thank you), these days, my free time tends to go toward one of the many nongaming hobbies I've accumulated. Recently though, I found myself dusting off my Wii console just so I could play an NES and SNES game I re-purchased for it. The thing is, those games require using a somewhat strange controller, and I already have a modified SNES controller that can connect over USB. That was enough to encourage me to search for a better solution. Of course, I simply could connect three or four consoles and stack up games in my living room, but I've grown accustomed to ripping my CDs and DVDs and picking what I want to listen to or watch from a central media center. It would be nice if I didn't have to get up and find a cartridge every time I wanted to switch games. This, of course, means going with emulation, but although in the past I'd had success with a modified classic Xbox, I didn't have that hardware anymore. I figured someone must have gotten this set up on the Raspberry Pi, and sure enough, after a brief search and a few commands, I had a perfect retro-gaming arcade set up on a spare Raspberry Pi.
|
||||
|
||||
One nice thing about the Raspberry Pi project is the large number of people out there with identical hardware. For me, that meant instead of having to go through someone else's instructions, knowing I'd likely have to tweak it to suit my setup, I basically could follow someone else's guide verbatim. In my case, I found the RetroPie project, which wrapped up all of the commands you would need to install everything on a Raspberry Pi into a single large script. At the end, you have the RetroArch project fully installed and configured, which includes all of the major emulators you'd want and a centralized method to configure them, plus an EmulationStation graphical front end the Pi can boot directly into that makes it simple to navigate to the game you want, all from a gamepad.
|
||||
|
||||
### Install RetroPie ###
|
||||
|
||||
Before you install RetroPie, you will want to make sure your Raspbian distribution (the default Linux distribution for a Raspberry Pi, and the one this project assumes you will use) is completely up to date, including any new firmware images. This just means a few common `apt` commands. Although you certainly could connect a keyboard to your Raspberry Pi for this step, I've found it more convenient to `ssh` in to the device so I could copy and paste commands:
|
||||
|
||||
$ sudo apt-get update
|
||||
$ sudo apt-get -y upgrade
|
||||
|
||||
Now that the Raspberry Pi is up to date, make sure the git and dialog packages are installed, and then use git to download RetroPie:
|
||||
|
||||
|
||||
$ sudo apt-get -y install git dialog
|
||||
$ cd
|
||||
$ git clone --depth=0
|
||||
↪git://github.com/petrockblog/RetroPie-Setup.git
|
||||
|
||||
This will create a RetroPie-Setup directory containing the main setup script. Now you just need to go inside that directory and execute it:
|
||||
|
||||
$ cd RetroPie-Setup
|
||||
$ chmod +x retropie_setup.sh
|
||||
$ sudo ./retropie_setup.sh
|
||||
|
||||
This script presents you with an in-terminal menu (Figure 1) where you can choose to perform a binary installation or source installation, set up RetroPie, or perform a series of updates for the RetroPie setup script and binaries. Choose either the binary or source installation. The binary installation won't take as much time, but you may risk running older versions of some of the software. The source installation requires you to compile software, so it takes longer, but at the end, you will have the latest possible versions of everything. Personally, I opted for the binary install, knowing I always could re-run the script and go with the source install if I found any problems.
|
||||
|
||||

|
||||
|
||||
#### Figure 1. RetroPie Setup Menu ####
|
||||
|
||||
This part of the process will take quite some time on a vanilla Raspbian image, as there are a lot of different packages to download and install. Once the installation completes, go back to the main RetroPie setup screen and select SETUP from the main menu. In this submenu, you can tweak settings, such as whether to start EmulationStation from boot (recommended) and whether to enable a splash screen. In my case, I enabled both settings as I intended my device to be a standalone emulation machine. Note that if you do allow EmulationStation to start up from boot, you still can always ssh in to the machine and run the original RetroPie configuration script to change the settings.
|
||||
|
||||
### Adding ROMs ###
|
||||
|
||||
You also can add ROMs within the RetroPie setup screen. If you choose the Samba method in the menu, you then can locate a local Samba mountpoint on your network, and you can copy ROMs from that. With the USB stick method, RetroPie will generate a directory structure on a USB stick that you plug in to your Raspberry Pi that represents the different emulators it supports. After this point, you can take that USB stick to another computer and copy ROMs over to the appropriate directory, and the next time you plug it in to the Raspberry Pi, it automatically will sync the files over. Finally (and this is what I did), you just can use scp or rsync to copy over ROMs to the appropriate directory under ~/RetroPie/roms/. So for instance, NES games would be copied to ~/RetroPie/roms/nes/.
|
||||
|
||||
Once you are done with the configuration and exit out of the RetroPie setup script, you will want to reboot back into EmulationStation, but before you do, you should reconfigure the memory split on the Raspberry Pi so that it is set to 192 or 128, so run:
|
||||
|
||||
|
||||
$ sudo raspi-config
|
||||
|
||||
and go to the Advanced Settings to change the memory split setting. Now you can reboot safely.
|
||||
|
||||
### EmulationStation ###
|
||||
|
||||
Once you reboot, you should be greeted with the initial EmulationStation screen, which will prompt you to set up your joystick, gamepad or keyboard buttons so it can work with the EmulationStation menu. Note that this doesn't affect how your controllers work within games, just within the EmulationStation menu. After your controller or controllers are set up, you should be able to press right and left on your controller to switch between the different emulator menus. In my case, all of the buttons on my gamepad were going to be used within games, so I made a point to bind a key on a separate keyboard to the menu function so I could exit out of games when I was done without having to reboot the Raspberry Pi.
|
||||
|
||||
EmulationStation will show you only menus that represent emulators for which it has detected ROMs, so if you haven't copied ROMs for a particular emulator yet, you will want to do that and potentially restart your Raspberry Pi before you can see them. Also, by default, your controller will not be configured for any games, but if you press the right arrow enough times within EmulationStation, you will get to an input configuration screen that allows you to map keys on your controller to keys inside a game. The nice thing about this setup is that after you configure the keys, it will apply appropriately within each emulator.
|
||||
|
||||
That's it. From this point, you can browse through your collection of games and press whatever button you bound to Accept to start playing. At first I was concerned the Raspberry Pi wouldn't have the horsepower to play my games, but so far, it has been able to play any games I tried without a problem.
|
||||
|
||||
### Resources ###
|
||||
|
||||
The RetroPie Project: [http://blog.petrockblock.com/retropie][1]
|
||||
|
||||
RetroPie Installation Docs: [https://github.com/petrockblog/RetroPie-Setup][2]
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxjournal.com/content/super-pi-brothers
|
||||
|
||||
译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://blog.petrockblock.com/retropie
|
||||
[2]:https://github.com/petrockblog/RetroPie-Setup
|
@ -1,3 +1,4 @@
|
||||
translating by cvsher
|
||||
Command Line Tuesdays – Part Five
|
||||
================================================================================
|
||||
Yes, you’ve guessed what time it is! It’s time to rrrrrrrrummmbleeeee! And this time, we’ll learn how to work with commands. So without further ado, let’s get to business.
|
||||
@ -85,4 +86,4 @@ via: https://news.opensuse.org/2014/07/15/command-line-tuesdays-part-five/
|
||||
[17]:
|
||||
[18]:
|
||||
[19]:
|
||||
[20]:
|
||||
[20]:
|
||||
|
@ -1,56 +0,0 @@
|
||||
Love-xuan 翻译中
|
||||
Display Song Lyrics On Desktop In Ubuntu 14.04
|
||||
================================================================================
|
||||

|
||||
|
||||
Apart from free streaming music, what I like the most in [Spotify][1] is its lyrics plugin. At times I don’t understand all of the words of the song, specially if it’s rap. [TuneWiki][2] plugin comes handy in this case. While TuneWiki has plugins for Windows Media Player and iTune, what options do we have on desktop Linux?
|
||||
|
||||
If you have been using desktop Linux for sometime, you might have heard of [OSD Lyrics][3]. It is a small application that **displays song lyrics on the desktop**. You can use it with several audio players such as Rythmbox, [Banshee][4], [Clementine][5] etc.
|
||||
|
||||
### Install OSD Lyrics in Ubuntu 14.04 and Linux Mint 17 ###
|
||||
|
||||
OSD Lyrics was actively maintained through its official PPA about 2 years back. There is no development anymore. While the PPA is no longer usable, the executables (.deb) can be downloaded from the website. Though these executables are originally for Ubuntu 12.04 Precise Pangolin, these files work very well in Ubuntu 14.04 also. Let’s see **how to install OSD Lyrics in Ubuntu 14.04 and Linux Mint 17**.
|
||||
|
||||
Go to the [download page of OSD Lyrics][6]. Get the .deb files depending upon [whether you are using 32 bit or 64 bit Ubuntu][7]. You will find the files on the top.
|
||||
|
||||

|
||||
|
||||
Once downloaded, just double click on it to install it via Ubuntu Software Center. Alternatively, you can [use Gdebi to quickly install .deb packages][8].
|
||||
|
||||
### How to display lyrics in Ubuntu and Linux Mint using OSD Lyrics ###
|
||||
|
||||
Once installed, you can run OSD Lyrics from the Unity Dash:
|
||||
|
||||

|
||||
|
||||
On the first run, it will detect the existing players which are compatible with OSD Lyrics. You can set a default player which will be opened automatically each time you start OSD Lyrics.
|
||||
|
||||

|
||||
|
||||
One thing to note is that unlike [Shazam][9] etc, OSD Lyrics doesn’t find the lyrics from the audio, rather it uses the information linked to the music files such as name, album, artist etc. So make sure that you have music files from “respectable sources” or keep the file information correct and updated.
|
||||
|
||||
If it recognizes the music files, it will display the lyrics on the desktop in Karaoke format:
|
||||
|
||||

|
||||
|
||||
There are plenty of configuration options available with OSD Lyrics. You can change the font, size behavior of the lyrics display among many other things.
|
||||
|
||||
How do you like OSD Lyrics? Do you use some other Lyrics plugin? Do share your views with rest of us.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://itsfoss.com/display-song-lyrics-desktop-ubuntu-1404/
|
||||
|
||||
译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://itsfoss.com/install-spotify-ubuntu-1404/
|
||||
[2]:http://www.tunewiki.com/
|
||||
[3]:https://code.google.com/p/osd-lyrics
|
||||
[4]:http://banshee.fm/
|
||||
[5]:https://www.clementine-player.org/
|
||||
[6]:https://code.google.com/p/osd-lyrics/downloads/list
|
||||
[7]:http://itsfoss.com/how-to-know-ubuntu-unity-version/
|
||||
[8]:http://itsfoss.com/install-deb-files-easily-and-quickly-in-ubuntu-12-10-quick-tip/
|
||||
[9]:http://www.shazam.com/
|
@ -1,108 +0,0 @@
|
||||
[bazz2 so handsome]
|
||||
Linux Kernel Testing and Debugging
|
||||
================================================================================
|
||||
### Compiling and Installing Stable Kernel ###
|
||||
|
||||
If you cloned the stable git:
|
||||
|
||||
cd linux-stable
|
||||
|
||||
git checkout linux-3.x.y
|
||||
|
||||
or if you are using the tar-ball:
|
||||
|
||||
cd linux-3.x.y
|
||||
|
||||
Starting out with the distribution configuration file is the safest approach for the very first kernel install on any system. You can do so by copying the configuration for your current kernel from /boot.
|
||||
|
||||
cp /boot/config-3.x.y-z-generic .config
|
||||
|
||||
Run the following command to generate kernel configuration file based on the current configuration. You will be prompted to tune the configuration to enable new features and drivers that have been added since the Ubuntu snapshot the kernel from the mainline.
|
||||
|
||||
make oldconfig
|
||||
|
||||
Once this step is complete, it is time to compile the kernel:
|
||||
|
||||
make all
|
||||
|
||||
Once the kernel compilation is complete, install the new kernel:
|
||||
|
||||
sudo "make modules_install install"
|
||||
|
||||
The above command will install the new kernel and run update-grub to add the new kernel to the grub menu. Now it is time to reboot the system to boot the newly installed kernel. Before we do that, let's save logs from the current kernel to compare and look for regressions and new errors, if any:
|
||||
|
||||
dmesg -t > dmesg_current
|
||||
|
||||
dmesg -t -k > dmesg_kernel
|
||||
|
||||
dmesg -t -l emerg > dmesg_current_emerg
|
||||
|
||||
dmesg -t -l alert > dmesg_current_alert
|
||||
|
||||
dmesg -t -l crit > dmesg_current_alert
|
||||
|
||||
dmesg -t -l err > dmesg_current_err
|
||||
|
||||
dmesg -t -l warn > dmesg_current_warn
|
||||
|
||||
In general, dmesg should be clean with no emerg, alert, crit, and err level messages. If you see any of these, it might indicate some hardware and/or kernel problem.
|
||||
|
||||
A couple more important steps before trying out the newly installed kernel. There is no guarantee that the new kernel will boot. As a safe guard, please ensure that there is at least one good kernel installed. Change the default grub configuration file /etc/default/grub:
|
||||
|
||||
Enable printing early boot messages to vga using earlyprink=vga kernel boot option:
|
||||
|
||||
GRUB_CMDLINE_LINUX="earlyprink=vga"
|
||||
|
||||
Increase the GRUB_TIMEOUT value to 10 - 15 seconds, so grub pauses in menu allowing time to choose kernel to be boot:
|
||||
|
||||
Uncomment GRUB_TIMEOUT and set it to 10: GRUB_TIMEOUT=10
|
||||
Comment out GRUB_HIDDEN_TIMEOUT and GRUB_HIDDEN_TIMEOUT_QUIET
|
||||
|
||||
Run update-grub to update the grun configuration in /boot
|
||||
|
||||
sudo update-grub
|
||||
|
||||
Now restart the system. Once the new kernel comes up, compare the saved dmesg from the old kernel with the new one and see if there are any regressions. If the newly installed kernel fails to boot, you will have to boot a good kernel and then investigate why the new kernel failed to boot.
|
||||
|
||||
### Living in The Fast Lane ###
|
||||
|
||||
If you like driving in the fast lane and have the need for speed, clone the mainline kernel git or better yet the linux-next git. Booting and testing mainline and linux-next helps find and fix problems before the kernel is released.
|
||||
|
||||
Mainline:
|
||||
|
||||
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
|
||||
|
||||
linux-next:
|
||||
|
||||
git clone git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
|
||||
|
||||
Compiling and installing mainline and linux-next kernels is exactly same as the stable kernel. Please follow the instructions from previous sections.
|
||||
|
||||
### Applying Patches ###
|
||||
|
||||
Linux kernel patch files are text files that contain the differences from the original source to the new. Each Linux patch is a self-contained change to the code that stands on its own, unless explicitly made part of a patch series. New patches are applied as follows:
|
||||
|
||||
patch -p1 < file.patch
|
||||
|
||||
git apply --index file.patch
|
||||
|
||||
Either one will work, however, when a patch adds a new file and if it is applied using the patch command, git doesn't know about the new files and they will be treated as untracked files. "git diff" will not show the files in its output and "git status" will show the files as untracked.
|
||||
|
||||
For the most part, there are no issues with building and installing kernels, however, "git reset --hard" will not remove the newly added files and a subsequent git pull will fail. A couple of ways to tell git about the new files and have it track them, there by avoiding the above issues:
|
||||
|
||||
|
||||
Option 1:
|
||||
|
||||
> When a patch that adds new files is applied using the patch command, run "git clean" to remove untracked files, before running "git reset --hard". For example, git clean -dfx will force remove untracked directories and files, ignoring any standard ignore rules specified in the .gitignore file. You could include -q option to run git clean in quiet mode, if you don't care to know which files are removed.
|
||||
|
||||
Option 2:
|
||||
|
||||
> An alternate approach is to tell git to track the newly added files by running "git apply --index file.patch". This will result in git applying the patch and adding the result to the index. Once this is done, git diff will show the newly added files in its output and git status will report the status correctly tagging these files as newly created files.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxjournal.com/content/linux-kernel-testing-and-debugging?page=0,1
|
||||
|
||||
译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
@ -1,125 +0,0 @@
|
||||
Linux Kernel Testing and Debugging
|
||||
================================================================================
|
||||
### Basic Testing ###
|
||||
|
||||
Once a new kernel is installed, the next step is try to boot it and see what happens. Once the new kernel is up and running, check dmesg for any regressions. Run a few usage tests:
|
||||
|
||||
- Is networking (wifi or wired) functional?
|
||||
- Does ssh work?
|
||||
- Run rsync of a large file over ssh
|
||||
- Run git clone and git pull
|
||||
- Start web browser
|
||||
- Read email
|
||||
- Download files: ftp, wget etc.
|
||||
- Play audio/video files
|
||||
- Connect new USB devices mouse, usb stick etc.
|
||||
|
||||
|
||||
### Examine Kernel Logs ###
|
||||
|
||||
Checking for regressions in dmesg is a good way to identify problems, if any, introduced by the new code. As a general rule, there should be no new crit, alert, and emerg level messages in dmesg. There should be no new err level messages. Pay close attention to any new warn level messages as well. lease note that new warn messages aren't as bad. New code at times adds new warning messages which are just warnings.
|
||||
|
||||
- dmesg -t -l emerg
|
||||
- dmesg -t -l crit
|
||||
- dmesg -t -l alert
|
||||
- dmesg -t -l err
|
||||
- dmesg -t -l warn
|
||||
- dmesg -t -k
|
||||
- dmesg -t
|
||||
|
||||
The following script runs the above dmesg commands and saves the output for comparing with older release dmesg files. It then runs diff commands against the older release dmesg files. Old release is a required input parameter. If one is not supplied, it will simply generate dmesg files and exit. Regressions indicate newly introduced bugs and/or bugs that escaped patch testing and integration testing in linux git trees prior to including the patch in a release. Are there any stack traces resulting from WARN_ON in the dmesg? These are serious problems that require further investigation.
|
||||
|
||||
- [**dmesg regression check script**][1]
|
||||
|
||||
### Stress Testing ###
|
||||
|
||||
Running 3 to 4 kernel compiles in parallel is a good overall stress test. Download a few Linux kernel gits, stable, linux-next etc.. Run timed compiles in parallel. Compare times with old runs of this test for regressions in performance. Longer compile times could be indicators of performance regression in one of the kernel modules. Performance problems are hard to debug. First step is to detect them. Running several compiles in parallel is a good overall stress test that could be used as a performance regression test and overall kernel regression test, as it exercises various kernel modules like memory, file-systems, dma, and drivers.
|
||||
|
||||
time make all
|
||||
|
||||
### Kernel Testing Tools ###
|
||||
|
||||
There are several tests under tools/testing that are included in the Linux kernel git. There is a good mix of automated and functional tests.
|
||||
ktest suite
|
||||
|
||||
ktest is an automated test suite that can test builds, installs, and kernel boots. It can also run cross-compile tests provided the system has cross-compilers installed. ktest depends on flex and bison tools. Please consult the ktest documentation in tools/testing/ktest for details on how to run ktest. It is left to the reader as a self-study. A few resources that go into detail on how to run ktest:
|
||||
|
||||
- [**ktest-eLinux.org**][2]
|
||||
|
||||
### tools/testing/selftests ###
|
||||
|
||||
Let's start with selftests. Kernel sources include a set of self-tests which test various sub-systems. As of this writing, breakpoints, cpu-hotplug, efivarfs, ipc, kcmp, memory-hotplug, mqueue, net, powerpc, ptrace, rcutorture, timers, and vm sub-systems have self-tests. In addition to these, user memory self-tests test user memory to kernel memory copies via test_user_copy module. The following is on how to run these self-tests:
|
||||
|
||||
Compile tests:
|
||||
|
||||
make -C tools/testing/selftests
|
||||
|
||||
Run all tests: (running some tests needs root access, login as root and run)
|
||||
|
||||
make -C tools/testing/selftests run_tests
|
||||
|
||||
Run only tests targeted for a single sub-system:
|
||||
|
||||
make -C tools/testing/selftests TARGETS=vm run_tests
|
||||
|
||||
### tools/testing/fault-injection ###
|
||||
|
||||
Another test suite under tools/testing is fault-injection. failcmd.sh script runs a command to inject slab and page allocation failures. This type of testing helps validate how well kernel can recover from faults. This test should be run as root. The following is a quick summary of currently implemented fault injection capabilities. The list keeps growing as new fault injection capabilities get added. Please refer to the Documentation/fault-injection/fault-injection.txt for the latest.
|
||||
|
||||
failslab (default option)
|
||||
|
||||
injects slab allocation failures. kmalloc(), kmem_cache_alloc(), ...
|
||||
|
||||
fail_page_alloc
|
||||
|
||||
injects page allocation failures. alloc_pages(), get_free_pages(), ...
|
||||
|
||||
fail_make_request
|
||||
|
||||
injects disk IO errors on devices permitted by setting, /sys/block//make-it-fail or /sys/block///make-it-fail. (generic_make_request())
|
||||
|
||||
fail_mmc_request
|
||||
|
||||
injects MMC data errors on devices permitted by setting debugfs entries under /sys/kernel/debug/mmc0/fail_mmc_request
|
||||
|
||||
The capabilities and behavior of fault-injection can be configured. fault-inject-debugfs kernel module provides some debugfs entries for runtime. Ability to specify the error probability rate for faults, the interval between fault injection are just a couple of examples of the configuration choices fault-injection test supports. Please refer to the Documentation/fault-injection/fault-injection.txt for details. Boot options can be used to inject faults during early boot before debugfs becomes available. The following boot options are supported:
|
||||
|
||||
- failslab=
|
||||
- fail_page_alloc=
|
||||
- fail_make_request=
|
||||
- mmc_core.fail_request=[interval],[probability],[space],[times]
|
||||
|
||||
The fault-injection infrastructure provides interfaces to add new fault-injection capabilities. The following is a brief outline of the steps involved in adding a new capability. Please refer to the above mentioned document for details:
|
||||
|
||||
define the fault attributes using DECLARE_FAULT_INJECTION(name);
|
||||
|
||||
> Please see the definition of struct fault_attr in fault-inject.h for details.
|
||||
|
||||
add a boot option to configure fault attributes
|
||||
|
||||
> This can be done using helper function setup_fault_attr(attr, str); Adding a boot option is necessary to enable the fault injection capability during early boot time.
|
||||
|
||||
add debugfs entries
|
||||
|
||||
> Use the helper function fault_create_debugfs_attr(name, parent, attr); to add new debugfs entries for this new capability.
|
||||
|
||||
add module parameters
|
||||
|
||||
> Adding module parameters to configure the fault attributes is a good option, when the scope of the new fault capability is limited to a single kernel module.
|
||||
|
||||
add a hook to insert failures
|
||||
|
||||
> should_fail(attr, size); Upon should_fail() returning true, client code should inject a failure.
|
||||
|
||||
Applications using this fault-injection infrastructure can target a specific kernel module to inject slab and page allocation failures to limit the testing scope if need be.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxjournal.com/content/linux-kernel-testing-and-debugging?page=0,2
|
||||
|
||||
译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://linuxdriverproject.org/mediawiki/index.php/Dmesg_regression_check_script
|
||||
[2]:http://elinux.org/Ktest#Git_Bisect_type
|
@ -1,143 +0,0 @@
|
||||
Linux Kernel Testing and Debugging
|
||||
================================================================================
|
||||
### Auto Testing Tools ###
|
||||
|
||||
There are several automated testing tools and test infrastructures that you can chose from based on your specific testing needs. This section is intended to be a brief overview and not a detailed guide on how to use each of these.
|
||||
|
||||
#### [AuToTest][1] ####
|
||||
|
||||
> Autotest is a framework for fully automated testing. It is designed primarily to test the Linux kernel, though it is useful for many other functions such as qualifying new hardware. It is an open source project under the GPL. Autotest works in server-client mode. Autotest server can be configured to initiate, run, and monitor tests on several target systems running the autotest client. Autotest client can be run manually on a target system or via the server. Using this framework, new test cases can be added. Please [Autotest White Paper][2] for more information.
|
||||
|
||||
#### Linaro Automated Validation Architecture ####
|
||||
|
||||
> LAVA-Test Automated Testing Framework is a framework to help with automated installation and executions of tests. For example, running LTP in LAVA framework can be accomplished with a few commands. Running lava-test tool to install LTP will automatically install any dependencies, download the source for the recent release of LTP, compile it, and install the binaries in a self-contained area so that they can be removed easily when user runs uninstall. At this point running lava-test run with ltp test option will execute LTP tests and save results with an unique id that includes the test name, time/date stamp of the test execution. These results are saved for future reference. This is a good feature to find regressions, if any, between test runs. Summary of commands to run as an example:
|
||||
|
||||
Show a list of tests supported by lava-test:
|
||||
|
||||
lava-test list-tests
|
||||
|
||||
Install a new test:
|
||||
|
||||
lava-test install ltp
|
||||
|
||||
Run the test:
|
||||
|
||||
lava-test run ltp
|
||||
|
||||
Check results:
|
||||
|
||||
lava-test results show ltp-timestamp.0
|
||||
|
||||
Remove tests:
|
||||
|
||||
lava-test uninstall ltp
|
||||
|
||||
### Kernel Debug Features ###
|
||||
|
||||
Linux kernel includes several debugging features such as kmemcheck and kmemleak.
|
||||
|
||||
#### kmemcheck ####
|
||||
|
||||
> kmemcheck is a dynamic checking tool that detects and warns about some uses of uninitialized memory. It serves the same function as Valgrind's memcheck which is a userspace memory checker, where as kmemcheck checks kernel memory. CONFIG_KMEMCHECK kernel configuration option enables the kmemcheck debugging feature. Please read the Documentation/kmemcheck.txt for information on how to configure and use this feature, and how to interpret the reported results.
|
||||
|
||||
#### kmemleak ####
|
||||
|
||||
> kmemleak can be used to detect possible kernel memory leaks in a way similar to a tracing garbage collector. The difference between the tracing garbage collector and kmemleak is that the latter doesn't free orphan objects, instead it reports them in /sys/kernel/debug/kmemleak. A similar method of reporting and not freeing is used by the Valgrind's memcheck --leak-check to detect memory leaks in user-space applications. CONFIG_DEBUG_KMEMLEAK kernel configuration option enables the kmemleak debugging feature. Please read the Documentation/kmemleak.txt for information on how to configure and use this feature, and how to interpret the reported results.
|
||||
|
||||
### Kernel Debug Interfaces ###
|
||||
|
||||
Linux kernel has support for static and dynamic debugging via configuration options, debug APIs, interfaces, and frameworks. Let's learn more about each of these starting with the static options.
|
||||
|
||||
### Debug Configuration Options - Static ###
|
||||
|
||||
Linux kernel core and several Linux kernel modules, if not all, include kernel configuration options to debug. Several of these static debug options can be enabled at compile time. Debug messages are logged in dmesg buffer.
|
||||
|
||||
### Debug APIs ###
|
||||
|
||||
An example of Debug APIs is DMA-debug which is desiged for debugging driver dma api usage errors. When enabled, it keeps track of dma mappings per device, detects unmap attempts on addresses that aren't mapped, and missing mapping error checks in driver code after dma map attempts. CONFIG_HAVE_DMA_API_DEBUG and CONFIG_DMA_API_DEBUG kernel configuration options enable this feature on architectures that provide the support. With the CONFIG_DMA_API_DEBUG option enabled, the Debug-dma interfaces are called from DMA API. For example, when a driver calls dma_map_page() to map a dma buffer, dma_map_page() will call debug_dma_map_page() to start tracking the buffer until it gets released via dma_unmap_page() at a later time. For further reading on [Detecting silent data corruptions and memory leaks using DMA Debug API ][3]
|
||||
|
||||
### Dynamic Debug ###
|
||||
|
||||
Dynamic debug feature allows dynamically enabling/disabling pr_debug(), dev_dbg(), print_hex_dump_debug(), print_hex_dump_bytes() per-callsite. What this means is, a specific debug message can be enabled at run-time to learn more about a problem that is observed. This is great because, there is no need to re-compile the kernel with debug options enabled, then install the new kernel, only to find that the problem is no longer reproduciable. Once CONFIG_DYNAMIC_DEBUG is enabled in the kernel, dynamic debug feature enables a fine grain enable/disable of debug messages. /sys/kernel/debug/dynamic_debug/control is used to specify which pr_* messages are enabled. A quick summary of how to enable dynamic debug per call level, per module level is as follows:
|
||||
|
||||
Enable pr_debug() in kernel/power/suspend.c at line 340:
|
||||
|
||||
echo 'file suspend.c line 340 +p' > /sys/kernel/debug/dynamic_debug/control
|
||||
|
||||
Enable dynamic debug feature in a module at module load time
|
||||
|
||||
> Pass in dyndbg="plmft" to modprobe at the time module is being loaded.
|
||||
|
||||
Enable dynamic debug feature in a module to persist across reboots
|
||||
|
||||
> create or change modname.conf file in /etc/modprobe.d/ to add dyndbg="plmft" option. However for drivers that get loaded from initramfs, changing modname.conf is insufficient for the dynamic debug feature to persist across reboot. For such drivers, change grub to pass in module.dyndbg="+plmft" as a module option as a kernel boot parameter.
|
||||
|
||||
dynamic_debug.verbose=1 kernel boot option increases the verbosity of dynamic debug messages. Please consult the Documentation/dynamic-debug-howto.txt for more information on this feature.
|
||||
|
||||
### Tracepoints ###
|
||||
|
||||
So far we talked about various static and dynamic debug features. Both static debug options and debug hooks such as the DMA Debug API are either enabled or disabled at compile time. Both of these options require a new kernel to be compiled and installed. The dynamic debug feature eliminates the need for a recompile, however the debug code is compiled in with a conditional variable that controls whether or not the debug message gets printed. It helps that the messages can be enabled at run-time, however, the conditional code is executed at run-time to determine if the message needs to be printed. Tracepoint code on the otherhand can be triggered to be included at run-time only when the tracepoint is enabled. In other words, tracepoint code is different in that, it is inactive unless it is enabled. When it is enabled, code is modified to include the tracepoint code. It doesn't add any conditional logic overhead to determine whether or not to generate a trace message.
|
||||
|
||||
Please read [Tips on how to implement good tracepoint code][4] for more insight into how tracing works.
|
||||
|
||||
### Tracepoint mechanism ###
|
||||
|
||||
The tracepoints use jump-labels which is a code modification of a branch.
|
||||
|
||||
When it is disabled, the code path looks like:
|
||||
|
||||
[ code ]
|
||||
nop
|
||||
back:
|
||||
[ code ]
|
||||
return;
|
||||
tracepoint:
|
||||
[ tracepoint code ]
|
||||
jmp back;
|
||||
|
||||
When it is enabled, the code path looks like: (notice how the tracepoint code appears in the code path below)
|
||||
|
||||
[ code ]
|
||||
jmp tracepoint
|
||||
back:
|
||||
[ code ]
|
||||
return;
|
||||
tracepoint:
|
||||
[ tracepoint code ]
|
||||
jmp back;
|
||||
|
||||
### Linux PM Sub-system Testing ###
|
||||
|
||||
Using debug, dynamic debug, and tracing, let's run a few suspend to disk PM tests. When system is suspended, kernel creates hibernation image on disk, suspends and uses the image to restore the systerm state at resume time.
|
||||
|
||||
Enable logging time it takes to suspend and resume each device
|
||||
|
||||
echo 1 > /sys/power/pm_print_times
|
||||
|
||||
Run suspend to disk test in reboot mode
|
||||
|
||||
echo reboot > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
Run suspend to disk test in shutdown mode - same as reboot, except requires powering on to resume
|
||||
|
||||
echo shutdown > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
Run suspend to disk test in platform mode - more extensive and tests BIOS suspend and resume paths e.g: ACPI methods will be invoked. This is the recommended mode for hibernation so BIOS is informed and aware of suspend/resume action.
|
||||
|
||||
echo platform > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via:http://www.linuxjournal.com/content/linux-kernel-testing-and-debugging?page=0,3
|
||||
|
||||
译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://autotest.github.io/
|
||||
[2]:https://github.com/autotest/autotest/wiki/WhitePaper
|
||||
[3]:http://events.linuxfoundation.org/sites/events/files/slides/Shuah_Khan_dma_map_error.pdf
|
||||
[4]:http://www.linuxjournal.com/content/july-2013-linux-kernel-news
|
@ -1,90 +0,0 @@
|
||||
Linux Kernel Testing and Debugging
|
||||
================================================================================
|
||||
### Linux PM Sub-system Testing in Simulation Mode ###
|
||||
|
||||
The Linux PM sub-system provides five PM test modes to test hibernation in a simulated mode. These modes allow exercising the hibernation code in various layers of the kernel without actually suspending the system. This is useful when there is a concern that suspend might not work on a specific platform and help detect errors in a simulation similar to simulating flying a plane, so to speak.
|
||||
|
||||
freezer - test the freezing of processes
|
||||
|
||||
echo freezer > /sys/power/pm_test
|
||||
echo platform > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
devices - test the freezing of processes and suspending of devices
|
||||
|
||||
echo devices > /sys/power/pm_test
|
||||
echo platform > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
platform - test the freezing of processes, suspending of devices and platform global control methods(*)
|
||||
|
||||
echo platform > /sys/power/pm_test
|
||||
echo platform > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
processors - test the freezing of processes, suspending of devices, platform global control methods(*) and the disabling of non-boot CPUs
|
||||
|
||||
echo processors > /sys/power/pm_test
|
||||
echo platform > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
core - test the freezing of processes, suspending of devices, platform global control methods, the disabling of non-boot CPUs and suspending of platform/system devices. Note: this mode is tested on ACPI systems.
|
||||
|
||||
echo core > /sys/power/pm_test
|
||||
echo platform > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
### Linux PM Sub-system Trace Events ###
|
||||
|
||||
PM sub-system supports several tracepoints and trace events that can be enabled to trigger during run-time. I will give an overview on how to enable couple of these trace events and where to find the trace information they generate:
|
||||
|
||||
Enabling PM events at run-time:
|
||||
|
||||
cd /sys/kernel/debug/tracing/events/power
|
||||
echo 1 > cpu_frequency/enable
|
||||
cat /sys/kernel/debug/tracing/set_event
|
||||
less /sys/kernel/debug/tracing/trace
|
||||
|
||||
Enabling events at boot-time kernel trace parameter with a kernel boot option:
|
||||
|
||||
trace_event=cpu_frequency
|
||||
|
||||
For more information on Linux PM testing, please consult the Documentation/power/basic-pm-debugging.txt and other documents in the same directory.
|
||||
|
||||
### git bisect ###
|
||||
|
||||
git bisect is an invaluable and powerful tool to isolate an offending commit. I will go over very basic git bisect steps.
|
||||
|
||||
This is how the process works:
|
||||
|
||||
git bisect start
|
||||
git bisect bad # Current version is bad
|
||||
git bisect good v3.14-rc6 # last good version
|
||||
|
||||
Once, one bad and one good version are specified, git bisect will start bisecting by pulling in commits between the good version and the bad. Once a set of commits are pulled in, compile the kernel, install, test, and tag the version good or bad. This process repeats until the selected commits are tested and tagged as good or bad. There can be several kernel versions to test. When the last version is tested, git bisect will flag a commit that is bad. The following useful git-bisect command can aid in using git-bisect process:
|
||||
|
||||
See step by step bisect progress
|
||||
|
||||
git bisect log
|
||||
|
||||
Reset git bisect can be used in case of mistakes in tagging, save git log output and replay prior to reset
|
||||
|
||||
git bisect reset
|
||||
|
||||
Replay a git-bisect log
|
||||
|
||||
git bisect replay git_log_output
|
||||
|
||||
git bisect can be run on a section of kernel source tree if the problem is clearly in that area. For example, when debugging a problem in radeon driver, running git bisect on drivers/drm/radeon will limit the scope of bisect to just the commits to drivers/drm/radeon driver.
|
||||
|
||||
Start git bisect on a section of a kernel tree
|
||||
|
||||
git bisect start drivers/drm/radeon
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxjournal.com/content/linux-kernel-testing-and-debugging?page=0,4
|
||||
|
||||
译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
@ -1,138 +0,0 @@
|
||||
Linux Kernel Testing and Debugging
|
||||
================================================================================
|
||||
### Linux Kernel Patch Testing ###
|
||||
|
||||
Are you try your hands on writing a kernel patch? This section will go over how to test a new patch before sending it to the Linux mailing list. Further more, we will also talk about how to send it.
|
||||
Once the code is ready, compile it. Save the make output to a file to see if the new code introduced any new warnings. Address warnings, if any. Once the code compiles cleanly, install the compiled kernel and boot test. If it boots successfully, make sure there are no new errors in the dmesg, comparing it with the previous kernel dmesg. Run a few usage and stress tests. Please refer to the testing content we discussed earlier in this paper. If the patch is for fixing a specific bug, make sure the patch indeed fixes the bug. If the patch fixes the problem, make sure, other module regression tests pass. Identify regression tests for the patched module and run them. When a patch touches other architectures, cross-compile build testing is recommended. Please check the following in the source git as a reference to identify tests.
|
||||
|
||||
- linux_git/Documentation
|
||||
- linux_git/tools/testing
|
||||
- Cross-compiling reference: [Cross-compiling Linux Kernels on x86_64: A tutorial on How to Get Started][1]
|
||||
|
||||
Once you are satisfied with the patch testing, it is time to commit the change and generate the patch. Make sure the commit message describes the change made very clearly. It is important that the maintainer and other developers can understand what this change is all about. Once patch is ready, run scripts/checkpatch.pl on the generated patch. Address checkpatch errors and/or warnings, if any. Regenerate and repeat until the patch passes the checkpatch test. Unless the checkpatch errors are minor whitespace type, re-test the patch. Apply the patch to another instance of the kernel git to make sure patch applies cleanly.
|
||||
|
||||
Now you are ready to send the patch. Please run the scripts/get_maintainer.pl to identify whom the patch should be sent to. Please remember that the patch needs to be sent as a plain text, not as an attachment. Please make sure your email client can send plain text messages. Email the patch to yourself to test your client settings. Run checkpatch and apply the received patch. If these two steps pass, then you are ready to send the patch to the Linux Kernel Mailing List. git send-email is the safest way to send patches to avoid email client complications. Please make sure your .gitconfig includes sendemail with a valid smtpserver. Please consult git manpage for details.
|
||||
|
||||
Please refer to the following documentation in the kernel sources for rules and guidelines on sending patches:
|
||||
|
||||
- linux_git/Documentation/applying-patches.txt
|
||||
- linux_git/Documentation/SubmitChecklist
|
||||
- linux_git/Documentation/SubmittingDrivers
|
||||
- linux_git/Documentation/SubmittingPatches
|
||||
- linux_git/Documentation/stable_kernel_rules.txt
|
||||
- linux_git/Documentation/stable_api_nonsense.txt
|
||||
|
||||
The following is a list of additional testing guides and resources:
|
||||
|
||||
- [USB Testing on Linux][2]
|
||||
- [Linux Kernel Tester's Guide Chapter2][3]
|
||||
- [Linux Kernel Tester's Guide][4]
|
||||
- [Testing resources at eLinux.org][5]
|
||||
- [eLinux Debugging Portal][6]
|
||||
|
||||
### Kernel test suites and projects ###
|
||||
|
||||
In addition to the testing resources we discussed so far, there are projects both open source and initiated by hardware vendors that are worth a mention. Each of these projects focus on specific areas of the kernel and in some cases a specific space such as, embedded or enterprise where the kernel is used. We will look at a few in this section.
|
||||
|
||||
[Linux Test Project][7] (LTP) test suite is a collection of tools to test reliability, robustness, and stability of Linux kernel and related features. This test suite can be customized by adding new tests and the LTP project welcomes contributions. runltp script tests the following sub-systems by default:
|
||||
|
||||
- filesystem stress tests
|
||||
- disk I/O tests
|
||||
- memory management stress tests
|
||||
- ipc stress
|
||||
- scheduler tests
|
||||
- commands functional verification tests
|
||||
- system call functional verification tests
|
||||
|
||||
[**LTP-DDT**][8] is an LTP based test application wth a reduced focus to test embedded device drivers.
|
||||
|
||||
[**Linux Driver Verification**][9] project's goals are to improve the quality of Linux device drivers, develop an integrated platform for device drivers verification, and adopt latest research outcome to enhance quality of verification tools.
|
||||
|
||||
### Compliance Testing ###
|
||||
|
||||
If you ever had to port applications from one Unix variant to another, you would understand the importance of the [Linux Standard Base (LSB)][10] and LSB compliance test suite. The LSB is a Linux Foundation workgroup created to reduce the costs of supporting Linux platform, by reducing the differences between various Linux distributions and ensuring application portability between distributions. If anything, divergence in the Unix world taught us that it is vital to avoid it in the Linux world. This is exactly the reason why you can take an rpm convert it to deb and install and run it, and how sweet is that.
|
||||
|
||||
### Static Analysis and Tools ###
|
||||
|
||||
Static analysis tools analyze the code without executing it, hence the name static analysis. There are a couple of static analysis tools that are sepcifically written for analyzing the Linux kernel code base. Sparse is a static type-checking program written specifically for the Linux kernel, by Linus Torvalds. Sparse is a semantic parser. It creates a sematic prase tree to validate C semantics. It performs lazy type evaluation. Kernel build system has support for sparse and provides a make option to compile the kernel with sparse checking enabled.
|
||||
|
||||
Run sparse on all kernel C files that would get re-compiled:
|
||||
|
||||
make C=1 allmodconfig
|
||||
|
||||
Run sparse on all kernel C files even when they don't need a re-compile:
|
||||
|
||||
make C=2 allmodconfig
|
||||
|
||||
Sparse resources:
|
||||
|
||||
- [Sparse Archive][11]
|
||||
- [Sparse How To][12]
|
||||
|
||||
Smatch analyzes source to detect programming logic errors. It can detect logic errors such as, attempts to unlock already unlocked spinlock. It is actively used to detect logic errors in the Linux kernel sources.
|
||||
|
||||
Run smatch on Linux kernel:
|
||||
|
||||
make CHECK="~/path/to/smatch/smatch -p=kernel" C=1 bzImage modules | tee warns.txt
|
||||
|
||||
Please follow instructions on how to get smatch from smatch git repo and compile. Smatch is work in progress, instructions keep changing.
|
||||
|
||||
- [**Smatch**][12]
|
||||
|
||||
So what do we do about all of these semantic and logic problems found by Sparse and Smatch? Some of these problems are isolated to a routine and/or a module which can be fixed easily. However, some of these semantic issues are global in nature due to cut and paste of code. In some cases when interfaces get obsoleted or changed slightly, a mass change to update several source files becomes necessary. This is where Coccinelle comes in to rescue. Coccinelle is a program matching and transformation engine which provides the language SmPL (Semantic Patch Language) for specifying desired matches and transformations in C code. Coccinelle was initially targeted towards performing collateral evolutions in Linux.
|
||||
|
||||
For example, foo(int) interfaces changes to foo(int, char \*) with an optional second input parameter which can be a null. All usages of foo() will need to be updated to the new convention, which will be a very laborious task. Using Cocinelle, this task becomes easier with a script that looks for all instances of foo(parameter1) and replacing them with foo(parameter1, NULL). Once this task is done, all instances of foo() can be examined to see if passing in NULL value for parameter2 is a good assumption. For more information on Cocinelle and how it is used in fixing problems in various projects including the Linux kernel, please refer to the project page: [**Cocinelle**][13]
|
||||
|
||||
### References ###
|
||||
|
||||
We covered a lot of ground in this paper. I leave you with a few references for further reading on the topics we discussed.
|
||||
|
||||
- [KernelHacking][14]
|
||||
- [kernel Documentation][15]
|
||||
- [Linux Device Drivers, Third Edition][16]
|
||||
- [Dynamic Event Tracing in Linux Kernel][17]
|
||||
- [Kernel Testing: Tool and Techniques][18]
|
||||
|
||||
### Acknowledgements ###
|
||||
|
||||
I would like to thank Khalid Aziz, Oracle for his review, proof reading, and valuable suggestions for improvement. My special thanks to Mauro Chehab, Samsung and Guy Martin, Samsung for their review and feedback at various stages of writing this paper. I would like to extend my thanks to Greg Kroah-Hartman, Linux Foundation for his review. My special thanks to Ibrahim Haddad, Samsung for his support and encouragement without which, I would probably have never set out to write this paper in the first place.
|
||||
|
||||
----------
|
||||
|
||||

|
||||
|
||||
Author:[Shuah Khan][a]
|
||||
|
||||
Shuah Khan is a Senior Linux Kernel Developer at Samsung's Open Source Group.
|
||||
She is a Linux Kernel Contributor who focuses on IOMMU, DMA, Linux Power
|
||||
Management, and PCIe, in addition to helping with stable release kernel
|
||||
maintenance testing and bug fixes. Shuah has several years of Unix kernel
|
||||
development experience. She has also contributed to OpenHPI, and LLDP projects.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxjournal.com/content/linux-kernel-testing-and-debugging?page=0,5
|
||||
|
||||
译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://events.linuxfoundation.org/sites/events/files/slides/Shuah_Khan_cross_compile_linux.pdf
|
||||
[2]:http://www.linux-usb.org/usbtest/
|
||||
[3]:http://kernelnewbies.org/Linux_Kernel_Tester%27s_Guide_Chapter2
|
||||
[4]:http://www.kerneltravel.net/downloads/tester_guide.pdf
|
||||
[5]:http://elinux.org/Test_Systems
|
||||
[6]:http://elinux.org/Debugging_Portal
|
||||
[7]:http://ltp.sourceforge.net/documentation/how-to/ltp.php
|
||||
[8]:http://processors.wiki.ti.com/index.php/LTP-DDT
|
||||
[9]:http://linuxtesting.org/project/ldv
|
||||
[10]:http://www.linuxfoundation.org/collaborate/workgroups/lsb
|
||||
[11]:http://codemonkey.org.uk/projects/git-snapshots/sparse/
|
||||
[12]:http://smatch.sourceforge.net/
|
||||
[13]:http://coccinelle.lip6.fr/
|
||||
[14]:http://kernelnewbies.org/KernelHacking
|
||||
[15]:http://kernelnewbies.org/Documents
|
||||
[16]:http://lwn.net/Kernel/LDD3/
|
||||
[17]:http://events.linuxfoundation.org/slides/lfcs2010_hiramatsu.pdf
|
||||
[18]:http://events.linuxfoundation.org/images/stories/slides/elc2013_porter.pdf
|
||||
[a]:http://www.linuxjournal.com/users/shuah-khan
|
@ -1,57 +0,0 @@
|
||||
Need Microsoft Office on Ubuntu? Install the Official Web Apps
|
||||
================================================================================
|
||||

|
||||
|
||||
**It’s not everyone’s cup of joe, but Microsoft Office and its family of finicky file formats are a mainstay of many working and educational environments — for better or worse.**
|
||||
|
||||
Reading, editing and saving to these proprietary formats is sort of possible on Ubuntu using the [LibreOffice suite of apps][1]. Writer, Calc and Impress all boast varying degrees of Microsoft Office file interoperability, though in my own real world experience (thankfully brief) it’s not perfect.
|
||||
|
||||
For the times you can’t go without using Office file formats (as ideological as most of us are about open standards, we shouldn’t be blind to practicalities) but you’ve no desire to purchase a full MS Office licence to run through WINE, the official set of Microsoft Office Online web apps are the perfect answer.
|
||||
|
||||
### Install Microsoft Office Online Apps in Ubuntu ###
|
||||
|
||||
To make accessing these online versions easier from the Ubuntu desktop, the ‘Linux Web Apps project’ has created a small, unofficial installer that adds web app shortcuts (“glorified bookmarks”) to your application launcher.
|
||||
|
||||

|
||||
|
||||
These are nothing more fancy than shortcuts to the respective Microsoft web app that opens in your default system browser. Sound nifty? You get application shortcuts for:
|
||||
|
||||
- Word
|
||||
- Excel
|
||||
- PowerPoint
|
||||
- Outlook
|
||||
- OneDrive
|
||||
- Calendar
|
||||
- OneNote
|
||||
- People
|
||||
|
||||
The package also creates a new application category housing the links, letting you view the shortcuts separately from other applications as well as under the regular “office” apps directory.
|
||||
|
||||
Are these essential? Not really. Are they useful? Depends on your workflow. But is it nice to have the option? For sure.
|
||||
|
||||
You can grab the .deb installer containing the links from the link below and is suitable for Ubuntu 14.04 LTS and later.
|
||||
|
||||
- [Download Microsoft Office Web Apps (.deb)][2]
|
||||
|
||||
### Other Alternatives ###
|
||||
|
||||

|
||||
|
||||
A similar alternative is to [install the official Office Online web applications from the Chrome Web Store][3], then add the app launcher to Linux. This will still create launchable shortcuts for them in the Dash, but ones that can be set to open in their own window frames and forgo the need to install any third-party packages.
|
||||
|
||||
Similarly, Google recently folded in full Office capabilities (thanks to its purchase of QuickOffice) [into its own Docs, Slides and Sheets applications][4], retired the QuickOffice Android application and rebranded the companion Chrome extension.
|
||||
|
||||
If you’re a heavy Google Drive/Docs user, this may be the better solution for you.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.omgubuntu.co.uk/2014/07/run-microsoft-office-web-apps-ubuntu-desktop
|
||||
|
||||
译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.libreoffice.org/
|
||||
[2]:https://docs.google.com/file/d/0ByQnaVw7riBQMjNCUFh4ZlM4Y0E/edit?usp=sharing
|
||||
[3]:http://www.omgchrome.com/microsoft-brings-office-online-chrome-web-store/
|
||||
[4]:http://www.omgchrome.com/quickoffice-chrome-extension-gets-name-change/
|
@ -1,89 +0,0 @@
|
||||
How to configure chroot SFTP in Linux
|
||||
================================================================================
|
||||
There are **some scenario** where system admin wants only few users should be allowed to transfer files to Linux boxes not ssh. We can achieve this by setting up **SFTP** in chroot environment.
|
||||
|
||||
### Background of SFTP & chroot : ###
|
||||
|
||||
**SFTP** stands for **SSH File Transfer protocol or Secure File Transfer Protocol**. SFTP provides file access, file transfer, and file management functionalities over any reliable data stream. When we configure SFTP in chroot environment , then only allowed users will be limited to their **home directory** , or we can say allowed users will be in jail like environment where they can’t even change their directory.
|
||||
|
||||
In article we will configure **Chroot SFTP in RHEL 6.X** & **CentOS 6.X**. We have one user ‘**Jack**’ , this users will be allowed to transfer files on linux box but no ssh access.
|
||||
|
||||
### Step:1 Create a group ###
|
||||
|
||||
[root@localhost ~]# groupadd sftp_users
|
||||
|
||||
### Step:2 Assign the secondary group(sftp_users) to the user. ###
|
||||
|
||||
If the users doesn’t exist on system , use below command :
|
||||
|
||||
[root@localhost ~]# useradd -G sftp_users -s /sbin/nologin jack
|
||||
[root@localhost ~]# passwd jack
|
||||
|
||||
For **already existing users** , use below usermod command :
|
||||
|
||||
[root@localhost ~]# usermod –G sftp_users -s /sbin/nologin jack
|
||||
|
||||
**Note** : if you want to change the **default home directory** of users , then use ‘**-d**’ option in useradd and usermod command and set the **correct permissions**.
|
||||
|
||||
### Step:3 Now edit the config file “/etc/ssh/sshd_config” ###
|
||||
|
||||
# vi /etc/ssh/sshd_config
|
||||
#comment out the below line and add a line like below
|
||||
#Subsystem sftp /usr/libexec/openssh/sftp-server
|
||||
Subsystem sftp internal-sftp
|
||||
|
||||
# add Below lines at the end of file
|
||||
Match Group sftp_users
|
||||
X11Forwarding no
|
||||
AllowTcpForwarding no
|
||||
ChrootDirectory %h
|
||||
ForceCommand internal-sftp
|
||||
|
||||
#### Where : ####
|
||||
|
||||
- **Match Group sftp_users** – This indicates that the following lines will be matched only for users who belong to group sftp_users
|
||||
- **ChrootDirectory %h** – This is the path(default user's home directory) that will be used for chroot after the user is authenticated. So, for Jack, this will be /home/jack.
|
||||
- **ForceCommand internal-sftp** – This forces the execution of the internal-sftp and ignores any command that are mentioned in the ~/.ssh/rc file.
|
||||
|
||||
Restart the ssh service
|
||||
|
||||
# service sshd restart
|
||||
|
||||
### Step:4 Set the Permissions : ###
|
||||
|
||||
[root@localhost ~]# chmod 755 /home/jack
|
||||
[root@localhost ~]# chown root /home/jack
|
||||
[root@localhost ~]# chgrp -R sftp_users /home/jack
|
||||
|
||||
If You want that jack user should be allowed to upload files , then create a upload folder with the below permissions ,
|
||||
|
||||
[root@localhost jack]# mkdir /home/jack/upload
|
||||
[root@localhost jack]# chown jack. /home/jack upload/
|
||||
|
||||
### Step:5 Now try to access the system & do testing ###
|
||||
|
||||
Try to access the system via ssh
|
||||
|
||||

|
||||
|
||||
As You can see below jack user is logged in via SFTP and can't change the directory becuase of chroot environment.
|
||||
|
||||

|
||||
|
||||
Now do the **uploading and downloading** testing as shown below:
|
||||
|
||||

|
||||
|
||||
As we can see above , both uploading & downloading working fine for jack user.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxtechi.com/configure-chroot-sftp-in-linux/
|
||||
|
||||
原文作者:[Pradeep Kumar][a]
|
||||
|
||||
译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.linuxtechi.com/author/pradeep/
|
@ -0,0 +1,167 @@
|
||||
Camicri Cube: An Offline And Portable Package Management System
|
||||
================================================================================
|
||||

|
||||
|
||||
As we all know, we must have an Internet connection in our System for downloading and installing applications using synaptic manager or software center. But, what if you don’t have an Internet connection, or the Internet connection is dead slow? This will be definitely a headache when installing packages using software center in your Linux desktop. Instead, you can manually download the applications from their official site, and install them. But, most of the Linux users doesn’t aware about the required dependencies for the applications that they wanted to install. What could you do if you have such situation? Leave all the worries now. Today, we introduce an awesome offline package manager called **Camicri Cube**.
|
||||
|
||||
You can use this package manager on any Internet connected system, download the list of packages you want to install, bring them back to your offline computer, and Install them. Sounds good? Yes, It is! Cube is a package manager like Synaptic and Ubuntu Software Center, but a portable one. It can be used and run in any platform (Windows, Apt-Based Linux Distributions), online and offline, in flashdrive or any removable devices. The main goal of this project is to enable the offline Linux users to download and install Linux applications easily.
|
||||
|
||||
Cube will gather complete details of your offline computer such as OS details, installed applications and more. Then, just the copy the cube application using any USB thumb drive, and use it on the other Internet connected system, and download the list of applications you want. After downloading all required packages, head back to your original computer and start installing them. Cube is developed and maintained by **Jake Capangpangan**. It is written using C++, and bundled with all necessary packages. So, you don’t have to install any extra software to use it.
|
||||
|
||||
### Installation ###
|
||||
|
||||
Now, let us download and install Cube on the Offline system which doesn’t have the Internet connection. Download Cube latest version either from the [official Launchpad Page][1] or [Sourceforge site][2]. Make sure you have downloaded the correct version depending upon your offline computer architecture. As I use 64 bit system, I downloaded the 64bit version.
|
||||
|
||||
wget http://sourceforge.net/projects/camicricube/files/Camicri%20Cube%201.0.9/cube-1.0.9.2_64bit.zip/
|
||||
|
||||
Extract the zip file and move it to your home directory or anywhere you want:
|
||||
|
||||
unzip cube-1.0.9.2_64bit.zip
|
||||
|
||||
That’s it. Now it’s time to know how to use it.
|
||||
|
||||
### Usage ###
|
||||
|
||||
Here, I will be using Two Ubuntu systems. The original (Offline – no Internet) is running with **Ubuntu 14.04**, and the Internet connected system is running with **Lubuntu 14.04** Desktop.
|
||||
|
||||
#### Steps to do On Offline system: ####
|
||||
|
||||
From the offline system, Go to the extracted Cube folder. You’ll find an executable called “cube-linux”. Double click it, and Click Execute. If it not executable, set the executable permission as shown below.
|
||||
|
||||
sudo chmod -R +x cube/
|
||||
|
||||
Then, go to the cube directory,
|
||||
|
||||
cd cube/
|
||||
|
||||
And run the following command to run it.
|
||||
|
||||
./cube-linux
|
||||
|
||||
Enter the Project name (Ex.sk) and click **Create**. As I mentioned above, this will create a new project with complete details of your system such as OS details, list of installed applications, list of repositories etc.
|
||||
|
||||

|
||||
|
||||
As you know, our system is an offline computer that means I don’t have Internet connection. So I skipped the Update Repositories process by clicking on the **Cancel** button. We will update the repositories later on an Internet connected system.
|
||||
|
||||

|
||||
|
||||
Again, I clicked **No** to skip updating the offline computer, because we don’t have Internet connection.
|
||||
|
||||

|
||||
|
||||
That’s it. Now the new project has been created. The new project will be saved on your main cube folder. Go to the Cube folder, and you’ll find a folder called Projects. This folder will hold all the essential details of your offline system.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
Now, close the cube application, and copy the entire main **cube** folder to any flash drive, and go to the Internet connected system.
|
||||
|
||||
#### Steps to do on an Internet connected system: ####
|
||||
|
||||
The following steps needs to be done on the Internet connected system. In our case, Its **Lubuntu 14.04**.
|
||||
|
||||
Make the cube folder executable as we did in the original computer.
|
||||
|
||||
sudo chmod -R +x cube/
|
||||
|
||||
Now, double click the file cube-linux to open it or you can launch it from the Terminal as shown below.
|
||||
|
||||
cd cube/
|
||||
./cube-linux
|
||||
|
||||
You will see that your project is now listed in the “Open Existing Projects” part of the window. Select your project
|
||||
|
||||

|
||||
|
||||
Then, the cube will ask if this is your project’s original computer. It’s not my original (Offline) computer, so I clicked **No**.
|
||||
|
||||

|
||||
|
||||
You’ll be asked if you want to update your repositories. Click **Ok** to update the repositories.
|
||||
|
||||

|
||||
|
||||
Next, we have to update all outdated packages/applications. Click on the “**Mark All updates**” button from the Cube’s tool bar. After that, click “**Download all marked**” button to update all updated packages/applications. As you see in the below screenshot, there are 302 packages needs to be updated in my case. Then, Click **Ok** to continue to download marked packages.
|
||||
|
||||

|
||||
|
||||
Now, Cube will start to download all marked packages.
|
||||
|
||||

|
||||
|
||||
We have completed updating repositories and packages. Now, you can download a new package if you want to install it on your offline system.
|
||||
|
||||
#### Downloading New Applications ####
|
||||
|
||||
For example, here I am going to download the **apache2** Package. Enter the name of the package in the **search** box, and hit Search button. The Cube will fetch the details of the application that you are looking for. Hit the “**Download this package now**” button, and click **Ok** to start download.
|
||||
|
||||

|
||||
|
||||
Cube will start downloading the apache2 package with all its dependencies.
|
||||
|
||||

|
||||
|
||||
If you want to search and download more packages, simply Click the button “**Mark this package**”, and do search the required packages. You can mark as many as packages you want to install on your original computer. Once you marked all packages, hit the “**Download all marked**” button on the top tool bar to start downloading them.
|
||||
|
||||
After you completed updating repositories, outdated packages, and downloading new applications, close the Cube application. Then, copy the entire Cube folder to any flash drive or external hdd, and go back to your Offline system.
|
||||
|
||||
#### Steps to do on Offline computer: ####
|
||||
|
||||
Copy the Cube folder back to your Offline system on any place you want. Go to the cube folder and double click **cube-linux** file to launch Cube application.
|
||||
|
||||
Or, you can launch it from Terminal as shown below.
|
||||
|
||||
cd cube/
|
||||
./cube-linux
|
||||
|
||||
Select your project and click Open.
|
||||
|
||||

|
||||
|
||||
Then a dialog will ask you to update your system, please click “Yes” especially when you download new repositories, because this will transfer all new repositories to your computer.
|
||||
|
||||

|
||||
|
||||
You’ll see that the repositories will be updated on your offline computer without Internet connection. Because, we already have updated the repositories on the Internet connected system. Seems cool, isn’t it?
|
||||
|
||||
After updating the repositories, let us install all downloaded packages. Click the “Mark All Downloaded” button to select all downloaded packages, and click “Install All Marked” to install all of them from the Cube main Tool bar. The Cube application will automatically open a new Terminal, and install all packages.
|
||||
|
||||

|
||||
|
||||
If you encountered with dependency problems, go to **Cube Menu -> Packages -> Install packages with complete dependencies** to install all packages.
|
||||
|
||||
If you want to install a specific package, Navigate to the List Packages, click the “Downloaded” button, and all downloaded packages will be listed.
|
||||
|
||||

|
||||
|
||||
Then, double click the desired package, and click “Install this”, or “Mark this” if you want to install it later.
|
||||
|
||||

|
||||
|
||||
By this way, you can download the required packages from any Internet connected system, and then you can install them in your offline computer without Internet connection.
|
||||
|
||||
### Conclusion ###
|
||||
|
||||
This is one of the best and useful tool ever I have used. But during testing this tool in my Ubuntu 14.04 testbox, I faced many dependency problems, and the Cube application is suddenly closed often. Also, I could use this tool only on a fresh Ubuntu 14.04 offline system without any issues. Hope all these issues wouldn’t happen on previous versions of Ubuntu. Apart from these minor issues, this tool does this job as advertised and worked like a charm.
|
||||
|
||||
Cheers!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.unixmen.com/camicri-cube-offline-portable-package-management-system/
|
||||
|
||||
原文作者:
|
||||
|
||||

|
||||
|
||||
[SK][a](Senthilkumar, aka SK, is a Linux enthusiast, FOSS Supporter & Linux Consultant from Tamilnadu, India. A passionate and dynamic person, aims to deliver quality content to IT professionals and loves very much to write and explore new things about Linux, Open Source, Computers and Internet.)
|
||||
|
||||
译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.unixmen.com/author/sk/
|
||||
[1]:https://launchpad.net/camicricube
|
||||
[2]:http://sourceforge.net/projects/camicricube/
|
@ -0,0 +1,141 @@
|
||||
Install Google Docs on Linux with Grive Tools
|
||||
================================================================================
|
||||
Google Drive is two years old now and Google’s cloud storage solution seems to be still going strong thanks to its integration with Google Docs and Gmail. There’s one thing still missing though: a lack of an official Linux client. Apparently Google has had one floating around their offices for a while now, however it’s not seen the light of day on any Linux system.
|
||||
|
||||
Thankfully, there is an alternative solution using Grive Tools. We’ve covered Grive once before when it was in its infancy, but it’s received a fair few upgrades since then thanks to Grive Tools and is now compatible with Fedora and OpenSUSE to cover a better selection of distros. Over the course of this tutorial, we’ll show you how to set up Grive Tools and get it syncing files to and from Google Drive on a regular basis, so your work is always perfectly backed up. With the death of Ubuntu One, it’s a great alternative to Canonical’s own cloud storage solution.
|
||||
|
||||

|
||||
Accesss your backed up Linux files from anywhere with an internet connection by making use of the Drive connection
|
||||
|
||||
### Resources ###
|
||||
|
||||
A Google account
|
||||
|
||||
- [Grive Tools][1]
|
||||
|
||||
### Step-by-step ###
|
||||
|
||||
#### Step 01 Ubuntu repository ####
|
||||
|
||||
Grive Tools is not included in Ubuntu or Ubuntu-based distros yet, so you’ll need to add a third-party repository to access it. Add this with:
|
||||
|
||||
$ sudo add-apt-repository ppa:thefanclub/grive-tools
|
||||
|
||||
Follow this up with the usual sudo apt-get update before we continue.
|
||||
|
||||
#### Step 02 Ubuntu install ####
|
||||
|
||||
After the apt-get update, Grive Tools will appear in the software centre. If you want to go there and install it you can, however as we already have a terminal open we might as well use:
|
||||
|
||||
$ sudo apt-get install grive-tools
|
||||
|
||||
#### Step 03 Fedora dependencies ####
|
||||
|
||||
You’ll need to install some specific dependencies for OpenSUSE, Fedora and other RHEL-based distros. In Fedora specifically, open a terminal and install them with:
|
||||
|
||||
$ sudo yum install json-c json-c-devel qt-devel boost-devel openssl-devel libxslt libcurl libcurl-devel
|
||||
|
||||
The same packages will need to be installed on the other distros.
|
||||
|
||||
#### Step 04 Grive package ####
|
||||
|
||||
Grive is not in the repositories of any of
|
||||
these distros, however binaries exist if you won’t want to build it from source. Go to RPMSEEK.com and search for Grive; look out for the version for your distro and download it.
|
||||
|
||||
#### Step 05 Install the download ####
|
||||
|
||||
Once downloaded, install the package; you can either do it graphical or install with:
|
||||
|
||||
$ sudo yum install grive-tools-1.9.noarch.rpm
|
||||
|
||||
After that, go to the Resources link for Grive Tools and locate the Fedora package on the website: download this binary and install it alongside Grive.
|
||||
|
||||
#### Step 06 Start the setup ####
|
||||
|
||||
The method to actually get Grive and Grive Tools working on both systems is basically the same, so we’ll cover both at once while mentioning any extras that need to be done for a specific distro. The first thing you’ll need to do is look for Grive Setup in your list of programs.
|
||||
|
||||
#### Step 07 Log into your account ####
|
||||
|
||||
If you haven’t already created a Google account, you’ll need to get one sorted now before continuing. Otherwise, click Next to bring up a browser that will point you towards Google and ask you to log in. Make sure you’re logged in to the correct email address before continuing.
|
||||
|
||||
#### Step 08 Connect your account ####
|
||||
|
||||
You’ll be asked if the specific info it can look at is okay – you’ll need to confirm to continue, otherwise it can’t download or sync your Drive data. It will then give you a code to paste into a pop-up that launched when the browser opened.
|
||||
|
||||
#### Step 09 Code input ####
|
||||
|
||||
Press Next for Grive to accept the code. It will automatically open up a new Google Drive window and show your files being synced straight to your PC. This may take a while depending on how much you have stored on your account.
|
||||
|
||||
#### Step 10 Desktop notifications ####
|
||||
|
||||
Once the sync is complete, search again for Grive in your programs and look for Google Drive Indicator. Click on this and it will automatically launch a Dropbox-style toolbar notifier for Google Drive. This is also similar to the kind of notifier on desktops with an official client.
|
||||
|
||||
#### Step 11 Access Google Drive ####
|
||||
|
||||
You can quick access the contents of your Google Drive by finding the app of the same name in your program list. It links straight to your folder for ease of access, so you can add it to favourites or quick bar if you wish. There’s also an option to open it from the notifier.
|
||||
|
||||
#### Step 12 Drive options ####
|
||||
|
||||
You can access syncing options from the indicator to make sure Grive works as you want it to. Access them by clicking on the toolbar icon and select preferences. A couple of options you’d probably want checked are ‘Start Drive when computer turns on’, and ‘On screen notifications’.
|
||||
|
||||
#### Step 13 Auto-syncing ####
|
||||
|
||||
Unlike the official clients, you cannot select which folders do and do not get synced on your client. Depending on how you plan to use it, you can turn on Auto-sync so that everything is synced up and down at all times, or you can turn it off and sync manually when everything is ready.
|
||||
|
||||
#### Step 14 Large file tip ####
|
||||
|
||||
Google Drive – not just Grive – always seems to have issues with uploading larger files. We suggest splitting them up into smaller files using split on a compressed file to make them all a specific size. You can do it in a terminal with:
|
||||
|
||||
split -b 500m file.mp4 newfilename
|
||||
|
||||
#### Step 15 File types ####
|
||||
|
||||
One of the major things you may have noticed is which documents have and have not been downloaded by Grive. On the official clients, links will be added that can let you jump straight to pure Google Docs files, while files that are actually DOC, ODF or PDF will be downloaded outright to the system. Only the latter files are downloaded with Grive as they’re purely stored in the cloud on Drive. The upside is they’re properly stored locally and will still sync between the cloud and other systems.
|
||||
|
||||
#### Step 16 Location ####
|
||||
|
||||
Very simply, the Google Drive folder is kept in the home folder under Google Drive. If you’re using standard GNOME it’s actually opening the files in the GNOME file manager; for some reason it also does that in Unity and any non-GNOME desktop environment.
|
||||
|
||||
#### Step 17 Backup to Grive ####
|
||||
|
||||
One of the benefits of cloud storage for files is that the storage itself is off-site and difficult to lose. This makes it ideal for backing up other important documents and settings. The simplest and quickest way to do this is to periodically copy a file over to the Drive folder and watch it upload.
|
||||
|
||||
#### Step 18 Better backup ####
|
||||
|
||||
This is not the most efficient way to backup such files though; fortunately Linux comes with many tools to back up data that also includes backup scheduling thanks to cron. We’ll be using luckyBackup for this: find it in your package manager and install it.
|
||||
|
||||
#### Step 19 Set up the backup ####
|
||||
|
||||
Click Add to create a new task and name it however you wish. Keep the Type setting to ‘Backup Source inside Destination’, choose your Source and finally set the Destination as the Google Drive folder. Click OK to save it, followed by the checkbox next to the task to activate it.
|
||||
|
||||
#### Step 20 First backup ####
|
||||
|
||||
Click Run at the top to do the first backup operation. It will print out a verbose list of the files and operations and will inform you once it’s finished, along with any errors that occurred along the way. If you have automatic sync on, it will start uploading the backed up files to Drive.
|
||||
|
||||
#### Step 21 Timed backup ####
|
||||
|
||||
Click Done to return to the main menu. Click Profile followed by Schedule to bring up the scheduling dialog. The schedules are done by profiles, which can all contain a number of different backup tasks. Click Add to start creating a schedule for our Drive backup.
|
||||
|
||||
#### Step 22 To schedule ####
|
||||
|
||||
The schedule creates a cron job, so you can set it to occur on specific days of the week or specific months of the year and at what time the backup should occur. You can have it do so every hour at a specific minute past the hour if you need it to back up so frequently.
|
||||
|
||||
#### Step 23 Reverse backup ####
|
||||
|
||||
Google Drive helpfully keeps a record of past versions of files on its servers; however they do not extend forever. If you’re backing up or saving to the cloud you may want to consider creating a backup of the Drive files to your PC or network as well.
|
||||
|
||||
#### Step 24 Driven ####
|
||||
|
||||
While there are no official tools for Linux just yet, Grive and Grive Tools at least enable you to emulate what they should be relatively well. Look out for updates to Drive and Grive Tools to see if any new functions would work well for you.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxuser.co.uk/tutorials/install-google-docs-on-linux-with-grive-tools
|
||||
|
||||
原文作者:Rob Zwetsloot
|
||||
|
||||
译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.thefanclub.co.za/
|
615
translated/talk/20140723 110 Fun Open Source Games and Apps.md
Normal file
615
translated/talk/20140723 110 Fun Open Source Games and Apps.md
Normal file
@ -0,0 +1,615 @@
|
||||
translating by disylee 20140701
|
||||
110 Fun Open Source Games and Apps
|
||||
110款开源游戏和应用
|
||||
================================================================================
|
||||
|
||||
再次庆祝,伴随着一系列最好的开源游戏,我们庆祝这个夏天的到来。我们已经更新了[去年的列表][1]把新开发的添加进来,这样更好地把一些不再积极开发之中的旧游戏从列表中剔除。你会发现街机、平板、休闲、拼图、益智和第一人称射击游戏,音乐,赛车,角色扮演,冒险,模拟器和战略游戏等,它们也像一些应用程序一样并非真正的游戏但是仍然非常有趣。
|
||||
|
||||
今年,比以往有更多的开源游戏可用于移动设备上,主要是安卓设备上。希望未来几年,这种趋势一直保存下去。
|
||||
|
||||
请注意,这个列表是不按排名的。这些应用程序被放在目录中并按照字母顺序放在每个类别里。
|
||||
|
||||
如果你想建议明年游戏列表的版本,请随时注意在下面的评论区提出。
|
||||
|
||||
### Arcade Games ###
|
||||
>
|
||||
|
||||
#### 1. [安迪的超级大公园][2] ####
|
||||
|
||||
当你乘坐过山车时,你需要抓到气球并且避开障碍物。里面有25个等级,加上18个你可以解锁的等级以获取高分。可使用操作系统:Windows,Linux或者安卓。
|
||||
|
||||
#### 2. [Armagetron Advanced][3] ####
|
||||
|
||||
一个3D电子争霸克隆,这个游戏激起你去指导一个光周期直到你撞上一堵墙。它支持单机模式和16人参与的网络模式。可使用操作系统:Windows,Linux,OS X或者安卓。
|
||||
|
||||
#### 3. 塔克大战夺取旗帜 ####
|
||||
|
||||
众所周知的“战场夺旗”,“BZflag是一个流行的在线坦克游戏。自1992年开发以来,它具备3D图形化特征,多种游戏模式和多人竞争比赛等特征。可使用操作系统:Windows,Linux,OS X或者安卓。
|
||||
|
||||
#### 4. [纵向卷轴射击游戏] [5] ####
|
||||
|
||||
别让这个名字就把你愚弄了,这和Chromium browser浏览器无关。这是一款快节奏、顶部滚动射击的游戏,其难度在于设置,而且这个游戏不回超过15分钟。可使用操作系统:Windows,Linux。
|
||||
|
||||
#### 5. [埃德加的传说][6] ####
|
||||
|
||||
埃德加的传说是一个旧派的游戏平台,主角必须通过克服障碍和敌人来完成他的任务。它包含了很多不同的武器、很多不同等级。适用操作系统:Windows,Linux和OS X。
|
||||
|
||||
#### 6. [JVGS][7] ####
|
||||
|
||||
|
||||
取代非常详细的图形,JVGS只要一个最低限度方法使其中画中人物跨越景观,看起来就像使用铅笔的手工绘制。在这个不寻常的游戏中,主角是一个失去记忆的诗人。适用操作系统:Windows,Linux和OS X。
|
||||
|
||||
#### 7. [失重力][8] ####
|
||||
|
||||
这是基于空间的街机射击游戏,玩家需要在8002年份中,他们必须完成各种各样的任务。但是,这个游戏不是免费的,游戏也可以在安卓和IOS中使用。适用操作系统有:Windows,Linux和OS X。
|
||||
|
||||
#### 8. [Open Sonic][9] ####
|
||||
|
||||
|
||||
基于刺猬索尼克游戏,Open Sonic提供了合作的游戏,用户可以同时控制3个字符。其中只有2个级别可以在原始游戏中使用,但是很多游戏粉丝们已经建立了mods提供额外的发挥。适用操作系统:Windows, Linux和OS X.
|
||||
|
||||
#### 9. [Powermanga][10] ####
|
||||
|
||||
类是于旧街机游戏Galaga,Powermanga是一款2D,顶部滚动的空间射击游戏。它拥有超过41个等级,并能够在旧的硬件上运行。适用操作系统:Linux。
|
||||
|
||||
#### 10. [Scorched3D][11] ####
|
||||
|
||||
Scorched3D是一款现代的基于DOS的游戏Scorched星球,最引人瞩目的是它出色的图形。你可以适用单机模式或者连接到许多网络服务器使用多玩家行动。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 11. [音速机器人大爆炸][12] ####
|
||||
|
||||
另一款声波风格的平台游戏,SRB2是一种采用了Doom引擎内置的3D平台游戏。它包括了2个不同的游戏角色和超过20个等级。适用操作系统:Linux。
|
||||
|
||||
#### 12. [SuperTux][13] ####
|
||||
|
||||
SuperTux很像旧款的马里奥兄弟游戏,但是是以Linux的小企鹅成为主人公。这是一个2D横向卷轴的平台游戏,有9个不同的敌人和26个等级可以玩。适用操作系统:Windows, Linux和OS X.
|
||||
|
||||
#### 13. [Those Funny Funguloids][14] ####
|
||||
|
||||
这是一款挑战玩家在太空手机蘑菇的游戏。该网站称:“在此之前从未听说过手机蘑菇。至少不是在外太空。真的,它更是一种生活而不是一个游戏。适用操作系统:Windows和Linux.
|
||||
|
||||
|
||||
#### 14. [Teeworlds][15] ####
|
||||
|
||||
这个在线游戏把自己描述成一个“复古的多人射击游戏”。它是一个横向卷轴的2D游戏,支持多达16名选手和几个不同的游戏模式。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 15. [X摩托][16] ####
|
||||
|
||||
在这个游戏中,你骑着一辆摩托车通过一个侧面滚动的风景区,同时收集草莓并避免高低不平的“破坏者”。这看起来是比较难!适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 16. [Yo Frankie!][17] ####
|
||||
|
||||
通过混合开源3D动画工具创造的,呦羊羊特征角色是从开源电影Peach来的。玩家必须指导羊羊,糖滑翔机或者Momo,一只猴子,来回或者环绕并通过一个非常细致的3D环境中的障碍物。适用操作系统: Windows, Linux和 OS X.
|
||||
|
||||
### 棋类游戏 ###
|
||||
|
||||
#### 17. [Domination][18] ####
|
||||
|
||||
基于Java支配带来的棋牌游戏可能会对你的PC或者安卓设备造成风险。最新版本中可以让你实时与你Google+的朋友通过谷歌游戏服务发挥多人游戏服务功能。适用操作系统:Windows, Linux, OS X和 Android.
|
||||
|
||||
#### 18. [GNU 十五子棋][19] ####
|
||||
|
||||
|
||||
这个“世界级”十五子棋引擎让你每一次都更好地挑战它,并且它会分析你的战况来帮助你玩得更好。这个借口是非常好的图形化定制。适用操作系统:Windows,Linux和OS X。
|
||||
|
||||
#### 19. [3D 拼字游戏][20] ####
|
||||
|
||||
随着拼字游戏的变化,你可以选择自己的电路板——经典版本。Superscrabble是一款3D的拼字游戏,您可以通过它定制你自己的电路板。玩家可以对战AI或者连到在线服务器上进行多人游戏。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 20. [PokerTH][21] ####
|
||||
|
||||
这是一个高质量的德州扑克牌应用程序,拥有优秀的、可定制的界面。想要在线玩或者看看你和其它对手的排名,只需要在Poker-Heroes.com在线注册。适用操作系统:Windows,Linux和OS X,Android系统。
|
||||
|
||||
#### 21. [PySolFC][22] ####
|
||||
|
||||
你知道吗,接龙有1000多种类型?这个强大的集合功能“使用52张国际格局甲板模式,比赛为78张Tarock夹板,8和10套装备,Ganjiafa游戏,花札游戏,棋牌游戏、麻将游戏和原始十六进制为基础的平台”。适用操作系统: Windows, Linux和 OS X.
|
||||
|
||||
|
||||
### 休闲益智游戏 ###
|
||||
|
||||
#### 22. [2048][23] ####
|
||||
|
||||
|
||||
这个简单而上瘾的益智游戏,玩家围绕着方格里喜欢的数字组合。当你将组合数字累加到2048时,你就赢了。适用操作系统:在线,IOS或者安卓。
|
||||
|
||||
|
||||
#### 23. [台球][24] ####
|
||||
|
||||
台球游戏的主要目的是当你不能够拥有一张可用的台球桌时,给现实中能够让你练习球杆运动。它拥有一个好看的3D界面,同时也可以在不具备良好图形界面的2D系统中运行。适用操作系统:Linux。
|
||||
|
||||
|
||||
#### 24. [立方火车][25] ####
|
||||
|
||||
|
||||
躺在连接隧道和桥梁的铁轨,然后机动绕过障碍物。你可以万很多内置等级的或者创建你属于自己的等级。适用操作系统:Windows,Linux或者OS X。
|
||||
|
||||
#### 25. [谜语][26] ####
|
||||
|
||||
类似于旧Oxyd和摇滚乐的游戏,谜语挑战者在相同的石头中找到迷宫,陷进,激光束和其他障碍。这个游戏拥有1000多个等级,这也是一款益智游戏,可能占用你一段很长时间。适用操作系统:Windows,Linux和OS X。
|
||||
|
||||
|
||||
|
||||
#### 26. [Fish Fillets NG][27] ####
|
||||
|
||||
在这个益智游戏中,玩家必须尝试分别在这70个等级中各找到一条安全路径。一路上,鱼类和其它水下居民提供相关用户的幽默解说。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 27. [冰冻泡泡][28] ####
|
||||
|
||||
这是最古老的泡沫射击游戏中的一个,冰冻泡沫是以Linux小企鹅和多于100多个级别为特征的单机游戏。你也可以通过局域网或者互联网对阵2~5个玩家。适用操作系统:Windows和Linux。
|
||||
|
||||
#### 28. [GnomeGames][29] ####
|
||||
|
||||
这个集合汇聚了15个不同的休闲游戏,你可以在5分钟以内玩。它包括了数独,一个扫雷游戏,麻将,一个黑白棋版本等等。适用操作系统:Linux。
|
||||
|
||||
#### 29. [切番茄][30] ####
|
||||
|
||||
10分钟内,你可以粉碎多少个西红柿?这种“极端闲暇时间的活动”来自同一个叫做Those Funny Funguloids的团队。适用操作系统: Windows和 Linux.
|
||||
|
||||
#### 30. [KDE 游戏][31] ####
|
||||
|
||||
这是为KDE桌面准备的休闲游戏的集合。它包含了一个游戏纸牌的变化,一个高尔夫游戏,一个风险版本,扫雷艇,数度等等。适用操作系统:Windows和Linux。
|
||||
|
||||
#### 31. [平衡球][32] ####
|
||||
|
||||
在这个游戏中,玩家必须倾斜地板去引导球通过障碍球场。这个游戏包括很多级别,并且你可以设计自己的级别。适用操作系统:Windows, Linux和 OS X。
|
||||
|
||||
#### 32. [Pingus][33] ####
|
||||
|
||||
你是否还话费数个小时玩旅鼠总动员来追忆的你90年代?如果这样的话,Pingus会更适合你。这是旅鼠的翻拍(企鹅取代了旅鼠)有77个级别。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 33. [易如反掌][34] ####
|
||||
|
||||
这个益智游戏的特点是蚂蚁来推排成各种团的多米若骨牌。玩家必须让所有多米诺骨牌倒下,并通过出口,为的是发送一个特别的触发信号来进入新的等级。适用操作系统:Windows。
|
||||
|
||||
#### 34. [Zaz][35] ####
|
||||
|
||||
这是另一款泡沫射手游戏,Zaz挑战你沿着他们设定的路径击中球。其转折点是你的枪炮只能沿着一条路径移动,这样使事情变得有点难度了。适用操作系统:Windows和Linux。
|
||||
|
||||
### 教育类游戏 ###
|
||||
|
||||
#### 35. [ChildsPlay][36] ####
|
||||
|
||||
这个游戏专门有5岁及一下的小孩设计,ChildsPlay帮助教一些发音,字母,数字和基础键盘技巧。它也包括了一些游戏,例如记忆,乒乓球和吃豆豆。适用操作系统:Windows,Linux和OS X。
|
||||
|
||||
#### 36. [GBrainy][37] ####
|
||||
|
||||
通过GBrainy的逻辑,训练你的词汇、数学和记忆游戏的意识。它充满了乐趣和教育意义,适合所有年龄段的人群。适用操作系统:Windows和 Linux.
|
||||
|
||||
#### 37. [GCompris][38] ####
|
||||
|
||||
专为2~10岁的儿童射击, GCompris 包括了超过100多种but的活动,其中大多数是教育类的。它包括数学,地理,科学,阅读,敲键盘和艺术游戏,再加上国际象棋,数独,记忆法等等。适用操作系统:Wwindows和Linux。
|
||||
|
||||
#### 38. [TuxMath][39] ####
|
||||
|
||||
在即将到来的彗星杀死企鹅之前迅速解决算数问题。这是一个简单的游戏用于强化小学学龄的数学真相。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
### 第一人称射击游戏 ###
|
||||
|
||||
#### 39. [外星人竞技场][40] ####
|
||||
|
||||
内置的“专为手榴弹攻击者的手榴弹,”外星人竞技场是一个激烈的充满复古题材的死亡争斗射击者。许多不同的网站为线上游戏提供了托管服务器,也有很多粉丝网站和玩家技巧等等。适用操作系统:Linux, Windows和 OS X.
|
||||
|
||||
#### 40. [AssaultCube][41] ####
|
||||
|
||||
由于它的轻量级,AssaultCube也可以在旧硬件上运行,除了拥有不错的真实感图形之外。它还支持单机模式和多玩家游戏模式,包括了26张不同的地图和12种不同的游戏模式。适用操作系统:Linux,Wwindows和OS X。
|
||||
|
||||
#### 41. [经典 Nexuiz][42] ####
|
||||
|
||||
下载量超过600万次,Nexuiz是最流行的开源射击游戏之一。几年前,该游戏是一个非开源版本创建的,但你可以从SourceForge的链接下载经典版本。适用操作系统:Windows, Linux和OS X.
|
||||
|
||||
#### 42. [OpenArena][43] ####
|
||||
|
||||
这个多玩家游戏是雷蛇之锤3的克隆,它的特征是拥有13种不同的武器,51个竞技场和12类游戏。该程序的拥有者发出警告,“由于暴力和偶尔的不健康内容,它不适合17岁一下的孩子玩”。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 43. [Red Eclipse][44] ####
|
||||
|
||||
这个休闲的第一人称射击游戏已经获得极高的评价。其特点包括跑酷,脉冲刺激,界面华丽,几种游戏模式和一个内置的关卡编辑。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 44. [Tremulous][45] ####
|
||||
|
||||
这是一个屡获殊荣的游戏,一款混合了即时战略游戏元素的第一射击游戏。用户可以选择扮演外星人或者人类来永久消灭其它队的对手。适用操作系统:Windows, Linux, OS X和 XBox.
|
||||
|
||||
#### 45. [TrueCombat][46] ####
|
||||
|
||||
TrueCombat声称自己“也许永远是最好的免费战术写实的射击游戏。”这是一个2个对抗团队比赛的现代世界实战模拟器。请注意,为了使用它,你还需要德军总部:敌对势力。操作系统:Windows, Linux和 OS X。
|
||||
|
||||
#### 46. [Unvanquished][47] ####
|
||||
|
||||
从Tremulous分离出来,不可征服的人陷入“高度适应能力人类群体的先进技术。”在非常活跃的开发环境下,每个月提供了新的版本。适用操作系统:Windows, Linux和 OS X。
|
||||
|
||||
#### 47. [Warsow][48] ####
|
||||
|
||||
这款自称在“在Web上节奏最快的运动”,Warsow是一个卡通射击游戏具有”猪尾巴火箭炮和携带赛伯朋克”的射击游戏。不想大多数射击游戏,它没有大量的血液和仇恨,更多强调的是运动。适用操作系统:Windows,Linux和OS x.
|
||||
|
||||
#### 48. [Wolfenstein: Enemy Terriorty][49]
|
||||
|
||||
虽然已经有好几个专有德军部队游戏,但这一个是开源的。这是一个第二次世界大战时间的游戏,其核心专门对抗盟军。适用操作系统:Windows,Linux,OS X。
|
||||
|
||||
#### 49. [ Padman世界][50] ####
|
||||
|
||||
基于Quake引擎,这个射手类似三角形状显得非常卡通化。这个游戏有相当多的在线服务器可以适用,或者您也可以离线玩。适用操作系统:Wwindows和Linux。
|
||||
|
||||
#### 50. [Xonotic][51] ####
|
||||
|
||||
Xonotic是经典版Nexuiz的分支。它拥有超过22种不同的地图,16种武器和大量不同的游戏模式。适用操作系统:Windows, Linux和OS X.
|
||||
|
||||
#### 51. [零导弹][52] ####
|
||||
|
||||
部分第一人称射击手,部分坦克游戏,零导弹坐落在风景如画的山区环境,并已经拥有超过81个坦克体系可用。玩死斗,团队死斗或者独特的beaconstrike模式。适用操作系统:Windows、Linux 和 OS X。
|
||||
|
||||
### 音乐类游戏 ###
|
||||
|
||||
#### 52. [Frets on Fire][53] ####
|
||||
|
||||
Frets on Fire这个游戏很多地方都很像“吉它英雄”这个游戏,它甚至可以起到播放“吉它英雄”里的歌曲(当然其它歌曲也同样可用)。如果你没有一个吉它控制器,别担心,你也可以适用键盘来玩。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 53. [StepMania][54] ####
|
||||
|
||||
这是一个免费版本的跳舞机,挑战者可以停留在某个节奏去对应音乐的节拍。你既可以适用跳舞毯(如果你拥有的话)去挑,或者也可以适用键盘操作。适用操作系统:Windows, Linux/Unix, OS X或者 XBox.
|
||||
|
||||
#### 54. [Ultrastar Deluxe][55] ####
|
||||
|
||||
如果卡拉OK是你的菜,那么你就会喜欢Ultrastar Deluxe这个游戏了。在这个游戏中,你必须单独唱完一首歌并且是对应正确的节拍。它包含了超过10000歌曲。适用操作系统: Windows, Linux和OS X.
|
||||
|
||||
### 赛车游戏 ###
|
||||
|
||||
#### 55. [至尊小企鹅竞赛][56] ####
|
||||
|
||||
Tux Racer是一款备受宠爱的旧款游戏,其特征是Linux小企鹅展示他的腹部滑下山。至尊小企鹅为现在的游戏玩家更新了这款经典游戏。适用操作系统:Windows, Linux和OS X.
|
||||
|
||||
#### 56. [Speed Dreams][57] ####
|
||||
|
||||
这是TORCS自动赛车游戏的分支(见下文),其特征是一个更新过的UI界面和许多骑车和轨道。正如TORCS,视觉效果非常出色。适用操作系统:Windows和 Linux.
|
||||
|
||||
#### 57. [SuperTuxKart][58] ####
|
||||
|
||||
这个卡通赛车游戏的特点是Linux小企鹅和朋友们驾驶卡丁车。沿着轨道的指引前进,同时避开一堆障碍物的撞击。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 58. [TORCS][59] ####
|
||||
|
||||
TROCS是"The Open Racing Care Simulator”的缩写,TORCS是一款拥有大量粉丝为基础的杰出的逼真赛车游戏。单独驾驶或与朋友在其中一条轨道中竞赛也是可选的。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
|
||||
#### 59. [终极特技][60] ####
|
||||
|
||||
由经典DOS游戏Stunts的启发,终极特技要求玩家去指导整个破碎的桥梁的车辆,跳跃,环绕等避开其它障碍。它允许提供一些选项通过更加疯狂的特技来设计自己的轨道。操作系统:Windows,Linux和OS X。
|
||||
|
||||
|
||||
#### 60. [VDrift][61] ####
|
||||
|
||||
类似一款模拟器的赛车游戏,VDrift介绍玩家们赛车漂移的世界在一个真实的物理引擎中。它包含了超过45辆车,超过45条轨道,并且对各种控制器提供了支持。适用操作系统Wwindows,Linux,OS X。
|
||||
|
||||
### 角色扮演和冒险游戏 ###
|
||||
|
||||
#### 61. [穿越火线][62] ####
|
||||
|
||||
有时被描述为NetHack 和 Gauntlet之间的穿越,穿越火线是一款非常旧派的图形街机冒险游戏。它拥有超过3000张不同的地图和超过150种不同的怪物。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 62. [Epic Inventor][63] ####
|
||||
|
||||
Epic Inventor将自己描述成一个"横向卷轴动作的RPG游戏。"它类似于Minecraft,是一款简单的,像素化图形和开放式的游戏。适用操作系统:Windows和 Linux.
|
||||
|
||||
#### 63[神剑:Morganna的复仇] [64] ####
|
||||
|
||||
这款时空穿梭游戏让扮演你在未来海洋空间,玩家必须穿越回到亚瑟王和克莱特的年代。这个图形界面并没有什么特别的(想想 Minecraft),但是故事情节和游戏性都很赞。适用操作系统: Windows, Linux和OS X.
|
||||
|
||||
#### 64. [火炬][65] ####
|
||||
|
||||
受Diablo启发,这个角色扮演游戏的重点在于战斗。它仍然是一个开端版本但是依旧可以玩。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 65. [苏娜之吻][66] ####
|
||||
|
||||
仅对成年人开发,这款"舌头在脸颊上的动作RPG"充满了“暴力、粗俗、裸体等主题”,也许你在其它游戏中很少看到。它提供了大量的动作和不断变化的景观。适用操作系统:Windows和 Linux.
|
||||
|
||||
#### 66. [The Mana World][67] ####
|
||||
|
||||
这是一款大型的多人在线角色扮演游戏(MMORPG),但事实没有想象中庞大。(在我写下这段文字的时候有31个人正在玩这个游戏。)尽管这样,创造一个不断扩大的世界充满了怪物、任务和迷你游戏是一个很好的尝试。适用操作系统:Windows,Linux和OS X。
|
||||
|
||||
#### 67. [NetHack][68]注:此链接原文有错误,和上面的链接地址一样了 ####
|
||||
|
||||
游戏史上经典之一,NetHack是一个带及其简单图形的复杂地牢履带。它被称为有史以来最好的100个视频之一。适用操作系统: Windows, Linux, 和经典Mac.
|
||||
|
||||
#### 68. [PlaneShift][69] ####
|
||||
|
||||
设置在Yliakum的梦幻世界,这是一个独特的在线角色扮演游戏,其特征是有10个不同的种族和一个拥有自己经济、政府、宗教和法律的发达国家。虽然可以试玩,但是这款游戏还处在早期的开发阶段。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
|
||||
|
||||
#### 69. [Ryzom][70] ####
|
||||
|
||||
其中一个较好开源MMORPGS,获得Ryzom奖是设置在一个叫Atys的树状星球,其中有几种不同种族互动,有时候树状星球会发生冲突。你可以自由发回,但是那些选择订阅会得到特别的好处。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 70. [Stendhal][71] ####
|
||||
|
||||
这个在线角色扮演游戏相比大多数同类游戏更友好。网站上解释,"你可能会被要求去帮助保护土地,拯救穷人,治愈病人,是别人获得快乐,解决难题,或者直接伸出援手。适用操作系统:Windows, Linux和OS X.
|
||||
|
||||
#### 71. [Summoning Wars][72] ####
|
||||
|
||||
可以多达8个人一起玩的幻想角色扮演游戏。拖车这个游戏有一个拖车你可以同时在Youtube上看到它的动作。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
### 模拟类游戏 ###
|
||||
|
||||
#### 72. [FlightGear][73] ####
|
||||
|
||||
FlightGear是一个极其逼真、一流的飞行模拟器并且有竞争对手的专用软件。它包括了整个世界精准的地形和20,000多个机场还有众多栩栩如生的飞机模型。适用操作系统:Windows, Linux, OS X和其它。
|
||||
|
||||
#### 73. [Golems][74] ####
|
||||
|
||||
有了这个物理模拟器,你可以创建任何你想要的东西并看它在真实世界中如何表现。这是一个强大的基础学习机器,可以制造机器人,并发明各种玩意。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 74. [LinCity NG][75] ####
|
||||
|
||||
基于原来的SimCity游戏,LinCity NG挑战玩家去建造一个可持续发展的大都市并拥有繁华的经济状况。需要注意的是,由于这个游戏是基于旧代码,所以它的图形化更像久的DOS游戏。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
|
||||
#### 75. [Micropolis/OLPC SimCity][76] ####
|
||||
|
||||
另一个SimCity的模仿者,Micropolis是一个基于Java开发的城市模拟器。它还具有相当老派的图形界面,而不是较新的3D外观模拟城市游戏。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 76. [Minetest][77] ####
|
||||
|
||||
与Minecraft极其相似,Minetest被设置在基础构建的一个无垠世界中。玩家可以探索,矿山或者根据他们的需要制造一些新事物。适用操作系统: Windows, Linux和 OS X.
|
||||
|
||||
#### 77. [Pioneer][78] ####
|
||||
|
||||
Pioneer描述自己为“一个孤独的太空冒险游戏”。它将玩家输送到一个开放式的世界里,这个世界里他们可以决定他们想做什么和去哪里。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 78. [Oolite][79] ####
|
||||
|
||||
这个游戏是基于Elite,Oolite是一个太空模拟器,你可以与其它航天员进行进行交易或者参加一场战斗。这个游戏存在了相当长的一段时间,很多扩展操作系统可以使用。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 79. [OpenCity][80] ####
|
||||
|
||||
这个3D城市模拟器并不是要成为一个模拟城市的克隆器,但是提供类似的玩家模式。这是相当基础的,但是很耐玩。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 80. [OpenTTD][81] ####
|
||||
|
||||
基于豪华运输大亨,OpenTTD邀请玩家去简历一个运输帝国。它支持一次多达255个玩家并可以通过很多种方式去改善原来的TTD系统。适用操作系统: Windows, Linux和 OS X.
|
||||
|
||||
#### 81. [Rigs of Rods][82] ####
|
||||
|
||||
#### 81. [Rigs of Rods][82] ####
|
||||
|
||||
这个车辆模拟器具有一个独特的软体物理引擎拥有一批非常积极和热情的粉丝为基础。使用它来创造陆地,海洋或者空中骑车,可以带着它们驾驶或者飞往全国各地。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 82. [Simutrans][83] ####
|
||||
|
||||
这个交通仿真器提供了连接到互联网在线游戏主机的选项。适用公车、卡车、火车、电车、船只、飞机、单轨铁车、磁悬浮列车或者其它交通工具将人们或者货物运送到他们想抵达的地方去。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 83. [Vega Strike][84] ####
|
||||
|
||||
这是另一款太空模拟器可以让你星系中交易和战斗。你可以选择是否选择飞贸易路线,接受狩猎任务奖金,打海盗或者探索浩瀚的太空。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
### 战略游戏 ###
|
||||
|
||||
#### 84. [0 A.D.][85] ####
|
||||
|
||||
现在已经更新到了第16个alpha版本了。0 A.D.是一个屡获文明建设的游戏,这个游戏努力地在追溯历史的准确性。玩家可以选择迦太基人,凯尔特人,希腊人,伊比利亚人,孔雀王朝人,波斯人或者罗马人进行游戏。适用操作系统:Linux, Windows和 OS X.
|
||||
|
||||
#### 85. [Advanced Strategic Command][86] ####
|
||||
|
||||
这个回合制战略游戏是基于Battle Isle游戏系列。玩家在战斗网格景观可以适用单机游戏模式或者多人游戏模式。适用操作系统:Windows和 Linux.
|
||||
|
||||
#### 86. [Battle for Wesnoth][87] ####
|
||||
|
||||
这个回合制战术策略游戏将玩家置身于神话世界里,它们争取夺回王位。游戏中充斥着兽人、精灵、巫师和数以百计的其它充满梦幻的一个大环境。支持单人游戏和多人游戏。适用操作系统:Linux,Windows,OS X,IOS。
|
||||
|
||||
#### 87. [BosWars][88] ####
|
||||
|
||||
这个未来的实时战略游戏需要玩家建立能源存储和一个经济体系来支持其军事斗争。玩家可以可以通过局域网进行多人游戏来抵抗对手。适用操作系统:Windows,Linux和BSD,OS X。
|
||||
|
||||
#### 88. [CommanderStalin][89] ####
|
||||
|
||||
关于BosWars的变化是被设置在斯大林时期的苏联国家。为的是对不可避免的纳粹进行攻击做准备!适用操作系统:Windows和Linux。
|
||||
|
||||
#### 89. [FreeCol][90] ####
|
||||
|
||||
受游戏Colonization and Civilization的启发,FreeCol是一款回合制文明建设的战略游戏。你可是的新世界在1492年并通过建立一个独立和言论自由的国家取胜。适用操作系统:Windows, Linux和OS X.
|
||||
|
||||
#### 90. [FreeCiv][91] ####
|
||||
|
||||
这也是一个在Civilization得到启发的游戏,这个回合制战略游戏开始在石器时期,结束于太空时期。它包括了50个可玩单元和541国家并附带了各种可玩场景。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 91. [FreeOrion][92] ####
|
||||
|
||||
尽管这不是一个克隆或者翻拍,FreeOrion是一个松散的基于Master of Orion 的游戏。这是一个设置在太空的回合制战略游戏。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 92. [Glest][93] ####
|
||||
|
||||
这个实时战略游戏中科技的力量和魔法的力量都在其中。虽然它任然提供下载,但是大多数Linux发行版本现在包含了Megaglest的分支(见下文)而不是这个旧的程序。适用操作系统:Windows和 Linux.
|
||||
#### 93. [Globulation 2][94] ####
|
||||
|
||||
这个实时文明建设战略游戏用意在于减少微观管理并允许玩家集中精力于战略上。单机模式或者多用户模式游戏和关卡编辑器都是可用的。适用操作系统:Windows和 Linux.
|
||||
|
||||
#### 94. [Hedgewars][95] ####
|
||||
|
||||
这是一个更轻快的战略游戏,Hedgewars以“粉红刺猬从地狱深处战斗到太空深处”,总共31个环境,48张已经设置好的地图,还可以无限制随机生成张地图,55种武器,280种服装,最多支持8个玩家。适用操作系统:Linux, OS X和iOS.
|
||||
|
||||
#### 95. [Kernel Panic][96] ####
|
||||
|
||||
这款游戏设置在数字地形中,Kernel Panic是一款实时战略游戏,拥有Tron-like的图形界面。所有资源都是免费的,所以玩家不必担心楼宇经济,只需要于其它骇客在网络上斗争。适用操作系统:Linux和 Windows。
|
||||
|
||||
#### 96. [Liquid War][97] ####
|
||||
|
||||
追溯回2002年,Liquid War被评委最“最原始的Linux游戏”,但是仍然是值得一玩的。玩家尝试消耗敌人的能量来控制水军。适用操作系统: Windows, Linux和 OS X.
|
||||
|
||||
|
||||
#### 97. [MegaGlest][98] ####
|
||||
|
||||
这个游戏是Glest的衍生,在原来的Tech和Magic上增加了5个新的队伍:埃及,印度,挪威人,波斯和罗马。它提供了17中不同的地图,有单机模式和多人游戏模式,并为新手提供了教程。适用操作系统:Windows和 Linux.
|
||||
|
||||
#### 98. [Pax Brittanica][99] ####
|
||||
|
||||
这是一款。最多可以支持4个玩家在战斗中使用同意键盘的潜艇战略游戏。这些空间简单易学(你只需适用一个按钮),但是这个游戏可以玩得非常激烈。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 99. [Spring: 1944][100] ####
|
||||
|
||||
这是一款二战战略游戏提供了逼真的游戏单元和强度。供选择的游戏角色可以是美国,德国,苏联和英国。适用操作系统:Linux。
|
||||
|
||||
#### 100. [UFO: Alien Invasion][101] ####
|
||||
|
||||
在未来70年,一个秘密的组织正在为保卫地球不受狠毒的外星人侵略做战斗。玩家扮演人类或者外星人在单机模式或者多用户模式。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 101. [Unknown Horizons][102] ####
|
||||
|
||||
在这个文明建设的战略游戏中,强调的是建设一个强大的经济体制,你需要在一个孤岛上利用屈指可数的定居者和资源为开始,去建造一个欣欣向荣的城市。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
|
||||
#### 102. [Warzone 2100][103] ####
|
||||
|
||||
你可以在核爆炸后重建地球吗?这个游戏提供了一个非常强大科技树并支持单人模式或者多人模式。适用操作系统:Windows, Linux,和OS X.
|
||||
|
||||
#### 103. [Widelands][104] ####
|
||||
|
||||
受Settlers II启发,Widelands是另外一款实时战略游戏,挑战玩家去建立一个文明国度。它的特点是具有3个部落,分别为野蛮人、帝国和亚特兰蒂斯,而不像大多数文明游戏,玩家并没有被告知每个单元要做什么,而是把下订单并委派给代表,更像一个统治者的角色。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 104. [Zero-K][105] ####
|
||||
|
||||
在这个快速移动的实时战略游戏中,机器人军队进行着一场永无休止的战斗。主要功能包括超过100种不同的单元,一个精简的经济体系,逼真的物理引擎,地球化等等。适用操作系统: Windows和 Linux.
|
||||
|
||||
#### 105. [Zombies][106] ####
|
||||
|
||||
你能够在在僵尸杀了你之前杀死所有僵尸吗?这是一个回合制的游戏提供了令人上瘾的游戏和设置,允许玩家决定挑战的级别。适用操作系统:OS X、
|
||||
|
||||
### 有趣的非游戏类 ###
|
||||
|
||||
#### 106. [Celestia][107] ####
|
||||
|
||||
对于想成为宇航员和初露头角的天文学家,这款游戏无疑是至臻完美的, Celestia可以让你看到太空,因为它会出现在任何时间和宇宙中的任何已知点。快速地到木星旅行或者画出你夜晚的观星图。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 107. [Electric Sheep][108] ####
|
||||
|
||||
这个游戏的灵感来自于Philip K. Dick小说中 Do Androids Dream of Electric Sheep(做电绵羊机器人的梦想)?这个屏幕通过创造抽象图案和花纹来保护您的系统连接到成千上万人的系统上。投票支持你喜欢的团,它们便会出现得更经常一些。适用操作系统:Windows, Linux, OS X, 安卓和 iOS.
|
||||
|
||||
#### 108. [LCARS 24][109] ####
|
||||
|
||||
如果你家里有一台旧的电脑(睡会没有),为何不把它变成一个星际旅行为主题。有了这个应用,你可以得到一个闹钟和文件管理器,从图形界面看来,就像来到了一个正规的企业。适用操作系统:Windows和 DOS.
|
||||
|
||||
#### 109. [Stellarium][110] ####
|
||||
|
||||
把你的PC变成一个天文馆。Stellarium可以在地球上随时从任何角度随时显示夜空,而且它使用许多天象仪器来为显示器供电。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 110. [Tux Paint][111] ####
|
||||
|
||||
Tux Paint可以让学龄前儿童很容易地在电脑上创建自己的“图画”。它的特征是有一个借口和大按钮,有趣的声音效果和友好的字符界面。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.datamation.com/open-source/110-fun-open-source-games-and-apps-1.html
|
||||
|
||||
译者:[disylee](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.datamation.com/open-source/101-most-fun-open-source-games-and-apps-1.html
|
||||
[2]:http://www.stuff-o-matic.com/asgp/
|
||||
[3]:http://armagetronad.org/index.php
|
||||
[4]:http://bzflag.org/
|
||||
[5]:http://chromium-bsu.sourceforge.net/
|
||||
[6]:http://www.parallelrealities.co.uk/p/legend-of-edgar.html
|
||||
[7]:http://www.penguspy.com/jvgs/
|
||||
[8]:http://www.nogravitythegame.com/classic/
|
||||
[9]:http://opensnc.sourceforge.net/home/index.php
|
||||
[10]:http://linux.tlk.fr/games/Powermanga/
|
||||
[11]:http://www.scorched3d.co.uk/
|
||||
[12]:http://www.srb2.org/
|
||||
[13]:http://supertux.lethargik.org/
|
||||
[14]:http://funguloids.sourceforge.net/
|
||||
[15]:http://www.teeworlds.com/
|
||||
[16]:http://xmoto.tuxfamily.org/
|
||||
[17]:http://www.yofrankie.org/
|
||||
[18]:http://domination.sourceforge.net/
|
||||
[19]:http://sourceforge.net/apps/mediawiki/scrabble/index.php?title=Main_Page
|
||||
[20]:http://sourceforge.net/apps/mediawiki/scrabble/index.php?title=Main_Page
|
||||
[21]:http://www.pokerth.net/
|
||||
[22]:http://pysolfc.sourceforge.net/
|
||||
[23]:http://gabrielecirulli.github.io/2048/
|
||||
[24]:http://www.nongnu.org/billiards/
|
||||
[25]:http://cubetrains.com/
|
||||
[26]:http://www.nongnu.org/enigma/
|
||||
[27]:http://fillets.sourceforge.net/
|
||||
[28]:http://www.frozen-bubble.org/
|
||||
[29]:http://live.gnome.org/GnomeGames
|
||||
[30]:http://tomatoes.sourceforge.net/about.html
|
||||
[31]:http://games.kde.org/
|
||||
[32]:http://neverball.org/
|
||||
[33]:http://pingus.seul.org/welcome.html
|
||||
[34]:http://pushover.sourceforge.net/
|
||||
[35]:http://zaz.sourceforge.net/
|
||||
[36]:http://www.schoolsplay.org/
|
||||
[37]:https://live.gnome.org/gbrainy
|
||||
[38]:http://gcompris.net/index-en.html
|
||||
[39]:http://tux4kids.alioth.debian.org/tuxmath/index.php
|
||||
[40]:http://icculus.org/alienarena/rpa/
|
||||
[41]:http://assault.cubers.net/
|
||||
[42]:http://www.alientrap.org/games/nexuiz
|
||||
[43]:http://openarena.ws/smfnews.php
|
||||
[44]:http://www.redeclipse.net/
|
||||
[45]:http://tremulous.net/
|
||||
[46]:http://www.truecombatelite.com/
|
||||
[47]:http://www.unvanquished.net/
|
||||
[48]:http://www.warsow.net/
|
||||
[49]:http://www.splashdamage.com/wolfet
|
||||
[50]:http://worldofpadman.net/website/news
|
||||
[51]:http://www.xonotic.org/
|
||||
[52]:http://www.zeroballistics.com/
|
||||
[53]:http://www.stepmania.com/
|
||||
[54]:http://www.stepmania.com/
|
||||
[55]:http://www.ultrastardeluxe.org/
|
||||
[56]:http://sourceforge.net/projects/extremetuxracer/
|
||||
[57]:http://www.speed-dreams.org/
|
||||
[58]:http://supertuxkart.sourceforge.net/
|
||||
[59]:http://torcs.sourceforge.net/
|
||||
[60]:http://www.ultimatestunts.nl/
|
||||
[61]:http://vdrift.net/
|
||||
[62]:http://crossfire.real-time.com/intro/index.html
|
||||
[63]:http://www.epicinventor.com/
|
||||
[64]:http://excaliburworld.com/emr/emr3/index.html
|
||||
[65]:http://flarerpg.org/media/
|
||||
[66]:http://lipsofsuna.org/
|
||||
[67]:http://themanaworld.org/
|
||||
[68]:http://themanaworld.org/
|
||||
[69]:http://www.planeshift.it/about.html
|
||||
[70]:http://www.ryzom.com/en/
|
||||
[71]:http://stendhalgame.org/
|
||||
[72]:http://sumwars.org/wiki/Main_Page
|
||||
[73]:http://www.flightgear.org/
|
||||
[74]:http://www.golemgame.com/
|
||||
[75]:http://lincity.sourceforge.net/
|
||||
[76]:https://code.google.com/p/micropolis/
|
||||
[77]:http://minetest.net/
|
||||
[78]:http://pioneerspacesim.net/
|
||||
[79]:http://www.oolite.org/
|
||||
[80]:http://www.opencity.info/
|
||||
[81]:http://www.openttd.org/en/
|
||||
[82]:http://www.rigsofrods.com/content/
|
||||
[83]:http://www.simutrans.com/
|
||||
[84]:http://vegastrike.sourceforge.net/
|
||||
[85]:http://play0ad.com/
|
||||
[86]:http://www.asc-hq.org/
|
||||
[87]:http://www.wesnoth.org/
|
||||
[88]:http://www.boswars.org/
|
||||
[89]:http://commanderstalin.sourceforge.net/
|
||||
[90]:http://www.freecol.org/
|
||||
[91]:http://freeciv.wikia.com/wiki/Main_Page
|
||||
[92]:http://freeorion.org/index.php/Main_Page
|
||||
[93]:http://glest.org/en/index.php
|
||||
[94]:http://globulation2.org/wiki/Main_Page
|
||||
[95]:http://www.hedgewars.org/
|
||||
[96]:http://springrts.com/wiki/Kernel_Panic
|
||||
[97]:http://www.ufoot.org/liquidwar/v5
|
||||
[98]:http://glest.org/en/index.php
|
||||
[99]:http://paxbritannica.henk.ca/
|
||||
[100]:http://spring1944.net/
|
||||
[101]:http://ufoai.org/wiki/News
|
||||
[102]:http://www.unknown-horizons.org/
|
||||
[103]:http://wz2100.net/
|
||||
[104]:http://wl.widelands.org/
|
||||
[105]:http://zero-k.info/
|
||||
[106]:http://codenautics.com/zombies/
|
||||
[107]:http://www.shatters.net/celestia/index.html
|
||||
[108]:http://community.electricsheep.org/
|
||||
[109]:http://lcars24.com/
|
||||
[110]:http://stellarium.org/
|
||||
[111]:http://tuxpaint.org/
|
@ -0,0 +1,201 @@
|
||||
安卓编年史
|
||||
================================================================================
|
||||
> 让我们跟着安卓从0.5版本到4.4的无尽迭代来看看它的发展历史。
|
||||
|
||||

|
||||
这些年来历代安卓的主屏幕。
|
||||
图片提供:Ron Amadeo
|
||||
|
||||
安卓已经以不止一种形式陪伴了我们六年以上。在这段时间内,我们已经看到了不同于任何已有开发周期的,绝对惊人变化速度。当Google卷入智能手机的战场中时,它拿出了它的快速迭代,Web风格的更新周期,把它们应用到了开发的这个操作系统之中,而结果就是突击式的持续改进。近来,安卓项目甚至以前所未闻的六个月开发周期在运行,这可比它之前的开发周期慢。在安卓的第一年商业运作时,Google每两个半月就会发布一个新版本。
|
||||
|
||||
注:youtube视频地址开始
|
||||
<iframe width="640" height="480" frameborder="0" src="http://www.youtube-nocookie.com/embed/1FJHYqE0RDg?start=0&wmode=transparent" type="text/html" style="display:block"></iframe>
|
||||
|
||||
Google在2007年11月时对安卓最初的介绍。
|
||||
注:youtube视频地址结束
|
||||
|
||||
同行业的其它公司和其相比,只能是以蜗牛的步伐在缓慢前进。微软每三到五年升级它的桌面操作系统,苹果对OS X和iOS以一年为一个更新周期。另外不是每个更新都是同等地位的。iOS在七年内有一个主要的设计上的大变动,而最新的Windows Phone 8看起来和Windows Phone 7十分相似。但在安卓上,如果用户能看到今年的任何东西看起来和去年一样,那简直是中彩票了一样。比如Play商店,五年内有五次的重新设计。对安卓来说那更是家常便饭。
|
||||
|
||||
回头看看,安卓的存在是很模糊的。从其历史来看,现在它是个使用量巨大的操作系统。近十亿的设备销量,以及每天一百五十万左右的激活量——但Google是如何达到这种地步的?安卓现在如此水平的规模和成功,可能会让你觉得安卓从零开始到万众瞩目的英雄中覆盖到了方方面面。但事实上不是这样的。安卓在早期并不流行,以及直到安卓4.0屏幕截图还只能通过开发者工具实现。这两个因素意味着你无法轻易找到许多安卓早期版本的图片或信息。
|
||||
|
||||
对于早期版本的缺乏覆盖问题现在称作*安卓早期版本正在消亡*。尽管像Windows 1.0这样的系统可以永远在你身边——只要找台旧电脑把它装上去就好了——安卓可以被认为是第一个基于云的操作系统。许多功能严重依赖Google的服务来实现。随着越来越少的人使用老版本的安卓,那些服务被逐渐关闭。当一个依赖云的应用其服务支持停止之后,它再也不能正常运作——应用崩溃并显示空白的屏幕,或直接无法启动。
|
||||
|
||||
正是由于这种“[云腐烂][1]”现象,安卓回顾展在几年内不可能出现。早期版本的安卓没有了云的支持会是一个不能正常工作的破碎的空壳。尽管可以简单地认为这是早期版本安卓渐渐消失的一种方法,但这正是正在发生的。就在写到这里的时候,正有无数的应用因为服务器支持被关闭而失去作用。例如早期的谷歌地图和安卓市场客户端,已经不能和Google服务器交互。它们会弹出错误消息并崩溃或者是显示一个空白的界面。有些应用甚至在一个星期正常运行然后下个星期就宣告死亡,因为就在我们写下这篇文章的时候谷歌正在积极地关闭服务器!
|
||||
|
||||
为了防止在滚滚历史里丢失掉更多关于安卓的过去,我们做了需要完成的工作。这里有20+个版本的安卓,七台设备,以及无数的屏幕截图被集合到一起。这就是安卓编年史,从最早的公开版本到罪行的KitKat。
|
||||
|
||||
注:下面一块为文章链接列表,发布后可以改为发布后的地址
|
||||
----------
|
||||
|
||||
### 目录 ###
|
||||
|
||||
- [Android 0.5 Milestone 3——第一个公开版本][10]
|
||||
- [Android 0.5 Milestone 5——报废接口的领地][11]
|
||||
- [Android 0.9 Beta——嘿,这看起来很眼熟!][12]
|
||||
- [Android 1.0——谷歌应用的引入和实体硬件][13]
|
||||
- [Android 1.1——第一个真正的增量更新][14]
|
||||
- [Android 1.5 Cupcake——虚拟键盘打开设备设计的大门][15]
|
||||
- ----[谷歌地图———登陆安卓市场的第一个内置应用][16]
|
||||
- [Android 1.6 Donut——CDMA支持将安卓带给了各个运营商][17]
|
||||
- [Android 2.0 Éclair——带动GPS产业][18]
|
||||
- [The Nexus One——迎来Google Phone][19]
|
||||
- [Android 2.1——动画的大发现(以及滥用)时代][20]
|
||||
- ----[Android 2.1, update 1——无尽战争的开端][21]
|
||||
- [Android 2.2 Froyo——更快更华丽][22]
|
||||
- ----[语音操作——口袋里的超级电脑][23]
|
||||
- [Android 2.3 Gingerbread——第一个UI大变][24]
|
||||
- [Android 3.0 Honeycomb——平板和设计的新生][25]
|
||||
- ----[Google Music Beta——云存储的内容库][26]
|
||||
- [Android 4.0 Ice Cream Sandwich——摩登时代][27]
|
||||
- ----[Google Play以及直接面向消费者销售设备的回归][28]
|
||||
- [Android 4.1 Jelly Bean——Google Now指明未来][29]
|
||||
- ----[Google Play服务——碎片化以及让系统版本(几乎)过时][30]
|
||||
- [Android 4.2 Jelly Bean——新Nexus设备,新平板界面][31]
|
||||
- ----[周期外更新——谁需要一个新系统?][32]
|
||||
- [Android 4.3 Jelly Bean——为可穿戴设备做好准备][33]
|
||||
- [Android 4.4 KitKat——更完美;更少的内存占用][34]
|
||||
- [今日安卓无处不在][35]
|
||||
|
||||
----------
|
||||
|
||||
### Android 0.5, Milestone 3——第一个公开版本 ###
|
||||
|
||||
在我们开始在实体硬件上研究安卓之前,我们要从很早,很早以前的安卓时光开始说起。尽管1.0是第一个运行在实体硬件上的版本,但在那之前其实还有若干个只随SDK发布的模拟器beta版本。这些模拟器只用于开发的目的,所以它们不含任何谷歌应用,甚至是一些核心系统应用。但它们仍然是回顾安卓的发布前时光的最好渠道。
|
||||
|
||||

|
||||
模拟器默认的qwerty布局并运行Milestone 3。
|
||||
Ron Amadeo供图
|
||||
|
||||
在异想天开的糖果版本代号和[与跨国食品公司跨界合作][2]之前,第一个安卓的公开发布版本的标签是“m3-rc20a”——“m3”代表“Milestone 3(里程碑3)”。尽管谷歌可能不会公布版本号——这个版本甚至没有一个设置应用来查看——浏览器用户标识识别为“Android 0.5”。
|
||||
|
||||
在2007年11月,谷歌获得安卓两年,iPhone发布五个月之后,[安卓正式发布][3],第一个模拟器正式释出。回到那时候看,这个系统才刚处于起步阶段。它很容易就被认为“只是个黑莓的山寨而已”。模拟器使用了一个qwerty布局的皮肤以及320×240的显示屏,是一台[原型设备][4]的复制品。这台设备由HTC制造,通过一些早期的安卓账户可以得知这台设备的代号似乎是“Sooner”。但是Sooner从未正式上市。
|
||||
|
||||
通过安卓早期[开发账号][5]得知,当苹果在2007年1月最终发布它革命性的智能手机后,谷歌不得不对安卓“从头来过”——包括放弃Sooner。考虑到Milestone 3模拟器在苹果的iPhone后近一年才推出,设备界面看起来还是那么像黑莓的模型是在是令人惊奇的事情。尽管在iPhone发布后的开发里任务毫无疑问地在优先保障下完成了,但模拟器仍然以被认为是“旧学院风”的界面发布。这使得它没能给人留下一个好的第一印象。
|
||||
|
||||
在早期阶段,安卓按键布局看起来并没有最终确定下来。尽管第一台商业安卓设备使用了“主屏幕”,“后退”,“菜单”以及“搜索”作为标准的按键套件,模拟器上有一个空白的标记为“X”的键,你可能会认为是那是搜索键应该在的地方。“Sooner”原型机看起来更奇怪——它在第四个键上有个星形标记。
|
||||
|
||||

|
||||
从左到右:主屏幕,一个打开的通知,以及“应用”文件夹。
|
||||
Ron Amadeo供图
|
||||
|
||||
在这里没有可以配置的主屏幕或小插件,仅仅只是简单的在底部有聚合图标的dock,可以循环或是点击。尽管已经有一些特性支持触摸屏,Milestone 3主要还是使用五向十字键——一个时至今日安卓仍然支持的不合时宜的设计。甚至早期的安卓都能够实现动画效果。图标在进入dock的中心窗口时会变大或缩小。
|
||||
|
||||
在这时候一样也还没有通知栏。通知图标显示在顶部状态栏(上面图片中的微笑标志),打开它的唯一方法是在主屏幕按下十字键的上键。你无法通过点击微笑的图标来打开它,也无法从除主屏幕以外的地方打开通知。当通知被打开的时候,状态栏些许地扩展开,通知文本会显示在一个聊天气泡中。一旦你阅读完通知,你无法手动清除它——应用本身负责清除它的通知消息。
|
||||
|
||||
应用抽屉的职责由一个dock左侧简单的“应用程序”文件夹负责。尽管有着不少标志性的功能,Milestone 3模拟器应用图标还不是十分完善。只有“浏览器”,“联系人” ,以及“地图”是这里面真正的应用。奇怪的是,“最近通话”被提升为一个独立的图标。因为这仅仅只是个模拟器,像闹钟,日历,拨号,计算器,照相机,相册,以及设置这样的智能手机核心功能的图标统统没有。硬件原型倒是有[其中的大部分][6],它还有一套谷歌应用出现并运行着。不幸的是我们没办法看到它们了。它们已经老到无论如何都连不上谷歌的服务器了。
|
||||
|
||||

|
||||
Milestone 3的浏览器菜单系统,壁纸界面,以及音量控制。
|
||||
Ron Amadeo供图
|
||||
|
||||
这套现在已经过时的菜单系统出现并运行在Milestone 3上。点击实体菜单键会打开一个灰色带有蓝色梯度高亮的列表,通过实体键盘完成操作。在上面的截图中,你可以看到在浏览器中打开的菜单。进入二级菜单,像缩放菜单,一级菜单变成有些奇怪的透明状态。
|
||||
|
||||
令人惊喜的是,多任务及后台应用在Milestone 3上已经可以运作了。离开应用而不关闭它——应用会保存状态,甚至写入文本保存。这个特性iOS直到2010年推出iOS 4才能与其相比,这就真正显示出了这两个平台的不同。iOS最初是作为一个封闭的平台而没有第三方应用,所以平台的鲁棒性并没有得到很大的关注。安卓是从头开始被构建成一个强大的应用软件平台,轻松开发应用是它创造出来背后的推动力之一。
|
||||
|
||||
在安卓之前,谷歌已经通过[WAP网站][7]和[J2ME手机应用][8]向移动端开始迁移,这使得它们强烈地意识到移动开发的难度。据[The Atlantic][9],拉里佩奇曾这么描述公司在移动端的努力“我们有一系列超过100台手机,我们在每一台设备上都要构建一次我们的应用”。开发者们现在经常抱怨安卓的碎片化,但在安卓出现之前,问题要比现在糟糕很多。
|
||||
|
||||
谷歌的平台战略实际上胜出了,iOS最终在不久后开始慢慢加入这些围绕应用的特性——多任务,跨应用分享,以及应用切换。
|
||||
|
||||

|
||||
当你在主屏幕按数字键弹出的拨号界面,来电,以及电话会议界面。
|
||||
Ron Amadeo供图
|
||||
|
||||
尽管没有拨号图标,Milestone 3模拟器还是有办法拨号。按键盘上的任意键会打开左侧界面,这是拨号/联系人搜索混合界面。仅输入数字并点击绿色的实体拨号键来开始通话,输入字母会搜索联系人。但是联系人无法通过数字搜索。甚至直接点击一个号码也不会打开联系人。
|
||||
|
||||
来电被显示成一个几乎全屏的令人愉快的透明背景弹窗。一旦进入通话,背景会变成深灰色,Milestone 3展现给用户一些令人惊奇的高级特性:静音,扬声器,保持,以及电话会议按钮。多方通话会显示成重叠,半透明的卡片状,用户有切换或者合并通话的选项可以选择。切换通话会触发一个漂亮的小卡片洗牌动画。
|
||||
|
||||

|
||||
联系人列表,打开一个联系人,编缉联系人,以及最近通话界面。
|
||||
Ron Amadeo供图
|
||||
|
||||
联系人是一个质朴的,黑色和蓝色的姓名列表。联系人卡片中有个联系人头像的位置但是没办法设置一张图像上去(至少在模拟器中不行)。这里唯一的装饰是每个联系人名字左侧的XMPP状态点。传统来说一个保持在线的XMPP连接是安卓的核心,它的深度集成从Milestone 3就已经开始了。安卓使用XMPP来驱动一个24/7在线的与谷歌服务器之间的连接,驱动Google Talk,云到端消息推送,以及应用的安装和卸载信息。
|
||||
|
||||

|
||||
浏览器的假Google首页,地址栏,浏览历史界面。
|
||||
Ron Amadeo供图
|
||||
|
||||
浏览器运行Webkit 419.3,它也被用在相同时代的像Mac OS X 10.4的Safari 2上。浏览器主页并不是Google.com,而是一个包含在安卓里的硬编码的home.html文件。它看起来就像是千年之前的Google.com。浏览器的OS X遗留还可以辨认出来,用了光滑的,Aqua风格的搜索按钮来渲染浏览器按钮。
|
||||
|
||||
这个小小的黑莓风格的屏幕需要一个分离的地址栏,可以通过浏览器菜单里的“前往”选项打开。尽管自动补全不起作用,地址栏会在你输入的时候实时搜索你的浏览历史。右侧图片显示的是历史界面,它使用了略缩图来显示各个站点。当前的略缩图在其它两个之前,滑动它们会触发一个猛扑的动画效果。但在早期阶段,浏览器不支持多标签或窗口——你可以看到当前站点,那就是全部了。
|
||||
|
||||

|
||||
一个视频屏幕抓取导出的谷歌地图界面,方向界面,相册测试界面。
|
||||
Ron Amadeo供图
|
||||
|
||||
在开始的时候,谷歌认识到在移动端地图将会非常重要,甚至在Milestone 5模拟器中内置了地图客户端。那个版本的谷歌地图是我们遇到的第一个死于云腐烂的。这个客户端无法从谷歌的服务器上载入信息,所以地图显示为一片空白,灰色的网格。没有什么能够运转。
|
||||
|
||||
幸运的是,因为上面的第一张截图,我们能够从安卓启动视频中拼凑出准确的界面。旧的谷歌地图看起来完全是为非触摸设备准备的,实体键快捷方式列表排列在屏幕底部。这样在看地图时,或是在如果仅仅显示该点的地址的时候就不大清楚。
|
||||
|
||||
隐藏在菜单之后的是搜索选项,方向,以及卫星和交通图层。中间的截图是方向的UI之一,你可以选择一个联系人的地址作为起点或者终点。但地图缺乏任何种类的集成GPS,你在哪都找不到“我的位置”这个按钮。
|
||||
|
||||
尽管没有合适的相册,在右边是相册的测试界面,隐藏在“API Demos”应用里。图片可以向左向右滚动,但无法以全屏的方式打开一张照片。同样它也没有照片管理选项。它本质上就是个图片滚动界面的测试视图。
|
||||
|
||||

|
||||
时间设置和日历,有点字间距问题,以及以Ars为特色的垂直列表测试。
|
||||
Ron Amadeo供图
|
||||
|
||||
同样模拟器中也没有设置应用,但是通过API Demos我们可以看到最初的日期时间设置界面。这个示例暴露出很多安卓没来得及处理的问题:到处都有的字间距问题,分钟数字间巨大的间隔,以及日历中星期日间不均等的间隔。尽管时间设置允许你单独更改每个数字,但除非你将当前日期移出本月到前一个或下一个月,否则你无法改变月份或年份。
|
||||
|
||||
别忘了尽管这看起来像是一些被遗忘时代的恐龙级别遗留物,但这仅仅是六年前发布的。我们总趋向与适应科技的脚步。我们很容易将这样的东西看作是20年前的东西。比较一下2007年晚些时候这个时间段的桌面操作系统,微软尝试将Windows Vista售往全世界快要一年了,而苹果刚刚发布OS X 10.5 Leopard。
|
||||
|
||||
最后一个关于Milestone 3的细节:谷歌在Milestone 3模拟器中给了Ars Technica一个快捷方式。打开“API Demos”应用并打开"Views," "Focus,"然后"Vertical"显示一个*this very Website*的头条测试列表。
|
||||
|
||||

|
||||
随Milestone 3,RC37a发布的更加现代,全触控风格的模拟器。
|
||||
Ron Amadeo供图
|
||||
|
||||
两个月后,2007年12月,谷歌放出了一个Milestone 3的更新,带来了更大的480×320设备设置。这个更新的标签是“m3-rc37a”。软件看起来还是像黑莓一样,仅仅是带来了更多的屏幕分辨率支持。
|
||||
|
||||
----------
|
||||
|
||||

|
||||
|
||||
[Ron Amadeo][a] / Ron是Ars Technica的评论编缉,专注于安卓系统和谷歌产品。他总是在追寻新鲜事物,还喜欢拆解事物看看它们到底是怎么运作的。
|
||||
|
||||
[@RonAmadeo][t]
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/
|
||||
|
||||
译者:[alim0x](https://github.com/alim0x) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://arstechnica.com/gadgets/2014/06/how-we-found-and-installed-every-version-of-android/
|
||||
[2]:http://arstechnica.com/gadgets/2013/09/official-the-next-edition-of-android-is-kitkat-version-4-4/
|
||||
[3]:http://arstechnica.com/gadgets/2007/11/its-official-google-announces-open-source-mobile-phone-os-android/
|
||||
[4]:http://www.zdnet.com/blog/mobile-gadgeteer/mwc08-hands-on-with-a-working-google-android-device/860
|
||||
[5]:http://www.theatlantic.com/technology/archive/2013/12/the-day-google-had-to-start-over-on-android/282479/
|
||||
[6]:http://www.letsgomobile.org/en/2974/google-android/
|
||||
[7]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/%E2%80%9D
|
||||
[8]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/%E2%80%9D
|
||||
[9]:http://www.theatlantic.com/technology/archive/2013/12/the-day-google-had-to-start-over-on-android/282479/
|
||||
[10]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/1/#milestone3
|
||||
[11]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/2/#milestone5
|
||||
[12]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/3/#0.9
|
||||
[13]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/6/#1.0
|
||||
[14]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/7/#1.1
|
||||
[15]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/8/#cupcake
|
||||
[16]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/9/#Mapsmarket
|
||||
[17]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/9/#donut
|
||||
[18]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/10/#2.0eclair
|
||||
[19]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/11/#nexusone
|
||||
[20]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/12/#2.1eclair
|
||||
[21]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/13/#alloutwar
|
||||
[22]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/13/#froyo
|
||||
[23]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/14/#voiceactions
|
||||
[24]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/14/#gingerbread
|
||||
[25]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/16/#honeycomb
|
||||
[26]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/19/#music
|
||||
[27]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/19/#ics
|
||||
[28]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/21/#googleplay
|
||||
[29]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/21/#4.1jellybean
|
||||
[30]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/21/#playservices
|
||||
[31]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/22/#4.2jellybean
|
||||
[32]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/23/#outofcycle
|
||||
[33]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/24/#4.3jellybean
|
||||
[34]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/25/#kitkat
|
||||
[35]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/26/#conclusion
|
||||
[a]:http://arstechnica.com/author/ronamadeo
|
||||
[t]:https://twitter.com/RonAmadeo
|
70
translated/tech/20140624 Super Pi Brothers.md
Normal file
70
translated/tech/20140624 Super Pi Brothers.md
Normal file
@ -0,0 +1,70 @@
|
||||
超级树莓派兄弟
|
||||
================================================================================
|
||||
我已经不象以前那样玩那么多游戏了。虽然之前我当然花费了生命里的无数时间在任天堂,SNES,或是之后在我电脑上的第一人称射击游戏(只在Linux下,谢谢),如今,我更愿意把空余时间花在我累积起来的许多其他非游戏爱好上。但是最近,我发现自己又抹掉了Wii手柄上的灰尘,这样就可以玩一玩我重新购买的NES和SNES游戏了。不过问题是,这些游戏需要用到一些特别的控制器,而且我已经有一个修改过的SNES控制器可以通过USB连接。这已经有足够的理由让我去寻找一个更合适的方案。当然,我也可以简单地接上三个甚至四个手柄,然后在客厅里面堆满游戏。但是我已经习惯于把我的CD和DVD都提取成文件,然后在中心媒体服务器上挑选着听或是看。所以如果每次我想换游戏的时候,不用起身去翻游戏卡带,那就完美了。当然,这意味着得使用模拟器。尽管之前我在一个改动过的Xbox上成功过,不过可惜它已经不在我手上了。然后我觉得一定有什么人已经在树莓派上实现过这种平台,结果是肯定的,在简单地搜索和一些命令之后,我在一个剩下的树莓派上搭起来一个完美的怀旧游戏中心。
|
||||
|
||||
树莓派项目的一个优点是,有大量的用户在使用相同的硬件。对我来说,这意味着我不用完整地参考别人的指引再根据自己的需求做出必要的改动,而只需要简单地完全按照别人的指导做就行了。在我这件事情上,我找到了RetroPie项目,它把你安装时需要用到的所有命令都包到了一个单一的大脚本中。在执行完后,你就完整地安装并配置好了RetroArch,它集成了所有的主流模拟器以及一个统一的配置方式,再加上一个在树莓派上开机启动的EmulationStation图形界面,通过它可以只用手柄就能方便地定位到你想玩的游戏。
|
||||
|
||||
### 安装RetroPie ###
|
||||
|
||||
在安装RetroPie之前,你可能需要确认一下你的Raspbian版本(树莓派默认的Linux发行版,这也是这个项目假设你在用的)是不是最新的,包括有没有新的固件。这只需要几个通用的`apt`命令。虽然,在这一步里你当然可以接个键盘到树莓派上,不过我觉得用`ssh`登录到树莓派上更方便。之后直接复制和粘贴下面的命令:
|
||||
|
||||
$ sudo apt-get update
|
||||
$ sudo apt-get -y upgrade
|
||||
|
||||
现在树莓派已经更新到最新了,再确认一下是否安装了git和dialog,然后可以通过git来下载RetroPie:
|
||||
|
||||
|
||||
$ sudo apt-get -y install git dialog
|
||||
$ cd
|
||||
$ git clone --depth=0
|
||||
↪git://github.com/petrockblog/RetroPie-Setup.git
|
||||
|
||||
执行完上边的命令后会创建一个RetroPie-Setup目录,里面有主要的安装脚本。之后你只需要进去这个目录,并运行安装脚本:
|
||||
|
||||
$ cd RetroPie-Setup
|
||||
$ chmod +x retropie_setup.sh
|
||||
$ sudo ./retropie_setup.sh
|
||||
|
||||
这个脚本会在终端里显示一个菜单(图1),在里面你可以选择二进制安装或是源码安装,配置RetroPie,或是更新RetroPie安装脚本和执行文件。之后选择二进制安装或是源码安装,任选一个。二进制安装会快一些,不过有些软件版本可能不是最新的。源码安装需要编译软件,所以用的时间会比较长,但是完成之后,所有的一切都是最新版的。我个人会选择二进制安装,因为我知道在碰到任何问题之后,随时都可以重新执行这个脚本再选择源码安装。
|
||||
|
||||

|
||||
|
||||
#### 图1. RetroPie安装菜单 ####
|
||||
|
||||
在vanilla Raspbian固件版本中,这一步会需要很长时间,因为有大量不同的包需要下载和安装。在安装完成之后,返回在RetroPie安装主界面中,在主菜单里选择SETUP,在之后的二级菜单里,你可以调整设置,例如是否开机启动EmulationStation(推荐打开)以及是否允许欢迎界面。在我这里,我两个都允许了,因为我希望这个设备是一个独立的模拟游戏机。不过你需要了解的是,如果你确实允许了EmulationStation开机自动启动,你仍然可以ssh登录到机器上然后执行原始的RetroPie安装配置脚本来改变这个设置。
|
||||
|
||||
### 添加ROM ###
|
||||
|
||||
你也可以在RetroPie设置界面添加ROM。如果你在菜单里选择了Samba方式,就可以在网络上找一个Samba共享目录,然后从里面拷贝ROM。如果通过U盘的方式,RetroPie会在插到树莓派的U盘上创建一个目录结构,分别对应不同的模拟器。在这之后,你就可以把U盘插到其他电脑上,然后把ROM拷贝到合适的目录里,当再插回树莓派的时候,它会自动同步文件。最后(我就是这么做的),你还可以使用scp或者rsync来拷贝ROM到~/RetroPie/roms/的合适目录下。举个例子,NES游戏需要拷贝到~/RetroPie/roms/nes/目录里。
|
||||
|
||||
当你完成了配置并退出了RetroPie的设置脚本后,应该会想重启并进入EmulationStation,但是在那之前,你应该重新配置树莓派的内存空间,设为192或者128,运行命令:
|
||||
|
||||
|
||||
$ sudo raspi-config
|
||||
|
||||
然后选择高级设置,调整内存空间设定。之后就可以安全地重启了。
|
||||
|
||||
### EmulationStation ###
|
||||
|
||||
重启完之后,当看到EmulationStation界面时应该会很高兴,之后它会提示你设定控制杆,游戏手柄,或键盘按键,这样就可以控制EmulationStation菜单了。不过注意一下,这并不会影响手柄在游戏里的按键定义,只是用于控制EmulationStation菜单的。在设定完手柄后,你应该可以按下向右或向左方向键来切换不同的模拟器菜单了。在我这里,我将会在游戏里用到手柄上的所有按钮,所以我特别将另一个键盘上的键映射到菜单功能,这样在我玩完一个游戏后,不用重启树莓派就可以退出来。
|
||||
|
||||
EmulationStation只会显示已经侦测到ROM的模拟器,所以,如果你还没有拷贝ROM的话,得先做这件事情,然后可能还得重启一下才会有效果。而且,默认情况下,你的手柄没有为任何游戏做配置,但是,如果你在EmulationStation里一直按向右键足够多次以后,会弹出输入设定界面,你可以在里面映射手柄按键。有一个亮点是,当你设定好按键后,它会相应地应用到其他模拟器中。
|
||||
|
||||
就是这些了。在这之后,你可以浏览你收藏的各种游戏,然后按下绑定到确定的那个按键开始游戏。一开始我还担心树莓派可能不够强劲来玩我的游戏,但是直到现在,我试过地所有游戏都可以完美地运行。
|
||||
|
||||
### 资源 ###
|
||||
|
||||
RetroPie项目主页:[http://blog.petrockblock.com/retropie][1]
|
||||
|
||||
RetroPie安装文档:[https://github.com/petrockblog/RetroPie-Setup][2]
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxjournal.com/content/super-pi-brothers
|
||||
|
||||
译者:[zpl1025](https://github.com/zpl1025) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://blog.petrockblock.com/retropie
|
||||
[2]:https://github.com/petrockblog/RetroPie-Setup
|
@ -0,0 +1,57 @@
|
||||
怎样在ubuntu 14.04上安装轻量级的Budgie桌面
|
||||
================================================================================
|
||||
**如果你在推特上关注了我们,你可能看见了我们最近分享的一张截图,和这张截图一起的还有对它所展示的桌面进行命名的邀请。 **
|
||||
|
||||
你猜对了吗? 答案就是budgie —— 一种为基于openSUSE 的linux发行版Evolve OS所设计,但不仅仅只能用于 Evolve OS的简易桌面环境。
|
||||
|
||||

|
||||
|
||||
我们第一次描写Budgie是在三月份,当时我们被它的整洁,小巧的美感,灵活的架构,还有重复使用在当今大多数发行版中所使用的GNOME 3.10 成熟技术中的公共部分和标堆栈的决定所折服。
|
||||
|
||||
我对此项目的领导者LKey Doherty所作出的开发选择非常佩服。无可否认另起炉灶有它的优点,但决定从上游的项目获取帮助将可以整个项目进展得更快,无论是在发展方面(更轻的技术负担)还是在用户可使用方面(更容易在其它发行版上运行)。
|
||||
|
||||
政治因素选择除外,这款桌面以干净,小巧向谷歌Chrome OS的Ash桌面表示敬意。如果你不介意有些许粗糙的边缘,那它值得你玩玩。那么怎样在Ubuntu安装Budgie呢?
|
||||
|
||||
###非官方的PPA是不正式的 ###
|
||||
|
||||
开源意味着如果你有一点终端使用知识的话,你就可以在获得Budgie桌面的源代码后进行编译,然后运行。
|
||||
|
||||
但如果你很懒,想不费周折就在Ubuntu 14.04 LTS(或者一个基于它的发行版)运行Budgie,那么你可以通过比较容易的途径来实现。
|
||||
|
||||
添加一个非官方的Unofficial PPA,刷新你的软件源然后进行安装。几分钟后在这个家庭中你将有一位名叫Bob的新叔叔,并且有一个新的桌面可以玩耍。
|
||||
|
||||
###添加Budgie PPA ###
|
||||
|
||||
将以下命令复制进一个打开的终端窗口,在提示过后输入你的密码(如果需要的话)
|
||||
|
||||
sudo add-apt-repository ppa:sukso96100/budgie-desktop
|
||||
sudo apt-get update && sudo apt-get install budgie-desktop
|
||||
|
||||
### 登入Budgie会话 ###
|
||||
|
||||
安装完成后你就可以在Unity欢迎界面的会话选择器中选择Budgie会话了。(别忘了以后要把选择项改回到稳定的桌面环境)
|
||||
|
||||
### 注意 ###
|
||||
|
||||
**budgie是不稳定,不完善的,它在Ubuntu上也没有被正式支持。它正在积极开发中,缺少一些特性,包括(但不仅仅只有这些):不支持网络管理,没有音量控制小程序(键盘工作良好),没有通知系统,无法将应用程序“固定”在任务栏。**
|
||||
|
||||
它对UBUNTU的叠加滚动条和一些GTK主题的支持也不是很好,而且在使用upstart的发行版(例如ubuntu,即使它正在改变之中)中会话管理器(例如,注销,重启等等)将无法工作。
|
||||
|
||||
一个应变方法是:禁用叠加滚动条,设置一个默认主题,通过在终端中使用以下命名来退出会话。
|
||||
|
||||
gnome-session-quit
|
||||
|
||||
想着脑海中所有的这些警告,我建议想使用稳定的,可靠的系统的人现在暂时不要使用它。
|
||||
|
||||
而作为狂热一族的业余体验呢?请在下面评论,让我们了解你的想法。我将退出而让Bob来接手。
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.omgubuntu.co.uk/2014/07/install-budgie-evolve-os-desktop-ubuntu-14-04
|
||||
|
||||
译者:[Love-xuan](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.omgubuntu.co.uk/2014/03/budgie-desktop-chrome-os-like
|
||||
[2]:http://en.wikipedia.org/wiki/Bob
|
||||
[3]:http://www.omgubuntu.co.uk/2014/02/ubuntu-debian-switching-systemd
|
@ -0,0 +1,54 @@
|
||||
在Ubuntu上显示桌面歌词
|
||||
================================================================================
|
||||

|
||||
|
||||
除了免费的流媒体音乐外,我最喜欢[Spotify][1]的地方就是它的歌词插件了。有时候我听不懂一首歌里面的所有歌词,尤其是rap。[TuneWiki][2]插件在这种情况下就派得上用场了。但TuneWiki仅有支持Windows和iTune的插件,那我们在linux桌面上有什么选择呢?
|
||||
|
||||
如果你使用过Linux桌面一段时间,你也许听过[OSD Lyrics][3]。它是一个显示桌面歌词的小程序。你可以借助一些音乐播放器来使用它,比如Rythmbox,[Banshee][4],[Clementine][5]等等。
|
||||
|
||||
### 在Ubuntu 14.04和Linux mint 17上安装OSD Lyrics ###
|
||||
|
||||
两年以前OSD Lyrics在它的官方仓库中被积极地维护,但现在对它的开发已经停止了。尽管这个PPA已经不可用,但可以通过网络下载OSD Lyrics的安装包。虽然这些安装执行文件最初是为Ubuntu 12.02设计的,但这些文件也能在Ubuntu 14.04上很良好地工作。我们一起看看怎么在UUUUbuntu 14.04和 Linux mint 17上安装OSD Lyrics。
|
||||
|
||||
[前往下载页下载OSDLyrics][6],根据你是使用[32位还是64位的ubuntu][7]来下载相应的.deb 文件。你会在网页的上方找到这些文件。
|
||||
|
||||

|
||||
|
||||
下载完成后,通过双击它来使用Ubuntu软件中心来安装。另外,你也可以使用[Gdebi ][8]来快速地安装.deb安装包。
|
||||
|
||||
### 怎样在Ububtu和linux mnit 上使用OSD Lyrics使用歌词 ###
|
||||
|
||||
安装完成后,你可以从Unity Dash运行OSD Lyrics :
|
||||
|
||||

|
||||
|
||||
首次运行时,OSD Lyrics会检测你的系统中能被它支持的播放器。你可以设定一个默认播放器,以后当你运行OSD Lyrics时它就会自动启动 。
|
||||
|
||||

|
||||
|
||||
有一件事值得注意,那就是OSD Lyrics不像[Shazam][9]等一样,它不是通过音频来寻找歌词,而是通过比如名称,专辑,艺术家等信息来关联音乐文件。所以你得确保你的音乐文件的来源正当,或者是你得保持你的音乐文件的信息是正确和已经更新了的。
|
||||
|
||||
如果OSD Lyrics辨认出了音乐文件,它就会用卡拉OK格式在桌面上显示歌词了:(译者注:OSD Lyrics可以自动在千千静听和虾米歌词站点在线下载歌词,这对我们中文用户来说是个福音)
|
||||
|
||||

|
||||
|
||||
OSD Lyrics有大量设置选项,你可以改变歌词字体的种类,大小等等其它许多设置。
|
||||
|
||||
你认为OSD Lyrics怎么样?你使用其它的一些歌词插件吗?闲余时间请和我们分享你的看法。
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://itsfoss.com/display-song-lyrics-desktop-ubuntu-1404/
|
||||
|
||||
译者:[Love-xuan](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://itsfoss.com/install-spotify-ubuntu-1404/
|
||||
[2]:http://www.tunewiki.com/
|
||||
[3]:https://code.google.com/p/osd-lyrics
|
||||
[4]:http://banshee.fm/
|
||||
[5]:https://www.clementine-player.org/
|
||||
[6]:https://code.google.com/p/osd-lyrics/downloads/list
|
||||
[7]:http://itsfoss.com/how-to-know-ubuntu-unity-version/
|
||||
[8]:http://itsfoss.com/install-deb-files-easily-and-quickly-in-ubuntu-12-10-quick-tip/
|
||||
[9]:http://www.shazam.com/
|
106
translated/tech/20140718 Linux Kernel Testing and Debugging 2.md
Normal file
106
translated/tech/20140718 Linux Kernel Testing and Debugging 2.md
Normal file
@ -0,0 +1,106 @@
|
||||
Linux 内核测试与调试 - 2
|
||||
================================================================================
|
||||
### 编译安装稳定版内核 ###
|
||||
|
||||
如果你用 git 下载源码,就执行以下命令:
|
||||
|
||||
cd linux-stable
|
||||
|
||||
git checkout linux-3.x.y
|
||||
|
||||
如果是直接下载压缩文件,用以下命令进入源码目录:
|
||||
|
||||
cd linux-3.x.y
|
||||
|
||||
如果你想把内核安装到自己的系统上,最安全的方法是使用你安装好的发行版拥有的配置文件。你可以在 /boot 目录找到当前发行版的内核配置文件:
|
||||
|
||||
cp /boot/config-3.x.y-z-generic .config
|
||||
|
||||
运行下面的命令,可以在当前内核配置的基础上修改一些小地方,然后产生新的内核配置文件。比如说新的内核比你的 Ubuntu 发行版自带的内核多了些新功能,而你正好需要用到它们,这个时候你就要修改配置了。
|
||||
|
||||
make oldconfig
|
||||
|
||||
完成配置后,就可以编译了:
|
||||
|
||||
make all
|
||||
|
||||
完成编译后,安装这个新的内核:
|
||||
|
||||
sudo "make modules_install install"
|
||||
|
||||
上面的命令安装新内核,并把新内核作为启动项添加到 grub 文件(LCTT:就是你下次开机时会多出一个开机选项)。好了你可以重启电脑,然后选择新的内核启动系统。等等!先别冲动,在重启电脑之前,我们保存下编译内核产生的日志,用于比较和查找错误(如果有错误发生的话):
|
||||
|
||||
dmesg -t > dmesg_current
|
||||
|
||||
dmesg -t -k > dmesg_kernel
|
||||
|
||||
dmesg -t -l emerg > dmesg_current_emerg
|
||||
|
||||
dmesg -t -l alert > dmesg_current_alert
|
||||
|
||||
dmesg -t -l crit > dmesg_current_alert
|
||||
|
||||
dmesg -t -l err > dmesg_current_err
|
||||
|
||||
dmesg -t -l warn > dmesg_current_warn
|
||||
|
||||
正常的话,dmesg 不会输出 emerg, alert, crit 和 err 级别的信息。如果你不幸看到这些输出了,说明内核或者你的硬件环境有问题。
|
||||
|
||||
再介绍一些重启前的需要执行的操作。谁也不能保证新内核能够正常启动,所以请不要潇洒地把老内核删除,至少保留一个稳定可用的内核在系统上。修改一下 /etc/default/grub 文件:
|
||||
|
||||
使用 earlyprink=vga 作为内核启动选项,把系统早期启动的信息打印到显示屏上:
|
||||
|
||||
GRUB_CMDLINE_LINUX="earlyprink=vga"
|
||||
|
||||
将 GRUB_TIMEOUT 的值设置成10秒到15秒之间的值,保证在开机启动的时候你有足够的时间来选择启动哪个内核:
|
||||
|
||||
取消对 GRUB_TIMEOUT 的注释,并把它设置为10:GRUB_TIMEOUT=10
|
||||
注释掉 GRUB_HIDDEN_TIMEOUT 和 GRUB_HIDDEN_TIMEOUT_QUIET
|
||||
|
||||
运行 update-grub 命令,更新 /boot 目录下的 grub 配置文件:
|
||||
|
||||
sudo update-grub
|
||||
|
||||
现在可以重启系统了。新内核起来后,比较新老内核的 dmesg 信息,看看新的内核有没有编译错误。如果新内核启动失败,你需要通过老内核启动系统,然后分析下为什么失败。
|
||||
|
||||
### 跟上节奏,永不落后(编译最新版内核) ###
|
||||
|
||||
如果你想开上内核快车道,追求与时俱进,那就去下载 mainline 状态的内核或 linux-next 状态的内核(LCTT:读者可进入 kernel.org 获取代码,linux 代码被分为4种状态:mainline, stable, longterm, linux-next)。安装测试 mainline 状态或 linux-next 状态的内核,你就可以在正式发布之前帮助内核找到并修复里面的 bug。
|
||||
|
||||
mainline 状态的内核源码:
|
||||
|
||||
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
|
||||
|
||||
linux-next 状态的内核源码:
|
||||
|
||||
git clone git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
|
||||
|
||||
编译安装这两种内核的步骤与编译安装稳定版内核一样。按之前讲过的步骤来就行了。
|
||||
|
||||
### 打补丁 ###
|
||||
|
||||
Linux 内核的补丁是一个文本文件,包含新源码与老源码之间的改变量。每个补丁只包含自己依赖的源码的增量,除非它被特意包含进一系列补丁之中。打补丁方法如下:
|
||||
|
||||
patch -p1 < file.patch
|
||||
|
||||
git apply --index file.patch
|
||||
|
||||
两种方法都可以打补丁。但是,如果你要打的补丁包含一个新文件,git 命令不能识别这个新增的文件,也就是说这个新文件在 git 里面属于 untracked 文件(LCTT:玩 git 的人对这个会比较熟悉,就是文件处于未被跟踪的状态,你需要使用 git add <file> 命令将文件放入暂存区)。git diff 命令不会将这个文件的增量显示出来,并且 git status 命令会显示这个文件处于 untracked 状态。
|
||||
|
||||
大多数情况下,有个没被跟踪的文件,对于编译安装内核来说没什么问题,但是 git 操作就会出现一些问题了: git reset --hard 命令不会删除这个新加的文件,并且接下来的 git pull 操作也会失败。你有多种选择来避免上面所说的状况:
|
||||
|
||||
选项1,不跟踪这个新文件:
|
||||
|
||||
> 如果打补丁后新添加了文件,在 git reset --hard 前使用 git clean 命令来删除没有被跟踪的文件。举个例子,git clean -dfx 命令会强制删除未被跟踪的目录和文件,忽略在 .gitigniore 文件内规定的文件。如果你不在乎哪些文件会被删除,你可以使用 -q 选项让 git clean 命令进入安静模式,不输出任何处理过程。
|
||||
|
||||
选项2,跟踪新文件:
|
||||
|
||||
> 你可以在使用 git apply --index file.patch 命令后让 git 跟踪打完补丁后新产生的文件(LCTT:使用 git add <new file> 命令),就是让 git 把文件放入 index 区域。做完这个后,git diff 命令会将新文件的增量打印出来,git status 也会显示者这是一个正常的新增文件。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxjournal.com/content/linux-kernel-testing-and-debugging?page=0,1
|
||||
|
||||
译者:[bazz2](https://github.com/bazz2) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
124
translated/tech/20140718 Linux Kernel Testing and Debugging 3.md
Normal file
124
translated/tech/20140718 Linux Kernel Testing and Debugging 3.md
Normal file
@ -0,0 +1,124 @@
|
||||
Linux 内核测试与调试 - 3
|
||||
================================================================================
|
||||
### 基本测试 ###
|
||||
|
||||
安装好内核后,试试能不能启动它。能启动的话,检查 dmesg 看看有没有隐藏的错误。试试下面的功能:
|
||||
|
||||
- 网络(Wifi 或者网线)是否可用?
|
||||
- ssh 是否可用?
|
||||
- 使用 ssh 远程传输文件。
|
||||
- 使用 git clone 和 git pull 命令。
|
||||
- 用用网络浏览器。
|
||||
- 查看 email。
|
||||
- 使用 ftp, wget 等软件下载文件。
|
||||
- 播放音频视频文件。
|
||||
- 连上 USB 鼠标等设备。
|
||||
|
||||
|
||||
### 检查内核日志 ###
|
||||
|
||||
使用 dmesg 查看隐藏的问题,对于定位新代码带来的 bug 是一个好方法。一般来说,dmesg 不会输出新的 crit, alert, emerg 级别的错误信息,也不应该出现新的 err 级别的信息。你要注意的是那些 warn 级别的日志信息。请注意 warn 这个级别的信息并不是坏消息,新代码带来新的警告信息,不会给内核带去严重的影响。
|
||||
|
||||
- dmesg -t -l emerg
|
||||
- dmesg -t -l crit
|
||||
- dmesg -t -l alert
|
||||
- dmesg -t -l err
|
||||
- dmesg -t -l warn
|
||||
- dmesg -t -k
|
||||
- dmesg -t
|
||||
|
||||
下面的脚本运行了上面的命令,并且将输出保存起来,以便与老的内核的 dmesg 输出作比较(LCTT:老内核的 dmesg 输出在本系列的第一篇文章中有介绍)。然后运行 diff 命令,查看新老内核 dmesg 日志之间的不同。脚本需要输入老内核版本号,如果不输入参数,它只会生成新内核的 dmesg 日志文件后直接退出,不再作比较(LCTT:话是这么说没错,但点开脚本一看,没输参数的话,这货会直接退出,连新内核的 dmesg 日志也不会保存的)。如果 dmesg 日志有新的警告信息,表示新发布的内核有漏网之鱼(LCTT:嗯,漏网之 bug 会更好理解些么?),这些 bug 逃过了自测和系统测试。你要看看,那些警告信息后面有没有栈跟踪信息?也许这里有很多问题需要你进一步调查分析。
|
||||
|
||||
- [**dmesg 测试脚本**][1]
|
||||
|
||||
### 压力测试 ###
|
||||
|
||||
执行压力测试的一个好办法是同时跑三四个内核编译任务。下载各种版本的内核,同时编译它们,并记录时间。比较新内核跑压力测试和老内核跑压力测试所花的时间,然后可以定位新内核的性能。如果新内核跑压力测试的时间比老内核的更长,说明新内核的部分模块性能退步了。性能问题很难调试出来。第一步是找出哪里导致的性能退步。同时跑多个内核编译任务对检测内核整体性能来说是个好方法,但是这种方法涵盖了多个内核模块,比如内存管理、文件系统、DMA、驱动等(LCTT:也就是说,这种压力测试没办法定位到是哪个模块造成了性能的下降)。
|
||||
|
||||
time make all
|
||||
|
||||
### 内核测试工具 ###
|
||||
|
||||
我们可以在 Linux 内核本身找到多种测试方法。下面介绍一个很好用的功能测试工具集: ktest 套件
|
||||
|
||||
ktest 是一个自动测试套件,它可以提供编译安装启动内核一条龙测试服务,也可以跑交叉编译测试,前提是你的系统有安装交叉编译所需要的软件。ktest 依赖于 flex 和 bison。详细信息请参考放在 tools/testing/ktest 目录下的文档,你可以自学成材。另外还有一些参考资料教你怎么使用 ktest:
|
||||
|
||||
- [**ktest-eLinux.org**][2]
|
||||
|
||||
### tools/testing/selftests 套件 ###
|
||||
|
||||
我们来玩玩自测吧。内核源码的多个子系统都有自己的自测工具,到目前为止,断点、cpu热插拔、efivarfs、IPC、KCMP、内存热插拔、mqueue、网络、powerpc、ptrace、rcutorture、定时器和虚拟机子系统都有自测工具。另外,用户态内存的自测工具可以利用 test_user_copy 模块来测试用户态内存到内核态的拷贝过程。下面的命令演示了如何使用这些测试工具:
|
||||
|
||||
编译测试:
|
||||
|
||||
make -C tools/testing/selftests
|
||||
|
||||
测试全部:(有些测试需要 root 权限,你需要以 root 用户登入系统然后运行命令)
|
||||
|
||||
make -C tools/testing/selftests run_tests
|
||||
|
||||
只测试单个子系统:
|
||||
|
||||
make -C tools/testing/selftests TARGETS=vm run_tests
|
||||
|
||||
### tools/testing/fault-injection 套件 ###
|
||||
|
||||
在 tools/testing 目录下的另一个测试套件是 fault-injection。failcmd.sh 脚本用于检测 slab 和内存页分配器的错误。这些工具可以测试内核能否很好地从错误状态中恢复回来。这些测试需要用到 root 权限。下面简单介绍了一些当前能提供的错误检测方法。随着错误检测方法的增加,这份名单也会不断增长。最新的名单请参考 Documentation/fault-injection/fault-injection.txt 文档。
|
||||
|
||||
failslab (默认选项)
|
||||
|
||||
产生 slab 分配错误。作用于 kmalloc(), kmem_cache_alloc() 等函数(LCTT:产生的结果是调用这些函数就会返回失败,可以模拟程序分不到内存时是否还能稳定运行下去)。
|
||||
|
||||
fail_page_alloc
|
||||
|
||||
产生内存页分配的错误。作用于 alloc_pages(), get_free_pages() 等函数(LCTT:同上,调用这些函数,返回错误)。
|
||||
|
||||
fail_make_request
|
||||
|
||||
对满足条件(可以设置 /sys/block//make-it-fail 或 /sys/block///make-it-fail 文件)的磁盘产生 IO 错误,作用于 generic_make_request() 函数(LCTT:所有针对这块磁盘的读或写请求都会出错)。
|
||||
|
||||
fail_mmc_request
|
||||
|
||||
对满足条件(可以设置 /sys/kernel/debug/mmc0/fail_mmc_request 这个 debugfs 属性)的磁盘产生 MMC 数据错误。
|
||||
|
||||
你可以自己配置 fault-injection 套件的功能。fault-inject-debugfs 内核模块在系统运行时会在 debugfs 文件系统下面提供一些属性文件。你可以指定出错的概率,指定两个错误之间的时间间隔,当然本套件还能提供更多其他功能,具体请查看 Documentation/fault-injection/fault-injection.txt。 Boot 选项可以让你的系统在 debugfs 文件系统起来之前就可以产生错误,下面列出几个 boot 选项:
|
||||
|
||||
- failslab=
|
||||
- fail_page_alloc=
|
||||
- fail_make_request=
|
||||
- mmc_core.fail_request=[interval],[probability],[space],[times]
|
||||
|
||||
fault-injection 套件提供接口,以便增加新的功能。下面简单介绍下增加新功能的步骤,详细信息请参考上面提到过的文档:
|
||||
|
||||
使用 DECLARE_FAULT_INJECTION(name) 定义默认属性;
|
||||
|
||||
> 详细信息可查看 fault-inject.h 中定义的 struct fault_attr 结构体。
|
||||
|
||||
配置 fault 属性,新建一个 boot 选项;
|
||||
|
||||
> 这步可以使用 setup_fault_attr(attr, str) 函数完成,为了能在系统启动的早期产生错误,添加一个 boot 选项这一步是必须要有的。
|
||||
|
||||
添加 debugfs 属性;
|
||||
|
||||
> 使用 fault_create_debugfs_attr(name, parent, attr) 函数,为新功能添加新的 debugfs 属性。
|
||||
|
||||
为模块设置参数;
|
||||
|
||||
> 为模块添加一些参数,对于配置错误属性来说是一个好主意,特别是当新功能的应用范围受限于单个内核模块的时候(LCTT:不同内核,你的新功能可能需要不同的测试参数,通过设置参数,你的功能可以不必为了迎合不同内核而每次都重新编译一遍)。
|
||||
|
||||
添加一个钩子函数到错误测试的代码中。
|
||||
|
||||
> should_fail(attr, size) —— 当这个钩子函数返回 true 时,用户的代码就应该产生一个错误。
|
||||
|
||||
应用程序使用这个 fault-injection 套件可以指定某个具体的内核模块产生 slab 和内存页分配的错误,这样就可以缩小性能测试的范围。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxjournal.com/content/linux-kernel-testing-and-debugging?page=0,2
|
||||
|
||||
译者:[bazz2](https://github.com/bazz2) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://linuxdriverproject.org/mediawiki/index.php/Dmesg_regression_check_script
|
||||
[2]:http://elinux.org/Ktest#Git_Bisect_type
|
145
translated/tech/20140718 Linux Kernel Testing and Debugging 4.md
Normal file
145
translated/tech/20140718 Linux Kernel Testing and Debugging 4.md
Normal file
@ -0,0 +1,145 @@
|
||||
Linux 内核测试和调试 - 4
|
||||
================================================================================
|
||||
### 自动测试工具 ###
|
||||
|
||||
这里列出一些能满足不同需求的测试工具供你选择。本小节只是简单介绍个大概,并不提供详细操作指南。
|
||||
|
||||
#### [AuToTest][1] ####
|
||||
|
||||
> AuToTest 是一个全自动测试框架,存在的主要目的就是测试 Linux 内核,当然也可以用来测试其他东西,比如测试一块新硬件是否能稳定工作。AuToTest 是开源软件,以 GPL 方式授权,运行于 server-client 架构(即 C/S 架构)。你可以通过配置 server 端来对运行了 client 端的系统执行初始化、运行与监测工作,也可以自己在目标系统上让 client 运行起来。另外你可以为这个测试框架添加测试用例,详情请参考[AuToTest 白皮书][2]。
|
||||
|
||||
#### Linaro Automated Validation Architecture ####
|
||||
|
||||
> LAVA 自动测试框架用于自动安装于运行测试。举个例子:你在 LAVA 里面只需运行几个命令就可以跑 LTP(LCTT:Linux Test Project,中文是 Linux 测试计划,SGI发起并由IBM负责维护,目的是为开源社区提供测试套件来验证Linux的可靠性、健壮性和稳定性)。通过 LAVA 命令可以自动为你安装 LTP 所需要的所有依赖包,下载源码、编译编码、将 LTP 安装到某个独立的地方,方便卸载 LTP 时能移除所有二进制文件。安装好 LTP 后,运行 LAVA 命令时添加 'ltp' 选项就可以运行 LTP 测试任务了,它会将测试结果以文件方式保存下来,文件名包含测试名称、时间戳。这些测试结果可以留着供以后参考。这是个发现软件退化(如果软件退化了的话)的好方法。下面列出 LAVA 配合 LTP 使用的一些命令:
|
||||
|
||||
显示 LAVA 支持的测试列表:
|
||||
|
||||
lava-test list-tests
|
||||
|
||||
安装测试套件:
|
||||
|
||||
lava-test install ltp
|
||||
|
||||
运行测试:
|
||||
|
||||
lava-test run ltp
|
||||
|
||||
查看结果:
|
||||
|
||||
lava-test results show ltp-timestamp.0
|
||||
|
||||
卸载测试套件:
|
||||
|
||||
lava-test uninstall ltp
|
||||
|
||||
### 内核调试功能 ###
|
||||
|
||||
Linux 内核本身包含很多调试功能,比如 kmemcheck 和 kmemleak。
|
||||
|
||||
#### kmemcheck ####
|
||||
|
||||
> kmemcheck 是一个动态检查工具,可以检测出一些未被初始化的内存(LCTT:内核态使用这些内存可能会造成系统崩溃)并发出警告。它的功能与 Valgrind 类似,只是 Valgrind 运行在用户态,而 kmemchecke 运行在内核态。编译内核时加上 CONFIG_KMEMCHECK 选项打开 kmemcheck 调试功能。你可以阅读 Documentation/kmemcheck.txt 来学习如何配置使用这个功能,以及如何看懂调试结果。
|
||||
|
||||
#### kmemleak ####
|
||||
|
||||
> kmemleak 通过类似于垃圾收集器的功能来检测内核是否有内存泄漏问题。而 kmemleak 与垃圾收集器的不同之处在于前者不会释放孤儿目标(LCTT:不会再被使用的、应该被释放而没被释放的内存区域),而是将它们打印到 /sys/kernel/debug/kmemleak 文件中。用户态的 Valgrind 也有一个类似的功能,使用 --leak-check 选项可以检测并报错内存泄漏问题,但并不释放这个孤儿内存。编译内核时使用 CONFIG_DEBUG_KMEMLEAK 选项打开 kmemcleak 调试功能。阅读 Documentation/kmemleak.txt 来学习怎么使用这个工具并读懂调试结果。
|
||||
|
||||
### 内核调试接口 ###
|
||||
|
||||
Linux 内核通过配置选项、调试用的 API、接口和框架来支持动态或静态的调试。我们现在就好好学习学习这些牛逼的功能,从静态编译选项开始讲。
|
||||
|
||||
### 调试配置选项:静态编译 ###
|
||||
|
||||
大部分 Linux 内核以及内核模块都包含调试选项,你只要在编译内核或内核模块的时候添加这个静态调试选项,程序运行时后就会产生调试信息,并记录在 dmesg 缓存中。
|
||||
|
||||
### 调试的 API ###
|
||||
|
||||
调试 API 的一个很好的例子是 DMA-debug,用来调试驱动是否错误使用了 DMA 提供的 API。它会跟踪每个设备的映射关系,检测程序有没有试图为一些根本不存在的映射执行“取消映射”操作,检测代码建立 DMA 映射后可能产生的“映射丢失”的错误。内核配置选项 CONFIG_HAVE_DMA_APT_DEBUG 和 CONFIG_DMA_API_DEBUG 可以为内核提供这个功能。其中,CONFIG_DMA_API_DEBUG 选项启用后,内核调用 DMA 的 API 的同时也会调用 Debug-dma 接口。举例来说,当一个驱动调用 dma_map_page() 函数来映射一个 DMA 缓存时,dma_map_page() 会调用debug_dma_map_page() 函数来跟踪这个缓存,直到驱动调用 dma_unmap_page() 来取消映射。详细内容请参考[使用 DMA 调试 API 检测潜在的数据污染和内存泄漏问题][3]。
|
||||
|
||||
### 动态调试 ###
|
||||
|
||||
动态调试功能就是你可以决定在程序运行过程中是否要 pr_debug(), dev_dbg(), print_hex_dump_debug(), print_hex_dump_bytes() 这些函数正常运行起来。什么意思?当程序运行过程中出现错误时,你可以指定程序打印有针对性的、详细的调试信息。这功能牛逼极了,我们不再需要为了添加调试代码定位一个问题,而重新编译安装内核。你可以指定 CONDIF_DYNAMIC_DEBUG 选项打开动态调试功能,然后通过 /sys/kernel/debug/dynamic_debug/control 接口指定要打印哪些调试日志。下面分别列出代码级别和模块级别打印日志的操作方法:
|
||||
|
||||
让 kernel/power/suspend.c 源码第340行的 pr_debug() 函数打印日志:
|
||||
|
||||
echo 'file suspend.c line 340 +p' > /sys/kernel/debug/dynamic_debug/control
|
||||
|
||||
让内核模块在加载过程中打开动态调试功能:
|
||||
|
||||
> 使用 modprobe 命令加在模块时加上 dyndbg='plmft' 选项。
|
||||
|
||||
让内核模块的动态调试功能在重启后依然有效:
|
||||
|
||||
> 编辑 /etc/modprobe.d/modname.conf 文件(没有这个文件就创建一个),添加 dyndbg='plmft' 选项。然而对于哪些通过 initramfs 加载的驱动来说,这个配置基本无效(LCTT:免费奉送点比较高级的知识哈。系统启动时,需要先让 initramfs 挂载一个虚拟的文件系统,然后再挂载启动盘上的真实文件系统。这个虚拟文件系统里面的文件是 initramfs 自己提供的,也就是说你在真实的文件系统下面配置了 /etc/modprobe.d/modname.conf 这个文件,initramfs 是压根不去理会的。站在内核驱动的角度看:如果内核驱动在 initramfs 过程中被加载到内核,这个驱动读取到的 /etc/modprobe.d/modname.conf 是 initramfs 提供的,而不是你编辑的那个。所以会有上述“写了配置文件后重启依然无效”的结论)。对于这种刁民,呃,刁驱动,我们需要修改 grub 配置文件,在 kernel 那一行添加 module.dyndbg='plmft' 参数,这样你的驱动就可以开机启动动态调试功能了。
|
||||
|
||||
想打印更详细的调试信息,可以使用 dynamic_debug.verbose=1 选项。参考 Documentation/dynamic-debug-howto.txt 文件获取更多信息。
|
||||
|
||||
### 设置追踪点 ###
|
||||
|
||||
到目前为止,我们介绍了多种动态和静态调试方法。静态调试选项和静态调试钩子函数(比如 DMA Debug API)需要的编译过程打开或关闭,导致了一个难过的事实:需要重新编译安装内核。而动态编译功能省去了“重新编译”这件麻烦事,但是也有不足的地方,就是调试代码引入了条件变量,用于判断是否打印调试信息。这种方法可以让你在程序运行时决定是否打印日志,但需要执行额外的判断过程。“追踪点”代码只会在程序运行过程中使用“追踪点”功能才会被触发。也就是说,“追踪点”代码与上述说的两种方法都不一样。当用不到它时,它不会运行(LCTT:动态调试的话,代码每次都需要查看下变量,然后判断是否需要打印日志;而“追踪点”貌似利用某种触发机制,不需要每次都去查看变量)。当你需要用到它时,程序的代码会把“追踪点”代码包含进去。它不会添加任何条件变量来增加系统的运行负担。
|
||||
|
||||
详细信息请参考[布置追踪代码的小技巧][4]。
|
||||
|
||||
### “追踪点”的原理 ###
|
||||
|
||||
追踪点使用“跳跃标签”,这是一种使用分支跳转的编码修正(code modification)技术。
|
||||
|
||||
当关闭追踪点的时候,其伪代码看起来时这样的:
|
||||
|
||||
[ code1 ]
|
||||
nop
|
||||
back:
|
||||
[ code2 ]
|
||||
return;
|
||||
tracepoint:
|
||||
[ tracepoint code ]
|
||||
jmp back;
|
||||
|
||||
当打开追踪点的时候,其伪代码看起来时这样的:(注意追踪点代码出现的位置)
|
||||
|
||||
[ code1 ]
|
||||
jmp tracepoint
|
||||
back:
|
||||
[ code2 ]
|
||||
return;
|
||||
tracepoint:
|
||||
[ tracepoint code ]
|
||||
jmp back;
|
||||
|
||||
(LCTT:咳咳,解释解释上面两段伪代码吧,能看懂的大神请忽略这段注释。不使用追踪点时,代码运行过程是:code1->code2->return结束;使用追踪点时,代码运行过程是:code1->跳到tracepoint code执行调试代码->跳回code2->return结束。两段代码的唯一区别就是第二行,前者为 nop(不做任何操作),后者为 jmp tracepoint (跳到调试代码)。)
|
||||
|
||||
### Linux 电源管理子系统的测试 ###
|
||||
|
||||
使用静态调试、动态调试和追踪调试技术,我们来跑一下磁盘的电源管理测试。当系统被挂起时,内核会为磁盘创建一个休眠镜像,使磁盘进入休眠模式,当系统重新被唤醒时,内核又利用这个休眠镜像重新唤醒磁盘。
|
||||
|
||||
设置挂起设备与唤醒设备需要的时间:
|
||||
|
||||
echo 1 > /sys/power/pm_print_times
|
||||
|
||||
以 reboot 模式挂起磁盘:
|
||||
|
||||
echo reboot > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
以 shutdown 模式挂起磁盘 —— 与 reboot 模式一样,只是重新唤醒磁盘的话还需要电源提供。
|
||||
|
||||
echo shutdown > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
以 platform 模式挂起磁盘 —— 能测试更多内容,比如 BIOS 挂起和唤醒,会涉及到 ACPI 功能。我们推荐你使用这种方式,把 BIOS 也拉下水陪你玩挂起和唤醒游戏。
|
||||
|
||||
echo platform > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via:http://www.linuxjournal.com/content/linux-kernel-testing-and-debugging?page=0,3
|
||||
|
||||
译者:[bazz2](https://github.com/bazz2) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://autotest.github.io/
|
||||
[2]:https://github.com/autotest/autotest/wiki/WhitePaper
|
||||
[3]:http://events.linuxfoundation.org/sites/events/files/slides/Shuah_Khan_dma_map_error.pdf
|
||||
[4]:http://www.linuxjournal.com/content/july-2013-linux-kernel-news
|
@ -0,0 +1,90 @@
|
||||
Linux 内核测试和调试 - 5
|
||||
================================================================================
|
||||
### 仿真环境下进行 Linux 电源管理子系统测试 ###
|
||||
|
||||
Linux 电源管理子系统在仿真环境下提供5种测试方式。这些方式仅仅在内核各层之间运行休眠的代码而不是真正的让系统进入休眠状态。有些平台不能挂起系统,比如说我们需要模拟飞机的飞行环境,这时候使用这种仿真环境就非常有用处了。
|
||||
|
||||
freezer - 测试停掉处理器:
|
||||
|
||||
echo freezer > /sys/power/pm_test
|
||||
echo platform > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
devices - 测试停掉处理器以及挂起设备:
|
||||
|
||||
echo devices > /sys/power/pm_test
|
||||
echo platform > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
platform - 测试停掉处理器、挂起设备以及平台全局控制方法(*)
|
||||
|
||||
echo platform > /sys/power/pm_test
|
||||
echo platform > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
processors - 测试停掉处理器、挂起设备和平台全局控制方法(*),以及关闭未启动的 CPU。
|
||||
|
||||
echo processors > /sys/power/pm_test
|
||||
echo platform > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
core - 测试停掉处理器、挂起设备和平台全局控制方法(*),关闭未启动的 CPU,以及挂起平台或系统的设备。注意:这个测试模式运行在 ACPI 系统。
|
||||
|
||||
echo core > /sys/power/pm_test
|
||||
echo platform > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
### Linux 电源管理子系统追踪事件 ###
|
||||
|
||||
电源管理子系统在运行过程中支持多种追踪点和追踪事件。我将对如何使用这些追踪时间以及如何找到追踪信息作一个简单的介绍:
|
||||
|
||||
在运行时开启电源管理事件:
|
||||
|
||||
cd /sys/kernel/debug/tracing/events/power
|
||||
echo 1 > cpu_frequency/enable
|
||||
cat /sys/kernel/debug/tracing/set_event
|
||||
less /sys/kernel/debug/tracing/trace
|
||||
|
||||
为内核启动的命令添加一个参数:
|
||||
|
||||
trace_event=cpu_frequency
|
||||
|
||||
更多信息查看 Documentation/power/basic-pm-debugging.txt 以及同目录下其他的文档。
|
||||
|
||||
### git bisect 命令 ###
|
||||
|
||||
git bisect 是一个非常有用非常强大的工具,用于将 git 上的一个 commit 分离出来。我简单过一遍它的用法。
|
||||
|
||||
下面是 git bisect 的用法:
|
||||
|
||||
git bisect start
|
||||
git bisect bad # 当前版本是坏的
|
||||
git bisect good v3.14-rc6 # 上个版本是好的
|
||||
|
||||
一旦指定好好的版本和坏的版本,git bisect 就会开始把好坏两个版本之间的所有 commit 对半分,并将其中的一半提交 pull 下来。然后重新编译安装测试内核,并标记这个内核是好是坏。重复这个过程,知道某个你选好的 commit 被标记被好或者坏。我们可能需要测试多个内核版本,测到最后一个版本时,git bisect 会将一个 commit 标记为坏。下面的命令可以在 git bisect 分析过程中起到帮助作用:
|
||||
|
||||
查看 bisect 操作的过程:
|
||||
|
||||
git bisect log
|
||||
|
||||
重置 git bisect,标记错误时可以用到,保存 git log 的输出,重新操作上一次 bisect 的步骤:
|
||||
|
||||
git bisect reset
|
||||
|
||||
重放 git bisect 操作过程:
|
||||
|
||||
git bisect replay git_log_output
|
||||
|
||||
如果一个问题很清楚是在某个区域内,git bisect 命令可以定位到一个具体的内核源码树枝干上。举个例子,在调试一个镭龙显卡驱动的问题时,为 git bisect 指定 drivers/drm/radeon 参数,可以让 git bisect 只检索对 drivers/drm/radeon 里面的文件有修改的 commit。
|
||||
|
||||
让 git bisect 只检索内核树的某个枝干:
|
||||
|
||||
git bisect start drivers/drm/radeon
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxjournal.com/content/linux-kernel-testing-and-debugging?page=0,4
|
||||
|
||||
译者:[bazz2](https://github.com/bazz2) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
136
translated/tech/20140718 Linux Kernel Testing and Debugging 6.md
Normal file
136
translated/tech/20140718 Linux Kernel Testing and Debugging 6.md
Normal file
@ -0,0 +1,136 @@
|
||||
Linux 内核的测试和调试 - 6
|
||||
================================================================================
|
||||
### Linux 内核补丁测试 ###
|
||||
|
||||
你试过自己写内核补丁吗?本节介绍在把你的补丁包提交到 Linux 邮箱列表之前,需要做哪些操作。另外我们还会介绍如何把它发送出去。
|
||||
|
||||
写好代码后,编译它。把 make 过程产生的输出保存到文档中,查看新代码有没有警告信息。找到所有的警告信息,处理掉。当你的代码编译过程没有任何不正常的输出,安装这个内核,然后启动测试。如果启动正常,查看 dmesg 里面有没于错误,与老内核生成的 dmesg 日志做个比较。运行一些压力测试,请参考我们以前讲过的测试内容。如果这个补丁用于修复某个 bug,请确保真的已经修复了。如果真的修复了,请确保能通过系统测试。找出打你补丁的模块下面的回归测试工具,运行一下。如果补丁涉及到其他架构,你需要交叉编译然后测试一下。请通过下面的目录查找测试工具:
|
||||
|
||||
- linux_git/Documentation
|
||||
- linux_git/tools/testing
|
||||
- 交叉编译参考:[在 x86_64 架构上交叉编译 Linux 内核:初学者教程][1]
|
||||
|
||||
如果你对你的补丁测试结果感到很满意,你就可以提交补丁了。请确保提交 commit 的信息要描述得非常清楚。要让内核维护者和其他开发者看懂补丁所修改的内容,这一点非常重要。生成补丁后,执行 scripts/checkpatch.pl 脚本,找到 checkpatch 是产生的错误或警告(如果有的话),修复它们。重新生成补丁,直到补丁通过这个脚本的测试。重新测试这个补丁。将本补丁用于其他的内核源码上,保证不会有冲突产生。
|
||||
|
||||
现在你做好提交补丁的准备了。先运行 scriptst/get_maintainer.pl 来确认你应该把补丁发给哪个内核维护者。注意不要以附件形式发送补丁,而是以纯文本形式粘贴在邮件里面。确保你的邮件客户端可以发送纯文本信息,你可以试试给自己发送一份补丁邮件来测试你的邮件客户端的功能。收到自己的邮件后,运行 checkpatch 命令并给自己的内核源码打上你的补丁。如果这两部都能通过,你就可以给 Linux 邮箱列表发送补丁了。使用 git send-email 命令是提交补丁最安全的方式,可以避免你的邮箱的兼容性问题。你的 .gitconfig 文件里面需要配置好有效的 smtp 服务器,详细操作参考 git 的帮助文档。
|
||||
|
||||
更多提交补丁的规矩,请参考下面的资料:
|
||||
|
||||
- linux_git/Documentation/applying-patches.txt
|
||||
- linux_git/Documentation/SubmitChecklist
|
||||
- linux_git/Documentation/SubmittingDrivers
|
||||
- linux_git/Documentation/SubmittingPatches
|
||||
- linux_git/Documentation/stable_kernel_rules.txt
|
||||
- linux_git/Documentation/stable_api_nonsense.txt
|
||||
|
||||
下面是一些内核测试教程的资料:
|
||||
|
||||
- [USB Testing on Linux][2]
|
||||
- [Linux Kernel Tester's Guide Chapter2][3]
|
||||
- [Linux Kernel Tester's Guide][4]
|
||||
- [Testing resources at eLinux.org][5]
|
||||
- [eLinux Debugging Portal][6]
|
||||
|
||||
### 内核测试套件和项目 ###
|
||||
|
||||
除我们讨论过的测试资源之外,这里还有很多测试项目值得介绍,包括开源的和厂家自己提供的。这些项目每一个都是针对特定领域的,比如嵌入式或者企业自己使用。我们简单过一下。
|
||||
|
||||
[Linux 测试项目][7](LTP)测试套件是一系列工具的集合,用于测试内核的可靠性、健壮性和稳定性。你可以为这个项目添加自己的测试代码,并且 LTP 项目欢迎你贡献自己的代码。runltp 脚本默认情况下会测试下面的子系统:
|
||||
|
||||
- 文件系统压力测试
|
||||
- 磁盘 IO 测试
|
||||
- 内存管理压力测试
|
||||
- IPC(进程间通信)测试
|
||||
- 调度器测试
|
||||
- 命令的功能性验证测试
|
||||
- 系统调用功能验证测试
|
||||
|
||||
[**LTP-DDT**][8] 是一个基于 LTP 的测试应用(LCTT:就是 LTP 的阉割版么),专注于测试嵌入式设备驱动。
|
||||
|
||||
[**Linux Driver Verification**][9] 这个项目的目标是提高 Linux 设备驱动的质量,它为设备驱动验证开发了集成环境平台,并且利用与时俱进的研究来增强验证工具的质量。
|
||||
|
||||
### 一致性测试 ###
|
||||
|
||||
如果你有将某个 Unix 平台下的应用一直到另一个平台的经验,你就能理解 [Linux Standard Base (LSB)][10] 和 LSB 一致性测试套件的重要性了。LSB 是 Linux Foundation 工作组创建的用于降低支持不同 Linux 平台所需要的开销,方法就是通过降低不同 Linux 发行版之间的差别,保证应用在不同发行版之间的可移植性。前事不忘后事之师,Unix 世界的分歧在 Linux 世界一定要避免。这就是为什么你可以把一个 rpm 包转化成 deb 包后还能安装并正常运行的秘密。
|
||||
|
||||
### 静态分析工具 ###
|
||||
|
||||
静态分析之所以会被称为“静态分析”,是因为这些工具只分析代码,并不执行它们。分析 Linux 内核代码的静态分析工具有很多,Sparse 是 Linus Torvalds 写的专门用于检查内核静态类型的工具。它是一个语义检查器,会为 C 语言的语义建立语义检析树,执行惰性类型评估。内核编译系统支持 sparse,并且为编译内核的命令提供开启 sparse 的选项。
|
||||
|
||||
为内核所有需要重新编译的 C 文件执行 sparse 语义检查:
|
||||
|
||||
make C=1 allmodconfig
|
||||
|
||||
为内核所有 C 文件(即使不需要重新编译)执行 sparse 语义检查:
|
||||
|
||||
make C=2 allmodconfig
|
||||
|
||||
Sparse 的资源:
|
||||
|
||||
- [Sparse Archive][11]
|
||||
- [Sparse How To][12]
|
||||
|
||||
Smatch 分析程序代码的逻辑错误。它可以检测到诸如“为一个没锁上的 spinlock 执行解锁”的逻辑错误。内核源码支持 smatch:
|
||||
|
||||
在 Linux 内核中运行 smatch:
|
||||
|
||||
make CHECK="~/path/to/smatch/smatch -p=kernel" C=1 bzImage modules | tee warns.txt
|
||||
|
||||
请参考下面的资料来获取和编译 smatch。需要注意的是 smatch 是个正在发展的项目,架构会不断变化。
|
||||
|
||||
- [**Smatch**][12]
|
||||
|
||||
那么我们该怎么处理 Sparse 和 Smatch 所发现的语义和逻辑上的错误呢?一些错误可以被分离为日常问题或模块问题,可以轻易被解决。但是有些语义错误涉及到全局,因为剪切粘贴了一些代码。在一些环境中,当一些接口函数被废弃不再使用,或者仅仅做了写微小的修改,你就需要大规模更新源码。这时候你需要 Coccinelle 来帮忙。,Coccinelle 使用 SmPL 语言(语义包语言)来为 C 代码提供匹配和转换代码的功能。Coccinelle 的从一开始就作为 Linux 的附属产品持续发展的。
|
||||
|
||||
举个例子:foo(int) 函数突然变成 foo(int, char \*) 函数,多出了一个输入参数(可以把第二个参数置为 null)。所有调用 foo() 函数的代码都需要更新了,这可能是个悲摧的体力活。但是使用 Coccinelle 的话,这项工作瞬间变得轻松,脚本会帮你找到调用 foo(parameter1) 的代码,然后替换成 foo(parameter1, NULL)。做完这些后,所有调用这个函数的代码都可以运行一遍,验证下第二个参数为 NULL 是否能正常工作。关于 Coccinelle 的更多信息,以及在不同项目中(当然,也包括 Linux 内核这个项目)的使用方法,请参考项目主页:[**Cocinelle**][13]。
|
||||
|
||||
### 参考文献 ###
|
||||
|
||||
本文涵盖了很多方面,这里列出一些参考文档供读者做进一步研究。
|
||||
|
||||
- [KernelHacking][14]
|
||||
- [kernel Documentation][15]
|
||||
- [Linux Device Drivers, Third Edition][16]
|
||||
- [Dynamic Event Tracing in Linux Kernel][17]
|
||||
- [Kernel Testing: Tool and Techniques][18]
|
||||
|
||||
### 鸣谢 ###
|
||||
|
||||
感谢来自 Oracle 的 Khalid Aziz,审查校对并提供许多非常有价值的建议。感谢来自三星的 Mauro Chehab 和 Guy Martin,他们给了我多次反馈。感谢来自 Linux Foundation 的 Grey Kroah-Hartman 对本文的审阅。感谢来自三星的 Ibrahim Haddad,没有他的支持和鼓励,我可能还不会坐下来写出这篇文章。
|
||||
|
||||
----------
|
||||
|
||||

|
||||
|
||||
作者:[Shuah Khan][a]
|
||||
|
||||
Shuah Khan 是三星公司开源组的高级 Linux 内核开发工程师。
|
||||
她为 Linux 内核中的 IOMMU、DMA、电源管理、PCIe 贡献代码,同时维护内核,为内核提供补丁包。Shuah 有多年 Unix 内核开发经验。她也为 OpenHPI 和 LLDP 项目作贡献。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxjournal.com/content/linux-kernel-testing-and-debugging?page=0,5
|
||||
|
||||
译者:[bazz2](https://github.com/bazz2) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://events.linuxfoundation.org/sites/events/files/slides/Shuah_Khan_cross_compile_linux.pdf
|
||||
[2]:http://www.linux-usb.org/usbtest/
|
||||
[3]:http://kernelnewbies.org/Linux_Kernel_Tester%27s_Guide_Chapter2
|
||||
[4]:http://www.kerneltravel.net/downloads/tester_guide.pdf
|
||||
[5]:http://elinux.org/Test_Systems
|
||||
[6]:http://elinux.org/Debugging_Portal
|
||||
[7]:http://ltp.sourceforge.net/documentation/how-to/ltp.php
|
||||
[8]:http://processors.wiki.ti.com/index.php/LTP-DDT
|
||||
[9]:http://linuxtesting.org/project/ldv
|
||||
[10]:http://www.linuxfoundation.org/collaborate/workgroups/lsb
|
||||
[11]:http://codemonkey.org.uk/projects/git-snapshots/sparse/
|
||||
[12]:http://smatch.sourceforge.net/
|
||||
[13]:http://coccinelle.lip6.fr/
|
||||
[14]:http://kernelnewbies.org/KernelHacking
|
||||
[15]:http://kernelnewbies.org/Documents
|
||||
[16]:http://lwn.net/Kernel/LDD3/
|
||||
[17]:http://events.linuxfoundation.org/slides/lfcs2010_hiramatsu.pdf
|
||||
[18]:http://events.linuxfoundation.org/images/stories/slides/elc2013_porter.pdf
|
||||
[a]:http://www.linuxjournal.com/users/shuah-khan
|
@ -0,0 +1,58 @@
|
||||
需要在Ubuntu上安装微软办公软件?去安装官方的网络应用程序
|
||||
================================================== ==============================
|
||||

|
||||
|
||||
**这是微软办公软件及其一贯繁琐的文件指令,而不是每个人的一杯咖啡。同时这是许多工作和教育环境的主要依靠——无论是好还是坏**
|
||||
|
||||
通过使用[LibreOffice的应用程序套件][1],阅读、编辑和保存这些专有指令出现在Ubuntu上是有着某种程度的可能。在作家中,Calc和Impress都不同程度的夸耀微软办公软件文件的协作性,但在我自己的实际操作经验中(谢天谢地,它很简洁!)它并不完美。
|
||||
|
||||
时不时的,你会不得不使用微软办公软件,(虽然我们大多数人都心里向着开放标准,但是我们不应该无视实际问题)但你已经没有意愿去购买一个完整的微软办公软件许可证来运行这个窗口模拟器,那么微软的在线网络应用程序是完美的解决方法。
|
||||
|
||||
###安装微软在线办公软件上的应用程序在Ubuntu###
|
||||
|
||||
为了使从Ubuntu的桌面访问这些在线版本更容易,“Linux的网络应用程序项目”创造了一个小的、非官方的安装程序。它可以添加网络应用程序的快捷方式(“荣耀书签”)到您的应用程序启动器。
|
||||
|
||||

|
||||
|
||||
通过快捷方式,相应的Microsoft Web应用程序在你默认的系统浏览器中打开,不可能有比这更精美的了。听起来漂亮吗?下面是你的应用程序的快捷方式:
|
||||
|
||||
- 文档
|
||||
- 表格
|
||||
- 幻灯片
|
||||
- Outlook
|
||||
- OneDrive
|
||||
- 日历
|
||||
- OneNote
|
||||
- 通讯录
|
||||
|
||||
该软件包还创建了一个新的应用程序类别来容纳这些链接,不但可以让您把这些快捷方式从其他应用程序单独分开来,而且是直接位于常见的“办公软件”应用程序下。
|
||||
|
||||
这些都是必不可少的吗?不见得。他们有用吗?这取决于你的工作流程。但它是不错的选择吗?一定是的。
|
||||
|
||||
你可以从下面的链接保存含有.deb文件安装程序,其中有安装链接。适用于Ubuntu14.04 LTS和更高版本。
|
||||
|
||||
- [下载微软的在线办公应用(.deb)][2]
|
||||
|
||||
###其他可选项###
|
||||
|
||||

|
||||
|
||||
类似的替代方案是[安装Chrome官方网上应用商店的在线办公应用程序][3],然后添加应用程序启动器到Linux。这次短跑中仍然会为它们创建可启动的快捷方式,但那些可以被设置为打开自己的窗框,而且不需要安装任何第三方软件包。
|
||||
|
||||
同时,谷歌最近在整合完整的Office功能(由于其购买了QuickOffice)[到自己的文档,幻灯片和床单应用][4]。Android应用程序Quickoffice退出了舞台,同时Chrome也实现了扩展。
|
||||
|
||||
如果你是一个深度的谷歌网络硬盘/文档的用户,那么这个解决方案可能对你是更加好了。
|
||||
|
||||
-------------------------------------------------- ------------------------------
|
||||
|
||||
via: http://www.omgubuntu.co.uk/2014/07/run-microsoft-office-web-apps-ubuntu-desktop
|
||||
|
||||
译者:[cereuz](https://github.com/cereuz)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.libreoffice.org/
|
||||
[2]:https://docs.google.com/file/d/0ByQnaVw7riBQMjNCUFh4ZlM4Y0E/edit?usp=sharing
|
||||
[3]:http://www.omgchrome.com/microsoft-brings-office-online-chrome-web-store/
|
||||
[4]:http://www.omgchrome.com/quickoffice-chrome-extension-gets-name-change/
|
@ -0,0 +1,89 @@
|
||||
在Linux中为SFTP配置chroot环境
|
||||
================================================================================
|
||||
在**某些环境**中,系统管理员想要允许极少数用户传输文件到Linux盒子中,而非ssh。要实现这一目的,我们可以使用**SFTP**,并为其构建chroot环境。
|
||||
|
||||
### SFTP & chroot背景: ###
|
||||
|
||||
**SFTP**是值**SSH文件传输协议(SSH File Transfer protocol)或安全文件传输协议(Secure File Transfer Protocol)**,它提供了任何可信数据流下的文件访问、文件传输以及文件管理功能。当我们为SFTP配置chroot环境后,只有被许可的用户可以访问,并被限制到它们的**家目录**中,或者我们可以这么说:被许可的用户将处于牢笼环境中,在此环境中它们甚至不能切换它们的目录。
|
||||
|
||||
在本文中,我们将配置**RHEL 6.X** & **CentOS 6.X中的SFTP Chroot环境**。我们开启一个用户帐号‘**Jack**’,该用户将被允许在Linux盒子上传输文件,但没有ssh访问权限。
|
||||
|
||||
### 步骤:1 创建组 ###
|
||||
|
||||
[root@localhost ~]# groupadd sftp_users
|
||||
|
||||
### 步骤:2 分配附属组(sftp_users)给用户 ###
|
||||
|
||||
如果用户在系统上不存在,使用以下命令创建:
|
||||
|
||||
[root@localhost ~]# useradd -G sftp_users -s /sbin/nologin jack
|
||||
[root@localhost ~]# passwd jack
|
||||
|
||||
对于**已经存在的用户**,使用以下usermod命令进行修改:
|
||||
|
||||
[root@localhost ~]# usermod –G sftp_users -s /sbin/nologin jack
|
||||
|
||||
**注意**:如果你想要修改用户的**默认家目录**,那么在useradd和usermod命令中使用‘**-d**’选项,并设置**合适的权限**。
|
||||
|
||||
### 步骤:3 现在编辑配置文件 “/etc/ssh/sshd_config” ###
|
||||
|
||||
# vi /etc/ssh/sshd_config
|
||||
#comment out the below line and add a line like below
|
||||
#Subsystem sftp /usr/libexec/openssh/sftp-server
|
||||
Subsystem sftp internal-sftp
|
||||
|
||||
# add Below lines at the end of file
|
||||
Match Group sftp_users
|
||||
X11Forwarding no
|
||||
AllowTcpForwarding no
|
||||
ChrootDirectory %h
|
||||
ForceCommand internal-sftp
|
||||
|
||||
#### 此处: ####
|
||||
|
||||
- **Match Group sftp_users** – 该参数指定以下的行将仅仅匹配sftp_users组中的用户
|
||||
- **ChrootDirectory %h** – 该参数指定用户验证后用于chroot环境的路径(默认的用户家目录)。对于Jack,该路径就是/home/jack。
|
||||
- **ForceCommand internal-sftp** – 该参数强制执行内部sftp,并忽略任何~/.ssh/rc文件中的命令。
|
||||
|
||||
重启ssh服务
|
||||
|
||||
# service sshd restart
|
||||
|
||||
### 步骤:4 设置权限: ###
|
||||
|
||||
[root@localhost ~]# chmod 755 /home/jack
|
||||
[root@localhost ~]# chown root /home/jack
|
||||
[root@localhost ~]# chgrp -R sftp_users /home/jack
|
||||
|
||||
如果你想要允许jack用户上传文件,那么创建一个上传文件夹,设置权限如下:
|
||||
|
||||
[root@localhost jack]# mkdir /home/jack/upload
|
||||
[root@localhost jack]# chown jack. /home/jack upload/
|
||||
|
||||
### 步骤:5 现在尝试访问系统并进行测试 ###
|
||||
|
||||
尝试通过ssh访问系统
|
||||
|
||||

|
||||
|
||||
正如下图所示,用户jack通过SFTP登录,而且因为chroot环境不能切换目录。
|
||||
|
||||

|
||||
|
||||
现在进行**上传和下载**测试,如下图:
|
||||
|
||||

|
||||
|
||||
正如上图所示,jack用户的上传下载功能都工作得很好。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxtechi.com/configure-chroot-sftp-in-linux/
|
||||
|
||||
原文作者:[Pradeep Kumar][a]
|
||||
|
||||
译者:[GOLinux](https://github.com/GOLinux) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.linuxtechi.com/author/pradeep/
|
@ -0,0 +1,78 @@
|
||||
在linux中怎样使用cp命令合并目录树
|
||||
================================================================================
|
||||
怎样将布局相似的两个目录树合并成新的目录树? 为理解该问题让我们思考下面的例子.
|
||||
|
||||
假设dir1和dir2目录中分别有3个子目录a,b和c.目录布局如下所示:
|
||||
|
||||

|
||||
输入目录布局
|
||||
|
||||
在目录a,b和c中有一些文件,tree命令的输出将能更好的说明:
|
||||
|
||||

|
||||
文件布局
|
||||
|
||||
### 1. 使用cp命令创建合并: ###
|
||||
|
||||
现在我们将这两个目录合并成一个新的目录,如"merged".完成上述操作最简单的方式就是递归
|
||||
复制目录,如下图所示:
|
||||
|
||||

|
||||
递归复制完成新的合并
|
||||
|
||||
#### 1.1 cp命令和替换带来的问题: ####
|
||||
|
||||
这种方式所带来的问题是该合并目录中所创建的文件为原文件的副本,并非原文件本身. 别急, (你可能正在问自己) 如果不是原文件又有什么问题? 为了回答你的问题,考虑下你有很多大文件的情况
|
||||
.那种情形下,复制所有的文件可能消耗数小时.
|
||||
|
||||
现在让我们回到刚那问题上,且尝试使用mv命令而不是cp命令.
|
||||
|
||||

|
||||
企图使用mv命令进行合并操作
|
||||
|
||||
这些目录不能被合并.因此我们不能像这样使用mv命令去合并目录.
|
||||
现在你该怎样将原文件保存到"merged"目录中?
|
||||
|
||||
### 2. 方法: ###
|
||||
|
||||
cp命令有一个非常有用的选项来帮助我们摆脱这种状况.
|
||||
cp命令的-l 或 --link选项能够创建硬链接而非原文件副本.让我们尝试一下.
|
||||
|
||||
在我们尝试cp命令的硬链接选项前,让我们查看一下原文件的inode号码.
|
||||
可通过tree命令--inodes选项来查看inodes:
|
||||
|
||||

|
||||
原文件的inodes
|
||||
|
||||
现在我们有了inodes的列表,对于cp命令可通过--link选项创建硬链接:
|
||||
|
||||

|
||||
使用硬链接合并的目录
|
||||
|
||||
#### 2.1 验证文件: ####
|
||||
|
||||
现在文件已经被复制,让我们验证一下inodes是否和原文件匹配:
|
||||
|
||||

|
||||
Verify Inodes
|
||||
|
||||
#### 2.2 清除: ####
|
||||
|
||||
|
||||
正如你所看到的,这些文件的inodes和原文件的一样.现在 那问题已经被解决,且
|
||||
原文件已被复制到合并目录中.现在我们能够移除dir1和dir2目录.
|
||||
|
||||

|
||||
移除原始目录
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://linoxide.com/linux-command/merge-directory-trees-linux/
|
||||
|
||||
原文作者:[Raghu][a]
|
||||
|
||||
译者:[hunanchenxingyu](https://github.com/hunanchenxingyu) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://linoxide.com/author/raghu/
|
Loading…
Reference in New Issue
Block a user