2014年11月

安卓0.9显示着横屏的主屏幕——后续一些版本无法实现的一个特性。

安卓 0.9 显示着横屏的主屏幕——后续一些版本无法实现的一个特性 [Ron Amadeo供图]

尽管从功能上很难将模拟器和操作系统区分开,但安卓 0.9 是第一个支持横屏显示的版本。更让人惊讶的是,几乎所有东西都支持横屏模式,在某些方面安卓 0.9 甚至做的比 KitKat 更好。在 Kiakat 中,主屏幕和拨号被锁定为竖向并且无法旋转。但在安卓 0.9 这里,对任何一个应用横向显示都不是问题。(有谁知道怎么把 Nexus 5 从 Kitkat 升/降级到安卓 0.9 吗?)

截图同样显示了安卓 0.9 中的新的音量显示设计。它抛弃了在 Milestone 3 中初次登场的旧铃铛式控制界面。那是一个巨大的,充满屏幕的界面。实际上,安卓 4.0 的重新设计中让它变得更小了,但它仍然是个问题。(你想增加音量却因此没法看到视频了这种情况特别烦人。)

新通知面板,抛弃了应用快捷方式并添加了顶部部分。

新通知面板,抛弃了应用快捷方式并添加了顶部部分 [Ron Amadeo供图]

几乎每个安卓版本中的通知面板都有一定的调整,安卓 0.9 也不例外。电池电量图标进行了重绘,变成了黑底绿色图标,其它的状态栏图标变为黑色,白色以及灰色。状态栏左侧部分明智地选择在通知面板打开的时候显示日期。

通知面板加入了一个新的顶部部分,它能够显示运营商名称(在模拟器里显示“安卓”),以及一个巨大的写着“清除通知”的按钮,它能够让你不用打开应用而彻底清除通知。应用程序图标被取消了,替换为通知到达的时间,“最新事件”文字被更换为简单的“通知”。面板的空白部分现在是灰色的而不是之前的白色,底部的滑动条也进行了重新设计。上面两张图片的底部看起来并没有对齐,但这是因为 Milestone 5 的通知面板在面板底部有一圈空白。安卓 0.9 的通知面板是完全直达底部边缘的。

安卓0.9和0.5的浏览器,展现出新的无色彩菜单。

安卓 0.9 和 0.5 的浏览器,展现出新的无色彩菜单 [Ron Amadeo供图]

浏览器主页现在是加载一个真正的网站,而不是像 Milestone 5 中那样的本地存储的假 Google 页面。Webkit 的版本升至 525.10,但是看起来它似乎没法正确渲染更现代的 Google.com 搜索按钮。纵观安卓 0.9,Milestone 5 中的菜单设计已经被抛弃,取而代之的是重新设计的灰色图标。这些截图的区别十分的明显,因为所有的颜色都被去除了。

“更趋向于”列表式的菜单变得更高了一点,并且只是一个没有图标的列表而已。安卓 0.9 已经获得了其它搜索方式,这次是在浏览器菜单里。和主屏幕小部件,主屏幕菜单按钮,以及浏览器主页,它们共同组成了四个搜索框。谷歌从未隐藏它的主要业务是什么,就连在它的操作系统中也是这样。

从左到右:安卓0.9的浏览器缩放控件,页面内搜索界面,浏览器窗口,以及设置。

从左到右:安卓 0.9 的浏览器缩放控件,页面内搜索界面,浏览器窗口,以及设置 [Ron Amadeo供图]

安卓 0.9 带来了许多浏览器改进。谢天谢地缩放控件又能正常使用了,而且从疯狂的垂直控制变成了简单的加减按钮。谷歌做了个符合常识的决定,将缩放控制从屏幕中间移到了屏幕底部。在这些缩放控件中,安卓在一致性方面的努力显而易见。这些看起来是系统中唯一的圆形按钮。

安卓 0.9 中的新特性“页面内查找”会高亮显示页面内的关键词。但总的来说,UI 还是十分粗糙的——文本框比它应有的高度高了许多,“完成”按钮带的勾选框对这个页面来说只是一种图标而已。“完成”基本上是个“关闭”按钮,这意味着它也许应该是个右对齐的“X”按钮。

这个版本的系统没有设置界面,但是浏览器最终还是有了自己的设置界面。它会有个桌面式选项的弹窗,Javascript,隐私和 cookie,保存的密码以及表单数据。甚至还有 Google Gears 整合(还记得 Google Gears 吗?)。

拨号盘以及打开菜单的正在通话界面。

拨号盘以及打开菜单的正在通话界面 [Ron Amadeo供图]

拨号和联系人在安卓0.9中实际上是同一个应用——两个图标只是打开不同的标签而已。将联系人像这样附到拨号盘表明了智能手机联系人的第一目的还是通话,不是短信,电子邮件,即时通讯或查找地址。最终谷歌还是会完全接受非传统的智能手机沟通,将联系人和拨号分为两个独立的应用程序。

Milestone 5中大多数拨号盘的缺陷在安卓0.9中得到了修复。“最小化”标签被一组正常的亮/暗标签替代。对话气泡式的退格键被替换为正常的退格图标并集成到了拨号数字显示界面。数字键变成了圆形,尽管这个系统的其它东西是圆角矩形的(至少这次文本是垂直对齐的)。谷歌还修复了Milestone 5中“-”键,“*”键和“#”键不平衡的问题。

在安卓0.9中点击显示的号码会开始一个通话。这是十分重要的,因为这是摆脱安卓设备硬件实体“拨号”和“结束”键的一大步。另一方面,来电界面却走的是完全相反的道路,去除了在安卓0.5中显示于屏幕之上的“接听”和“拒绝”按键。谷歌会花上接下来几个版本的时间去摸索在特定的显示之下是否需要硬件实体拨号键。但是直到安卓2.0和摩托罗拉Droid面世,实体拨号按钮才最终变成了可选选项。

来电界面的所有选项隐藏在目录按钮之后。Milestone 5不支持距离传感器,所以它采取了简单粗暴的路线,在通话过程中禁用触摸屏。安卓0.9为G1开发,它有个距离传感器。最终谷歌没有在通话的时候禁用触摸传感器。

安卓0.9和0.5中独立的联系人界面和联系人编缉界面。

安卓 0.9 和 0.5 中独立的联系人界面和联系人编缉界面 [Ron Amadeo供图]

Milestone 5 的一些联系人信息有令人困惑的标签,像电子邮件只被打上“主要的”标签而不是“主电子邮箱”标签。安卓 0.9 用各部分的水平标题纠正了这个错误。而且现在左侧的每个联系人类型都有了 手形图标 Action icons

编缉联系人界面如今是个更加繁忙的地方。每个输入框都有删除按钮,特定联系人铃声,一个显示在屏幕上的“更多信息”按钮用来添加输入框,一个是否将通话直接发送到语音信箱的复选框,以及在列表底部的“保存”和“放弃修改”按钮。从功能上来说,相对于旧版本这是个巨大的进步,但它看起来仍然很混乱。


Ron Amadeo / Ron 是Ars Technica的评论编缉,专注于安卓系统和谷歌产品。他总是在追寻新鲜事物,还喜欢拆解事物看看它们到底是怎么运作的。@RonAmadeo


via: http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/4/

译者:alim0x 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Systemd 是目前为止在Linux平台上最有争议的项目之一。它到底有多大的争议?它的争议大到systemd的开发者之一Lennart Poettering 声称有人使用比特币雇佣职业杀手要干掉他。但是还是有比较理智的做法的,有一个抵制systemd网站在技术角度上提出了抵制systemd的原因。

如此强烈的抵制也反映了systemd的成功。它已经被或将要被Fedroa、OpenSUSE、Ubuntu、Debian、Arch Linux等众多发行版采用。随着时间推移,GNOME越来越依赖它,Debian回归GNOME的原因之一就是它采用了systemd。systemd无处不在!

那么如此激烈的争论到底是关于什么呢?让我们近距离观察这场战争。

Systemd是一个全新的init

Systemd的核心是取代老旧的SysV init。init用来初始化你的操作系统,当你启动系统时,init负责加载需要的驱动,激活你的网络链接,启动众多的系统服务,最后进入图形登陆界面。而SysV init 是一个老旧的系统,它基本上仅运行/etc/init.d目录下的一些脚本。

Systemd是一个现代技术,用以取代老旧以及粗糙的SysV init。它可以在接收到事件响应时启动相关服务;比如,当你接入了一个USB打印机,systemd可以在接收到设备接入响应时启动打印服务。当它接收到某个网络端口的连接请求时,它可以启动在此端口上监听的服务并且传递这个连接。

获取更多关于SysV init 与 systemd的信息,可以参考Jorgen Schäfer的 “Why systemd?

但是systemd远不止此

systemd的反对者之中也有部分人认为SysV太老了,应该被取代掉。但是批评systemd的人发现Systemd是一个巨大的项目,其中包括了很多其他的功能。它是一个软件套件,而不仅仅是一个init。

An illustration of systemd's structure.

维基共享资源 systemd 结构图解

Systemd包括用于管理用户登陆的守护进程logind,还包括journald,并且journald 颇有争议的使用了二进制形式保存系统日志而不是以文本形式。systemd也采用了udev的思想及代码,它对/dev/目录下的虚拟设备文件进行管理,并且处理设备接入或推出时所产生的事件。除了这些还有很多其他的,如:systemd还包括了cron风格的任务调度器与网络守护进程networkd等等。

抨击者认为systemd不是类UNIX风格

多数的抱怨源于人们认为systemd项目太大以至于超出了它的工作范围,并且它从Linux系统接管的部分太多了。不要感到惊奇,systemd的抵制活动是以下面的抱怨开始的:

"systemd文件是一大堆的复杂的高度耦合的二进制组成的,这违反了UNIX哲学:‘做一件事情,并把它做好’。它超出了一个init程序的职责范围,因为它还有电源管理,设备管理,挂载管理,cron(定时执行工具),磁盘加密,socket接口/inetd,syslog,网络配置,登陆/会话管理,文件预读,GPT分区发现,容器注册,hostname/locale/time管理,mDNS/DNS-SD等功能,它将Linux控制台以及其他的一些功能都包装在一个程序里面。

那么,systemd是好是坏?

到这里,我判断一下,到底谁是正确的。

systemd最初的想法是非常好的。Linux需要一个新的东西来替换老的 SysV init 和沉重的 SysV init 脚本,这个新的程序应该是灵活的,现代化的系统守护进程,它可以响应更多类型,并且智能化的管理众多的守护进程。然而,事实上systemd好像成为了一个仅依赖Linux核心的完全统一的系统层

但是,尽管Linux是一个社区开发项目,但它不是为PC世界的专栏作家或者是一群网络评论者提供的,这些人都不能决定它的进化与发展。只有那些亲手贡献代码以及全身心投入的人才有这个资格。巧的是,Linux发行版以及那些参与者好像大部分都倾向与systemd。

'我对于systemd本身并没有很强烈的个人看法。我与核心开发人员争论过它的bug与兼容性,并且我认为它的一些设计是愚蠢的(比如二进制的日志),但这只是细节,不是大问题。

如果 Linus Torvalds 对于systemd的设计没有什么反对意见,那么说明它可能还是不错的。如果你想平静的看下为什么Linux发行版要使用systemd的话,我推荐这篇文章,Debian's systemd discussion document

你是如何看systemd的,可以在评论回复!但是请文明讨论。

更新这篇文章以澄清之前的错误的消息,ubuntu 桌面版将在下一个版本中纳入systemd。之前我们错误的认为ubuntu已经使用了systemd


via: http://www.pcworld.com/article/2841873/meet-systemd-the-controversial-project-taking-over-a-linux-distro-near-you.html

作者:Chris Hoffman 译者:SPccman 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

编者按:Debian 8 Jessie的 init 系统默认使用 systemd,这一选择在社区引发了大量争议,导致了技术委员会的多名成员辞职。现在,“老兵 Unix 管理员”宣布要创建一个新的不使用 sytemd 的 Debian 分支。这群 Unix 哲学拥护者们请求外界捐赠支持他们的新使命。

以下内容来自 debianfork.org 的相关内容:


// 更新: 项目名称正式命名为:Devuan

我们是谁?!

我们是老兵 Unix 管理员(Veteran Unix Admins),我们非常关注 Debian GNU/Linux 在 systemd 上的分歧,并且决定分支(fork)Debian 项目。

为什么我们要这样做?

我们中的一些人是上游开发者,一些人是专业的系统管理员:我们每天都要和 Debian 打各种交道。

我们不想被强迫使用 systemd 来替代传统的 UNIX sysvinit 初始化系统,因为 systemd 背离了 UNIX 哲学。

我们考虑采用贴近 sysvinit 的架构,而不是那种破坏了“做一件事,把它做好”的原则、带着数十个紧密耦合的二进制文件和不透明的日志的东西。

有比创建分支更好的解决方案么?

不幸的是,目前没有!

在下一代的 Debian v.8 "Jessie" 发行版中,默认的初始化系统将是 systemd,它将挟裹着一堆紧密纠缠的东西来到。

我们需要分离这些依赖的牵扯,从所有受到影响的软件包中清除这些,并提供相应的替代品。我们所要创建的分支的稳定性是目前阶段所要考虑的首要重点。

你觉得为什么会走到了这一步?

现在的 Debian 项目的领导者受到了 GNOME 开发者太多的影响,而且在项目中考虑了太多的桌面需求的因素,而 Debian 用户却大多数是精通技术的系统管理员。

而且,今天 Debian 正逐渐背离自己最初愿景,也是开源软件的基石:用户至上。这到底是怎么了?所谓的“do-ocracy”开发者和包维护者正在给用户强加他们的选择。

你可以说一下你对 systemd 的意见吗?

套用一下 Eric S. Raymond 在这个问题上的看法,我们认为 systemd 很容易就会发生嬗变,进而臃肿不堪、最后变成了那种讨厌的纠结在一起的毛球。

我们希望能够用可以阅读的 shell 脚本来控制系统的启动,因为可读性能够给我们这些有能力的人更多的控制和洞悉。我们认为,在一个守护进程中集中控制服务、socket、设备、挂载等等,是对传统的 UNIX 哲学的一记响亮耳光。

某些支持 systemd 的人对此的快速回应可以在 forkfedora.org (已经关闭,需要翻墙才能看历史归档)上看到。这个页面突出了两者之间的根本不同:systemd 也许对于配置 init 来说很简单,但是它增加了 init 过程中的不透明度。在 systemd 中很明确是这样的:可以通过更少的变量来调整,而通过远超 sysvinit 大小的程序将大部分细节隐藏在一个巨大的二进制程序里面。

  ls -lH /sbin/init
  sysvinit: -rwxr-xr-x 1 root root 36992 Jul 14  2013 /sbin/init
  systemd: -rwxr-xr-x 1 root root 1317632 Sep  1 14:41 /sbin/init
# 你也许认为我不够强大,但是你也太胖了!

可以说 systemd 的安全模式更多的依赖于开发者和包维护者,而不怎么指望系统管理员。作为 Debian 用户,我们只是希望不要被强迫必须如此,看看 CTTE 关于这个问题的投票就会知道,我们相信这样下去会越来越多的听到用户要求:放开那个 Init !不要和 systemd 和它的那堆零碎纠缠在一起。

你们能坚持多久?

这不是比谁的胡子更长,放心,毛茸茸的不总是绵羊!

概括一下计划?

“放开那个 Init”( Init Freedom),这是我们的承诺,我们会建立一个 Debian 项目的分支,创建一个新的基础发行版。

这需要一些时间,我们会一步步来。

首先我们会配合 Debian 8 "Jessie" 的发布,给当前的 Debian 用户平滑升级提供一个完整的解决方案。

如果你也需要这个,请帮助我们: 捐赠 或者参与进来。

我们需要谈谈。

当然,您可以写电子邮件给 [email protected]

我们也有一些人聚集在 IRC , Freenode 频道号是 #debianfork ,欢迎加入。

可以订阅邮件列表。喜欢的话来发布意见吧,不管是什么。

只有你们这些家伙吗?

不是,有很多用户都对 systemd 有意见。

有一篇文章是对这个问题的很好的介绍: Systemd: Linux 世界末日的预兆

有个 boycott systemd 网站也有一些相关的资料。那里有个叫做 uselessd 的 “systemd 分支”,有些不错的地方和许多笑点(lulz)。

还有人提出了一个 当世界 systemd 了之后的撤退战略。

在维基百科的 systemd reception 章节也有一些对其提出的批评意见。

谢谢你做的这些,我怎么帮助你们?

老兵 Unix 管理员(Veteran Unix Admins)的一个小型的核心小组正在积极建设分支的相关框架和一些用于开发的基础设施。

这时的捐赠有助于我们确定可以在基础架构上投入多少以及人们的对我们的预期。

如果你会捐赠,那么来吧

如我们现在做的,我们会在此一直更新我们的项目进展。

对于你做的这些,人们是怎么看的?

下面是我们收到的一些邮件(略,请参照原链接),我们会匿名发表这些信息,除非你申明不用。

我们会保密你的邮件地址,并会通知你我们的下一步进展。

问题:我需要找出我的Linux系统上的GNU C库(glibc)的版本,我怎样才能检查Linux上的glibc版本呢?

GNU C库(glibc)是标准C库的GNU实现。glibc是GNU工具链的关键组件,用于和二进制工具和编译器一起使用,为目标架构生成用户空间应用程序。

当从源码进行构建时,一些Linux程序可能需要链接到某个特定版本的glibc。在这种情况下,你可能想要检查已安装的glibc信息以查看是否满足依赖关系。

这里介绍几种简单的方法,方便你检查Linux上的glibc版本。

方法一

下面给出了命令行下检查GNU C库的简单命令。

$ ldd --version 

在本例中,glibc版本是2.19

方法二

另一个方法是在命令行“输入”glibc 库的名称(如,libc.so.6),就像命令一样执行。

输出结果会显示更多关于glibc库的详细信息,包括glibc的版本以及使用的GNU编译器,也提供了glibc扩展的信息。glibc变量的位置取决于Linux版本和处理器架构。

在基于Debian的64位系统上:

$ /lib/x86_64-linux-gnu/libc.so.6

在基于Debian的32位系统上:

$ /lib/i386-linux-gnu/libc.so.6

在基于Red Hat的64位系统上:

$ /lib64/libc.so.6

在基于Red Hat的32位系统上:

$ /lib/libc.so.6

下图中是输入glibc库后的输出结果样例。


via: http://ask.xmodulo.com/check-glibc-version-linux.html

译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

如今很多系统管理员依然通过组合使用诸如ifconfig、route、arp和netstat等命令行工具(统称为net-tools)来配置网络功能,解决网络故障。net-tools起源于BSD的TCP/IP工具箱,后来成为老版本Linux内核中配置网络功能的工具。但自2001年起,Linux社区已经对其停止维护。同时,一些Linux发行版比如Arch Linux和CentOS/RHEL 7则已经完全抛弃了net-tools,只支持iproute2。

作为网络配置工具的一份子,iproute2的出现旨在从功能上取代net-tools。net-tools通过procfs(/proc)和ioctl系统调用去访问和改变内核网络配置,而iproute2则通过netlink套接字接口与内核通讯。抛开性能而言,iproute2的用户接口比net-tools显得更加直观。比如,各种网络资源(如link、IP地址、路由和隧道等)均使用合适的对象抽象去定义,使得用户可使用一致的语法去管理不同的对象。更重要的是,到目前为止,iproute2仍处在持续开发中。

如果你仍在使用net-tools,而且尤其需要跟上新版Linux内核中的最新最重要的网络特性的话,那么是时候转到iproute2的阵营了。原因就在于使用iproute2可以做很多net-tools无法做到的事情。

对于那些想要转到使用iproute2的用户,有必要了解下面有关net-tools和iproute2的众多对比。

显示所有已连接的网络接口

下面的命令显示出所有可用网络接口的列表(无论接口是否激活)。

使用net-tools

$ ifconfig -a 

使用iproute2

$ ip link show 

激活或停用网络接口

使用这些命令来激活或停用某个指定的网络接口。

使用net-tools

$ sudo ifconfig eth1 up
$ sudo ifconfig eth1 down 

使用iproute2

$ sudo ip link set down eth1
$ sudo ip link set up eth1 

为网络接口分配IPv4地址

使用这些命令配置网络接口的IPv4地址。

使用net-tools

$ sudo ifconfig eth1 10.0.0.1/24 

使用iproute2

$ sudo ip addr add 10.0.0.1/24 dev eth1 

值得注意的是,可以使用iproute2给同一个接口分配多个IP地址,ifconfig则无法这么做。使用ifconfig的变通方案是使用IP别名

$ sudo ip addr add 10.0.0.1/24 broadcast 10.0.0.255 dev eth1
$ sudo ip addr add 10.0.0.2/24 broadcast 10.0.0.255 dev eth1
$ sudo ip addr add 10.0.0.3/24 broadcast 10.0.0.255 dev eth1

移除网络接口的IPv4地址

就IP地址的移除而言,除了给接口分配全0地址外,net-tools没有提供任何合适的方法来移除网络接口的IPv4地址。相反,iproute2则能很好地完全。

使用net-tools

$ sudo ifconfig eth1 0 

使用iproute2

$ sudo ip addr del 10.0.0.1/24 dev eth1 

显示网络接口的IPv4地址

按照如下操作可查看某个指定网络接口的IPv4地址。

使用net-tools

$ ifconfig eth1 

使用iproute2

$ ip addr show dev eth1 

同样,如果接口分配了多个IP地址,iproute2会显示出所有地址,而net-tools只能显示一个IP地址。

为网络接口分配IPv6地址

使用这些命令为网络接口添加IPv6地址。net-tools和iproute2都允许用户为一个接口添加多个IPv6地址。

使用net-tools

$ sudo ifconfig eth1 inet6 add 2002:0db5:0:f102::1/64
$ sudo ifconfig eth1 inet6 add 2003:0db5:0:f102::1/64

使用iproute2

$ sudo ip -6 addr add 2002:0db5:0:f102::1/64 dev eth1
$ sudo ip -6 addr add 2003:0db5:0:f102::1/64 dev eth1

显示网络接口的IPv6地址

按照如下操作可显示某个指定网络接口的IPv6地址。net-tools和iproute2都可以显示出所有已分配的IPv6地址。

使用net-tools

$ ifconfig eth1 

使用iproute2

$ ip -6 addr show dev eth1 

移除网络设备的IPv6地址

使用这些命令可移除接口中不必要的IPv6地址。

使用net-tools

$ sudo ifconfig eth1 inet6 del 2002:0db5:0:f102::1/64

使用iproute2

$ sudo ip -6 addr del 2002:0db5:0:f102::1/64 dev eth1

改变网络接口的MAC地址

使用下面的命令可篡改网络接口的MAC地址,请注意在更改MAC地址前,需要停用接口。

使用net-tools

$ sudo ifconfig eth1 hw ether 08:00:27:75:2a:66 

使用iproute2

$ sudo ip link set dev eth1 address 08:00:27:75:2a:67

查看IP路由表

net-tools中有两个选择来显示内核的IP路由表:route和netstat。在iproute2中,使用命令ip route。

使用net-tools

$ route -n

$ netstat -rn 

使用iproute2

$ ip route show 

添加和修改默认路由

这里的命令用来添加或修改内核IP路由表中的默认路由规则。请注意在net-tools中可通过添加新的默认路由、删除旧的默认路由来实现修改默认路由。在iproute2使用ip route命令来代替。

使用net-tools

$ sudo route add default gw 192.168.1.2 eth0
$ sudo route del default gw 192.168.1.1 eth0 

使用iproute2:

$ sudo ip route add default via 192.168.1.2 dev eth0
$ sudo ip route replace default via 192.168.1.2 dev eth0

添加和移除静态路由

使用下面命令添加或移除一个静态路由。

使用net-tools

$ sudo route add -net 172.16.32.0/24 gw 192.168.1.1 dev eth0
$ sudo route del -net 172.16.32.0/24 

使用iproute2

$ sudo ip route add 172.16.32.0/24 via 192.168.1.1 dev eth0
$ sudo ip route del 172.16.32.0/24 

查看套接字统计信息

这里的命令用来查看套接字统计信息(比如活跃或监听状态的TCP/UDP套接字)。

使用net-tools

$ netstat
$ netstat -l 

使用iproute2

$ ss
$ ss -l 

查看ARP表

使用这些命令显示内核的ARP表。

使用net-tools:

$ arp -an 

使用iproute2:

$ ip neigh 

添加或删除静态ARP项

按照如下操作在本地ARP表中添加或删除一个静态ARP项

使用net-tools

$ sudo arp -s 192.168.1.100 00:0c:29:c0:5a:ef
$ sudo arp -d 192.168.1.100 

使用iproute2

$ sudo ip neigh add 192.168.1.100 lladdr 00:0c:29:c0:5a:ef dev eth0
$ sudo ip neigh del 192.168.1.100 dev eth0 

添加、删除或查看多播地址

使用下面的命令配置或查看网络接口上的多播地址。

使用net-tools:

$ sudo ipmaddr add 33:44:00:00:00:01 dev eth0
$ sudo ipmaddr del 33:44:00:00:00:01 dev eth0
$ ipmaddr show dev eth0
$ netstat -g 

使用iproute2

$ sudo ip maddr add 33:44:00:00:00:01 dev eth0
$ sudo ip maddr del 33:44:00:00:00:01 dev eth0
$ ip maddr list dev eth0 

via: http://xmodulo.com/2014/09/linux-tcpip-networking-net-tools-iproute2.html

作者:Dan Nanni 译者:KayGuoWhu 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Libav是一款跨平台的工具库,能够用来处理多媒体文件、流和协议。它最初是源自ffmpeg。Libav带有一些工具,比如:

  • Avplay: 一款视频音频播放器。
  • Avconv: 能够记录多个设备输入源的一个多媒体转换器和视频音频录制器。
  • Avprobe: 一个连接多媒体文件流并且返回关于这个文件流的统计信息的工具。
  • Libavfilter: 一个Libav工具的过滤器(filtering)API。

在这篇文章里面,我们就要展示如何通过'Avconv'程序在Debian/Ubuntu/Linux Mint发行版上录制Linux桌面视频音频。

第一步:下载 Avconv 工具

1. avconv是 “libav-tools” 的一部分, 可以通过官方的基于debian的仓库下载,比如Mint、Ubuntu。输入下面命令即可:

$ sudo apt-get update
$ sudo apt-get install libav-tools

Install Avconv Tool

下载Avconv工具

注意: 如果从默认仓库下载的话, ‘avconv’ 的版本可能比较老。 因此我们推荐你拉取最新的git官方版本。

$ sudo apt-get install yasm
$ git clone git://git.libav.org/libav.git
$ cd libav
$ ./configure
$ make
$ sudo make install

注意: 你应该运行 ‘./configure –help’ 来列出所有的可选配置选项并且安装相应的解码器和库,你还需要做很多工作来解决依赖问题。

也要注意,如果你是从源代码编译的,就需要使用sudo avconv而不是avconv来运行这个工具。

第二步:开始录制桌面视频

2.一切就绪,现在可以通过运行下面的命令录制你的视频了:

$ avconv -f x11grab -r 25 -s 1920x1080 -i :0.0 -vcodec libx264 -threads 4 $HOME/output.avi

简单解释一下这个命令:

  • avconv -f x11grab 默认从X服务捕捉画面。
  • -r 25 这是你需要的视频帧率,可以自行设置。
  • -s 1920×1080 是你的系统的桌面分辨率,要设置成你当前桌面的分辨率,这一点非常重要。
  • -i :0.0 我们要记录的位置(X 服务输出端口),设置成这样就可以了。
  • -vcodec libx264 我们用来录制视频的编码器。
  • -threads 4 线程数,可以根据情况更改。
  • $HOME/output 输出的目标文件路径。
  • .avi 使用的视频格式,可以换成 “flv”、“mp4″、 “wmv”、 “mov”、 “mkv”等。

3.在运行命令之后,就会在terminal上自动运行一个进程进行记录,按"Ctrl+C"键来终止记录。

Record Desktop Screen

录制桌面视频

4. 现在,你可以使用VLC或者其他的播放器,或者使用来自Libav包里的播放器"avplay"来播放你录制的视频。

$ avplay $HOME/output.avi

注意: 别忘了替换输出文件的路径为你自己的,录制效果还是很好的。

Play Recorded Video

播放录制的文件

这有一段我用 “avconv” 录制的视频 (墙外)。

第三步: 开始录制桌面的音频和视频

5. 如果也想同时录制音频,先运行这个命令,列出所有的音频输入源:

$ arecord -l

结果类似这样:

Check Audio Input

检查音频输入源

在我这里,我只有一个音频输入源,所以数量是1,这就是我使用如下命令来捕捉我的视频以及麦克风的音频的原因。

$ avconv -f alsa -i hw:1 -f x11grab -r 25 -s 1920x1080 -i :0.0 -vcodec libx264 -threads 4 output-file2.avi

我修改了部分地方,下面做个简短的解释:

  • -f alsa 一个从alsa设备捕捉声音的选项。
  • -i hw:1 是一个从 “hw:1” 设备捕捉音频的选项,这个设备是我电脑上仅有的一个音频输入设备。

注意: 如果你想用arecord -l显示的1之外的设备的话,别忘了替换 “1”。

结束录制,再来一次“Ctrl + C” 就可以。

第四步: 开始录制桌面音频

6. 如果只想录制音频的话,使用下面的命令。

$ avconv -f alsa -i hw:1 out.wav

7. 替换成 .mp3 等Libav支持的格式都可以,播放 out.wav就能听到你自己的声音了。

Record Desktop Audio

录制桌面音频

最后

avconv” 工具可以用来做很多其他事情,不仅仅是录制桌面视频,更多的教程和文档请移步到官网。

你对"avconv"的体验如何,你使用过其他工具录制桌面视频么?在评论里面和我们分享吧。


via: http://www.tecmint.com/record-ubuntu-desktop-screen-using-avconv/

作者:Hanny Helal 译者:ggaaooppeenngg 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出