Ferdinand Thommes 发布的文章

物联网(Internet of Things, IoT) 时代即将来临。很快,过不了几年,我们就会问自己当初是怎么在没有物联网的情况下生存的,就像我们现在怀疑过去没有手机的年代。Canonical 就是一个物联网快速发展却还是开放市场下的竞争者。这家公司宣称自己把赌注压到了IoT 上,就像他们已经在“云”上做过的一样。在今年一月底,Canonical 启动了一个基于Ubuntu Core 的小型操作系统,名字叫做 Ubuntu Snappy Core

Snappy 代表了两种意思,它是一种用来替代 deb 的新的打包格式;也是一个用来更新系统的前端,从CoreOS、红帽子和其他系统借鉴了原子更新这个想法。自从树莓派 2 投入市场,Canonical 很快就发布了用于树莓派的Snappy Core 版本。而第一代树莓派因为是基于ARMv6 ,Ubuntu 的ARM 镜像是基于ARMv7 ,所以不能运行ubuntu 。不过这种状况现在改变了,Canonical 通过发布 Snappy Core 的RPI2 镜像,抓住机会证明了Snappy 就是一个用于云计算,特别是用于物联网的系统。

Snappy 同样可以运行在其它像Amazon EC2, Microsofts Azure, Google的 Compute Engine 这样的云端上,也可以虚拟化在 KVM、Virtuabox 和vagrant 上。Canonical Ubuntu 已经拥抱了微软、谷歌、Docker、OpenStack 这些重量级选手,同时也与一些小项目达成合作关系。除了一些创业公司,比如 Ninja Sphere、Erle Robotics,还有一些开发板生产商,比如 Odroid、Banana Pro, Udoo, PCDuino 和 Parallella 、全志,Snappy 也提供了支持。Snappy Core 同时也希望尽快运行到路由器上来帮助改进路由器生产商目前很少更新固件的策略。

接下来,让我们看看怎么样在树莓派 2 上运行 Ubuntu Snappy Core。

用于树莓派2 的Snappy 镜像可以从 Raspberry Pi 网站 上下载。解压缩出来的镜像必须写到一个至少8GB 大小的SD 卡。尽管原始系统很小,但是原子升级和回滚功能会占用不小的空间。使用 Snappy 启动树莓派 2 后你就可以使用默认用户名和密码(都是ubuntu)登录系统。

sudo 已经配置好了可以直接用,安全起见,你应该使用以下命令来修改你的用户名

$ sudo usermod -l <new name> <old name> 

或者也可以使用adduser 为你添加一个新用户。

因为RPI缺少硬件时钟,而 Snappy Core 镜像并不知道这一点,所以系统会有一个小 bug:处理某些命令时会报很多错。不过这个很容易解决:

使用这个命令来确认这个bug 是否影响:

$ date 

如果输出类似 "Thu Jan 1 01:56:44 UTC 1970", 你可以这样做来改正:

$ sudo date --set="Sun Apr 04 17:43:26 UTC 2015" 

改成你的实际时间。

现在你可能打算检查一下,看看有没有可用的更新。注意通常使用的命令是不行的:

$ sudo apt-get update && sudo apt-get distupgrade 

这时系统不会让你通过,因为 Snappy 使用它自己精简过的、基于dpkg 的包管理系统。这么做的原因是 Snappy 会运行很多嵌入式程序,而同时你也会试图所有事情尽可能的简化。

让我们来看看最关键的部分,理解一下程序是如何与 Snappy 工作的。运行 Snappy 的SD 卡上除了 boot 分区外还有3个分区。其中的两个构成了一个重复的文件系统。这两个平行文件系统被固定挂载为只读模式,并且任何时刻只有一个是激活的。第三个分区是一个部分可写的文件系统,用来让用户存储数据。通过更新系统,标记为'system-a' 的分区会保持一个完整的文件系统,被称作核心,而另一个平行的文件系统仍然会是空的。

如果我们运行以下命令:

$ sudo snappy update

系统将会在'system-b' 上作为一个整体进行更新,这有点像是更新一个镜像文件。接下来你将会被告知要重启系统来激活新核心。

重启之后,运行下面的命令可以检查你的系统是否已经更新到最新版本,以及当前被激活的是哪个核心

$ sudo snappy versions -a 

经过更新-重启两步操作,你应该可以看到被激活的核心已经被改变了。

因为到目前为止我们还没有安装任何软件,所以可以用下面的命令更新:

$ sudo snappy update ubuntu-core

如果你打算仅仅更新特定的OS 版本这就够了。如果出了问题,你可以使用下面的命令回滚:

$ sudo snappy rollback ubuntu-core

这将会把系统状态回滚到更新之前。

再来说说那些让 Snappy 变得有用的软件。这里不会讲的太多关于如何构建软件、向 Snappy 应用商店添加软件的基础知识,但是你可以通过 Freenode 上的IRC 频道 #snappy 了解更多信息,那个上面有很多人参与。你可以通过浏览器访问http://:4200 来浏览应用商店,然后从商店安装软件,再在浏览器里访问 http://webdm.local 来启动程序。如何构建用于 Snappy 的软件并不难,而且也有了现成的参考文档 。你也可以很容易的把 DEB 安装包使用Snappy 格式移植到Snappy 上。

尽管 Ubuntu Snappy Core 吸引了我们去研究新型的 Snappy 安装包格式和 Canonical 式的原子更新操作,但是因为有限的可用应用,它现在在生产环境里还不是很有用。但是既然搭建一个 Snappy 环境如此简单,这看起来是一个学点新东西的好机会。


via: http://xmodulo.com/ubuntu-snappy-core-raspberry-pi-2.html

作者:Ferdinand Thommes 译者:Ezio 校对:wxy

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

有些人只体验过Ubuntu或Mint的安装,却鼓起勇气想要安装Arch Linux,他们的学习道路是那样的陡峭和严峻,安装过程中半途而废的人数可能要比顺利过关的人多得多。如果你成功搭建并按你所需的配置好了Arch Linux,那么它已经把你培养成了一个饱经风霜的Linux用户。

即使有可以帮助你的维基为新手提供指南,对于那些想要征服Arch的人而言要求仍然太高。你需要至少熟悉诸如fdisk或mkfs之类的终端命令,并且听过mc、nano或chroot这些,并努力掌握它们。这让我回想起了10年前的Debian安装。

对于那些满怀抱负而又缺乏知识的生灵,有一个叫Evo/Lution Live ISO的ISO镜像格式安装器可以拯救他们。即便它貌似像发行版一样启动,但它其实除了辅助安装Arch Linux准系统之外啥都不干。Evo/Lution是一个项目,它旨在通过提供Arch的简单安装方式来为Arch的增加更多的用户基数,就像为那些用户提供全面帮助和文档的社区一样。在这样一个组合中,Evo是Live CD(不可安装),而Lution是个安装器本身。项目创立者看到了Arch及其衍生发行版的开发者和用户之间的巨大鸿沟,而想要在所有参与者之间构筑一个身份平等的社区。

项目的软件部分是命令行安装器Lution-AIS,它负责解释一个普通的纯净的Arch安装过程中的每一步。安装完毕后,你将获得Arch提供的没有从AUR添加任何东西的最新软件或其它任何自定义的包。

启动这个422MB大小的ISO镜像后,一个由显示在右边的带有选项快捷方式的Conky和一个左边等待运行安装器的LX-Terminal组成的工作区便呈现在我们眼前。

在通过右击桌面或使用ALT-i启动实际的安装器后,一个写满了16个等待运行的任务列表就出现在你面前了。除非你知道你在做什么,否则请将这些任务全部运行一遍。你可以一次运行,也可以进行选择,如1 3 6,或者1-4,也可以一次将它们全部运行,输入1-16。大多数步骤需要‘y’,即‘yes’,来确认,敲击回车即可。在此期间,你有足够的时间来阅读安装指南,它可以通过ALT-g来打开。当然,你也可以出去溜达一圈再回来。

这16个步骤分成“基础安装”和“桌面安装”两组。第一个组安装主要关注本地化、分区,以及安装启动器。

安装器带领你穿越分区世界,你可以选择使用gparted、gdisk,以及cfdisk。

创建完分区后(如,像截图中所示,用gparted划分/dev/sda1用于root,/dev/sda2用于swap),你可以在10个文件系统中选择其中之一。在下一步中,你可以选择内核(最新或长期支持LTS)和基础系统。

安装完你喜爱的启动加载器后,第一部分安装就完成了,这大约需要花费12分钟。这是在普通的Arch Linux中你第一次重启进入系统所处之处。

在Lution的帮助下,继续进入第二部分,在这一部分中将安装Xorg、声音和图形驱动,然后进入桌面环境。

安装器会检测是否在VirtualBox中安装,并且会自动为VM安装并加载正确的通用驱动,然后相应地设置systemd

在下一步中,你可以选择KDE、Gnome、Cinnamon、LXDE、Englightenment、Mate或XFCE作为你的桌面环境。如果你不喜欢臃肿的桌面,你也可以试试这些窗口管理器:Awesome、Fluxbox、i3、IceWM、Openbox或PekWM。

在使用Cinnamon作为桌面环境的情况下,第二部分安装将花费不到10分钟的时间;而选择KDE的话,因为要下载的东西多得多,所以花费的时间也会更长。

Lution-AIS在Cinnamon和Awesome上像个妩媚的小妖精。在安装完成并提示重启后,它就带我进入了我所渴望的环境。

我要提出两点批评:一是在安装器要我选择一个镜像列表时,以及在创建fstab文件时。在这两种情况下,它都另外开了一个终端,给出了一些文本信息提示。这让我花了点时间才搞清楚,原来我得把它关了,安装器才会继续。在创建fstab后,它又会提示你,而你需要关闭终端,并在问你是否想要保存文件时回答‘是’。

我碰到的第二个问题,可能与VirtualBox有关了。在启动的时候,你可以看到没有网络被检测到的提示信息。点击顶部左边的图标,将会打开我们所使用的网络管理器wicd。点击“断开”,然后再点击“连接”并重启安装器,就可以让它自动检测到了。

Evo/Lution看起来是个有价值的项目,在这里Lution工作一切顺利,目前还没有什么可告诉社区的。他们开启了一个全新的网站、论坛和维基,需要填充内容进去啊。所以,如果你喜欢这主意,加入他们的论坛并告诉他们吧。本文中的ISO镜像可以从此网站下载。


via: http://xmodulo.com/2014/09/install-arch-linux-easy-way-evolution.html

作者:Ferdinand Thommes 译者:GOLinux 校对:wxy

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

人类已经无法阻止 systemd 占领全世界的 Linux 系统了,唯一阻止它的方法是在你自己的机器上手动卸载它。到目前为止,systemd 已经创建了比任何软件都多的技术问题、感情问题和社会问题。这一点从“Linux 初始化软件之战”上就能看出,这场争论在 Debian 开发者之间持续了好几个月。当 Debian 技术委员会最终决定将 systemd 放到 Debian 8(代号 Jessie)的发行版里面时,其反对者试图通过多种努力来取代这项决议,甚至有人扬言要威胁那些支持 systemd 的开发者的生命安全。

这也说明了 systemd 对 Unix 传承下来的系统处理方式有很大的干扰。“一个软件只做一件事情”的哲学思想已经被这个新来者彻底颠覆。除了取代了 sysvinit 成为新的系统初始化工具外,systemd 还是一个系统管理工具。目前为止,由于 systemd-sysv 这个软件包提供的兼容性,那些我们使用惯了的工具还能继续工作。但是当 Debian 将 systemd 升级到214版本后,这种兼容性就不复存在了。升级措施预计会在 Debian 8 "Jessie" 的稳定分支上进行。从此以后用户必须使用新的命令来管理系统、执行任务、变换运行级别、查询系统日志等等。不过这里有一个应对方案,那就是在 .bashrc 文件里面添加一些别名。

现在就让我们来看看 systemd 是怎么改变你管理系统的习惯的。在使用 systemd 之前,你得先把 sysvinit 保存起来,以便在 systemd 出错的时候还能用 sysvinit 启动系统。这种方法只有在没安装 systemd-sysv 的情况下才能生效,具体操作方法如下:

# cp -av /sbin/init /sbin/init.sysvinit 

在紧急情况下,可以把下面的文本:

init=/sbin/init.sysvinit

添加到内核启动参数项那里。

systemctl 的基本用法

systemctl 的功能是替代“/etc/init.d/foo start/stop”这类命令,另外,其实它还能做其他的事情,这点你可以参考 man 文档。

一些基本用法:

  • systemctl - 列出所有单元(UNIT)以及它们的状态(这里的 UNIT 指的就是系统上的 job 和 service)
  • systemctl list-units - 列出所有 UNIT
  • systemctl start [NAME...] - 启动一项或多项 UNIT
  • systemctl stop [NAME...] - 停止一项或多项 UNIT
  • systemctl disable [NAME...] - 将 UNIT 设置为开机不启动
  • systemctl list-unit-files - 列出所有已安装的 UNIT,以及它们的状态
  • systemctl --failed - 列出开机启动失败的 UNIT
  • systemctl --type=mount - 列出某种类型的 UNIT,类型包含:service, mount, device, socket, target
  • systemctl enable debug-shell.service - 将一个 shell 脚本设置为开机启动,用于调试

为了更方便处理这些 UNIT,你可以使用 systemd-ui 软件包,你只要输入 systemadm 命令就可以使用这个软件。

你同样可以使用 systemctl 实现转换运行级别、重启系统和关闭系统的功能:

  • systemctl isolate graphical.target - 切换到运行级别5,就是有桌面的运行级别
  • systemctl isolate multi-user.target - 切换到运行级别3,没有桌面的运行级别
  • systemctl reboot - 重启系统
  • systemctl poweroff - 关机

所有命令,包括切换到其他运行级别的命令,都可以在普通用户的权限下执行。

journalctl 的基本用法

systemd 不仅提供了比 sysvinit 更快的启动速度,还让日志系统在更早的时候启动起来,可以记录内核初始化阶段、内存初始化阶段、前期启动步骤以及主要的系统执行过程的日志。所以,以前那种需要通过对显示屏拍照或者暂停系统来调试程序的日子已经一去不复返啦

systemd 的日志文件都被放在 /var/log 目录。如果你想使用它的日志功能,需要执行一些命令,因为 Debian 没有打开日志功能。命令如下:

# addgroup --system systemd-journal
# mkdir -p /var/log/journal
# chown root:systemd-journal /var/log/journal
# gpasswd -a $user systemd-journal 

通过上面的设置,你就可以以普通用户权限使用 journal 软件查看日志。使用 journalctl 查询日志可以获得一些比 syslog 软件更方便的玩法:

  • journalctl --all - 显示系统上所有日志,以及它的用户
  • journalctl -f - 监视系统日志的变化(类似 tail -f /var/log/messages 的效果)
  • journalctl -b - 显示系统启动以后的日志
  • journalctl -k -b -1 - 显示上一次(-b -1)系统启动前产生的内核日志
  • journalctl -b -p err - 显示系统启动后产生的“ERROR”日志
  • journalctl --since=yesterday - 当系统不会经常重启的时候,这条命令能提供比 -b 更短的日志记录
  • journalctl -u cron.service --since='2014-07-06 07:00' --until='2014-07-06 08:23' - 显示 cron 服务在某个时间段内打印出来的日志
  • journalctl -p 2 --since=today - 显示优先级别为2以内的日志,包含 emerg、alert、crit三个级别。所有日志级别有: emerg (0), alert (1), crit (2), err (3), warning (4), notice (5), info (6), debug (7)
  • journalctl > yourlog.log - 将二进制日志文件复制成文本文件并保存到当前目录

Journal 和 syslog 可以很好的共存。而另一方面,一旦你习惯了操作 journal,你也可以卸载掉所有 syslog 的软件,比如 rsyslog 或 syslog-ng。

如果想要得到更详细的日志信息,你可以在内核启动参数上添加“systemd.log\_level=debug”,然后运行下面的命令:

# journalctl -alb 

你也可以编辑 /etc/systemd/system.conf 文件来修改日志级别。

利用 systemd 分析系统启动过程

systemd 可以让你能更有效地分析和优化你的系统启动过程:

  • systemd-analyze - 显示本次启动系统过程中用户态和内核态所花的时间
  • systemd-analyze blame - 显示每个启动项所花费的时间明细
  • systemd-analyze critical-chain - 按时间顺序打印 UNIT 树
  • systemd-analyze dot | dot -Tsvg > systemd.svg - 为开机启动过程生成向量图(需要安装 graphviz 软件包)
  • systemd-analyze plot > bootplot.svg - 产生开机启动过程的时间图表

systemd 虽然是个年轻的项目,但已有大量文档。首先要介绍给你的是Lennart Poettering 的 0pointer 系列。这个系列非常详细,非常有技术含量。另外一个是免费桌面信息文档,它包含了最详细的关于 systemd 的链接:发行版特性文件、bug 跟踪系统和说明文档。你可以使用下面的命令来查询 systemd 都提供了哪些文档:

# man systemd.index 

不同发行版之间的 systemd 提供的命令基本一样,最大的不同之处就是打包方式。


via: http://xmodulo.com/2014/07/use-systemd-system-administration-debian.html

译者:bazz2 校对:wxy

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