Linux用户，你们真的了解开源硬件吗？

Summary: Linux用户不了解一点开源硬件制造相关的事情，他们就会经常陷入失望的情绪中。  商业软件和免费软件已经互相纠缠很多年了，但是这俩经常误解对方。这并不奇怪 -- 对一方来说是生意，而另一方只是一种生活方式。但是，这种误解会给人带来痛苦，这也是为什么值得花精力去揭露这里面的内幕。 一个逐渐普遍的现象：对开源硬件的不断尝试，不管是Canonical，Jolla，MakePlayLive，或者其他公司。无论是评论员或是终端用户，通常免费软件用户都会为新的硬件平台发布表现出过分的狂热，然后因为不断延期有所醒悟，直到最终放弃整个产品。 这是一

[呵呵]

硬件的试错成本高，利润又低，只能是一种生存，不能成为一种生活，除非你是壕。

了解来源硬件，让你懂得如何更好生活@风间北原 @紧张也有人叫 @曳大妈

图片被我收藏了

linux用户

让用户去了解硬件

不知道Linux是怎么定义‘用户’的

这图片不是最酷的——每篇文章，我们都竭力找一些最好的图片来配上。

看了半天，没看明白什么是开源硬件。

这文章把所有的“自由软件”全都翻译成“免费软件”了…………

这文章把所有的“自由软件”全都翻译成“免费软件”了 [弱][弱][弱]

审校的时候没注意//@比尔盖子V:这文章把所有的“自由软件”全都翻译成“免费软件”了 [弱][弱][弱]

马克看看//@比尔盖子V:LCTT 居然出这种问题，要注意了……@Linux中国 //@比尔盖子V: 这文章把所有的“自由软件”全都翻译成“免费软件”了 [弱][弱][弱]

回复@比尔盖子V:哦、这是不对的。我校对时候没注意。我赶快修改。谢谢指出。

真正做开源硬件，理论上只能用FPGA（逃//@Linux中国:回复@比尔盖子V:哦、这是不对的。我校对时候没注意。我赶快修改。谢谢指出。 //@比尔盖子V:这文章把所有的“自由软件”全都翻译成“免费软件”了 [弱][弱][弱]

Free software 233 //@Garfield550_: //@Linux中国: 回复@比尔盖子V:哦、这是不对的。我校对时候没注意。我赶快修改。谢谢指出。 //@比尔盖子V:这文章把所有的“自由软件”全都翻译成“免费软件”了 [弱][弱][弱]

。。。LCTT的靠谱程度和维基百科一样。。。//@比尔盖子V: LCTT 居然出这种问题，要注意了……@Linux中国 //@比尔盖子V: 这文章把所有的“自由软件”全都翻译成“免费软件”了 [弱][弱][弱]

# Linux用户，你们真的了解开源硬件吗？

>
> Linux用户不了解一点开源硬件制造相关的事情，他们就会经常陷入失望的情绪中。
>
>
>

商业软件和自由软件已经互相纠缠很多年了，但是这俩经常误解对方。这并不奇怪 -- 对一方来说是生意，而另一方只是一种生活方式。但是，这种误解会给人带来痛苦，这也是为什么值得花精力去揭露这里面的内幕。

一个逐渐普遍的现象：对开源硬件的不断尝试，不管是Canonical，Jolla，MakePlayLive，或者其他公司。无论是评论员或是终端用户，通常自由软件用户都会为新的硬件平台发布表现出过分的狂热，然后因为不断延期有所醒悟，直到最终放弃整个产品。

这是一个没有人获益的怪圈，而且常常滋生出不信任 - 都是因为一般的Linux用户根本不知道这些新闻背后发生的事情。

我个人对于把产品推向市场的经验很有限。但是，我还没听说谁能有所突破。推出一个开源硬件或其他产品到市场仍然不仅仅是个残酷的生意，而且严重不利于新进厂商。

<img src="content_image/album_201501_13_220035m4iekepwpwpq5r5s.jpg" alt="" title="">

### 寻找合作伙伴

不管是数码产品的生产还是分销都被相对较少的一些公司控制着，有时需要数月的预订。利润率也会很低，所以就像那些购买古老情景喜剧的电影工作室一样，生产商一般也希望复制当前热销产品的成功。像Aaron Seigo在谈到他花精力开发Vivaldi平板时告诉我的，生产商更希望能由其他人去承担开发新产品的风险。

不仅如此，他们更希望和那些有现成销售记录的有可能带来长期客户生意的人合作。

而且，一般新加入的厂商所关心的产品只有几千的量。芯片制造商更愿意和苹果或三星这样的公司合作，因为它们的订单很可能是几十上百万的量。

面对这种情形，开源硬件制造者们可能会发现他们在工厂的列表中被淹没了，除非能找到二线或三线厂愿意尝试一下小批量生产新产品。

他们也许还会沦为采购成品组件再自己组装，就像Seigo尝试Vivaldi时那样做的。或者，他们也许可以像Canonical那样做，寻找一些愿意为这个产业冒险的合作伙伴。而就算他们成功了，一般也会比最初天真的预期延迟数个月。

### 磕磕碰碰走向市场

然而，寻找生产商只是第一关。根据树莓派项目的经验，就算开源硬件制造者们只想在他们的产品上运行自由软件，生产商们很可能会以保护商业机密的名义坚持使用专有固件或驱动。

这样必然会引起潜在用户的批评，但是开源硬件制造者没得选，只能折中他们的愿景。寻找其他生产商也不能解决问题，有一个原因是这样做意味着更多延迟，但是更多的是因为完全免授权费的硬件是不存在的。像三星这样的业内巨头对免费硬件没有任何兴趣，而作为新人，开源硬件制造者也没有影响力去要求什么。

更何况，就算有免费硬件，生产商也不能保证会用在下一批生产中。制造者们会轻易地发现他们每次需要生产的时候都要重打一次一模一样的仗。

这些都还不够，这个时候开源硬件制造者们也许已经花了6-12个月时间来讨价还价。等机会终于来了，产业标准却已经变更，于是他们可能为了升级产品规格又要从头来过。

### 短暂而且残忍的货架期

尽管面对这么多困难，一定程度上开放的硬件也终于推出了。还记得寻找生产商时的挑战吗？对于分销商也会有同样的问题 -- 还不只是一次，而是每个地区都要解决。

通常，分销商和生成商一样保守，对于和新人或新点子打交道也很谨慎。就算他们同意一个产品上架，他们也轻易能够决定不鼓励自己的销售代表们做推广，这意味着这个产品会在几个月后很有效率地下架。

当然，在线销售也是可以的。但是同时，硬件还是需要被存放在某个地方，这也会增加成本。而按需生产就算可能的话也将非常昂贵，而且没有组装的元件也需要存放。

### 衡量整件怪事

在这里我只是粗略地概括了一下，但是任何涉足过制造的人会认同我形容为行业标准的东西。而更糟糕的是，开源硬件制造者们通常只有在亲身经历过后才会有所觉悟。不可避免，他们也会犯错，从而带来更多的延迟。

但重点是，一旦你对整个过程有所了解，你对另一个开源硬件进行尝试的新闻的反应就会改变。这个过程意味着，除非哪家公司处于严格的保密模式，对于产品将于六个月内发布的声明会很快会被证实是过期的推测。很可能是12-18个月，而且面对之前提过的那些困难很可能意味着这个产品永远都不会真正发布。

举个例子，就像我写的，人们等待第一代Steam Machines面世，它是一台基于Linux的游戏主机。他们相信Steam Machines能彻底改变Linux和游戏。

作为一个市场分类，Steam Machines也许比其他新产品更有优势，因为参与开发的人员至少有开发软件产品的经验。然而，整整一年过去了Steam Machines的开发成果都还只有原型机，而且直到2015年中都不一定能买到。面对硬件生产的实际情况，就算有一半能见到阳光都是很幸运了。而实际上，能发布2-4台也许更实际。

我做出这个预测并没有考虑个体努力。但是，对硬件生产的理解，比起那些Linux和游戏的黄金年代之类的预言，我估计这个更靠谱。如果我错了也会很开心，但是事实不会改变：让人吃惊的不是如此多的Linux相关硬件产品失败了，而是那些虽然短暂但却成功的产品。

注：本文翻译和校对时，误将“free software”翻译成了“免费软件”，得 [@比尔盖子V](http://weibo.com/biergaizi) 的指正，应该翻译为“自由软件”。有关“免费软件”和“自由软件”的辨析，可以参考如下：

>
> 自由软件的英文为“free software”。“free”在英文中有“自由”(freedom)、“免费”(free of charge)的双重含义，因此自由软件要如何分辨“自由软件”（free software）和“免费软件”（freeware）呢？
>
>
> 自由软件运动的创始人——理查德·斯托曼提供了以下的定义：
>
>
> “free software” is a matter of liberty, not price. To understand the concept, you should think of “free” as in “free speech,” not as in “free beer”，中文译文：自由软件的重点在于自由权，而非价格。要了解其所代表的概念：你应该将“free”想成是“free spech”（言论自由）中的“free”（自由），而不是“free beer”（免费啤酒）中的“free”（免费）。
>
>
> 更精确的说，自由软件代表电脑使用者拥有选择和任何人合作之自由、拥有掌控他们所用的软件之自由。在GNU宣言（GNU Manifesto）中包含了斯托曼在一开始对自由软件使用定义的混淆。——来自百度百科
>
>
>

---

via: <http://www.datamation.com/open-source/what-linux-users-should-know-about-open-hardware-1.html>

作者：[Bruce Byfield](http://www.datamation.com/author/Bruce-Byfield-6030.html) 译者：[zpl1025](https://github.com/zpl1025) 校对：[Mr小眼儿](https://github.com/tinyeyeser)

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


2014年Linux界发生的好事，坏事和丑事

Summary: 2014年已经过去，现在正是盘点2014年Linux大事件的时候。整整一年，我们关注了有关Linux和开源的一些好事，坏事和丑事。让我们来快速回顾一下2014对于Linux是怎样的一年。 好事 首先，让我们来看看在2014年对于Linux爱好者发生了什么有积极意义的事。 Linux上的Netflix  从使用Wine到使用Chrome的测试功能，为了能让Netflix能在Linux上工作，Linux用户曾尝试了各种方法。好消息是Netflix终于在2014年带来了Linux的本地支持。这让所有能使用Netflix的地区的Linux用户的脸上浮现出了微笑。不过，想在美国以外的地区使用Netflix（或其他官方

听说Linux里潜伏了病毒 是真的吗...

阅过！

殊途而同归

Windows 与 Linux的爱恨情仇

Linux在服务方面还是比微软的操作系统强悍，时间已经见证了一切。

那Windows还更多木马呢  <br />
怕就不要用电脑、手机

# 2014年Linux界发生的好事，坏事和丑事

2014年已经过去，现在正是盘点**2014年Linux大事件**的时候。整整一年，我们关注了有关Linux和开源的一些好事，坏事和丑事。让我们来快速回顾一下2014对于Linux是怎样的一年。

好事
--

首先，让我们来看看在2014年对于Linux爱好者发生了什么有积极意义的事。

### Linux上的Netflix

从使用Wine到[使用Chrome的测试功能](http://linux.cn/article-3024-1.html)，为了能让Netflix能在Linux上工作，Linux用户曾尝试了各种方法。好消息是Netflix终于在2014年带来了Linux的本地支持。这让所有能使用Netflix的地区的Linux用户的脸上浮现出了微笑。不过，想在[美国以外的地区使用Netflix](http://itsfoss.com/easiest-watch-netflix-hulu-usa/)（或其他官方授权使用Netflix的国家之外）的人还是得靠其他的方法。

### 欧洲国家采用开源/Linux

如果你愿意的话，你可以归功于经济滑坡，但是Linux和开源的采用已经俘虏了欧洲各大城市。我说的可不是个人用户，而是政府和各个官方机构。一整年我们都在听到这样的消息：[法国](http://linux.cn/article-3575-1.html)和[意大利各大城市如何通过改用Linux和开源办公软件节省了数百万欧元](http://linux.cn/article-3602-1.html)。而且这个趋势并没有仅限于意大利和法国，在西班牙、[瑞士](http://itsfoss.com/170-primary-public-schools-geneva-switch-ubuntu/)和[德国](http://itsfoss.com/german-town-gummersbach-completes-switch-open-source/)也能见到。

### Windows 10从Linux获得灵感

即将发行的微软的旗舰操作系统Windows，将被称为Windows 10（没有Windows 9）。并且Windows 10将拥有一大堆的新特性。但是这些“新特性”只在微软的世界里是新的，而且大多是这些新特性已经在Linux的世界里存在了数年。看看这些[Windows 10从Linux复制的特性](http://itsfoss.com/windows-10-inspired-linux/)。

坏事
--

Linux在2014年并不是一帆风顺。某些事件的发生败坏了Linux/开源的形象。

### Heartbleed 心血漏洞

在今年的四月份，检测到[OpenSSL](http://en.wikipedia.org/wiki/OpenSSL)有一个缺陷。这个漏洞被命名为[Heartbleed心血漏洞](http://heartbleed.com/)。他影响了包括Facebook和Google在内的50多万个“安全”网站。这项漏洞可以真正的允许任何人读取系统的内存，并能因此给予用于加密数据流的密匙的访问权限。[xkcd上的漫画以更简单的方式解释了心血漏洞](http://xkcd.com/1354/)。自然，这个漏洞在OpenSSL的更新中被修复了。

### Shellshock 破壳漏洞

好像有个心血漏洞还不够似的，在Bash里的一个缺陷更严重的震撼了Linux世界。这个漏洞被命名为[Shellshock 破壳漏洞](http://itsfoss.com/linux-shellshock-check-fix/)。这个漏洞把Linux往远程攻击的危险深渊又推了一把。这项漏洞是通过黑客的DDoS攻击暴露出来的。升级一下Bash版本应该能修复这个问题。

### Ubuntu Phone和Steam控制台

一个又一个的承诺，一次又一次的期望。但是即使在2014年也没人看见Ubuntu Phone或是Steam游戏控制台。围绕Ubuntu Phone产生了很多激烈的讨论。从2014年二月发行推到九月又推到十二月，（谢天谢地）终于有可能在2015年二月发行。但是Steam控制台还是没有消息。想了解更多请读[Ubuntu Phone说明书，价格和发行日期](http://itsfoss.com/ubuntu-phone-specification-release-date-pricing/)。

丑事
--

是否采用 systemd 的争论变得让人羞耻。

### systemd大论战

用init还是systemd的争吵已经进行了一段时间了。但是在2014年当systemd准备在包括Debian, Ubuntu, OpenSUSE, Arch Linux 和 Fedora几个主流Linux分布中替代init时，事情变得不知廉耻了起来。它是如此的一发不可收拾，以至于它已经不限于boycottsystemd.org这类网站了。Lennart Poettering（systemd的首席开发人员及作者）在一条Google Plus状态上声明，说那些反对systemd的人在“收集比特币来雇杀手杀他”。Lennart还声称开源社区“是个恶心得不能待的地方”。人们吵得越来越离谱以至于把Debian分裂成了一个新的操作系统，称为[Devuan](http://linux.cn/article-4512-1.html)。

还有诡异的事
------

伴随着好事、坏事和丑事而来得是诡异的事，而且没谁能比微软更诡异。

### 微软爱Linux

是的，你没看错。[微软爱Linux](http://linux.cn/article-4056-1.html)。同为微软CEO，Steve Ballmer曾说[Linux是毒瘤](http://www.theregister.co.uk/2001/06/02/ballmer_linux_is_a_cancer/)。当新CEO，Satya Nadella宣称微软爱Linux时，我们透过微软向Linux和开源的靠近，看到了领导层的改变。这份对Linux的爱实际上是微软试图让[Azure](http://azure.microsoft.com/en-us/)成为更好的云平台。为了达成这项目标，需要虚拟化Hyper-V（Azure核心），以便同Linux一起运行。这个绝境让[微软成为Linux内核的第五大贡献者](http://www.zdnet.com/article/top-five-linux-contributor-microsoft/)。

---

via: <http://itsfoss.com/biggest-linux-stories-2014/>

作者：[Abhishek](http://itsfoss.com/author/Abhishek/) 译者：[H-mudcup](https://github.com/H-mudcup) 校对：[wxy](https://github.com/wxy)

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


Linux有问必答：如何禁止Ubuntu的Apport内部错误报告程序

Summary: 问题：在桌面版Ubuntu中，我经常遇到一些弹窗窗口，警告我Ubuntu发生了内部错误，问我要不要发送错误报告。每次软件崩溃都要烦扰我，我如何才能关掉这个错误报告功能呢？   Ubuntu桌面版预装了Apport，它是一个错误收集系统，会收集软件崩溃、未处理异常和其他，包括程序bug，并为调试目的生成崩溃报告。当一个应用程序崩溃或者出现Bug时候，Apport就会通过弹窗警告用户并且询问用户是否提交崩溃报告。你也许也看到过下面的消息。  "Sorry, the application XXXX has closed unexpectedly." "对不起，应用程序XXXX意外关闭了。" "Sorry, U

有用

Arch BLG

repost

每次都会耐心地发送错误报告的飘过→_→你们这样做不行啊。

mark。相比之下，LTS版本的内部错误较少，相对稳定。.04版本略高，到了.10版本，基本内部错误满天飞。

一直点的。。。居然忍了好几年

提权编辑器打开/etc/default/apport文件 把enabled这项值改为 0

发送了也没人解决

有时候确实比较烦，但是更多的是找解决方案。[困死了]

为什么一直有个哥们好多帖子下面回复个"repost"，受啥刺激了

那是某种微博程序转发时候的默认用语，我们是做了微博回推的

mark

有用

才怪

# Linux有问必答：如何禁止Ubuntu的Apport内部错误报告程序

>
> **问题**：在桌面版Ubuntu中，我经常遇到一些弹窗窗口，警告我Ubuntu发生了内部错误，问我要不要发送错误报告。每次软件崩溃都要烦扰我，我如何才能关掉这个错误报告功能呢？
>
>
>

Ubuntu桌面版预装了Apport，它是一个错误收集系统，会收集软件崩溃、未处理异常和其他，包括程序bug，并为调试目的生成崩溃报告。当一个应用程序崩溃或者出现Bug时候，Apport就会通过弹窗警告用户并且询问用户是否提交崩溃报告。你也许也看到过下面的消息。

* "Sorry, the application XXXX has closed unexpectedly."
* "对不起，应用程序XXXX意外关闭了。"
* "Sorry, Ubuntu XX.XX has experienced an internal error."
* "对不起，Ubuntu XX.XX 发生了一个内部错误。"
* "System program problem detected."
* "检测到系统程序问题。"

也许因为应用一直崩溃，频繁的错误报告会使人心烦。也许你担心Apport会收集和上传你的Ubuntu系统的敏感信息。无论什么原因，你想关掉Apport的错误报告功能。

### 临时关闭Apport错误报告

如果你想要临时关闭Apport，使用下列命令

```
$ sudo service apport stop

```

注意重启Ubuntu系统Apport会继续开启

### 永久关闭Apport错误报告

为了永久关闭Apport，编辑/etc/default/apport，修改下列参数

```
enabled=0

```

重启你的Ubuntu系统，Apport将会自动关闭

如果你再也不会用Apport，有一种简单的方法完全移除它

```
$ sudo apt-get purge apport

```

---

via: <http://ask.xmodulo.com/disable-apport-internal-error-reporting-ubuntu.html>

译者：[VicYu/Vic020](http://www.vicyu.net/) 校对：[wxy](https://github.com/wxy)

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


网络时间的那些事及 ntpq 详解

Summary: Gentoo（也许其他发行版也是？）中 "ntpq -p" 的 man page 只有简短的描述：打印出该服务器已知的节点列表和它们的状态概要信息。 我还没见到关于这个命令的说明文档，因此这里对此作一个总结，可以补充进 "man ntpq" man page 中。更多的细节见这里 ntpq  标准 NTP 请求程序（原作者），和 其他关于 man ntpq 的例子. NTP 是一个设计用于通过 udp 网络 (WAN 或者 LAN) 来同步计算机时钟的协议。引用 Wikipedia  NTP：  网络时间协议（英语：Network Time Protocol，NTP）一种协议和软件实现，用于通过使用有网络延迟的报文交换网络同步计

# 网络时间的那些事及 ntpq 详解

[Gentoo](http://www.gentoo.org/)（也许其他发行版也是？）中 ["ntpq -p" 的 man page](http://nlug.ml1.co.uk/2012/01/man-ntpq-gentoo-brief-version/853) 只有简短的描述：“*打印出该服务器已知的节点列表和它们的状态概要信息。*”

我还没见到关于这个命令的说明文档，因此这里对此作一个总结，可以补充进 "[man ntpq](http://www.thelinuxblog.com/linux-man-pages/1/ntpq)" man page 中。更多的细节见这里 “[ntpq – 标准 NTP 请求程序](http://www.eecis.udel.edu/%7Emills/ntp/html/ntpq.html)”（原作者），和 [其他关于 man ntpq 的例子](http://linux.die.net/man/8/ntpq).

[NTP](http://www.ntp.org/) 是一个设计用于通过 [udp](http://en.wikipedia.org/wiki/User_Datagram_Protocol) 网络 ([WAN](http://en.wikipedia.org/wiki/Wide_area_network) 或者 [LAN](http://en.wikipedia.org/wiki/Local_area_network)) 来同步计算机时钟的协议。引用 [Wikipedia – NTP](http://en.wikipedia.org/wiki/Network_Time_Protocol)：

>
> 网络时间协议（英语：Network Time Protocol，NTP）一种协议和软件实现，用于通过使用有网络延迟的报文交换网络同步计算机系统间的时钟。最初由美国特拉华大学的 David L. Mills 设计，现在仍然由他和志愿者小组维护，它于 1985 年之前开始使用，是因特网中最老的协议之一。
>
>
>

想了解更多有关时间和 NTP 协议的知识，可以参考 “[The NTP FAQ, Time, what Time?](http://www.ntp.org/ntpfaq/NTP-s-time.htm)”和 [RFCs for NTP](http://www.ntp.org/rfc.html)。早期的“Network Time Protocol (Version 3) RFC” ([txt](http://www.ietf.org/rfc/rfc1305.txt), or [pdf](http://www.rfc-editor.org/rfc/rfc1305.pdf), Appendix E, The NTP Timescale and its Chronometry, p70) 包含了对过去 5000 年我们的计时系统的变化和关系的有趣解释。维基百科的文章 [Time](http://en.wikipedia.org/wiki/Time) 和 [Calendar](http://en.wikipedia.org/wiki/Calendar) 提供了更宏观的视角。

命令 "ntpq -q" 输出下面这样的一个表：

```
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 LOCAL(0)        .LOCL.          10 l  96h   64    0    0.000    0.000   0.000
*ns2.example.com 10.193.2.20      2 u  936 1024  377   31.234    3.353   3.096

```

### 更多细节

#### 表头

* **remote** – 用于同步的远程节点或服务器。“LOCAL”表示本机 （当没有远程服务器可用时会出现）
* **refid** – 远程的服务器进行同步的更高一级服务器
* **st** – 远程节点或服务器的 [Stratum](http://en.wikipedia.org/wiki/Network_Time_Protocol#Clock_strata)（级别，NTP 时间同步是分层的）
* **t** – 类型 (u: [unicast（单播）](http://en.wikipedia.org/wiki/Unicast) 或 [manycast（选播）](http://www.eecis.udel.edu/%7Emills/ntp/html/manyopt.html#mcst) 客户端, b: [broadcast（广播）](http://en.wikipedia.org/wiki/Broadcasting_%28computing%29) 或 [multicast（多播）](http://en.wikipedia.org/wiki/Multicast) 客户端, l: 本地时钟, s: 对称节点（用于备份）, A: 选播服务器, B: 广播服务器, M: 多播服务器, 参见“[Automatic Server Discovery](http://www.eecis.udel.edu/%7Emills/ntp/html/manyopt.html)“)
* **when** – 最后一次同步到现在的时间 (默认单位为秒, “h”表示小时，“d”表示天)
* **poll** – 同步的频率：[rfc5905](http://www.ietf.org/rfc/rfc5905.txt)建议在 NTPv4 中这个值的范围在 4 (16秒) 至 17 (36小时) 之间（即2的指数次秒），然而观察发现这个值的实际大小在一个小的多的范围内 ：64 (2 6 )秒 至 1024 (2 10 )秒
* **reach** – 一个8位的左移移位寄存器值，用来测试能否和服务器连接，每成功连接一次它的值就会增加，以 [8 进制](http://en.wikipedia.org/wiki/Octal#In_computers)显示
* **delay** – 从本地到远程节点或服务器通信的往返时间（毫秒）
* **offset** – 主机与远程节点或服务器时间源的时间偏移量，offset 越接近于0，主机和 NTP 服务器的时间越接近(以[方均根](http://en.wikipedia.org/wiki/Root_mean_square)表示，单位为毫秒)
* **jitter** – 与远程节点同步的时间源的平均偏差（多个时间样本中的 offset 的偏差，单位是毫秒），这个数值的绝对值越小，主机的时间就越精确

#### 字段的统计代码

表中第一个字符（统计代码）是状态标识（参见 [Peer Status Word](http://www.eecis.udel.edu/%7Emills/ntp/html/decode.html#peer)），包含 " "，"x"，"-"，"#"，"+"，"\*"，"o"：

* " " – 无状态，表示:
	+ 没有远程通信的主机
	+ "LOCAL" 即本机
	+ （未被使用的）高层级服务器
	+ 远程主机使用的这台机器作为同步服务器
* “**x**” – 已不再使用
* “**-**” – 已不再使用
* “**#**” – 良好的远程节点或服务器但是未被使用 （不在按同步距离排序的前六个节点中，作为备用节点使用）
* “**+**” – 良好的且优先使用的远程节点或服务器（包含在组合算法中）
* “\*” – 当前作为优先主同步对象的远程节点或服务器
* “**o**” – PPS 节点 (当优先节点是有效时)。实际的系统同步是源于秒脉冲信号（pulse-per-second，PPS），可能通过PPS 时钟驱动或者通过内核接口。

参考 [Clock Select Algorithm](http://www.eecis.udel.edu/%7Emills/ntp/html/select.html).

#### refid

**refid** 有下面这些状态值

* 一个IP地址 – 远程节点或服务器的 [IP 地址](http://en.wikipedia.org/wiki/Ip_address)
* **.LOCL.** – 本机 (当没有远程节点或服务器可用时）
* **.PPS.** – 时间标准中的“[Pulse Per Second](http://en.wikipedia.org/wiki/Pulse_per_second)”（秒脉冲）
* **.IRIG.** – [Inter-Range Instrumentation Group](http://en.wikipedia.org/wiki/Inter-Range_Instrumentation_Group) 时间码
* **.ACTS.** – 美国 [NIST 标准时间](http://en.wikipedia.org/wiki/Standard_time_and_frequency_signal_service) 电话调制器
* **.NIST.** –美国 NIST 标准时间电话调制器
* **.PTB.** – 德国 [PTB](http://www.ptb.de/index_en.html) 时间标准电话调制器
* **.USNO.** – 美国 [USNO 标准时间](http://en.wikipedia.org/wiki/United_States_Naval_Observatory#Time_service) 电话调制器
* **.CHU.** – [CHU](http://en.wikipedia.org/wiki/CHU_%28radio_station%29) ([HF](http://en.wikipedia.org/wiki/High_frequency), Ottawa, ON, Canada) 标准时间无线电接收器
* **.DCFa.** – [DCF77](http://en.wikipedia.org/wiki/DCF77) ([LF](http://en.wikipedia.org/wiki/Low_frequency), Mainflingen, Germany) 标准时间无线电接收器
* **.HBG.** – [HBG](http://en.wikipedia.org/wiki/HBG_%28time_signal%29) (LF Prangins, Switzerland) 标准时间无线电接收器
* **.JJY.** – [JJY](http://en.wikipedia.org/wiki/JJY#Time_standards) (LF Fukushima, Japan) 标准时间无线电接收器
* **.LORC.** – [LORAN](http://en.wikipedia.org/wiki/LORAN#Timing_and_synchronization)-C station ([MF](http://en.wikipedia.org/wiki/Medium_frequency)) 标准时间无线电接收器，注： [不再可用](http://en.wikipedia.org/wiki/LORAN#The_future_of_LORAN) (被 [eLORAN](http://en.wikipedia.org/wiki/LORAN#eLORAN) 废弃)
* **.MSF.** – [MSF](http://en.wikipedia.org/wiki/Time_from_NPL#The_.27MSF_signal.27_and_the_.27Rugby_clock.27) (LF, Anthorn, Great Britain) 标准时间无线电接收器
* **.TDF.** – [TDF](http://en.wikipedia.org/wiki/T%C3%A9l%C3%A9_Distribution_Fran%C3%A7aise) (MF, Allouis, France)标准时间无线电接收器
* **.WWV.** – [WWV](http://en.wikipedia.org/wiki/WWV_%28radio_station%29#Time_signals) (HF, Ft. Collins, CO, America) 标准时间无线电接收器
* **.WWVB.** – [WWVB](http://en.wikipedia.org/wiki/WWVB) (LF, Ft. Collins, CO, America) 标准时间无线电接收器
* **.WWVH.** – [WWVH](http://en.wikipedia.org/wiki/WWVH) (HF, Kauai, HI, America) 标准时间无线电接收器
* **.GOES.** – 美国[静止环境观测卫星](http://en.wikipedia.org/wiki/GOES#Further_reading);
* **.GPS.** – 美国 [GPS](http://en.wikipedia.org/wiki/Gps#Timekeeping);
* **.GAL.** – [伽利略定位系统](http://en.wikipedia.org/wiki/Galileo_%28satellite_navigation%29#The_concept)欧洲 [GNSS](http://en.wikipedia.org/wiki/Gnss);
* **.ACST.** – 选播服务器
* **.AUTH.** – 认证错误
* **.AUTO.** – Autokey （NTP 的一种认证机制）顺序错误
* **.BCST.** – 广播服务器
* **.CRYPT.** – Autokey 协议错误
* **.DENY.** – 服务器拒绝访问;
* **.INIT.** – 关联初始化
* **.MCST.** – 多播服务器
* **.RATE.** – (轮询) 速率超出限定
* **.TIME.** – 关联超时
* **.STEP.** – 间隔时长改变，偏移量比危险阈值小(1000ms) 比间隔时间 (125ms)大

#### 操作要点

一个时间服务器只会报告时间信息而不会从客户端更新时间（单向更新），而一个节点可以更新其他同级节点的时间，结合出一个彼此同意的时间（双向更新）。

[初次启动](http://www.eecis.udel.edu/%7Emills/ntp/html/debug.html)时：

>
> 除非使用 iburst 选项，客户端通常需要花几分钟来和服务器同步。如果客户端在启动时时间与 NTP 服务器的时间差大于 1000 秒，守护进程会退出并在系统日志中记录，让操作者手动设置时间差小于 1000 秒后再重新启动。如果时间差小于 1000 秒，但是大于 128 秒，会自动矫正间隔，并自动重启守护进程。
>
>
> 当第一次启动时，时间频率文件（通常是 ntp.drift 文件，记录时间偏移）不存在，守护进程进入一个特殊模式来矫正频率。当时钟不符合[规范](http://www.ntp.org/ntpfaq/NTP-s-algo-kernel.htm)时这会需要 900 秒。当校正完成后，守护进程创建时间频率文件进入普通模式，并分步校正剩余的偏差。
>
>
>

NTP 0 层（Stratum 0 ）的设备如原子钟（铯，铷），GPS 时钟或者其他标准时间的无线电时钟为 1 层（Stratum 1）的时间服务器提供时间信号。NTP 只报告[UTC](http://en.wikipedia.org/wiki/Coordinated_Universal_Time) 时间（统一协调时，Coordinated Universal Time）。客户端程序使用[时区](http://en.wikipedia.org/wiki/Time_zone)从 UTC 导出本地时间。

NTP 协议是高精度的，使用的精度小于纳秒（2的 -32 次方）。主机的时间精度和其他参数（受硬件和操作系统限制）使用命令 “ntpq -c rl” 查看（参见 [rfc1305](http://www.ietf.org/rfc/rfc1305.txt) 通用变量和 [rfc5905](http://www.ietf.org/rfc/rfc5905.txt)）。

#### “ntpq -c rl”输出参数

* **precision** 为四舍五入值，且为 2 的幂数。因此精度为 2 precision （秒）
* **rootdelay** – 与同步网络中主同步服务器的总往返延时。注意这个值可以是正数或者负数，取决于时钟的精度。
* **rootdisp** – 相对于同步网络中主同步服务器的偏差(秒)
* **tc** – NTP 算法 [PLL](http://en.wikipedia.org/wiki/PLL) （phase locked loop，锁相环路） 或 [FLL](http://en.wikipedia.org/wiki/Frequency-locked_loop) (frequency locked loop，锁频回路) 时间常量
* **mintc** – NTP 算法 PLL/FLL 最小时间常亮或“最快响应
* **offset** – 由结合算法得出的系统时钟偏移量（毫秒）
* **frequency** – 系统时钟频率
* **sys\_jitter** – 由结合算法得出的系统时钟平均偏差（毫秒）
* **clk\_jitter** – 硬件时钟平均偏差（毫秒）
* **clk\_wander** – 硬件时钟偏移([PPM](http://en.wikipedia.org/wiki/Parts_per_million) – 百分之一)

Jitter (也叫 timing jitter) 表示短期变化大于10HZ 的频率， wander 表示长期变化大于10HZ 的频率 （Stability 表示系统的频率随时间的变化，和 aging, drift, trends 等是同义词）

#### 操作要点（续）

NTP 软件维护一系列连续更新的频率变化的校正值。对于设置正确的稳定系统，在非拥塞的网络中，现代硬件的 NTP 时钟同步通常与 UTC 标准时间相差在毫秒内。（在千兆 LAN 网络中可以达到何种精度？）

对于 UTC 时间，[闰秒 leap second](http://en.wikipedia.org/wiki/Leap_second)  可以每两年插入一次用于同步地球自传的变化。注意本地时间为[夏令时](http://en.wikipedia.org/wiki/Daylight_saving_time)时时间会有一小时的变化。在重同步之前客户端设备会使用独立的 UTC 时间，除非客户端使用了偏移校准。

#### [闰秒发生时会怎样](http://www.ntp.org/ntpfaq/NTP-s-time.htm#Q-TIME-LEAP-SECOND)

>
> 闰秒发生时，会对当天时间增加或减少一秒。闰秒的调整在 UTC 时间当天的最后一秒。如果增加一秒，UTC 时间会出现 23:59:60。即 23:59:59 到 0:00:00 之间实际上需要 2 秒钟。如果减少一秒，时间会从 23:59:58 跳至 0:00:00 。另见 [The Kernel Discipline](http://www.ntp.org/ntpfaq/NTP-s-algo-kernel.htm).
>
>
>

那么… 间隔阈值（step threshold）的真实值是多少: 125ms 还是 128ms？ PLL/FLL tc 的单位是什么 (log2 s? ms?)？在非拥塞的千兆 LAN 中时间节点间的精度能达到多少？

感谢 Camilo M 和 Chris B的评论。 欢迎校正错误和更多细节的探讨。

谢谢 Martin

### 附录

* [NTP 的纪元](http://www.ntp.org/ntpfaq/NTP-s-algo.htm#AEN1895) 从 1900 开始而 UNIX 的从 1970开始.
* [时间校正](http://www.ntp.org/ntpfaq/NTP-s-algo.htm#Q-ACCURATE-CLOCK) 是逐渐进行的，因此时间的完全同步可能会画上几个小时。
* [节点状态](http://www.ntp.org/ntpfaq/NTP-s-trouble.htm#Q-TRB-MON-STATFIL) 可以被记录到 [summarise/plot time offsets and errors](http://www.ntp.org/ntpfaq/NTP-s-trouble.htm#AEN5086)
* [RMS](http://en.wikipedia.org/wiki/Root_mean_square) – 均方根
* [PLL](http://en.wikipedia.org/wiki/PLL) – 锁相环路
* [FLL](http://en.wikipedia.org/wiki/Frequency-locked_loop) – 锁频回路
* [PPM](http://en.wikipedia.org/wiki/Parts_per_million) – 百万分之一，用于描述频率的变化
* [man ntpq (Gentoo 简明版本)](http://nlug.ml1.co.uk/2012/01/man-ntpq-gentoo-brief-version/853)
* [man ntpq (长期维护版本)](http://nlug.ml1.co.uk/2012/01/man-ntpq-long-version/855)
* [man ntpq (Gentoo 长期维护版本)](http://nlug.ml1.co.uk/2012/01/man-ntpq-gentoo-long-version/856)

### 另见

* [ntpq – 标准 NTP 查询程序](http://www.eecis.udel.edu/%7Emills/ntp/html/ntpq.html)
* [The Network Time Protocol (NTP) 分布](http://www.eecis.udel.edu/%7Emills/ntp/html/index.html)
* NTP 的简明[历史](http://www.ntp.org/ntpfaq/NTP-s-def-hist.htm)
* 一个更多细节的简明历史 “Mills, D.L., A brief history of NTP time: confessions of an Internet timekeeper. Submitted for publication; please do not cite or redistribute” ([pdf](http://www.eecis.udel.edu/%7Emills/database/papers/history.pdf))
* [NTP RFC](http://www.ntp.org/rfc.html) 标准文档
* Network Time Protocol (Version 3) RFC – [txt](http://www.ietf.org/rfc/rfc1305.txt), or [pdf](http://www.rfc-editor.org/rfc/rfc1305.pdf). Appendix E, The NTP Timescale and its Chronometry, p70, 包含了对过去 5000 年我们的计时系统的变化和关系的有趣解释。
* 维基百科: [Time](http://en.wikipedia.org/wiki/Time) 和 [Calendar](http://en.wikipedia.org/wiki/Calendar)
* [John Harrison and the Longitude problem](http://www.rmg.co.uk/harrison)
* [Clock of the Long Now](http://longnow.org/clock/) – The 10,000 Year Clock
* John C Taylor – [Chronophage](http://johnctaylor.com/)
* [Orders of magnitude of time](http://en.wikipedia.org/wiki/Orders_of_magnitude_%28time%29)
* [Greenwich Time Signal](http://en.wikipedia.org/wiki/Greenwich_Time_Signal)

### 其他

SNTP （Simple Network Time Protocol, [RFC 4330](http://tools.ietf.org/html/rfc4330)，简单网络协议）基本上也是NTP，但是少了一些基于 [RFC 1305](http://tools.ietf.org/html/rfc1305) 实现的 NTP 的一些不再需要的内部算法。

Win32 时间 [Windows Time Service](http://en.wikipedia.org/wiki/Network_Time_Protocol#Microsoft_Windows) 是 SNTP 的非标准实现，没有精度的保证，并假设精度几乎有 1-2 秒的范围。（因为没有系统时间变化校正）

还有一个[PTP (IEEE 1588)](http://www.nist.gov/el/isd/ieee/ieee1588.cfm) Precision Time Protocol（精准时间协议）。见维基百科：[Precision Time Protocol](http://en.wikipedia.org/wiki/IEEE_1588)。软件程序为 [PTPd](http://ptpd.sourceforge.net/)。虫咬的功能是这是一个 [LAN](http://en.wikipedia.org/wiki/Local_area_network) 高精度主从同步系统，精度在毫秒级，使用 [International Atomic Time](http://en.wikipedia.org/wiki/International_Atomic_Time) (TAI， [monotonic](http://en.wikipedia.org/wiki/Monotonic_function)，无闰秒)。数据报时间戳需要在网卡中启用。支持 PTP 的网络会对数据报记录时间戳以减少交换机路由器的影响。也可以在不记录时间戳的网络中使用 PTP 但可能应为时间偏差太大而无法同步。因此使用这个需要对网络进行设置。

### 更老的时间同步协议

* DTSS – DEC公司的数字时间同步服务， 被 NTP 所取代。例子： [DTSS VMS C code c2000](http://antinode.info/ftp/dtss_ntp/)。 （哪里有关于 DTSS 的文章或文档吗？）
* [DAYTIME protocol](http://en.wikipedia.org/wiki/DAYTIME)，使用 [TCP](http://en.wikipedia.org/wiki/Transmission_Control_Protocol) 或 [UDP](http://en.wikipedia.org/wiki/User_Datagram_Protocol) 13 端口同步
* [ICMP Timestamp](http://en.wikipedia.org/wiki/ICMP_Timestamp) 和 [ICMP Timestamp Reply](http://en.wikipedia.org/wiki/ICMP_Timestamp_Reply)，使用 [ICMP](http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol) 协议同步
* [Time Protocol](http://en.wikipedia.org/wiki/Time_Protocol)，使用 TCP 或 UDP 37 号端口同步

---

via: <http://nlug.ml1.co.uk/2012/01/ntpq-p-output/831>

作者：Martin L 译者：[Liao](https://github.com/liaosishere) 校对：[wxy](https://github.com/wxy)

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


Windows和Ubuntu双系统，修复UEFI引导的两种办法

Summary: 读者在读过我的安装Ubuntu和Windows 8双系统教程以后，碰到的主要的问题是电脑直接启动到Windows 8而没有出现启动Ubuntu的选项。 这里有两种修复EFI启动引导的方法，使Ubuntu可以正常启动  将GRUB2设置为启动引导 1. 启用GRUB引导 在安装时，有些地方可能会出问题。 理论上来说，如果你首先安装Ubuntu，那么你需要关闭快速启动。 希望你按照这个指南创建一个UEFI Ubuntu 启动优盘安装正确的UEFI引导程序。 如果你在安装时已经完成了这些事情，那么可能出错的地方就是将GRUB2设置为启动管理器。 可以按照以下几个步骤将GRUB2设置为默认的引

觉得用easybcd更好一点[呵呵]

[酷]

#HZ赫兹工作室#win8+ubuntu 双系统教程

mark

@我的印象笔记

mark。

Repost

我还在用MBR

好东西，学习了[嘻嘻]

这都不是事

怪不得出问题[偷笑]

装了三天的ubuntu了……我还没装好……

额， 用 EFI 的可以尝试一下在开机的时候按一下 F12 （就是选择启动设备的按键，我这里是F12。grub安装在 ubuntu 挂载点为/的分区），里面会有ubuntu这一选项的说~

输入上边的mountvol命令，没反应啊。。cd不到那个盘。。

我没有禁用安全启动，用easyUEFI添加了一个引导指向\EFI\ubuntu\shimx64.efi就可以了。。

我在执行bcdedit /set {bootmgr} path \EFI\refind\refind_x64.efi时老是报参数错误。。。貌似没写错啊

第二个图形界面非常炫酷，谢谢楼主分享！<br />
可是如果我想把启动恢复成最初的启动该怎么更改设置呢？

来自北京的 Microsoft Edge 13.10586|Windows 10 用户

如果映射EFI后没有看到ubuntu文件夹是什么原因？

来自上海的 Microsoft Edge 13.10586|Windows 10 用户

你好 ，使用第二种方法时到第5步xcopy显示无效驱动器规格，没有文件复制，怀疑一开始EFI映射G盘没有成功，必须映射G盘吗？<br />
另，easybcd修复时显示EFI mode.add entry 时linux为灰色，无法添加。没看到笔者电邮，方便留一下电邮交流吗？非常感谢。

在PowerShell里{bootmgr}要加引号  '{bootmgr}'

我也是上Quote上面查了一下才知道

第一种方式给我整成开机蓝屏了。。。幸亏备了个pe修复引导才好了

# Windows和Ubuntu双系统，修复UEFI引导的两种办法

读者在读过我的[安装Ubuntu和Windows 8双系统教程](http://linux.cn/article-3178-1.html)以后，碰到的主要的问题是电脑直接启动到Windows 8而没有出现启动Ubuntu的选项。

这里有两种修复EFI启动引导的方法，使Ubuntu可以正常启动

*将GRUB2设置为启动引导*

### 1. 启用GRUB引导

在安装时，有些地方可能会出问题。

理论上来说，如果你首先安装Ubuntu，那么你需要[关闭快速启动](http://linux.cn/article-3178-1.html#4_3289)。

希望你[按照这个指南创建一个UEFI Ubuntu 启动优盘](http://linux.cn/article-3178-1.html#4_1717)安装正确的UEFI引导程序。

如果你在安装时已经完成了这些事情，那么可能出错的地方就是将GRUB2设置为启动管理器。

可以按照以下几个步骤将GRUB2设置为默认的引导程序：

1. 登录Windows 8
2. 转到桌面
3. 右击开始按钮，选择管理员命令行
4. 输入 mountvol g: /s (这将你的EFI目录结构映射到G盘)
5. 输入 cd g:\EFI
6. 当你输入 dir 列出文件夹内容时，你可以看到一个Ubuntu的文件夹
7. 这里的参数可以是grubx64.efi或者shimx64.efi
8. 运行下列命令将grub64.efi设置为启动引导程序： bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
9. 重启你的电脑
10. 你将会看到一个包含Ubuntu和Windows选项的GRUB菜单
11. 如果你的电脑仍然直接启动到Windows，重复步骤1到7，但是这次输入： bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi
12. 重启你的电脑

这里你做的事情就是登录Windows管理员命令行，将EFI引导区映射到磁盘上，来查看Ubuntu的引导程序是否安装成功，然后选择grubx64.efi或者shimx64.efi作为引导程序。

那么[grubx64.efi和shimx64.efi有什么区别呢](https://wiki.ubuntu.com/SecurityTeam/SecureBoot)？在安全启动（serureboot）关闭的情况下，你可以使用grubx64.efi。如果安全启动打开则需要选择shimx64.efi。

在我上面的步骤里面，我建议先试一个，然后再试试另外一个。另外一种方法是选择一个，然后根据你选择的引导程序在BIOS中启用或者禁用安全启动。

### 2.使用rEFInd引导Ubuntu和Windows双系统

[rEFInd引导程序](http://www.rodsbooks.com/refind/installing.html#windows)会以图标的方式列出你所有的操作系统。因此，你可以通过点击相应的图标来启动Windows、Ubuntu或者优盘中的操作系统。

[点击这里](http://sourceforge.net/projects/refind/files/0.8.4/refind-bin-0.8.4.zip/download)下载rEFInd for Windows 8。

下载和解压以后，按照以下的步骤安装rEFInd。

1. 返回桌面
2. 右击开始按钮，选择管理员命令行
3. 输入 mountvol g: /s (这将你的EFI目录结构映射到G盘)
4. 进入解压的rEFInd目录。例如： cd c:\users\gary\downloads\refind-bin-0.8.4\refind-bin-0.8.4 。 当你输入 dir 命令，你可以看到一个refind目录
5. 输入如下命令将refind拷贝到EFI引导区 xcopy /E refind g:\EFI\refind\
6. 输入如下命令进入refind文件夹 cd g:\EFI\refind
7. 重命名示例配置文件 rename refind.conf-sample refind.conf
8. 运行如下命令将rEFind设置为引导程序 bcdedit /set {bootmgr} path \EFI\refind\refind\_x64.efi
9. 重启你的电脑
10. 你将会看到一个包含Ubuntu和Windows的图形菜单

这个过程和选择GRUB引导程序十分相似。

简单的说，主要是下载rEFind，解压文件。拷贝文件到EFI引导区，重命名配置文件，然后将rEFind设置为引导程序。

### 概要

希望这篇文章可以解决有些人在安装Ubuntu和Windows 8.1双系统时出现的问题。如果你仍然有问题，可以通过上面的电邮和我进行交流。

---

via: <http://linux.about.com/od/LinuxNewbieDesktopGuide/tp/3-Ways-To-Fix-The-UEFI-Bootloader-When-Dual-Booting-Windows-And-Ubuntu.htm>

作者：[Gary Newell](http://linux.about.com/bio/Gary-Newell-132058.htm) 译者：[zhouj-sh](https://github.com/zhouj-sh) 校对：[wxy](https://github.com/wxy)

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


也许是有史以来最好的游戏：NetHack

Summary: 这款游戏非常容易让你上瘾。你可能需要花费一生的时间来掌握它。许多人玩了几十年也没有通关。欢迎来到 NetHack 的世界... 不管你信不信，在 NetHack 里你见到字母 D 的时候你会被吓着。但是当你看见一个 % 的时候，你将会欣喜若狂。（忘了说 ^，你看见它将会更激动）在你寻思我们的脑子是不是烧坏了并准备关闭浏览器标签之前，请给我们一点时间解释：这些符号分别代表龙、食物以及陷阱。欢迎来到 NetHack 的世界，在这里你的想象力需要发挥巨大的作用。 如你所见，NetHack 是一款文字模式的游戏：它仅仅使用标准终端字符集来刻画玩家、敌

有人玩过这个游戏吗？

好神奇

nb的游戏

留

Repost

Repost

呜哈呜哈

[good][good]

//@阿里技术保障:有人玩过这个游戏吗？

Repost

@我的印象笔记

看起来很好玩的样子

很高大上的样子

//@伯乐头条:转发微博

M //@伯乐头条:转发微博

向文字类沙盘游戏致敬！//@伯乐头条:转发微博

看不懂，先转//@伯乐头条:转发微博

//@伯乐头条:转发微博

//@伯乐头条:转发微博

尝试中.. //@伯乐头条: 转发微博

@我的印象笔记

试一试//@伯乐头条:转发微博

右边用的好//@比尔盖子V: 继续安利 NetHack //@北京GNOME用户组://@张翔-西安理工大学:转发微博

I will try it //@比尔盖子V:继续安利 NetHack //@北京GNOME用户组://@张翔-西安理工大学:转发微博

转

看着有点狠啊～mark下～ //@伯乐头条:转发微博

玩个游戏还得达到英文8级[doge][doge][doge]//@無銘幻影: 向文字类沙盘游戏致敬！//@伯乐头条:转发微博

//@伯乐头条:转发微博

马//@游荡的坎德人:貌似有人fork了个图形界面的版本…？//@比尔盖子V: csslayer 喜欢啥 Play [思考]？//@攻占街角肉铺: 看过csslayer的实况，不过我只记得他喜欢那啥Play//@比尔盖子V: 继续安利 NetHack //@北京GNOME用户组://@张翔-西安理工大学:转发微博

下载下来发现要玩这游戏还得英文八级[doge][doge][doge]//@無銘幻影: 向文字类沙盘游戏致敬！//@伯乐头条:转发微博

不仅有一个哦//@游荡的坎德人: 貌似有人fork了个图形界面的版本…？//@比尔盖子V: csslayer 喜欢啥 Play [思考]？//@攻占街角肉铺: 看过csslayer的实况，不过我只记得他喜欢那啥Play//@比尔盖子V: 继续安利 NetHack //@北京GNOME用户组://@张翔-西安理工大学:转发微博

what

回头去看能不能做出基于网页的。。然后把404页面替换了。。

# 也许是有史以来最好的游戏：NetHack

**这款游戏非常容易让你上瘾。你可能需要花费一生的时间来掌握它。许多人玩了几十年也没有通关。欢迎来到 NetHack 的世界...**

不管你信不信，在 NetHack 里你见到字母 **D** 的时候你会被吓着。但是当你看见一个 **%** 的时候，你将会欣喜若狂。（忘了说 **^**，你看见它将会更激动）在你寻思我们的脑子是不是烧坏了并准备关闭浏览器标签之前，请给我们一点时间解释：这些符号分别代表龙、食物以及陷阱。欢迎来到 NetHack 的世界，在这里你的想象力需要发挥巨大的作用。

如你所见，NetHack 是一款文字模式的游戏：它仅仅使用标准终端字符集来刻画玩家、敌人、物品还有环境。游戏的图形版是存在的，不过 NetHack 的骨灰级玩家们都倾向于不去使用它们，问题在于假如你使用图形界面，当你通过 SSH 登录到你的古董级的运行着 NetBSD 的 Amiga 3000 上时，你还能进行游戏吗？在某些方面，NetHack 和 Vi 非常相似 - 几乎被移植到了现存的所有的操作系统上，并且依赖都非常少。

那么问题来了，和现代游戏相比如此简陋的画面，是什么造就了 NetHack 如此巨大的吸引力的呢？ 事实上，这款地牢探险类神作有着令人难以置信的丰富细节。有太多的东西等着你去发掘：法术释放、怪物战斗以及技巧学习 - 以及随机生成的地牢。有太多的东西等着你去探索，几乎没有哪两局游戏会是完全一样的。许多人玩了几十年也没有通关，每次游戏依然能发现一些以前不知道的秘密。

接下来，我们会向你讲述 NetHack 的历史，给你地牢探险的基本指导，再告诉你一些技巧。免责： 在你继续阅读本文之前，视为你已经自动同意了当你沉溺于 NetHack 以致影响到你的现实生活时，你不会起诉我们。

*NetHack 界面*

### 也许是最古老的仍在开发的游戏里

名非其实，NetHack 并不是一款网络游戏。它只不过是基于一款出现较早的名为 Hack 的地牢探险类游戏开发出来的，而这款 Hack 游戏是 1980 年的游戏 Rogue 的后代。NetHack 在 1987 年发布了第一个版本，并于 2003 年发布了 3.4.3 版本，尽管在这期间一直没有加入新的功能，但各种补丁、插件，以及衍生作品还是在网络上疯狂流传。这使得它可以说是最古老的、拥有众多对游戏乐此不疲的粉丝的游戏。当你访问 [www.reddit.com/r/nethack](http://www.reddit.com/r/nethack) 之后，你就会了解我们的意思了 - 骨灰级的 NetHack 的玩家们仍然聚集在一起讨论新的策略、发现和技巧。偶尔你也可以发现 NetHack 的元老级玩家在历经千辛万苦终于通关之后发出的欢呼。

但怎样才能通关呢？首先，NetHack 被设定在既大又深的地牢中。游戏开始时你在最顶层 - 第 1 层 - 你的目标是不断往下深入直到你找到一个非常宝贵的物品，护身符 Yendor。通常来说 Yendor 在 第 20 层或者更深的地方，但它是可以变化的。随着你在地牢的不断深入，你会遇到各种各样的怪物、陷阱以及 NPC；有些会试图杀掉你，有些会挡在你前进的路上，还有些... 总而言之，在你靠近 TA 们之前你永远不知道 TA 们会怎样。

>
> 要学习的有太多太多，绝大多数物品只有在和其他物品同时使用的情况下才会发挥最好的效果。
>
>
>

使 NetHack 如此引人入胜的原因是游戏中所加入的大量物品。武器、盔甲、附魔书、戒指、宝石 - 要学习的有太多太多，绝大多数物品只有在和其他物品同时使用的情况下才会发挥最好的效果。怪物在死亡后经常会掉落一些有用的物品，以及某些物品如果你不正确使用的话会产生及其不良的作用。你可以在地牢找到商店，里面有许多看似平凡实则非常有用的物品，不过别指望店主能给你详细的描述。你只能靠自己的经验来了解各个物品的用途。有些物品确实没有太大用处，NetHack 中有很多的恶搞元素 - 比如你可以把一块奶油砸到自己的脸上。

不过在你踏入地牢之前，NetHack 会询问你要选择哪种角色进行游戏。你可以为你接下来的地牢之行选择骑士、修道士、巫师，或者卑微的旅者，还有许多其他的角色类型。每种角色都有其独特的优势与弱点，NetHack 的重度玩家喜欢选择那些相对较弱的角色来挑战游戏。你懂的，这样可以向其他玩家炫耀自己的实力。

>
> **情报不会降低游戏的乐趣**
>
>
> 用 NetHack 的说法来讲，“情报员”给指其他玩家提供关于怪物、物品、武器和盔甲信息的玩家。理论上来说，完全可以不借助任何外来信息而通关，但几乎没有几个玩家能做到，游戏实在是太难了。因此使用情报并不会被视为一件糟糕的事情 - 但是一开始由你自己来探索游戏和解决难题，这样才会获得更多的乐趣，只有当你遇到瓶颈的时候再去使用那些情报。
>
>
> 在这里给出一个比较有名的情报站点 [www.statslab.cam.ac.uk/~eva/nethack/spoilerlist.html](http://www.statslab.cam.ac.uk/%7Eeva/nethack/spoilerlist.html)，其中的情报被分为了不同的类别。游戏中随机发生的事，比如在喷泉旁饮水可能导致的不同结果，从这里你可以得知已确定的不同结果的发生概率。
>
>
>

### 你的首次地牢之行

NetHack 几乎可以在所有的主流操作系统以及 Linux 发行版上运行，因此你可以通过 "apt-get install nethack" 或者 "yum install nethack" 等适合你用的发行版的命令来安装游戏。安装完毕后，在一个命令行窗口中键入 "nethack" 就可以开始游戏了。游戏开始时系统会询问是否为你随机挑选一位角色 - 但作为一个新手，你最好自己从里面挑选一位比较强的角色。所以，你应该点 "n"，然后点 "v" 以选取女武神（Valkyrie），而点 "d" 会选择成为侏儒（dwarf）。

接着 NetHack 上会显示出剧情，说你的神正在寻找护身符 Yendor，你的目标就是找到它并将它带给神。阅读完毕后点击空格键（其他任何时候当你见到屏幕上的 "-More-" 时都可以这样）。接着就让我们出发 - 开始地牢之行吧！

先前已经介绍过了，你的角色用 @ 来表示。你可以看见角色所出房间周围的墙壁，房间里显示“点”的那些地方是你可以移动的空间。首先，你得明白怎样移动角色：h、j、k 以及 l。（是的，和 Vim 中移动光标的操作相同）这些操作分别会使角色向向左、向下、向上以及向右移动。你也可以通过 y、u、b 和 n 来使角色斜向移动。在你熟悉如何控制角色移动前你最好在房间里来回移动你的角色。

NetHack 采用了回合制，因此即使你不进行任何动作，游戏仍然在进行。这是你可以提前计划你的行动。你可以看见一个 "d" 字符或者 "f" 字符在房间里来回移动：这是你的宠物狗/猫，（通常情况下）它们不会伤害你而是帮助你击杀怪物。但是宠物也会被惹怒 - 它们偶尔也会抢在你接近食物或者怪物尸体之前吃掉它们。

*点击 “i” 列出你当前携带的物品清单*

### 门后有什么？

接下来，让我们离开房间。房间四周的墙壁某处会有缝隙，可能是 "+" 号。"+" 号表示一扇关闭的门，这时你应该靠近它然后点击 "o" 来开门。接着系统会询问你开门的方向，假如门在你的左方，就点击 "h"。（如果门被卡住了，就多试几次）然后你就可以看见门后的走廊了，它们由 "#" 号表示，沿着走廊前进直到你找到另一个房间。

地牢之行中你会见到各种各样的物品。某些物品，比如金币（由 "$" 号表示）会被自动捡起来；至于另一些物品，你只能站在上面按下逗号键手动拾起。如果同一位置有多个物品，系统会给你显示一个列表，你只要通过合适的按键选择列表中你想要的物品最后按下 "Enter" 键即可。任何时间你都可以点击 "i" 键在屏幕上列出你当前携带的物品清单。

如果看见了怪物该怎么办？在游戏早期，你可能会遇到的怪物会用符号 "d"、"x" 和 ":" 表示。想要攻击的话，只要简单地朝怪物的方向移动即可。系统会在屏幕顶部通过信息显示来告诉你攻击是否成功 - 以及怪物做出了何种反应。早期的怪物很容易击杀，所以你可以毫不费力地打败他们，但请留意底部状态栏里显示的角色的 HP 值。

>
> 早期的怪物很容易击杀，但请留意角色的 HP 值。
>
>
>

如果怪物死后掉落了一具尸体（"%"），你可以点击逗号进行拾取，并点击 "e" 来食用。（在任何时候系统提示你选择一件物品，你都可以从物品列表中点击相应的按键，或者点击 "?" 来查询迷你菜单。）注意！有些尸体是有毒的，这些知识你将在日后的冒险中逐渐学会掌握。

如果你在走廊里行进时遇到了死胡同，你可以点击 "s" 进行搜寻直到找到一扇门。这会花费时间，但是你可以这样加速游戏进程：输入 "10" 并点击 "s" 你将一下搜索 10 次。这将花费游戏中进行 10 次动作的时间，不过如果你正在饥饿状态，你将有可能会被饿死！

通常你可以在地牢顶部找到 "{"（喷泉）以及 "!"（药水）。当你找到喷泉的时候，你可以站在上面并点击 "q" 键开始 “畅饮（quaff）” - 引用后会得到从振奋的到致命的多种效果。当你找到药水的时候，将其拾起并点击 "q" 来饮用。如果你找到一个商店，你可以拾取其中的物品并在离开前点击 "p" 键进行支付。当你负重过大时，你可以点击 "d" 键丢掉一些东西。

*现在已经有带音效的 3D 版 Nethack 了，如：Falcon’s Eye*

>
> **愚蠢的死法**
>
>
> 在 NetHack 玩家中流行着一个缩写词 "YASD" - 又一种愚蠢的死法（Yet Another Stupid Death）。这个缩写词表示了玩家由于自身的的愚蠢或者粗心大意导致了角色的死亡。我们搜集了很多这类死法，但我们最喜欢的是下面这种死法：
>
>
> 我们正在商店浏览商品，这时一条蛇突然从药剂后面跳了出来。在杀死蛇之后，系统弹出一条信息提醒我们角色饥饿值过低了，因此我们顺手食用了蛇的尸体。坏事了！这使得我们的角色失明，导致我们的角色再也不能看见商店里的其他角色及地上的商品了。我们试图离开商店，但在慌乱中却撞在了店主身上并攻击了他。这种做法激怒了店主：他立即向我们的角色使用了火球术。我们试图逃到商店外的走廊上，但却在逃亡的过程中被烧死。
>
>
> 如果你有类似的死法，一定要来我们的论坛告诉我们。不要担心 - 没有人会嘲笑你。经历这样的死法也是你在 NetHack 的世界里不断成长的一部分。哈哈。
>
>
>

### 武装自己

地牢里，尤其是在你击杀怪物后，你可能会发现武器或盔甲。在这里再说一次，点击逗号把它们拾起，接着点击 "w"（小写的）来使用武器或者点击 "W"（大写的）来穿上盔甲。你可以用 "T" 来脱掉盔甲或者 "t" 来取下武器 - 如果你陷入了困境，请确保你总是在使用最好的装备。

在靠近掉在地下的装备之前最好检查一下身上的东西。点击 ";"（分号）后，"Pick an object"（选择一样物品）选项将出现在屏幕顶部。选择该选项，使用移动键直到选中你想要检查的物品，然后点击 ":"（冒号）。接着屏幕顶部将出现这件物品的描述。

因为你的目标是不断深入地牢直到找到护身符 Yendor，所以请随时留意周围的 "<" 和 ">" 符号。这两个符号分别表示向上和向下的楼梯，你可以用与之对应的按键来上楼或下楼。注意！如果你想让宠物跟随你进入下/上一层地牢，下/上楼前请确保你的宠物在你邻近的方格内。若果你想退出，点击 "S"（大写的）来保存进度，输入 #quit 退出游戏。当你再次运行 NetHack 时，系统将会自动读取你上次退出时的游戏进度。

我们就不继续剧透了，地牢深处还有更多的神秘细节、陌生的 NPC 以及不为人知的秘密等着你去发掘。那么，我们再给你点建议：当你遇到了让你困惑不已的物品时，你可以尝试去 NetHack 维基 [http://nethack.wikia.com](http://nethack.wikia.com/) 进行搜索。你也可以在 [www.nethack.org/v343/Guidebook.html](http://www.nethack.org/v343/Guidebook.html) 找到一本非常不错（尽管很长）的指导手册。最后，祝游戏愉快！

---

via: <http://www.linuxvoice.com/nethack/>

作者：[Mike Saunders](http://www.linuxvoice.com/author/mike/) 译者：[Stevearzh](https://github.com/Stevearzh) 校对：[wxy](https://github.com/wxy)

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


一些不起眼但非常有用的 Vim 命令

Summary: 如果我的关于这个话题的最新帖子没有提醒到你的话，那我明确地说，我是一个 Vim 的粉丝。所以在你们中的某些人向我扔石头之前，我先向你们展示一系列鲜为人知的 Vim 命令。我的意思是，一些你可能以前没有碰到过的命令，但可能对你来说很有用。作为第二免责声明，我不知道哪些命令是你可能知道的，以及哪些是对你来说有用的。因此这些命令实际上是一些相对少见，但很可能很有用的 Vim 命令。  保存文件并退出 说起来有些惭愧，我也是最近才学到这个命令 :x  和下面的命令是等价的： :wq  都是保存当前文件并退出。 （译者注：这两个命令实

不错

转发微博.

@我的印象笔记

@我的印象笔记

有意思

Repost

get

棒棒哒

很不错

Repost

m

正在爬vim的学习曲线

di好赞！vim真是个无底洞呀。。。

干货

黑科技啊！

Repost

Mark!

你们的评论太没“干货了”，不知道是不是我菜鸟的关系，首先Ctrl+n补全不了单词会显示pattern not found，还有diffthis 用Ctrl+W切再输入根本不好使，但是windo diffthis是可以用的。其他的我就没验证了，有谁能站出解释么，别随声附和，对这个网站的编辑们都有所怀疑了，全是不验证的瞎翻译。

w !sudo tee %

di

两个命令对我的vim（7.4）不起作用。

我是校对和发布，我确实没验证过，不过这篇，从我们译者写的译者注来看，应该是验证过的，也许不够充分？

ctrl+n需要有以前写过的单词才能补全，另外它目前只对c语言的#include内的东西自动抓取。

# 一些不起眼但非常有用的 Vim 命令

如果我的[关于这个话题的最新帖子](http://xmodulo.com/turn-vim-full-fledged-ide.html)没有提醒到你的话，那我明确地说，我是一个 Vim 的粉丝。所以在你们中的某些人向我扔石头之前，我先向你们展示一系列“鲜为人知的 Vim 命令”。我的意思是，一些你可能以前没有碰到过的命令，但可能对你来说很有用。作为第二免责声明，我不知道哪些命令是你可能知道的，以及哪些是对你来说有用的。因此这些命令实际上是一些相对少见，但很可能很有用的 Vim 命令。

### 保存文件并退出

说起来有些惭愧，我也是最近才学到这个命令

```
:x

```

和下面的命令是等价的：

```
:wq

```

都是保存当前文件并退出。

（译者注：这两个命令实际上并不完全等价，当文件被修改时两个命令时相同的。但如果未被修改，使用 :x 不会更改文件的修改时间，而使用 :wq 会改变文件的修改时间。）

### 基本计算器

在插入模式下，你可以使用 Ctrl+r 键然后输入 =，再输入一个简单的算式。按 Enter 键，计算结果就会插入到文件中。例如，尝试输入：

```
Ctrl+r '=2+2' ENTER

```

然后计算结果“4 ”会被插入到文件中。

### 查找重复的连续的单词

当你很快地打字时，很有可能会连续输入同一个单词两次，就像 this this。这种错误可能骗过任何一个人，即使是你自己重新阅读一遍也不可避免。幸运的是，有一个简单的正则表达式可以用来预防这个错误。使用搜索命令（默认时 /）然后输入：

```
\(\<\w\+\>\)\_s*\1

```

这会显示所有重复的单词。要达到最好的效果，不要忘记把下面的命令：

```
set hlsearch

```

放到你的 .vimrc 文件中高亮所有的匹配。

### 缩写

一个很可能是最令人印象深刻的窍门是你可以在 Vim 中定义缩写，它可以实时地把你输入的东西替换为另外的东西。语法格式如下：

```
:ab [缩写] [要替换的文字]

```

一个通用的例子是：

```
:ab asap as soon as possible

```

会把你输入的 “asap” 替换为 “as soon as possible”。

### 在你忘记用 root 方式打开文件时的文件保存

这可能是一个在论坛中一直受欢迎的命令。每当你打开一个你没有写入权限的文件（比如系统配置文件）并做了一些修改，Vim 无法通过普通的 “:w” 命令来保存。

你不需要重新以 root 方式打开文件再进行修改，只需要运行：

```
:w !sudo tee %

```

这会直接以 root 方式保存。

### 实时加密文本

如果你不想让别人看懂你的屏幕上的内容，你可以使用一个内置的选项，通过下面的命令使用 [ROT13](https://en.wikipedia.org/wiki/ROT13) 来对文本进行编码：

```
ggVGg?

```

gg 把光标移动到 Vim 缓冲区的第一行，V 进入可视模式，G 把光标移动到缓冲区的最后一行。因此，ggVG 使可视模式覆盖这个当前缓冲区。最后 g? 使用 ROT13 对整个区域进行编码。

注意它可以被映射到一个最常使用的键。它对字母符号也可以很好地工作。要对它进行撤销，最好的方法就是使用撤销命令：u。

### 自动补全

这是另外一个令我感到惭愧的功能，但我发现周围很多人并不知道。Vim 默认有自动补全的功能。的确这个功能是很基本的，并且可以通过插件来增强，但它也很有帮助。方法很简单。Vim 尝试通过已经输入的单词来预测单词的结尾。比如当你在同一个文件中第二次输入 “compiler” 时，仅仅输入 “com” 然后保持在插入模式，按 Ctrl+n 键就可以看到 Vim 为你补全了单词。很简单，但也很有用。

### 比较两个文件的不同

你们中的大多数很可能都知道 vimdiff 命令，它可以使用分离模式打开 Vim 并比较两个文件的不同。语法如下：

```
$ vimdiff [文件1] [文件2]

```

但同样的结果也可以通过下面的 Vim 命令来获得：

```
:diffthis

```

首先在 Vim 中打开原始文件。然后使用分离模式带来第二个文件：

```
:vsp [文件2]

```

最后在第一个缓冲区里输入：

```
:diffthis

```

通过 Ctrl+w 来切换缓冲区并再次输入：

```
:diffthis

```

这样两个文件中不同的部分就会被高亮。

（译者注：可以直接在一个缓冲区里使用命令 :windo diffthis，而不用输入 :diffthis 两次）

要停止比较，使用：

```
:diffoff

```

### 按时间回退文件

Vim 会记录文件的更改，你很容易可以回退到之前某个时间。该命令是相当直观的。比如：

```
:earlier 1m

```

会把文件回退到 1 分钟以前的状态。

注意，你可以使用下面的命令进行相反的转换：

```
:later

```

### 删除标记内部的文字

当我开始使用 Vim 时，一件我总是想很方便做的事情是如何轻松的删除方括号或圆括号里的内容。转到开始的标记，然后使用下面的语法：

```
di[标记]

```

比如，把光标放在开始的圆括号上，使用下面的命令来删除圆括号内的文字：

```
di(

```

如果是方括号或者是引号，则使用：

```
di{

```

和：

```
di"

```

### 删除指定标记前的内容

和删除标记内部有些相似，但目的不同。命令如下：

```
dt[标记]

```

会删除所有光标和标记之间的内容（保持标记不动），如果在同一行有这个标记的话。例如

```
dt.

```

会删除至句子的末尾，但保持 ‘.’ 不动。

### 把 Vim 变为十六进制编辑器

这不是我最喜欢的窍门，但有时会很有趣。你可以把 Vim 和 xxd 功能连起来来把文件转换为十六进制模式。命令如下：

```
:%!xxd

```

类似的，你可以通过下面的命令恢复原来的状态：

```
:%!xxd -r

```

### 把光标下的文字置于屏幕中央

我们所要做的事情如标题所示。如果你想强制滚动屏幕来把光标下的文字置于屏幕的中央，在可视模式中使用命令（译者注：在普通模式中也可以）：

```
zz

```

### 跳到上一个／下一个位置

当你编辑一个很大的文件时，经常要做的事是在某处进行修改，然后跳到另外一处。如果你想跳回之前修改的地方，使用命令：

```
Ctrl+o

```

来回到之前修改的地方

类似的：

```
Ctrl+i

```

会回退上面的跳动。

### 把当前文件转化为网页

这会生成一个 HTML 文件来显示文本，并在分开的窗口显示源代码：

```
:%TOhtml

```

（译者注：原文是 :%Tohtml，但在我的电脑上是 :%TOhtml）

很基本但很不错。

总的来说，这一系列命令是在我读了许多论坛主题和 [Vim Tips wiki](http://vim.wikia.com/wiki/Vim_Tips_Wiki)（如果你想学习更多关于编辑器的知识，我非常推荐这篇文章） 之后收集起来的。

如果你还知道哪些非常有用但你认为大多数人并不知道的命令，可以随意在评论中分享出来。就像引言中所说的，一个“鲜为人知但很有用的”命令也许只是你自己的看法，但分享出来总是好的。

---

via: <http://xmodulo.com/useful-vim-commands.html>

作者：[Adrien Brochard](http://xmodulo.com/author/adrien) 译者：[wangjiezhe](https://github.com/wangjiezhe) 校对：[wxy](https://github.com/wxy)

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


使用火焰图分析CPU性能回退问题

Summary: 你能快速定位CPU性能回退的问题么？ 如果你的工作环境非常复杂且变化快速，那么使用现有的工具是来定位这类问题是很具有挑战性的。当你花掉数周时间把根因找到时，代码已经又变更了好几轮，新的性能问题又冒了出来。 幸亏有了CPU火焰图（flame graphs），CPU使用率的问题一般都比较好定位。但要处理性能回退问题，就要在修改前后的火焰图之间，不断切换对比，来找出问题所在，这感觉就是像在太阳系中搜寻冥王星。虽然，这种方法可以解决问题，但我觉得应该会有更好的办法。 所以，下面就隆重介绍红/蓝差分火焰图（red/blue differential f

码了看

不明觉厉

说实话，主页君也不觉明历。。。所以特别佩服这篇文章的译者。

# 使用火焰图分析CPU性能回退问题

你能快速定位CPU性能回退的问题么？ 如果你的工作环境非常复杂且变化快速，那么使用现有的工具是来定位这类问题是很具有挑战性的。当你花掉数周时间把根因找到时，代码已经又变更了好几轮，新的性能问题又冒了出来。

幸亏有了[CPU火焰图](http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html)（flame graphs），CPU使用率的问题一般都比较好定位。但要处理性能回退问题，就要在修改前后的火焰图之间，不断切换对比，来找出问题所在，这感觉就是像在太阳系中搜寻冥王星。虽然，这种方法可以解决问题，但我觉得应该会有更好的办法。

所以，下面就隆重介绍**红/蓝差分火焰图（red/blue differential flame graphs）**：

上面是一副交互式SVG格式图片（[链接](http://www.brendangregg.com/blog/images/2014/zfs-flamegraph-diff.svg)）。图中使用了两种颜色来表示状态，**红色表示增长**，**蓝色表示衰减**。

这张火焰图中各火焰的形状和大小都是和第二次抓取的profile文件对应的CPU火焰图是相同的。（其中，y轴表示栈的深度，x轴表示样本的总数，栈帧的宽度表示了profile文件中该函数出现的比例，最顶层表示正在运行的函数，再往下就是调用它的栈）

在下面这个案例展示了，在系统升级后，一个工作载荷的CPU使用率上升了。 下面是对应的CPU火焰图（[SVG格式](http://www.brendangregg.com/blog/images/2014/zfs-flamegraph-after.svg)）

通常，在标准的火焰图中栈帧和栈塔的颜色是随机选择的。 而在红/蓝差分火焰图中，使用不同的颜色来表示两个profile文件中的差异部分。

在第二个profile中deflate\_slow()函数以及它后续调用的函数运行的次数要比前一次更多，所以在上图中这个栈帧被标为了红色。可以看出问题的原因是ZFS的压缩功能被启用了，而在系统升级前这项功能是关闭的。

这个例子过于简单，我甚至可以不用差分火焰图也能分析出来。但想象一下，如果是在分析一个微小的性能下降，比如说小于5%，而且代码也更加复杂的时候，问题就为那么好处理了。

### 红/蓝差分火焰图

这个事情我已经讨论了好几年了，最终我自己编写了一个我个人认为有价值的实现。它的工作原理是这样的：

1. 抓取修改前的堆栈profile1文件
2. 抓取修改后的堆栈profile2文件
3. 使用profile2来生成火焰图。（这样栈帧的宽度就是以profile2文件为基准的）
4. 使用“2 - 1”的差异来对火焰图重新上色。上色的原则是，如果栈帧在profile2中出现出现的次数更多，则标为红色，否则标为蓝色。色彩是根据修改前后的差异来填充的。

这样做的目的是，同时使用了修改前后的profile文件进行对比，在进行功能验证测试或者评估代码修改对性能的影响时，会非常有用。新的火焰图是基于修改后的profile文件生成（所以栈帧的宽度仍然显示了当前的CPU消耗），通过颜色的对比，就可以了解到系统性能差异的原因。

只有对性能产生直接影响的函数才会标注颜色（比如说，正在运行的函数），它所调用的子函数不会重复标注。

### 生成红/蓝差分火焰图

我已经把一个简单的代码实现推送到github上（见[火焰图](https://github.com/brendangregg/FlameGraph)），其中新增了一个程序脚本，difffolded.pl。为了展示工具是如何工作的，用Linux [perf\_events](http://www.brendangregg.com/perf.html) 来演示一下操作步骤。（你也可以使用其他profiler）

#### 抓取修改前的profile 1文件:

```
# perf record -F 99 -a -g -- sleep 30
# perf script > out.stacks1

```

#### 一段时间后 (或者程序代码修改后), 抓取profile 2文件:

```
# perf record -F 99 -a -g -- sleep 30
# perf script > out.stacks2

```

#### 现在将 profile 文件进行折叠（fold）, 再生成差分火焰图:

```
$ git clone --depth 1 http://github.com/brendangregg/FlameGraph
$ cd FlameGraph
$ ./stackcollapse-perf.pl ../out.stacks1 > out.folded1
$ ./stackcollapse-perf.pl ../out.stacks2 > out.folded2
$ ./difffolded.pl out.folded1 out.folded2 | ./flamegraph.pl > diff2.svg

```

difffolded.p只能对“折叠”过的堆栈profile文件进行操作，折叠操作是由前面的stackcollapse系列脚本完成的。（见链接[火焰图](https://github.com/brendangregg/FlameGraph)）。 脚本共输出3列数据，其中一列代表折叠的调用栈，另两列为修改前后profile文件的统计数据。

```
func_a;func_b;func_c 31 33
[...]

```

在上面的例子中"func*a()->func*b()->func\_c()" 代表调用栈，这个调用栈在profile1文件中共出现了31次，在profile2文件中共出现了33次。然后，使用flamegraph.pl脚本处理这3列数据，会自动生成一张红/蓝差分火焰图。

### 其他选项

再介绍一些有用的选项：

**difffolded.pl -n**：这个选项会把两个profile文件中的数据规范化，使其能相互匹配上。如果你不这样做，抓取到所有栈的统计值肯定会不相同，因为抓取的时间和CPU负载都不同。这样的话，看上去要么就是一片红（负载增加），要么就是一片蓝（负载下降）。-n选项对第一个profile文件进行了平衡，这样你就可以得到完整红/蓝图谱。

**difffolded.pl -x**: 这个选项会把16进制的地址删掉。 profiler时常会无法将地址转换为符号，这样的话栈里就会有16进制地址。如果这个地址在两个profile文件中不同，这两个栈就会认为是不同的栈，而实际上它们是相同的。遇到这样的问题就用-x选项搞定。

**flamegraph.pl --negate**: 用于颠倒红/蓝配色。 在下面的章节中，会用到这个功能。

### 不足之处

虽然我的红/蓝差分火焰图很有用，但实际上还是有一个问题：如果一个代码执行路径完全消失了，那么在火焰图中就找不到地方来标注蓝色。你只能看到当前的CPU使用情况，而不知道为什么会变成这样。

一个办法是，将对比顺序颠倒，画一个相反的差分火焰图。例如：

上面的火焰图是以修改前的profile文件为基准，颜色表达了将要发生的情况。右边使用蓝色高亮显示的部分，从中可以看出修改后CPU Idle消耗的CPU时间会变少。（其实，我通常会把cpu*idle给过滤掉，使用命令行grep -v cpu*idle）

图中把消失的代码也突显了出来（或者应该是说，没有突显），因为修改前并没有使能压缩功能，所以它没有出现在修改前的profile文件了，也就没有了被表为红色的部分。

下面是对应的命令行：

```
$ ./difffolded.pl out.folded2 out.folded1 | ./flamegraph.pl --negate > diff1.svg

```

这样，把前面生成diff2.svg一并使用，我们就能得到：

* **diff1.svg**: 宽度是以修改前profile文件为基准，颜色表明将要发生的情况
* **diff2.svg**: 宽度是以修改后profile文件为基准，颜色表明已经发生的情况

如果是在做功能验证测试，我会同时生成这两张图。

### CPI 火焰图

这些脚本开始是被使用在[CPI火焰图](http://www.brendangregg.com/blog/2014-10-31/cpi-flame-graphs.html)的分析上。与比较修改前后的profile文件不同，在分析CPI火焰图时，可以分析CPU工作周期与停顿周期的差异变化，这样可以凸显出CPU的工作状态来。

### 其他的差分火焰图

[](http://www.slideshare.net/brendangregg/blazing-performance-with-flame-graphs/167)

也有其他人做过类似的工作。[Robert Mustacchi](http://dtrace.org/blogs/rm)在不久前也做了一些尝试，他使用的方法类似于代码检视时的标色风格：只显示了差异的部分，红色表示新增（上升）的代码路径，蓝色表示删除（下降）的代码路径。一个关键的差别是栈帧的宽度只体现了差异的样本数。右边是一个例子。这个是个很好的主意，但在实际使用中会感觉有点奇怪，因为缺失了完整profile文件的上下文作为背景，这张图显得有些难以理解。

[](https://github.com/corpaul/flamegraphdiff)

Cor-Paul Bezemer也制作了一种差分显示方法[flamegraphdiff](http://corpaul.github.io/flamegraphdiff/)，他同时将3张火焰图放在同一张图中，修改前后的标准火焰图各一张，下面再补充了一张差分火焰图，但栈帧宽度也是差异的样本数。 上图是一个[例子](http://corpaul.github.io/flamegraphdiff/demos/dispersy/dispersy_diff.html)。在差分图中将鼠标移到栈帧上，3张图中同一栈帧都会被高亮显示。这种方法中补充了两张标准的火焰图，因此解决了上下文的问题。

我们3人的差分火焰图，都各有所长。三者可以结合起来使用：Cor-Paul方法中上方的两张图，可以用我的diff1.svg 和 diff2.svg。下方的火焰图可以用Robert的方式。为保持一致性，下方的火焰图可以用我的着色方式：蓝->白->红。

火焰图正在广泛传播中，现在很多公司都在使用它。如果大家知道有其他的实现差分火焰图的方式，我也不会感到惊讶。（请在评论中告诉我）

### 结论

如果你遇到了性能回退问题，红/蓝差分火焰图是找到根因的最快方式。这种方式抓取了两张普通的火焰图，然后进行对比，并对差异部分进行标色：红色表示上升，蓝色表示下降。 差分火焰图是以当前（“修改后”）的profile文件作为基准，形状和大小都保持不变。因此你通过色彩的差异就能够很直观的找到差异部分，且可以看出为什么会有这样的差异。

差分火焰图可以应用到项目的每日构建中，这样性能回退的问题就可以及时地被发现和修正。

---

via: <http://www.brendangregg.com/blog/2014-11-09/differential-flame-graphs.html>

作者：[Brendan Gregg](http://www.linux.com/community/forums/person/60160) 译者：[coloka](https://github.com/coloka) 校对：[wxy](https://github.com/wxy)

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


用Grub启动ISO镜像

这个可以有

[太开心][太开心]

@我的印象笔记

好生硬的翻译“你的家目录”[挖鼻屎]

回复@反派大联盟:这有什么问题么。经常有叫做主目录，家目录的啊。

@有道云笔记收藏

回复@Linux中国:好吧，家目录。[嘻嘻]

MARK

Grub启动ISO 是坑 大一点的镜像半天加载不了 最后花屏卡死 <br />
当初想做个不用解压ISO 做个多系统安装U盘 试过Grub4dos，Grub，还有其他一大堆软件，没一个能完美运行的

码

Grub启动ISO镜像

回复@反派大联盟:嗯，其实我开始看这种叫法也特别不适应。。。后来想想，其实人家也没错。[嘻嘻]

谢谢分享经验！

收藏

好

# 用Grub启动ISO镜像

如果你想要使用多个Linux发行版，你没有那么多的选择。你要么安装到你的物理机或虚拟机中，要么以live模式从ISO文件启动。第二个选择，对硬盘空间需求较小，只是有点麻烦，因为你需要将ISO文件写入到U盘或CD/DVD中来启动。不过，这里还有另外一个可选的折中方案：把ISO镜像放在硬盘中，然后以live模式来启动。该方案比完全安装更省空间，而且功能也完备，这对于缓慢的虚拟机而言是个不错的替代方案。下面我将介绍怎样使用流行的Grub启动加载器来实现该方案。

很明显，你将需要使用到Grub，这是几乎所有现代Linux发行版都使用的。你也需要你所想用的Linux版本的ISO文件，将它下载到本地磁盘。最后，你需要知道启动分区在哪里，并怎样在Grub中描述。对于此，请使用以下命令：

```
# fdisk -l

```

带有‘\*’的就是启动分区。对于我，就是/dev/sda1，用Grub语言描述就是（hd0,1)。

作为参考，sda2就是(hd0,2)，sdb1就是(hd1,1)，以此类推。（你明白了吧。）

### 我们需要编辑什么？

首先，打开/etc/default/grub并检查以下行：

```
#GRUB_HIDDEN_TIMEOUT=0

```

需要在此行前添加‘#’进行注释。

保存，然后打开/etc/grub.d/40\_custom。

在该文件中，你将添加启动到ISO的参数。结构如下：

```
menuentry "[Entry's title in the grub screen]" {
set isofile="[path to ISO file]"
loopback loop [boot partition in Grub language]$isofile
[some specific] arguments
}

```

例如，如果你想要从ISO文件启动Ubuntu，那么你就是想要添加如下行到40\_custom文件：

```
menuentry "Ubuntu 14.04 (LTS) Live Desktop amd64" {
set isofile="/boot/ubuntu-14.04-desktop-amd64.iso"
loopback loop (hd0,1)$isofile
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=${isofile} quiet splash
initrd (loop)/casper/initrd.lz
}

```

如果你想要启动Gparted：

```
menuentry "GParted Live amd64" {
set isofile="/boot/gparted-live-0.18.0-2-amd64.iso"
loopback loop (hd0,1)$isofile
loopback loop $isofile
linux (loop)/live/vmlinuz boot=live config union=aufs noswap noprompt ip=frommedia toram=filesystem.squashfs findiso=${isofile}
initrd (loop)/live/initrd.img
}

```

或者甚至是Fedora：

```
menuentry "Fedora 20 Live Desktop x86_64" {
set isofile="/boot/Fedora-Live-Desktop-x86_64-20-1.iso"
loopback loop (hd0,1)$isofile
loopback loop $isofile
linux (loop)/isolinux/vmlinuz0 root=live:CDLABEL=Fedora-Live-Desktop-x86_64-20-1 rootfstype=auto ro rd.live.image quiet rhgb rd.luks=0 rd.md=0 rd.dm=0 iso-scan/filename=${isofile}
initrd (loop)/isolinux/initrd0.img
}

```

注意，参数可根据发行版进行修改。幸运的是，有许多地方你可以查阅到。我喜欢这个发行版，但是还有很多其它的发行版你可以启动。同时，请注意你放置ISO文件的地方。如果你的家目录被加密或者无法被访问到，你可能更喜欢将这些文件放到像例子中的启动分区。但是，请首先确保启动分区有足够的空间。

最后，不要忘了保存40\_custom文件并使用以下命令来更新grub：

```
# sudo update-grub

```

以便在下次启动时看到修改。

### 接下来做什么？

想要更多东西？好吧，那就修改下参数来玩玩。你可以启动一个ISO文件，并让它持续做一些事情。例如，如果你是个彻头彻尾的妄想症患者，想要有个可以快速清除硬盘的选项，那么可以使用[DBAN](http://www.dban.org/)来进行一些设置。现在，真的要当心啊，因为此设置会清除你的硬盘，而且在启动时也没有恢复选项：

```
menuentry "Darik's Boot and Nuke" {
set isofile="/boot/dban.iso"
loopback loop (hd0,1)$isofile
linux (loop)/dban.bzi nuke="dwipe" silent
}

```

另外一个选择

```
menuentry "Darik's Boot and Nuke" {
set isofile="/boot/dban.iso"
loopback loop (hd0,1)$isofile
linux (loop)/dban.bzi
}

```

可以显示DBAN选项，让你选择清除驱动器。**当心，因为它仍然十分危险**。

小结一下，对于ISO文件和Grub有很多事情可做：从快速live会话到一键毁灭，都可以满足你。之后，你也可以试试启动一些针对隐私方面的发行版，如[Tails](https://tails.boum.org/)。

你认为从Grub启动一个ISO这个主意怎样？这是不是你想要做的呢？为什么呢？请在下面留言。

---

via: <http://xmodulo.com/boot-iso-image-from-grub.html>

作者：[Adrien Brochard](http://xmodulo.com/author/adrien) 译者：[GOLinux](https://github.com/GOLinux) 校对：[wxy](https://github.com/wxy)

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


Linux有问必答：Linux 中如何安装 7zip

Summary: 问题: 我需要要从 ISO 映像中获取某些文件，为此我想要使用 7zip 程序。那么我应该如何安装 7zip 软件呢，?  7zip 是一款开源的归档应用程序，开始是为 Windows 系统而开发的。它能对多种格式的档案文件进行打包或解包处理，除了支持其原生的 7z 格式的文档外，还支持包括 XZ、GZIP、TAR、ZIP 和 BZIP2 等这些格式。 通常，7zip 也用来解压 RAR、DEB、RPM 和 ISO 等格式的文件。除了简单的归档功能，7zip 还具有支持 AES-256 算法加密以及自解压和建立多卷存档功能。在支持 POSIX 标准的系统上（Linux、Unix、BSD），原生的 7zip 程序被移

ubuntu上默认的图形解压工具实在弱爆，解压出来就是各种ºìÄ´ó½ ÓÏ·´ë

如果7zFM能有成熟的移植到ubuntu的版本就好了

作为基本在图形界面处理的小白，尝试编译7zFM源码结果先天缺失windows.h还是哪个文件

@我的印象笔记

# Linux有问必答：Linux 中如何安装 7zip

>
> **问题**: 我需要要从 ISO 映像中获取某些文件，为此我想要使用 7zip 程序。那么我应该如何安装 7zip 软件呢，[在 Linux 发布版本上完全安装]?
>
>
>

7zip 是一款开源的归档应用程序，开始是为 Windows 系统而开发的。它能对多种格式的档案文件进行打包或解包处理，除了支持其原生的 7z 格式的文档外，还支持包括 XZ、GZIP、TAR、ZIP 和 BZIP2 等这些格式。 通常，7zip 也用来解压 RAR、DEB、RPM 和 ISO 等格式的文件。除了简单的归档功能，7zip 还具有支持 AES-256 算法加密以及自解压和建立多卷存档功能。在支持 POSIX 标准的系统上（Linux、Unix、BSD），原生的 7zip 程序被移植过来并被命名为 p7zip（“POSIX 7zip” 的简称）。

下面介绍如何在 Linux 中安装 7zip （或 p7zip）。

### 在 Debian、Ubuntu 或 Linux Mint 系统中安装 7zip

在基于的 Debian 的发布系统中存在有三种 7zip 的软件包。

* **p7zip**: 包含 7zr（最小的 7zip 归档工具），仅仅只能处理原生的 7z 格式。
* **p7zip-full**: 包含 7z ，支持 7z、LZMA2、XZ、ZIP、CAB、GZIP、BZIP2、ARJ、TAR、CPIO、RPM、ISO 和 DEB 格式。
* **p7zip-rar**: 包含一个能解压 RAR 文件的插件。

建议安装 p7zip-full 包（不是 p7zip），因为这是最完全的 7zip 程序包，它支持很多归档格式。此外，如果您想处理 RAR 文件话，还需要安装 p7zip-rar 包，做成一个独立的插件包的原因是因为 RAR 是一种专有格式。

```
$ sudo apt-get install p7zip-full p7zip-rar

```

### 在 Fedora 或 CentOS/RHEL 系统中安装 7zip

基于红帽的发布系统上提供了两个 7zip 的软件包。

* **p7zip**: 包含 7za 命令，支持 7z、ZIP、GZIP、CAB、ARJ、BZIP2、TAR、CPIO、RPM 和 DEB 格式。
* **p7zip-plugins**: 包含 7z 命令，额外的插件，它扩展了 7za 命令（例如支持 ISO 格式的抽取）。

在 CentOS/RHEL 系统中，在运行下面命令前您需要确保 [EPEL 资源库](http://linux.cn/article-2324-1.html) 可用，但在 Fedora 系统中就不需要额外的资源库了。

```
$ sudo yum install p7zip p7zip-plugins

```

注意，跟基于 Debian 的发布系统不同的是，基于红帽的发布系统没有提供 RAR 插件，所以您不能使用 7z 命令来抽取解压 RAR 文件。

### 使用 7z 创建或提取归档文件

一旦安装好 7zip 软件后，就可以使用 7z 命令来打包解包各式各样的归档文件了。7z 命令会使用不同的插件来辅助处理对应格式的归档文件。

使用 “a” 选项就可以创建一个归档文件，它可以创建 7z、XZ、GZIP、TAR、 ZIP 和 BZIP2 这几种格式的文件。如果指定的归档文件已经存在的话，它会把文件“附加”到存在的归档中，而不是覆盖原有归档文件。

```
$ 7z a <archive-filename> <list-of-files>

```

使用 “e” 选项可以抽取一个归档文件，抽取出的文件会放在当前目录。抽取支持的格式比创建时支持的格式要多的多，包括 7z、XZ、GZIP、TAR、ZIP、BZIP2、LZMA2、CAB、ARJ、CPIO、RPM、ISO 和 DEB 这些格式。

```
$ 7z e <archive-filename>

```

解包的另外一种方式是使用 “x” 选项。和 “e” 选项不同的是，它使用的是全路径来抽取归档的内容。

```
$ 7z x <archive-filename>

```

要查看归档的文件列表，使用 “l” 选项。

```
$ 7z l <archive-filename>

```

要更新或删除归档文件，分别使用 “u” 和 “d” 选项。

```
$ 7z u <archive-filename> <list-of-files-to-update>
$ 7z d <archive-filename> <list-of-files-to-delete>

```

要测试归档的完整性，使用：

```
$ 7z t <archive-filename>

```

---

via:<http://ask.xmodulo.com/install-7zip-linux.html>

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

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


如何在Ubuntu / CentOS 6.x上安装Bugzilla 4.4

Summary: 这里，我们将展示如何在一台Ubuntu 14.04或CentOS 6.5/7上安装Bugzilla。Bugzilla是一款基于web，用来记录跟踪缺陷数据库的bug跟踪软件，它同时是一款免费及开源软件(FOSS)，它的bug跟踪系统允许个人和开发团体有效地记录下他们产品的一些突出问题。尽管是"免费"的，Bugzilla依然有很多其它同类产品所没有的珍贵特性。因此，Bugzilla很快就变成了全球范围内数以千计的组织最喜欢的bug管理工具。 Bugzilla对于不同使用场景的适应能力非常强。如今它们应用在各个不同的IT领域，如系统管理中的部署管理、芯片设计及部署的问题跟踪(制造前期和

have fun

@我的印象笔记

# 如何在Ubuntu / CentOS 6.x上安装Bugzilla 4.4

这里，我们将展示如何在一台Ubuntu 14.04或CentOS 6.5/7上安装Bugzilla。Bugzilla是一款基于web，用来记录跟踪缺陷数据库的bug跟踪软件，它同时是一款免费及开源软件(FOSS)，它的bug跟踪系统允许个人和开发团体有效地记录下他们产品的一些突出问题。尽管是"免费"的，Bugzilla依然有很多其它同类产品所没有的“珍贵”特性。因此，Bugzilla很快就变成了全球范围内数以千计的组织最喜欢的bug管理工具。

Bugzilla对于不同使用场景的适应能力非常强。如今它们应用在各个不同的IT领域，如系统管理中的部署管理、芯片设计及部署的问题跟踪(制造前期和后期)，还有为那些诸如Redhat，NASA，Linux-Mandrake和VA Systems这些著名公司提供软硬件bug跟踪。

### 1. 安装依赖程序

安装Bugzilla相当**简单**。这篇文章特别针对Ubuntu 14.04和CentOS 6.5两个版本(不过也适用于更老的版本)。

为了获取并能在Ubuntu或CentOS系统中运行Bugzilla，我们要安装Apache网络服务器(启用SSL)，MySQL数据库服务器和一些需要来安装并配置Bugzilla的工具。

要在你的服务器上安装使用Bugzilla，你需要安装好以下程序：

* Perl(5.8.1 或以上)
* MySQL
* Apache2
* Bugzilla
* Perl模块
* 使用apache的Bugzilla

正如我们所提到的本文会阐述Ubuntu 14.04和CentOS 6.5/7两种发行版的安装过程，为此我们会分成两部分来表示。

以下就是在你的Ubuntu 14.04 LTS和CentOS 7机器安装Bugzilla的步骤：

**准备所需的依赖包：**

你需要运行以下命令来安装些必要的包：

**Ubuntu版本:**

```
$ sudo apt-get install apache2 mysql-server libapache2-mod-perl2 libapache2-mod-perl2-dev libapache2-mod-perl2-doc perl postfix make gcc g++

```

**CentOS版本:**

```
$ sudo yum install httpd mod_ssl mysql-server mysql php-mysql gcc perl* mod_perl-devel

```

**注意：请在shell或者终端下运行所有的命令并且确保你用root用户（sudo）操作机器。**

### 2. 启动Apache服务

你已经按照以上步骤安装好了apache服务，那么我们现在需要配置apache服务并运行它。我们需要用sodo或root来敲命令去完成它，我们先切换到root连接。

```
$ sudo -s

```

我们需要在防火墙中打开80端口并保存改动。

```
# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
# service iptables save

```

现在，我们需要启动服务:

CentOS版本:

```
# service httpd start

```

我们来确保Apache会在每次你重启机器的时候一并启动起来：

```
# /sbin/chkconfig httpd on

```

Ubuntu版本:

```
# service apache2 start

```

现在，由于我们已经启动了我们apache的http服务，我们就能在默认的127.0.0.1地址下打开apache服务了。

### 3. 配置MySQL服务器

现在我们需要启动我们的MySQL服务：

CentOS版本:

```
# chkconfig mysqld on
# service start mysqld

```

Ubuntu版本:

```
# service mysql-server start

```

用root用户登录连接MySQL并给Bugzilla创建一个数据库，把你的mysql密码更改成你想要的，稍后配置Bugzilla的时候会用到它。

CentOS 6.5和Ubuntu 14.04 Trusty两个版本：

```
# mysql -u root -p

# password: (You'll need to enter your password)

# mysql > create database bugs;

# mysql > grant all on bugs.* to root@localhost identified by "mypassword";

#mysql > quit

```

**注意：请记住数据库名和mysql的密码，我们稍后会用到它们。**

### 4. 安装并配置Bugzilla

现在，我们所有需要的包已经设置完毕并运行起来了，我们就要配置我们的Bugzilla。

那么，首先我们要下载最新版的Bugzilla包，这里我下载的是4.5.2版本。

使用wget工具在shell或终端上下载：

```
wget http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-4.5.2.tar.gz

```

你也可以从官方网站进行下载。<http://www.bugzilla.org/download/>

**从下载下来的bugzilla压缩包中提取文件并重命名：**

```
# tar zxvf bugzilla-4.5.2.tar.gz -C /var/www/html/

# cd /var/www/html/

# mv -v bugzilla-4.5.2 bugzilla

```

**注意**：这里,**/var/www/html/bugzilla/**就是**Bugzilla主目录**.

现在，我们来配置buzilla：

```
# cd /var/www/html/bugzilla/

```

./checksetup.pl --check-modules
===============================

检查完成之后，我们会发现缺少了一些组件，我们需要安装它们，用以下命令即可实现：

```
# cd /var/www/html/bugzilla
# perl install-module.pl --all

```

这一步会花掉一点时间去下载安装所有依赖程序，然后再次运行**checksetup.pl --check-modules**命令来验证有没有漏装什么。

现在我们需要运行以下这条命令，它会在/var/www/html/bugzilla路径下自动生成一个名为localconfig的文件。

```
# ./checksetup.pl

```

确认一下你刚才在localconfig文件中所输入的数据库名、用户和密码是否正确。

```
# nano ./localconfig

# checksetup.pl

```

如果一切正常，checksetup.pl现在应该就成功地配置Bugzilla了。

现在我们需要添加Bugzilla至我们的Apache配置文件中。那么，我们需要用文本编辑器打开 /etc/httpd/conf/httpd.conf 文件(CentOS版本)或者 /etc/apache2/apache2.conf 文件(Ubuntu版本)：

CentOS版本:

```
# nano /etc/httpd/conf/httpd.conf

```

Ubuntu版本:

```
# nano etc/apache2/apache2.conf

```

现在，我们需要配置Apache服务器，我们要把以下配置添加到配置文件里：

```
<VirtualHost *:80>
     DocumentRoot /var/www/html/bugzilla/
</VirtualHost>

<Directory /var/www/html/bugzilla>
     AddHandler cgi-script .cgi
     Options +Indexes +ExecCGI
     DirectoryIndex index.cgi
     AllowOverride Limit FileInfo Indexes
</Directory>

```

接着，我们需要编辑 .htaccess 文件并用“#”注释掉顶部“Options -Indexes”这一行。

让我们重启我们的apache服务并测试下我们的安装情况。

CentOS版本:

```
# service httpd restart

```

Ubuntu版本:

```
# service apache2 restart

```

这样，我们的Bugzilla就准备好在我们的Ubuntu 14.04 LTS和CentOS 6.5上获取bug报告了，你就可以通过本地回环地址或你网页浏览器上的IP地址来浏览bugzilla了。

---

via: <http://linoxide.com/tools/install-bugzilla-ubuntu-centos/>

作者：[Arun Pyasi](http://linoxide.com/author/arunp/) 译者：[ZTinoZ](https://github.com/ZTinoZ) 校对：[wxy](https://github.com/wxy)

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


systemd-nspawn 快速指南

Summary: 我目前已从 chroot（译者注：chroot可以构建类似沙盒的环境，建议各位同学先了解chroot） 迁移到 systemd-nspawn，同时我写了一篇快速指南。简单的说，我强烈建议正在使用 systemd 的用户从 chroot 转为 systemd-nspawn，因为只要你的内核配置正确的话，它几乎没有什么缺点。 想必在各大发行版中的用户对 chroot 都不陌生，而且我猜想 Gentoo 用户要时不时的使用它。  chroot 面临的挑战 大多数交互环境下，仅运行chroot还不够。通常还要挂载 /proc， /sys，另外为了确保不会出现类似丢失 ptys之类的错误，我们还得 bind（译者注：bind 是

Repost

Repost

Repost

Repost

# systemd-nspawn 快速指南

我目前已从 chroot（译者注：chroot可以构建类似沙盒的环境，建议各位同学先了解chroot） 迁移到 systemd-nspawn，同时我写了一篇快速指南。简单的说，我强烈建议正在使用 systemd 的用户从 chroot 转为 systemd-nspawn，因为只要你的内核配置正确的话，它几乎没有什么缺点。

想必在各大发行版中的用户对 chroot 都不陌生，而且我猜想 Gentoo 用户要时不时的使用它。

<img src="content_image/album_201501_16_092003t2uj2ofoct2mg1e0.jpg" alt="" title="">

### chroot 面临的挑战

大多数交互环境下，仅运行chroot还不够。通常还要挂载 /proc， /sys，另外为了确保不会出现类似“丢失 ptys”之类的错误，我们还得 bind（译者注：bind 是 mount 的一个选项） 挂载 /dev。如果你使用 tmpfs，你可能想要以 tmpfs 类型挂载新的 tmp、 var/tmp。接下来你可能还想将其他的挂载点 bind 到 chroot 中。这些都不是特别难，但是一般情况下要写一个脚本来管理它。

现在我按照日常计划执行备份操作，当然有一些不必备份的数据如 tmp 目录，或任何 bind 挂载的内容。当我配置了一个新的 chroot 后就意味着我要更新我的备份配置了，但我经常忘记这点，因为大多数时间里 chroot 挂载点并没有运行。当这些挂载点仍然存在的情况下执行备份的话，那么备份中会多出很多不需要的内容。

当 bind 挂载点包含其他挂载点时（比如挂载时使用 -rbind 选项），这种情况下 systemd 的默认处理方式略有不同。在 bind 挂载中卸载一些东西时，systemd 会将处于 bind 另一边的目录也卸载掉。想像一下，如果我卸载了 chroot 中以 bind 挂载 /dev 的某个目录后，发现主机上的 /dev/pts 与 /dev/shm 也不见了，我肯定会很吃惊。不过好像有其他方法可以避免，但是这不是我们此次讨论的重点。

### Systemd-nspawn 优点

Systemd-nspawn 用于启动一个容器，并且它的最简模式就可以像 chroot 那样运行。默认情况下，它自动配置容器所需的开销如 /dev, /tmp 等等。通过配合一些选项它也可配置其他的 bind 挂载点。当容器退出后，所有的挂载点都会被清除。

容器运行时，从外部看上去没什么变化。事实上，可以从同一个 chroot 产生5个不同的 systemd-nspawn 容器实例，并且除了文件系统（不包括 /dev, /tmp等，只有 /usr,/etc 的改变会传递）外它们之间没有任何联系。你的备份将会忽略 bind 挂载点、tmpfs 及任何挂载在容器中的内容。

它同时具有其它优秀容器的优点，比如 containment - 可以杀死容器内的所有活动但不影响外部，等等。它的安全性并不是无懈可击的-它的作用仅仅是防止意外的错误。

如果你使用的是兼容的 sysvinit（它包含了 systemd，openrc），你可以启动容器。这意味着，你可以在容器中使用 fstab 添加挂载点，运行守护进程等。只需要一个 chroot 的开销，几乎就可以获得虚拟化的所有好处（不需要构建内核等）。在一个看起来像 chroot 的容器中运行systemctl poweroff 看起来很奇怪，但这条命令能够起作用。

注意，如果不做额外配置的话那么容器就会共享主机的网络，所以主机上的容器不要运行 sshd。运行一个分离的网络 namespace 不是太难，为了新的实例可以使用DHCP，分离之后记得绑定接口。

### 操作步骤

让它工作起来是此次讨论中最简短的部分了。

首先系统内核要支持 namespaces 与 devpts：

```
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_USER_NS=y
CONFIG_PID_NS=y
CONFIG_NET_NS=y
CONFIG_DEVPTS_MULTIPLE_INSTANCES=y

```

像 chroot 那样启动 namespace 是非常简单的：

```
systemd-nspawn -D .

```

也可以像 chroot 那样退出。在内部可以运行 mount 并且可以看到默认它已将 /dev 与 /tmp 准备好了。 ”.“就是 chroot 的路径，也就是当前路径。在它内部运行的是 bash。

如果要添加一些 bind 挂载点也非常简便：

```
systemd-nspawn -D . --bind /usr/portage

```

现在，容器中的 /usr/portage 就与主机的对应目录绑定起来了，我们无需 sync /etc。如果想要绑定到指定的路径，只要在原路径后添加 ”:dest“，相当于 chroot 的 root（--bind foo 与 --bind foo:foo是一样的）。

如果容器具有 init 功能并且可以在内部运行，可以通过添加 -b 选项启动它：

```
systemd-nspawn -D . --bind /usr/portage -b

```

可以观察到 init 的运作。关闭容器会自动退出。

如果容器内运行了 systemd ，你可以使用 -h 选项将它的日志重定向到主机的systemd日志：

```
systemd-nspawn -D . --bind /usr/portage -j -b

```

使用 nspawn 注册容器以便它能够在 machinectl 中显示。如此可以方便的在主机上对它进行操作，如启动新的 getty， ssh 连接，关机等。

如果你正在使用 systemd 那么甩开 chroot 拥抱 nspawn 吧。

---

via: <http://rich0gentoo.wordpress.com/2014/07/14/quick-systemd-nspawn-guide/>

作者：[rich0](http://rich0gentoo.wordpress.com/) 译者：[SPccman](https://github.com/SPccman) 校对：[wxy](https://github.com/wxy)

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


硬盘监控和分析工具：Smartctl

Summary: Smartctl（S.M.A.R.T 自监控，分析和报告技术）是类Unix系统下实施SMART任务命令行套件或工具，它用于打印SMART自检和错误日志，启用并禁用SMRAT自动检测，以及初始化设备自检。 Smartctl对于Linux物理服务器十分有用，在这些服务器上，可以对智能磁盘进行错误检查，并将与硬件RAID相关的磁盘信息摘录下来。 在本帖中，我们将讨论smartctl命令的一些实用样例。如果你的Linux上海没有安装smartctl，请按以下步骤来安装。  安装 Smartctl 对于 Ubuntu $ sudo apt-get install smartmontools  对于 CentOS  RHEL # yum install smartmontools

主页桑，有木有SSD硬盘上安装Linux Mint的注意事项或优化的文章

@我的印象笔记

M

@我的印象笔记

@我的印象笔记

回复@介子K:目前没有。等我找找看。

马克

@我的印象笔记

# 硬盘监控和分析工具：Smartctl

**Smartctl**（S.M.A.R.T 自监控，分析和报告技术）是类Unix系统下实施SMART任务命令行套件或工具，它用于打印SMART**自检**和**错误日志**，启用并禁用SMRAT**自动检测**，以及初始化设备自检。

Smartctl对于Linux物理服务器十分有用，在这些服务器上，可以对智能磁盘进行错误检查，并将与**硬件RAID**相关的磁盘信息摘录下来。

在本帖中，我们将讨论smartctl命令的一些实用样例。如果你的Linux上海没有安装smartctl，请按以下步骤来安装。

<img src="content_image/album_201501_16_162204x9qqklzo66kl8j88.png" alt="" title="">

### 安装 Smartctl

**对于 Ubuntu**

```
$ sudo apt-get install smartmontools

```

**对于 CentOS & RHEL**

```
# yum install smartmontools

```

### 启动Smartctl服务

**对于 Ubuntu**

```
$ sudo /etc/init.d/smartmontools start

```

**对于 CentOS & RHEL**

```
# service smartd start ; chkconfig smartd on

```

### 样例

#### 样例：1 检查磁盘的 Smart 功能是否启用

```
root@linuxtechi:~# smartctl -i /dev/sdb
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-32-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Momentus 5400.6
Device Model:     ST9320325AS
Serial Number:    5VD2V59T
LU WWN Device Id: 5 000c50 020a37ec4
Firmware Version: 0002BSM1
User Capacity:    320,072,933,376 bytes [320 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    5400 rpm
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS T13/1699-D revision 4
SATA Version is:  SATA 2.6, 1.5 Gb/s
Local Time is:    Sun Nov 16 12:32:09 2014 IST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

```

这里‘/dev/sdb’是你的硬盘。上面输出中的最后两行显示了SMART功能已启用。

#### 样例：2 启用磁盘的 Smart 功能

```
root@linuxtechi:~# smartctl -s on /dev/sdb
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-32-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.

```

#### 样例：3 禁用磁盘的 Smart 功能

```
root@linuxtechi:~# smartctl -s off  /dev/sdb
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-32-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Disabled. Use option -s with argument 'on' to enable it.

```

#### 样例：4 显示磁盘的详细 Smart 信息

```
root@linuxtechi:~# smartctl -a /dev/sdb              // For IDE drive
root@linuxtechi:~# smartctl -a -d ata /dev/sdb       // For SATA drive

```

#### 样例：5 显示磁盘总体健康状况

```
root@linuxtechi:~# smartctl -H  /dev/sdb
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-32-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
Warning: This result is based on an Attribute check.
Please note the following marginal Attributes:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
190 Airflow_Temperature_Cel 0x0022   067   045   045    Old_age   Always   In_the_past 33 (Min/Max 25/33)

```

#### 样例：6 使用long和short选项测试硬盘

**Long测试**

```
root@linuxtechi:~# smartctl --test=long /dev/sdb
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-32-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Extended self-test routine immediately in off-line mode".
Drive command "Execute SMART Extended self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 102 minutes for test to complete.
Test will complete after Sun Nov 16 14:29:43 2014

Use smartctl -X to abort test.

```

或者，我们可以重定向测试输出到日志文件，就像下面这样

```
root@linuxtechi:~# smartctl --test=long /dev/sdb > /var/log/long.text

```

**Short测试**

```
root@linuxtechi:~# smartctl --test=short /dev/sdb
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-32-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 1 minutes for test to complete.
Test will complete after Sun Nov 16 12:51:45 2014

Use smartctl -X to abort test.

```

或

```
root@linuxtechi:~# smartctl --test=short /dev/sdb > /var/log/short.text

```

**注意**：short测试将花费最多2分钟，而在long测试中没有时间限制，因为它会读取并验证磁盘的每个段。

#### 样例：7 查看驱动器的自检结果

```
root@linuxtechi:~# smartctl -l selftest /dev/sdb
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-32-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed: read failure       90%       492         210841222
# 2  Extended offline    Completed: read failure       90%       492         210841222

```

#### 样例：8 计算测试时间估值

```
root@linuxtechi:~# smartctl -c  /dev/sdb
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-32-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
General SMART Values:
Offline data collection status:  (0x00)    Offline data collection activity
                    was never started.
                    Auto Offline Data Collection: Disabled.
Self-test execution status:      ( 121)    The previous self-test completed having
                    the read element of the test failed.
Total time to complete Offline
data collection:         (    0) seconds.
Offline data collection
capabilities:              (0x73) SMART execute Offline immediate.
                    Auto Offline data collection on/off support.
                    Suspend Offline collection upon new
                    command.
                    No Offline surface scan supported.
                    Self-test supported.
                    Conveyance Self-test supported.
                    Selective Self-test supported.
SMART capabilities:            (0x0003)    Saves SMART data before entering
                    power-saving mode.
                    Supports SMART auto save timer.
Error logging capability:        (0x01)    Error logging supported.
                    General Purpose Logging supported.
Short self-test routine
recommended polling time:      (   1) minutes.
Extended self-test routine
recommended polling time:      ( 102) minutes.
Conveyance self-test routine
recommended polling time:      (   2) minutes.
SCT capabilities:            (0x103b)    SCT Status supported.
                    SCT Error Recovery Control supported.
                    SCT Feature Control supported.
                    SCT Data Table supported.

```

#### 样例：9 显示磁盘错误日志

```
root@linuxtechi:~# smartctl -l error  /dev/sdb

Sample Output

smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-32-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART Error Log Version: 1
ATA Error Count: 5
    CR = Command Register [HEX]
    FR = Features Register [HEX]
    SC = Sector Count Register [HEX]
    SN = Sector Number Register [HEX]
    CL = Cylinder Low Register [HEX]
    CH = Cylinder High Register [HEX]
    DH = Device/Head Register [HEX]
    DC = Device Command Register [HEX]
    ER = Error register [HEX]
    ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 da 08 e7 e5 a5 4c 00      00:30:44.515  READ DMA EXT
  25 da 08 df e5 a5 4c 00      00:30:44.514  READ DMA EXT
  25 da 80 5f e5 a5 4c 00      00:30:44.502  READ DMA EXT
  25 da f0 5f e6 a5 4c 00      00:30:44.496  READ DMA EXT
  25 da 10 4f e6 a5 4c 00      00:30:44.383  READ DMA EXT

```

---

via: <http://www.linuxtechi.com/smartctl-monitoring-analysis-tool-hard-drive/>

作者：[Pradeep Kumar](http://www.linuxtechi.com/author/pradeep/) 译者：[GOLinux](https://github.com/GOLinux) 校对：[wxy](https://github.com/wxy)

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


怎样在 Ubuntu 14.10 Server 上安装 Cacti

Summary: Cacti 是一个完善的网络监控的图形化解决方案，它被设计用来发挥 RRDTool （一个 Linux 数据存储和绘图工具）的数据存储和绘图的强大功能。Cacti 提供一个快速的轮询器，高级的绘图模版，多种数据获取方法和用户管理功能，并且可以开箱即用。所有的这些都被打包进一个直观，易用的界面，可用于监控简单的 LAN 网络，乃至包含成百上千设备的复杂网络。  功能 绘图 没有数量限制的监控图条目（graph item），每个图形可以视情况使用 Cacti 中的 CDEFs （Calculation Define，可以对图形输出结果进行计算）或者数据源。 自动将 GPRINT 条目分

epel有，赞，一键安装[哈哈]

cati网络监控，监控什么网络，服务器网络还是接入网络，监控网络的什么指标，还是告警

# 怎样在 Ubuntu 14.10 Server 上安装 Cacti

Cacti 是一个完善的网络监控的图形化解决方案，它被设计用来发挥 RRDTool （一个 Linux 数据存储和绘图工具）的数据存储和绘图的强大功能。Cacti 提供一个快速的轮询器，高级的绘图模版，多种数据获取方法和用户管理功能，并且可以开箱即用。所有的这些都被打包进一个直观，易用的界面，可用于监控简单的 LAN 网络，乃至包含成百上千设备的复杂网络。

### 功能

#### 绘图

没有数量限制的监控图条目（graph item），每个图形可以视情况使用 Cacti 中的 CDEFs （Calculation Define，可以对图形输出结果进行计算）或者数据源。

自动将 GPRINT 条目分组至 AREA，STACK 和 LINE[1-3] 中，来对监控图条目进行快速重排序。

自动填充功能支持整齐排列图形内的说明项。

可以使用 RRDTool 中内置的 CDEF 数学函数对图形数据进行处理。这些 CDEF 函数可以定义在 Cacti 中，并且每一个图形都可以使用它们。

支持所有的 RRDTool 图形类型，包括 AREA，STACK，LINE[1-3]，GPRINT，COMMENT，VRULE 和 HRULE。

#### 数据源

数据源可以使用 RRDTool 的 "create" 和 "update" 功能创建。每一个数据源可以用来收集本地或者远程的数据，并将数据输出成图形。

支持包含多个数据源的 RRD 文件，并可以使用存储在本地文件系统中任何位置的 RRD 文件。

可以自定义轮询归档（RRA）设置，用户可以在存储数据时使用非标准的时间间隔（标准时间间隔是5分钟，30分钟，2小时和 1天）。

#### 数据收集

Cacti 包含一个 "data input" 机制，可以让用户定义自定义的脚本用来收集数据。每个脚本可以包含调用参数，每次调用此脚本的创建数据源时必须输入相应的调用参数（如 IP 地址）。

支持 SNMP 功能，可以使用 php-snmp，ucd-snmp 或者 net-snmp。

可以基于索引来使用 SNMP 或者脚本收集数据。例如，可以列出一个服务器上所有网卡接口或者已挂载分区的索引列表。其集成的绘图模版可以用来为主机一键创建图形。

提供了一个基于 PHP 的轮询器执行脚本，可以收集 SNMP数据并更新数据至 RRD 文件中。

#### 模版

绘图模版可以将相同图形分组到为一类。图形中的每一个条目都可以使用模版的默认值或者自定义。

数据源模版可以通过将相同数据源类型分组为一类。数据源中每一个条目都可以使用模版的默认值或者自定义。

主机模版是一组图形和数据源模版，可以用来定义某一类型的主机。创建主机时，它会自动使用相应模版的属性。

#### 图形展示

图形树模式允许用户创建「图形层次结构」并将图形放至树中。这种方法可以方便的管理大量图形。

列表模式将所有图形的链接在一个大列表中展示出来，链接指向用户创建的图形。

预览模式将所有图形在一个大列表中展示出来。这有点类似于 RRDTool/MRTG 的默认视图。

#### 用户管理

用户管理功能允许管理员创建用户并分配给用户访问 Cacti 接口的不同级别的权限。

权限可以为每个用户指定其对每个图形的权限，这适用于主机租用的场景。

每个用户可以保存他自己的图形显示模式。

### 安装

#### 系统准备

在安装 cacti 之前，确保你已经安装了 [Ubuntu 14.10 LAMP server](http://www.ubuntugeek.com/www.ubuntugeek.com/step-by-step-ubuntu-14-10-utopic-unicorn-lamp-server-setup.html)。

#### 在 Ubuntu 14.10 Server 上安装 Cacti

打开终端，运行下面的命令

```
sudo apt-get install cacti-spine

```

上面的命令开始 Cacti 的安装，你会看到下图中 PHP 路径的更改，选择 ok 按回车

选择你想使用的 Web 服务器 (我使用的是 apache2)

Cacti 数据库配置，选 yes

输入数据库管理员账户密码

输入 Cacti 访问数据库的密码

确认密码

现在 Cacti 已经安装了，我们可以开始配置它了。

#### Cacti 配置

在浏览器中访问 http://你的服务器IP/cacti/install/ 来进行初始化设置，点击 next 下一步

选择 New install，点击 next 下一步

下一个界面中，你需要确保所有的路径都是正确的，点击 finish 完成

现在以 admin/admin 登录 Cacti，修改管理员的默认密码

登录 Cacti 之后你会看到类似于下面这样的界面

---

via: <http://www.ubuntugeek.com/how-to-install-cacti-monitoring-tool-on-ubuntu-14-10-server.html>

作者：[ruchi](http://www.ubuntugeek.com/author/ubuntufix) 译者：[Liao](https://github.com/liaoishere) 校对：[wxy](https://github.com/wxy)

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


文件轻松比对，伟大而自由的比较软件们

@mywiz

mark

用过PDFdiffer，没多久就被我删除了

有用过这款软件。

自从依赖meld以后，diff很少再用了

@我的印象笔记

首mark

身外外貌协会的我，还是最喜欢第一款meld哇，又漂亮又实用

[good]

我是在 GNOME 里用 Meld，在 KDE 里用 Kompare。

留用

Kompare

# 文件轻松比对，伟大而自由的比较软件们

文件比较工具用于比较计算机上的文件的内容，找到他们之间相同与不同之处。比较的结果通常被称为diff。

diff同时也是一个基于控制台的、能输出两个文件之间不同之处的著名的文件比较程序的名字。diff是于二十世纪70年代早期，在Unix操作系统上被开发出来的。diff将会把两个文件之间不同之处的部分进行输出。

Linux拥有很多不错的GUI工具，能使你能清楚的看到两个文件或同一文件不同版本之间的不同之处。这次我从自己最喜欢的GUI比较工具中选出了五个推荐给大家。除了其中的一个，其他的都是开源的。

这些应用程序可以让你更清楚的看到文件或目录的差别，能合并有差异的文件，可以解决冲突并将其输出成一个新的文件或补丁，其也用于那些预览和备注文件改动的产品上（比如，在源代码合并到源文件树之前，要先接受源代码的改变）。因此它们是非常重要的软件开发工具。它们可以帮助开发人员们对文件进行处理，不停的把文件转来转去。这些比较工具不仅仅能用于显示源代码文件中的不同之处；他们还适用于很多种的文本文件。可视化的特性使文件比较变得容易、简单。

---

### Meld

Meld是一个适用于Gnome桌面的、开源的、图形化的文件差异查看和合并的应用程序。它支持2到3个文件的同时比较、递归式的目录比较、处于版本控制(Bazaar, Codeville, CVS, Darcs, Fossil SCM, Git, Mercurial, Monotone, Subversion)之下的目录比较。还能够手动或自动合并文件差异。

Meld的重点在于帮助开发人员比较和合并多个源文件，并在他们最喜欢的版本控制系统下能直观的浏览改动过的地方。

功能包括

* 原地编辑文件，即时更新
* 进行两到三个文件的比较及合并
* 在显示的差异和冲突之间的导航
* 使用插入、改变和冲突这几种标记可视化展示本地和全局的差异
* 内置正则表达式文本过滤器，可以忽略不重要的差异
* 语法高亮度显示（使用可选的gtksourceview)
* 将两到三个目录中的文件逐个进行比较，显示新建，缺失和替换过的文件
* 对任何有冲突或差异的文件直接打开比较界面
* 可以过滤文件或目录以避免以忽略某些差异
* 被改动区域的自动合并模式使合并更容易
* 也有一个简单的文件管理
* 支持多种版本控制系统，包括Git, Mercurial, Bazaar 和 SVN
* 在提交前开启文件比较来检查改动的地方和内容
* 查看文件版本状态
* 还能进行简单的版本控制操作（例如，提交、更新、添加、移动或删除文件）
* 继承自同一文件的两个文件进行自动合并
* 标注并在中间的窗格显示所有有冲突的变更的基础版本
* 显示并合并同一文件的无关的独立修改
* 锁定只读性质的基础文件以避免出错
* 可以整合到已有的命令行界面中，包括gitmergetool
* 国际化支持
* 可视化使文件比较更简单
* 网址: [meldmerge.org](http://meldmerge.org/)
* 开发人员: Kai Willadsen
* 证书: GNU GPL v2
* 版本号: 1.8.5

---

### DiffMerge

DiffMerge是一个可以在Linux、Windows和OS X上运行的，可以可视化文件的比较和合并的应用软件。

功能包括:

* 图形化显示两个文件之间的差别。包括插入行，高亮标注以及对编辑的全面支持
* 图形化显示三个文件之间的差别。（安全的前提下）允许自动合并，并对最终文件可以随意编辑
* 并排显示两个文件夹的比较，显示哪一个文件只存在于其中一个文件夹而不存在于另外的一个文件夹，还能一对一的将完全相同的、等价的或不同的文件配对
* 规则设置和选项让你可以个性化它的外观和行为
* 基于Unicode，可以导入多种编码的字符
* 跨平台工具
* 网址: [sourcegear.com/diffmerge](https://sourcegear.com/diffmerge/)
* 开发人员: SourceGear LLC
* 证书: Licensed for use free of charge (not open source)
* 版本号: 4.2

---

### xxdiff

xxdiff是个开源的图形化的可进行文件、目录比较及合并的工具。

xxdiff可以用于显示两到三个文件或两个目录的差别，还能产生一个合并后的版本。被比较的两到三个文件会并排显示，并将有区别的文字内容用不同颜色高亮显示以便于识别。

这个程序是个非常重要的软件开发工具。他可以图形化的显示两个文件或目录之间的差别，合并有差异的文件，其也用于那些预览和备注文件改动的产品上（比如，在源代码合并到源文件树之前，要先接受源代码的改变）

功能包括:

* 比较两到三个文件，或是两个目录（浅层或递归）
* 横向高亮显示差异
* 交互式的文件合并，可视化的输出和保存
* 可以辅助合并的评论/监管
* 自动合并文件中时不合并 CVS 冲突，并以两个文件显示以便于解决冲突
* 可以用其它的比较程序计算差异：适用于GNU diff、SGI diff和ClearCase的cleardiff，以及所有与这些程序输出相似的文件比较程序。
* 可以使用资源文件实现完全的个性化设置
* 用起来感觉和Rudy Wortel或SGI的xdiff差不多，与桌面系统无关
* 功能和输出可以和脚本轻松集成
* 网址: [furius.ca/xxdiff](http://furius.ca/xxdiff/)
* 开发人员: Martin Blais
* 证书: GNU GPL
* 版本号: 4.0

---

### Diffuse

Diffuse是个开源的图形化工具，可用于合并和比较文本文件。Diffuse能够比较任意数量的文件，并排显示，并提供手动行匹配调整，能直接编辑文件。Diffuse还能从bazaar、CVS、darcs, git, mercurial, monotone, Subversion和GNU RCS 库中获取版本用于比较及合并。

功能包括:

* 比较任意数量的文件，并排显示（多方合并）
* 行匹配可以被用户人工矫正
* 直接编辑文件
* 语法高亮
* 支持Bazaar, CVS, Darcs, Git, Mercurial, Monotone, RCS, Subversion和SVK
* 支持Unicode
* 可无限撤销
* 易用的键盘导航
* 网址: [diffuse.sourceforge.net][]
* 开发人员: Derrick Moser
* 证书: GNU GPL v2
* 版本号: 0.4.7

---

### Kompare

Kompare是个开源的GUI前端程序，可以对不同源文件之间差异的可视化和合并。Kompare可以比较文件或文件夹内容的差异。Kompare支持很多种diff格式，并提供各种选项来设置显示的信息级别。

不论你是个想比较源代码的开发人员，还是只想比较一下研究论文手稿与最终文档的差异，Kompare都是个有用的工具。

Kompare是KDE桌面环境的一部分。

功能包括:

* 比较两个文本文件
* 递归式比较目录
* 显示diff产生的补丁
* 将补丁合并到一个已存在的目录
* 可以让你在编译时更轻松
* 网址: [www.caffeinated.me.uk/kompare/](http://www.caffeinated.me.uk/kompare/)
* 开发者: The Kompare Team
* 证书: GNU GPL
* 版本号: Part of KDE

---

via: <http://www.linuxlinks.com/article/2014062814400262/FileComparisons.html>

作者：Frazer Kline 译者：[H-mudcup](https://github.com/H-mudcup) 校对：[wxy](https://github.com/wxy)

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


Calife：一个轻量级的sudo替代品

Summary: Calife会在登录为另外一个用户前输入自己的密码（如果没有提供登录名，默认是登录为root），在验证具有正确的权限后，就会切换到该用户及其组身份，并就会执行一个shell。如果 calife 是由 root 执行的，不需要密码，会执行一个所需的用户ID的shell。 所用的shell是用户自身所用的，除非在calife.auth配置文件中指定了某个shell。如果在命令行指定了-选项，就会读取该用户的环境文件，该shell就像是一个登录shell。这和su的惯常用法不同。 只有在calife.auth中指定的用户才能使用此方法通过calife成为另外一个用户。calife.auth安装位置处

@小白脑子放了个屁 shenmegui

图！

先 Mark，打工中 //@Judgement_Engineer:@小白脑子放了个屁 shenmegui

# Calife：一个轻量级的sudo替代品

<img src="content_image/album_201501_18_225700y1a1qp63xg3ajjp1.jpg" alt="" title="">

Calife会在登录为另外一个用户前输入自己的密码（如果没有提供登录名，默认是登录为root），在验证具有正确的权限后，就会切换到该用户及其组身份，并就会执行一个shell。如果 calife 是由 root 执行的，不需要密码，会执行一个所需的用户ID的shell。

所用的shell是用户自身所用的，除非在calife.auth配置文件中指定了某个shell。如果在命令行指定了“-”选项，就会读取该用户的环境文件，该shell就像是一个登录shell。这和su的惯常用法不同。

只有在calife.auth中指定的用户才能使用此方法通过calife成为另外一个用户。calife.auth安装位置处于/etc/calife.auth。

### Calife特性

这里给出了一个关于calife特性的扩展列表：

* 你可以完整保留你的环境变量和shell别名
* 它可以全程记录会话的开始到结束
* 你可以列出每个许可使用calife的用户，那样，你就可以用户赋予主管权限而不必提供root密码
* 你可以在配置文件中指定哪个组可以使用：只要使用@staff或者%staff，那么所有staff组中的成员都将具有访问calife的权限
* 通过calife也可以登录成为那些没有家目录或甚至没有shell的用户。如果你想要成为uucp或者甚至是bin，那会很方便
* 你可以让calife在会话结束时运行一个指定的系统级的脚本（例如，发送一封邮件告知以root身份做了哪些事）

### ubuntu中安装calife

打开终端，然后运行以下命令

```
sudo apt-get install calife

```

### 使用Calife

### 语法

```
calife [-] [login]

```

详情请参与calife手册页

---

via: <http://www.ubuntugeek.com/calife-a-lightweight-alternative-to-sudo.html>

作者：[ruchi](http://www.ubuntugeek.com/author/ubuntufix) 译者：[GOLinux](https://github.com/GOLinux) 校对：[wxy](https://github.com/wxy)

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


Linux 下五款出色的流媒体客户端

装个试试

我把 JACK 当 ASIO/WASAPI 用的//@星之光StarBrilliant: 如果 1、JACK有混音，2、JACK兼容PA API像PA兼容ALSA API一样完美，3、JACK睡眠不会有bug 的话我早就用JACK了。 //@Judgement_Engineer:到了 Linux 下不好好用 JACK 当厚度享受 CD 用啥 Streaming 啊@Price_Hu @星之光StarBrilliant @比尔盖子V

那不如直接挂裸ALSA不用任何高层声音架构。 //@Judgement_Engineer:我把 JACK 当 ASIO/WASAPI 用的//@星之光StarBrilliant: 如果 1、JACK有混音，2、JACK兼容PA API像PA兼容ALSA API一样完美，3、JACK睡眠不会有bug 的话我早就用JACK了。

然后我整个unity或者gnome或者kde就该被卸载干净了，责任人@小白脑子放了个屁 @冰雪聪明琳之风 //@星之光StarBrilliant: 那不如直接挂裸ALSA不用任何高层声音架构。 //@Judgement_Engineer:我把 JACK 当 ASIO/WASAPI 用的//@星之光StarBrilliant: 如果 1、JACK有混音，2、JACK兼容PA API像PA兼容ALSA A

回复@冰雪聪明琳之风:KDE还好，GNOME这样就该被干死了 责任人：上游 //@冰雪聪明琳之风:你可以屏蔽PA啊 //@Judgement_Engineer:然后我整个unity或者gnome或者kde就该被卸载干净了，责任人@小白脑子放了个屁 @冰雪聪明琳之风 //@星之光StarBrilliant: 那不如直接挂裸ALSA不用任何高层声音架构。

明显楼歪了~//@Judgement_Engineer: 我把 JACK 当 ASIO/WASAPI 用的//@星之光StarBrilliant: 如果 1、JACK有混音，2、JACK兼容PA API像PA兼容ALSA API一样完美，3、JACK睡眠不会有bug 的话我早就用JACK了。 //@Judgement_Engineer:到了 Linux 下不好好用 JACK 当厚度享受 CD 用啥 Streaming 啊

Clementine特别好，推荐大家玩玩

我用sptify//@爱开源魅影:Clementine特别好，推荐大家玩玩

只有我用虾米吗

和我想要说的一样：）

我也是pithos+spotify+clementine

…………………………

当然国内的还有网易云

# Linux 下五款出色的流媒体客户端

数字流媒体这几天几乎占据了我音乐收听的全部时间。近年来我为了收藏 CD 花费了数量可观的费用；但它们中的大部分现在正静静地躺在满是灰尘的角落里。基本上所有的音乐流媒体服务所提供的的音质都不如 CD 的，但它们受欢迎的原因很大程度上在于其便捷性，而非高度保真的音质再现。音乐流媒体不仅造成了 CD 销量的大幅减少；也使数字音乐的下载开始缓慢下滑。这种趋势还会继续下去。音乐发烧友现在或许也想要拥抱音乐流媒体服务了，某些音乐流媒体服务商如 Tidal 提供了无损的音乐流媒体服务，其中包含了 25 万首比特率为 1411kbps 的 FLAC 格式的音乐。

尽管 CD 暂时不会消失，但音乐流媒体服务商却无法调和那些不满从音乐托管服务中收取的租金的唱片公司及音乐家之间的问题。这一切仍然处于变化之中；我们看到了今年 Led Zeppelin, Pink Floyd, Metallica 签名支持流媒体服务，但仍然有部分知名的老牌乐队如 Beatles, Radiohead 以及 AC/DC 拒绝将自己的作品放到流媒体上供粉丝收听。即使当某个唱片公司或者音乐家已经授权给流媒体服务商访问自己的作品，但只要音乐家发表声明就可以在第一时间将其作品从流媒体服务下架。本月（2014 年 11 月），Taylor Swift 请求将她的所有音乐作品从 Spotify 的流媒体服务下架。有些人还是更偏向于“拥有”他们的音乐，但这看起来像是一种快要过时了的欣赏音乐的方式。

使用 Linux 平台来收听流媒体音乐服务的方法已经逐渐成熟。在 Linux 平台下，你可以找到许多客户端，通过它们你可以使用大部分的音乐流媒体服务；我希望 TIDAL 能在今后合适的时候发行 Linux 桌面客户端，而不是仅仅依赖 web 播放器。本文精选的这些应用都是非常出色的。另外 Amarok，pianobar 还有 Tomahawk 也表现得很不错。

### Spotify

Spotify 是一种专有的 P2P 音乐流媒体服务，允许用户收听点播曲目或专辑。Spotify 将自己描述为“音乐圣殿。快捷、简易、免费的服务”。Spotify 分别为普通的移动端和桌面端用户提供了 96kbps 和 160kbps 比特率的流媒体服务，并且为高级用户提供了 Ogg Vorbis 格式的 320kbps 比特率的流媒体服务。Spotify 为普通用户提供了免费但是有广告的服务，以及无广告的订阅账户服务。

Spotify 是很奇妙的服务，向用户们提供了涵盖各种类型的数量众多的音乐，如：流行乐、另类摇滚、古典乐、铁克诺电音、摇滚乐等。这是发现新音乐的好方法。Spotify 得到了包括 Sony BMG，EMI，Universal 以及 Warner Music 在内的主流唱片公司，以及 Labrador Records，The Orchard，Alligator Records，Merlin，CD Baby，INgrooves 等独立唱片唱片公司和分销网络，甚至 Chandos，Naxos，EMI Classic，Warner Classics，Denon Essentials 这些古典唱片公司的支持，还有更多的公司在这里就不一一列举了。

Spotify 的音乐涵盖范围还在继续以惊人的步伐扩张着。

Spotify 现在并没有发行官方版的 Linux 客户端。不过，开发团队已经推出了针对 Linux 的客户端预览版，并且表现得还不错。因为仍然是预览版，所以没有得到官方的支持。

Spotify 流媒体服务现已支持以下地区/国家：安道尔，阿根廷，澳大利亚，奥地利，比利时，保加利亚，哥伦比亚，塞浦路斯，丹麦，爱沙尼亚，芬兰，法国，德国，希腊，香港，冰岛，爱尔兰，意大利，拉脱维亚，列支敦士登，立陶宛，卢森堡，马来西亚，马耳他，墨西哥，摩纳哥，荷兰，新西兰，挪威，菲律宾，波兰，葡萄牙，西班牙，新加坡，瑞典，瑞士，台湾，土耳其，英国，美国，乌拉圭等。

**特色包括：**

* 精心设计的界面，导航时非常方便
* 创建和编辑播放列表
* 发现新的音乐
* 共享音乐及播放列表
* 电台功能
* 最受欢迎的的列表
* 额外功能及种类繁多的应用
* 网址：[www.spotify.com/uk/download/previews](https://www.spotify.com/uk/download/previews/)
* 开发者：Spotify
* 许可证：专有许可证
* 当前版本：预览版

### Pithos

Pithons 是一款开源的的本地 Pandora 电台 Linux 客户端。它提供了一个轻量级的界面以替代 Pandora.com 的 web 客户端。其图形用户界面上集成了多媒体快捷键、通知中心以及声音菜单。

Pandora 音乐服务只能通过美国的 IP 地址使用。不过，非美国用户可以通过 VPN 连接来使用 Pandora。

**特色包括：**

* 播放/暂停/下一首
* 切换电台
* 记住用户名和密码
* 给喜欢的音乐和艺术家添加书签
* 获取封面
* 喜欢/讨厌/不再播放这首音乐
* 在通知中心中弹出歌曲信息
* 跳转到 pandora.com 歌曲信息页面/电台页面
* 超时后重连 pandora
* QuickMix 编辑
* 创建电台
* 多媒体按键
* 代理连接
* Last.fm 歌曲记录
* 音量控制
* 屏保暂停等插件
* DBUS 接口：MPRIS 和 Pithos
* 网址：[pithos.github.io](http://pithos.github.io/)
* 开发者：Kevin Mehall
* 许可证：GNU GPL v3
* 当前版本：1.0.0

### Clementine

Clementine 基于 Amarok 开发，是一款跨平台的轻量级现代化音乐播放器和媒体库管理工具。Clementine 致力于打造快捷简易的界面，使你可以轻松搜索和播放音乐。

Clementine 在 Amarok 1.4 的基础上开发。

**特色包括：**

* 检索、播放本地音乐库
* 从 Last.fm 和 SomaFM 收听互联网电台
* 标签式播放列表，支持导入导出 M3U，XSPF，PLS 及 ASX 格式的播放列表
* 创建智能播放列表和动态播放列表
* 载入 M3U 和 XSPF 播放列表
* 对播放列表的撤销和重做
* 编辑 MP3 和 OGG 文件的信息，管理媒体库
* 从 Last.fm 下载缺失的专辑封面
* 集成 gpodder.net 播客
* 图形化均衡器
* 支持 Windows，Mac OS X 及 Linux
* 支持 Linux（libnotify）及 Mac OS X（Growl）本地桌面通知中心
* 从 MusicBrainz 获取缺失的信息
* 炫彩屏幕显示
* 队列管理
* 支持 Linux 下的 MPRIS，以及命令行远程控制
* 支持索引和播放 Google Drive 中的音乐
* 支持 Soundcloud
* 支持 jazzradio.com
* 支持 Moodbar
* 基于 projectM 的可视化技术
* 拷贝音乐至 iPod，iPhone，MTP 或者 大容量 USB 设备
* 远程控制
* 转码音乐至 MP3，Ogg Vorbis，Ogg Speex，FLAC 以及 AAC
* 网址：[www.clementine-player.org](https://www.clementine-player.org/)
* 开发者：David Sansome，John Maguire
* 许可证：GNU GPL v3
* 当前版本：1.2

### Nuvola Player

Nuvola Player 是一个免费的开源项目，能够整合云端音乐到你的桌面中（支持托盘图标、Ubuntu 声音菜单、dock 菜单以及通知中心）。

为了使用全部的流媒体服务，你需要安装 Flash 和 HTML5 的音频支持。某些基于 Web 的流媒体服务可以使用 HTML5 的音频技术播放音乐，而非使用 Flash 插件。Nuvola Player 需要 GStreamr 和 MP3 解码器插件来提供 HTML5 音频支持。

**支持的流媒体服务：**

* 集成了 MP3 商店的亚马逊云播放器，允许用户在亚马逊云端驱动器中存储他们的音乐，并且在任何支持的浏览器上播放音乐
* Bandcamp，是一家在线音乐商店，也是艺人宣传平台，主要适于独立艺术家
* Deezer，一家法国的基于 Web 的音乐流媒体服务商。Deezer 允许用户在多台设备上在线或者离线播放音乐，现在拥有 1800 万的曲目，超过 30000 的电台以及 2200 万的用户（150 万订阅用户）
* 8tracks，是一家融合了互联网电台和社交元素的网站，坚持至少 8 个曲目的为用户量身定制的流媒体播放列表
* Google Play，谷歌运营的一家数字服务商店，其经营项目包括音乐、电影、书籍，以及 Android 应用和游戏，其云端播放器支持播放用户自己上传的音乐和在 Google Play 里购买的音乐
* Grooveshark，提供了国际化在线音乐搜索引擎、音乐流媒体服务以及音乐推荐服务，允许用户进行搜索、使用流媒体以及上传音乐，并且能把这些音乐进行立即播放或者添加到一个播放列表中
* Grooveshark Mobile，基于 HTML5 的 Grooveshark 移动版，不需要 Flash 插件的支持
* Hype Machine，Pandora Radio 和 Pitchfork Media 的融合产物。它从音乐博客上精选了最近发布的歌曲（约 1500 首），并在网站主页上列出了这些歌曲的信息
* Jango，一款免费的在线音乐流媒体服务，允许用户创建和分享自己创建的电台
* Logitech Media Server，是 Logitech Squeezebox devices 的开源流媒体服务。支持许多插件以及如 Deezer 和 Spotify 等其他流媒体服务
* Pandora，智能化音乐推荐服务以及音乐基因组计划“托管人”，服务仅针对美国地区
* Rdio，有广告的音乐订阅服务
* Spotify，商业化流媒体服务，提供来自唱片公司的被严格限制的数字版权内容
* This is My Jam，你可以存放某一刻你非常喜欢的音乐，并且每天都可以收听由朋友们精挑细选的音乐

**特色包括：**

* 多媒体快捷键
* 显示桌面通知
* 集成了众多声音菜单、小程序以及启动器，甚至更多
* Last FM 以及 Libre FM 歌曲记录
* 获取歌词
* 支持 Amazon Music Prime streaming
* 网址：[tiliado.eu/nuvolaplayer](https://tiliado.eu/nuvolaplayer/)
* 开发者：Jiří Janoušek and service maintainers
* 许可证：2-Clause BSD license
* 当前版本：2.4.3

### Atraci

Atraci 是一款多平台的开源流媒体应用，允许用户收听超过 6000 万首音乐。Atraci 仍然处于基础开发阶段，所以很多功能暂时还未完善。

Atraci 使用 iTunes，Last.fm 以及 SoundCLoud 显示歌曲信息 —— 专辑封面、歌曲名称以及艺术家。Atraci 在 YouTube 上搜索最匹配这首音乐信息的视频，并使用其中质量最高的。

**特色包括：**

* 无广告、无需注册
* 直观的用户界面
* 智能匹配搜索任何音乐、艺术家或者专辑。Atraci 会在线校对其信息，以显示正确的歌曲名称、专辑封面以及音轨等等，同时列出最高质量的视频流媒体
* 自动修正所属专辑与艺术家
* 通过默认方式、艺术家姓名或者曲目名称对结果排序
* 以网格或列表模式查询结果
* 检索视频可以全屏模式观看
* 以随机或重复模式创建播放列表
* 应用程序内的音量调整滑块、音轨调节以及专辑封面
* 播放历史
* 网址：[atraci.github.io/Atraci-website](http://atraci.github.io/Atraci-website/)
* 开发者：The Atraci Team
* 许可证：The MIT License
* 当前版本：0.7.0

---

via: <http://www.linuxlinks.com/article/20141116052055674/MusicStreaming.html>

作者：Frazer Kline 译者：[Stevearzh](https://github.com/Stevearzh) 校对：[wxy](https://github.com/wxy)

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


如何手动删除Oracle 11g数据库

Summary: 下面的步骤会教你如何在Linux环境下手动删除Oracle 11g数据库。  我在Centos 6上安装了Oralce 11G数据库。 使用SQLPlus或者其他你喜欢的命令行工具登录数据库，登录用户是sysdba* 输入下面的命令的到不同文件的路径： select name from v$datafile; select member from v$logfile; select name from v$controlfile; select name from v$tempfile;  在SQLPlus中关闭数据库，接着退出SQLPlus sqlplus "/ as sysdba"   shutdown immediate; quit;  在命令行中输入下面的命令停止监听服务： 在Oralce Linux账户中： lsnrctl stop  回忆一下之

重新做个系统可能会更快……

[笑cry]能装这个基本都是服务器， 不能随便重做系统。

[爱你]

嗯嗯

何手动删除Oracle 11g数据库 | 下面的步骤会教你如何在Linux环境下手动删除Oracle 11g数据库。 我在Centos 6上安装了Oralce 11G数据库。 使用SQLPlus或者其他你喜欢的命令行工具登录数据库，登录用户是sysdba* 输入下面的命…

# 如何手动删除Oracle 11g数据库

下面的步骤会教你如何在Linux环境下手动删除Oracle 11g数据库。

<img src="content_image/album_201501_18_231612uenrjwvvcahxfmnj.png" alt="" title="">

我在Centos 6上安装了Oralce 11G数据库。

使用SQL*Plus或者其他你喜欢的命令行工具登录数据库，登录用户是**sysdba*\*

输入下面的命令的到不同文件的路径：

```
select name from v$datafile;
select member from v$logfile;
select name from v$controlfile;
select name from v$tempfile;

```

**在SQL*Plus中关闭数据库，接着退出SQL*Plus**

```
sqlplus  "/ as sysdba"

```

---

```
shutdown immediate;
quit;

```

**在命令行中输入下面的命令停止监听服务：**

在Oralce Linux账户中：

```
lsnrctl stop

```

回忆一下之前的文件路径;在删除这些文件的时候作为一个检查项。记住：你备份了数据库了么？当准备好之后，就删除你的数据文件吧，同样还有你的日志文件、控制文件和临时文件。

* 进入 **$ORACLE\_HOME/network/admin** 目录并删除 **tnsnames.ora** 和 **listener.ora** 文件;
* 进入 **$ORACLE\_HOME/dbs** 目录并删除 **init[db\_name].ora**、 **orapw[db\_name]**和 **spfile[db\_name].ora** 文件;
* 进入 **$ORACLE*HOME/admin/[db*name]/pfile** 目录并删除 **init[db\_name].ora** 文件;
* 进入 **$ORACLE*HOME/admin/[db*name]/adump** 目录并删除所有文件;
* 编辑**/etc/oratab** 并移除以你数据库名字开头的行.

这样就好了。

---

via: <http://www.unixmen.com/manually-delete-oracle-11g-database/>

作者：[M.el Khamlichi](http://www.unixmen.com/author/pirat9/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

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


在 Mac OS X 系统中创建用于 Mac 的 Ubuntu USB 启动盘

Summary: 上个月，在戴尔的服务中心丢失我的笔记本后，我买了一台 Macbook Air 笔记本。买回来后我首先做的一些事就是给机器装上双系统，使 Ubuntu Linux 和 Mac OS X 都可用。随后的文章我会介绍如何在 Macbook 上安装 Linux ,刚开始我们需要学习 如何在 Mac OS X 系统中创建用于 Mac 的 Ubuntu USB 启动盘。 在 Ubuntu 系统或 Windows 系统中创建可启动的 USB 是非常容易的，但在 Mac OS X 系统中就没这么简单了。这就是为什么 Ubuntu 的官方指南上，在 Mac 中安装 live Ubuntu 推荐使用光盘安装而不是 USB 的原因。考虑到我的 Macbook Air 既没

Repost

#mac# #utuntun# #tools#

双系统还是干掉osx只留ubuntu，是个问题...

为什么要Ubuntu？mac os可是工作娱乐两不误啊

Mac OS+Ubuntu

Mac其实够用够优秀的，为什么要换系统？[嘻嘻]

好东西啊，拯救了银河系//@校长Ubuntu: 转发微博

也许有用//@Linux中国: 哈哈，其实这样做成的 USB 启动盘，其它系统也能用的~~//@书窗外的冷雨: 大哥，你咋今天才发呢，我昨天装的吐血哇，哈哈，不过我不是在Mac 上装Ubuntu

vagrant哭晕在厕所！

mark//@Linux中国: 哈哈，其实这样做成的 USB 启动盘，其它系统也能用的~~//@书窗外的冷雨: 大哥，你咋今天才发呢，我昨天装的吐血哇，哈哈，不过我不是在Mac 上装Ubuntu

奇怪了，难道大家都不知道还有一个东西叫做vagrant嘛？//@Linux中国: 哈哈，其实这样做成的 USB 启动盘，其它系统也能用的~~//@书窗外的冷雨: 大哥，你咋今天才发呢，我昨天装的吐血哇，哈哈，不过我不是在Mac 上装Ubuntu

嗯，别小看了这类技巧，因为GNU/Linux是融合了SystemV和Free BSD的特性的Unix,而Mac OS X 是基于Darwin从而也属于Free BSD分支，两者的差别很大，最常用的两个钩子函数fcntl和ioctl在两个平台的差别可谓巨大，导致很多设备的驱动和读写都不同，怒顶@Linux中国

回复@书窗外的冷雨:谢谢~

//@Linux中国:哈哈，其实这样做成的 USB 启动盘，其它系统也能用的~~//@书窗外的冷雨: 大哥，你咋今天才发呢，我昨天装的吐血哇，哈哈，不过我不是在Mac 上装Ubuntu

和 vagrant 有什么关系？

@我的印象笔记 以后装时用

我是用同样的方法安装kali 但是到了启动安装却失败了，说是分出来的第二个分区擦不掉，怎么解决？

# 在 Mac OS X 系统中创建用于 Mac 的 Ubuntu USB 启动盘

上个月，在戴尔的服务中心丢失我的笔记本后，我买了一台 Macbook Air 笔记本。买回来后我首先做的一些事就是给机器装上双系统，使 Ubuntu Linux 和 Mac OS X 都可用。随后的文章我会介绍如何在 Macbook 上安装 Linux ,刚开始我们需要学习 **如何在 Mac OS X 系统中创建用于 Mac 的 Ubuntu USB 启动盘**。

在 Ubuntu 系统或 Windows 系统中创建可启动的 USB 是非常容易的，但在 Mac OS X 系统中就没这么简单了。这就是为什么 Ubuntu 的官方指南上，在 Mac 中安装 live Ubuntu 推荐使用光盘安装而不是 USB 的原因。考虑到我的 Macbook Air 既没有 CD 驱动也没有 DVD 驱动，所以我更愿意在 Mac OS X 下创建一个 live USB。

### 在 Mac OS X 下创建可启动 USB 驱动盘

如前所述，在 Mac OS X 上创建对于像 Ubuntu 或任何其它可引导的操作系统这样的可启动 USB 盘是个比较麻烦的过程。但请别担心，按照下面的步骤一步一步操作就行。让我们就开始创建一个可启动的 USB 盘的操作吧：

#### 步骤 1: 格式化 USB 驱动盘

苹果是以它自定义的标准而闻名的，所以 Mac OS X 系统有自己的文件系统类型就毫不奇怪了，它的文件系统叫做 Mac OS 扩展或 [HFS 插件](http://en.wikipedia.org/wiki/HFS_Plus)。因此，您需要做的第一件事就是用 Mac OS 扩展文件系统来格式化您的 USB 驱动盘。

要格式化 USB 盘，请先插入 USB 盘。从 Launchpad（在底部面板上的一个火箭形状的图标）上前往**磁盘工具**应用程序。

* 在磁盘工具中，从左手边的面板上选择你的 USB 盘来格式化。
* 点击右边面板的**分区**标签。
* 从下拉菜单中，选择 **1 分区**。
* 给这驱动盘起个您想要的名字。
* 接下来，切换分区格式为**格式化成 Mac OS 扩展 (日志型)**

下面的截屏将会对您有所帮助。

在我们开始真正格式化 USB 盘之前这是唯一一件要做的操作。点击在右边面板的选项按纽，要确保分区的模式是 **GUID 分区表**形式的。

当所有都已经设置完了后，仅仅只需点击**应用**按纽。它会弹出一个要格式化 USB 驱动盘的警告消息，当然是要点击分区按纽来格式化 USB 驱动盘拉。

#### 步骤 2: 下载 Ubuntu

当然，您需要下载 Ubuntu 桌面版本的 ISO 镜像文件。链接到 [Ubuntu 官网去下载您喜欢的 Ubuntu 桌面版本系统](http://www.ubuntu.com/download/desktop)。因为您使用的是 Macbook Air，我建议您下载 64 位版本中的一款。Ubuntu 14.04 是最新的 LTS 版本，我建议您们使用它。

#### 步骤 3: 把 ISO 格式转成 IMG 格式

您下载的文件是 ISO 格式的，但我们需要它是 IMG 格式的，使用 [hdiutil](https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/hdiutil.1.html) 命令工具就可以很容易的转换。打开终端，也可以从 Launchpad 或 Spotlight 中打开，然后使用如下的命令就可以把 ISO 格式的转换成 IMG 格式的了:

```
hdiutil convert -format UDRW -o ~/Path-to-IMG-file ~/Path-to-ISO-file

```

通常下载的文件会在 ~/Downloads 目录下。所以在我的系统来，输入的命令是:

```
hdiutil convert -format UDRW -o ~/Downloads/ubuntu-14.10-desktop-amd64 ~/Downloads/ubuntu-14.10-desktop-amd64.iso

```

您可能已经注意到我并没有新转换出的文件加上 IMG 后缀。这是没问题的，因为后缀只是个标志，重要的是文件类型并不是文件的扩展名。转换出来的文件可能会被 Mac OS X 系统自动加上个 .dmg 后缀。别担心，这是正常的。

#### 步骤 4: 获得 USB 盘的设备号

接下来的事情就是获得 USB 盘的设备号。在终端中运行如下命令：

```
diskutil list

```

它会列出系统中当前可用的所有‘磁盘’信息。从它的大小上您应该能识别出此 USB 盘。为了避免混淆，我建议您只插入一个 USB 盘。我的示例中，设置号是 2 （一个大小为 8G 的 USB）: /dev/disk2

当得到设备号后，运行如下命令：

```
diskutil unmountDisk /dev/diskN

```

这儿的 N 就是前面您得到的 USB 的设备号。所以，我的示例中，上面的命令就变成：

```
diskutil unmountDisk /dev/disk2

```

执行结果应该是：**成功的卸载 disk2 上的所有卷**。

#### 步骤 5: 在 Mac OS X 中创建可启动的 USB 驱动盘

终于我们只有创建可启动的 USB 盘这最后一步了。我们会使用 [dd 命令](http://en.wikipedia.org/wiki/Dd_%28Unix%29)，它非常的强大，必须得小心使用。因此，一定要记得您 USB 驱动盘的正确设备号，要不然会使 Mac OS X 系统崩溃。在终端中使用如下命令:

```
sudo dd if=/Path-to-IMG-DMG-file of=/dev/rdiskN bs=1m

```

这儿我们使用 dd (拷贝和转换) 来把 IMG 输入文件 (if) 拷贝和转换到 磁盘 N 中。我希望您还记得在步骤 3 中已经生成的 IMG 文件的存放位置。对我的机器来说，命令如下所示：

```
sudo dd if=~/Downloads/ubuntu-14.10-desktop-amd64.dmg of=/dev/rdisk2 bs=1m

```

我们用超级用户权限（sudo）来运行上面的命令，还需要您输入密码。跟 Linux 中类似，您从键盘中输入密码时，将看不到任何星号或显示的提示，不用担心，这是 Unix 终端的习惯。

甚至在您输入完密码后，**您都不会看到立即的输出，这是正常的**。需要一小会儿时间才会处理完成。

#### 步骤 6: 完成可启动 USB 驱动盘的整个处理过程

一旦 DD 命令处理完成，会弹出一个对话框：**您插入的磁盘在这机器上不可读**。

别惊慌，一切正常。只是**现在不要点击初始化、忽略或弹出按纽**。回到终端，您会看到最新处理完成的一些信息。我的机器中显示如下：

>
> 1109+1 records in
>
>
> 1109+1 records out
>
>
> 1162936320 bytes transferred in 77.611025 secs (14984164 bytes/sec)
>
>
>

现在，在终端中使用如下命令来弹出我们的 USB 驱动盘：

```
diskutil eject /dev/diskN

```

N 当然指的是我们前面使用过的设备号，在我的示例中是 2 ：

```
diskutil eject /dev/disk2

```

一旦弹出，点击前面出现那对话框上的**忽略**按纽。现在您的可启动 USB 磁盘已经创建好了，把它拔下来吧。

#### 步骤 7: 检查您新创建的可启动 USB 盘

一旦您在 Mac OS X 中完成了创建一个 live USB 这么重大的任务，是时候测试您的新成果了。

* 插入可启动 USB 盘，重启系统。
* 在苹果启动的时候，一直按着 option （或 alt）键。
* 这会引导您进入启动时需要访问的可使用磁盘界面。我假设您知道接下来的操作步骤。

对我机器来说它显示了两个 EFI 启动盘：

我选择第一个，然后它就会直接进入 Grub 界面：

我希望这篇教程对您想要在 Mac OS X 下创建可启动的 Ubuntu 系统 USB 驱动盘有所帮助。在接下来的一篇文章中您会学到怎么样安装 OS X 和 Ubuntu 双系统。请继续关注。

---

via: <http://itsfoss.com/create-bootable-ubuntu-usb-drive-mac-os/>

作者：[Abhishek](http://itsfoss.com/author/Abhishek/) 译者：[runningwater](https://github.com/runningwater) 校对：[wxy](https://github.com/wxy)

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


采用转发服务器增强 Postfix 邮件服务器的安全

Summary: 当你启动并运行应用服务器后，你就需要一台好的邮件服务器来为你传递邮件。我为我所有的服务器开通了postfix邮件服务，下面就是我常用的配置。 CentOS 6上安装Postfix yum install postfix  默认安装了Sendmail，所以最好将它停掉并移除。 service sendmail stop yum remove sendmail  Postfix包含了两个配置文件main.cf和master.cf，对于基本的配置，你需要修改main.cf。同时，postfix可以像shell变量一样定义参数，并通过$来调用。这些参数不需要再使用前定义，Postfix只在运行中需要时才会查询某个参数。 配置postfix vim /etc/postfix

GO

# 采用转发服务器增强 Postfix 邮件服务器的安全

<img src="content_image/album_201501_19_100749yy85b6l3byrvddrv.png" alt="" title="">

当你启动并运行应用服务器后，你就需要一台好的邮件服务器来为你传递邮件。我为我所有的服务器开通了postfix邮件服务，下面就是我常用的配置。

### CentOS 6上安装Postfix

```
yum install postfix

```

默认安装了Sendmail，所以最好将它停掉并移除。

```
service sendmail stop
yum remove sendmail

```

Postfix包含了**两个配置文件main.cf和master.cf**，对于基本的配置，你需要修改main.cf。同时，postfix可以像shell变量一样定义参数，并通过$来调用。这些参数不需要再使用前定义，Postfix只在运行中需要时才会查询某个参数。

### 配置postfix

```
vim /etc/postfix/main.cf

```

去掉以下行的注释

```
# 你的主机名
myhostname = yourhostname.com

# 你的发件域
myorigin = $myhostname

# 指定用于接收邮件的网络接口，这里指定 localhost 是因为我们只用来接受本地的程序投递
inet_interfaces = localhost

# 指定所使用的协议，可以使用“all”来增加 IPv6 支持
inet_protocols = ipv4

# 指定所接受的邮件域
mydestination = $myhostname, localhost.$mydomain, localhost

# 仅转发本地主机的邮件，而不是主机所在的网络
mynetworks_style = host

```

启动postfix

```
service postfix start

```

这些基本的postfix配置可以让你的机器发送邮件，你可以通过发送邮件并检查“maillog”日志文件来验证。

```
echo test mail | mail -s "test"  leo@techarena51.com && sudo tail -f /var/log/maillog

# 输出的日志类似如下
Aug 25 14:16:21 vps postfix/smtp[32622]: E6A372DC065D: to=, relay=smtp.mailserver.org[50.56.21.176], delay=0.8, delays=0.1/0/0.43/0.27, dsn=2.0.0, status=sent (250 Great success)
Aug 25 14:16:21 vps postfix/qmgr[5355]: E6A372DC065D: removed

```

但是，上述配置并不够，因为邮件服务大多数时候都会被垃圾邮件挤满，你需要添加SPF、PTR和DKIM记录。即便如此，你的邮件仍然可能被当作垃圾邮件来投递，因为你的IP地址被列入了黑名单，大多数时候是因为你的vps先前被入侵了。

还有另外一种选择，或者说是更好的方式是使用第三方邮件提供商提供的邮件服务，如Gmail，或者甚至是Mailgun。我使用Mailgun，因为它们提供了每个月10000封免费电子邮件，而Gmail则提供了每天100封左右的邮件。

在“/etc/postfix/main.cf”中，你需要添加“smtp.mailgun.com”作为你的“转发主机”，并启用“SASL”验证，这样postfix就可以连接并验证到远程Mailgun服务器。

添加或取消以下行的注释。

```
relayhost = [smtp.mailgun.org]
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps=static:your_username:your_password
smtp_sasl_security_options=noanonymous

```

Postfix本身不会实施“SASL”验证，因此你需要安装“cyrus-sasl-plain”。

```
sudo yum install cyrus-sasl-plain

```

如果你不安装此包，那么你就会收到这条错误信息“SASL authentication failed; cannot authenticate to server smtp.mailgun.org[50.56.21.176]: no mechanism available)”

重启postfix

```
sudo service postfix restart

```

### 使用TLS加固Postfix安全

Postfix支持TLS，它是SSL的后继者，允许你使用基于密钥的验证来加密数据。我推荐你阅读 <http://www.postfix.org/TLS_README.html> ，以了解TLS是怎么和postfix一起工作的。

为了使用TLS，你需要生成一个私钥和一个由证书授权机构颁发的证书。在本例中，我将使用自颁发的证书。

```
sudo yum install mod_ssl openssl
# 生成私钥
openssl genrsa -out smtp.key 2048

# 生成 CSR
openssl req -new -key smtp.key -out smtp.csr

# 生成自签名的钥匙
openssl x509 -req -days 365 -in smtp.csr -signkey smtp.key -out smtp.crt

# 将文件复制到正确的位置
cp smtp.crt /etc/pki/tls/certs
cp smtp.key /etc/pki/tls/private/smtp.key
cp smtp.csr /etc/pki/tls/private/smtp.csr

```

打开postfix配置文件，然后添加以下参数。

```
sudo vim /etc/postfix/main.cf

smtp_tls_security_level = may
smtpd_tls_security_level = may
smtp_tls_note_starttls_offer = yes

smtpd_tls_key_file = /etc/pki/tls/private/smtp.key
smtpd_tls_cert_file = /etc/pki/tls/certs
smtp_tls_CAfile = /etc/ssl/certs/ca.crt
smtp_tls_loglevel = 1

```

安全级别“may”意味着宣告对远程SMTP客户端上的STARTTLS的支持，但是客户端不需要使用加密。我在这里按照[mailgun文档](http://documentation.mailgun.com/user_manual.html#smtp-relay)提示使用“may”，但是如果你想要强制使用TLS加密，可以使用“encrypt”。

```
service postfix restart
# 发送一封测试邮件
echo test mail | mail -s "test"  test@yourdomain.com && sudo tail -f /var/log/maillog

```

你应该会看到以下信息

```
Aug 21 00:00:06 vps postfix/smtp[4997]: setting up TLS connection to smtp.mailgun.org[50.56.21.176]:587
Aug 21 00:00:06 vps postfix/smtp[4997]: Trusted TLS connection established to smtp.mailgun.org[50.56.21.176]:587: TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)

```

如果一切正常，你可以注释掉以下参数。

“smtp\_tls\_loglevel = 1”

对于故障排除，我推荐你阅读[Postfix小建议和排障命令](http://techarena51.com/index.php/postfix-configuration-and-explanation-of-parameters/)

---

via: <http://techarena51.com/index.php/configure-secure-postfix-email-server/>

作者：[Leo G](http://techarena51.com/) 译者：[GOLinux](https://github.com/GOLinux) 校对：[wxy](https://github.com/wxy)

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


如何在Ubuntu上使用MultiSystem创建多启动USB盘

Summary: 介绍 也许还有不少人不知道MultiSystem，它是一个用来在Linux系统中创建多启动usb盘的小型的开源软件。使用这个工具，我们可以在USB中创建任意多的可启动Linux发行版。你所需要的只是网络链接（只在MultiSystem安装的时候需要），以及一个足够大的USB盘，这取决于你想在USB盘中放入发行版的数量。 在 Ubuntu 14.10/14.04 安装MultiSystem 手动安装: 下载 MultiSystem脚本，并解压到任意地方。进入解压的地址，使用下面的命令运行脚本。 sudo ./install-depot-multisystem.sh  使用 PPA 安装: 当然，你也可以用下面的命令来更简单地使用PPA

这软件用了一年多了，真的很好用，装机必备！

# 如何在Ubuntu上使用MultiSystem创建多启动USB盘

### 介绍

也许还有不少人不知道**MultiSystem**，它是一个用来在Linux系统中创建多启动usb盘的小型的开源软件。使用这个工具，我们可以在USB中创建任意多的可启动Linux发行版。你所需要的只是网络链接（只在MultiSystem安装的时候需要），以及一个足够大的USB盘，这取决于你想在USB盘中放入发行版的数量。

### 在 Ubuntu 14.10/14.04 安装MultiSystem

#### 手动安装:

[下载 MultiSystem](http://liveusb.info/multisystem/install-depot-multisystem.sh.tar.bz2)脚本，并解压到任意地方。进入解压的地址，使用下面的命令运行脚本。

```
sudo ./install-depot-multisystem.sh

```

#### 使用 PPA 安装:

当然，你也可以用下面的命令来更简单地使用PPA来安装MultiSystem。

```
sudo apt-add-repository 'deb http://liveusb.info/multisystem/depot all main'
wget -q -O - http://liveusb.info/multisystem/depot/multisystem.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install multisystem

```

安装完之后，它会自动打开MultiSystem。只要点击关闭按钮退出。

### 安装之后

MultiSystem 安装完成后，可以插入你的USB，并通过Unity Dash或者菜单运行MultiSystem。

第一次启动时，MultiSystem界面看起来会像下面这样。

选择USB设备，点击**确认**按钮。如果你看到下面的错误窗口，不必担心，它说的是USB设备没有标签。点击OK让MultiSystem自动设置标签。

那么，拔出/重新插入USB，再次运行MultiSystem。选择USB盘，再次点击确认。现在，你被要求确认在USB中安装Grub2.点击OK继续。

最终，你会高兴地看到MultiSystem的界面。现在，时候创建多启动USB盘。

### 使用

MultiSystem非常容易使用。将ISO文件拖入MultiSystem窗口中。如果不行的话，点击底部的**cd 按钮**来选择ISO文件。

现在，MultiSystem会从ISO中拷贝文件，并让USB可启动。

相似地，你可以在你的USB中加入任意多的发行版。我这次加入了两个Linux发行版：CentOS 6.5和Android。

加完ISO文件后，你会在MultiSystem的主窗口中看到可启动的发行版列表了。

就是这样。我们的多启动USB盘就可以使用了。重启系统，并在BIOS中设置USB优先启动。选择你想要安装的发行版并开始安装系统。

此外，MultiSystem含有一些其它的选项：

* Grub 设置
* Grub 和 Burg 的bootloader更新
* 下载 LiveCD
* VirtualBox 安装
* 格式化USB盘
* 还有更多选项

这些额外选项可以在MultiSystem的**菜单**标签里面看到。

同样，你也可以在Ubuntu中使用QEMU或者Oracle VirtualBox测试多启动USB盘。

MultiSystem工具是我测试到现在最棒和最有用的一款工具。这款工具对那些想要在他们的机器上安装多个系统的人是非常有用的。在你外出的时候，你不必再携带CD/DVD袋了。只要买一个16GB或者32GB的USB就行，并下载所有你想要的系统，随心所欲的安装系统即可。

并且，一个对于Windows系统用户的好消息是它也支持Windows系统。我在Windows 7上测试过，它可以工作！

享受吧！

---

via: <http://www.unixmen.com/create-multiboot-usb-ubuntu-using-multisystem/>

作者：[SK](http://www.unixmen.com/author/sk/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

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