Raspberry Pi 2B 体验 Ubuntu Core 系统

前些天看到 Ubuntu 针对 IoT 推出的系统有树莓派的版本,叫做 Snappy Ubuntu Core . 我的树莓派 2B 之前用着 CentOS 的 armhf 版,从15年到现在一直很稳定.但是挡不住对新鲜事物的尝试,今天就特地换 Ubuntu Core 来试试.

介绍

Snappy Ubuntu Core 是 Canonical 针对 IoT 和 Embedded 基于 Ubuntu 系统推出的精简定制版,其特点就是 Snap 包管理器.

Ubuntu Core 由 gadget snap, kernel snap , core snap , app snaps 四类包组成,其本质就可以理解为一个 snap 包集合,通过 snap 命令行,你可以安装/更新所有你要的, 包括 kernel 和 uboot.

安装

官网下载系统镜像,Windows 下直接解压后,使用 Win32DiskImage 写入到 TF 卡中,然后就是上电开机.

根据官网的指导说,需要注册一个 Ubuntu One 的帐号,上传一个 SSH Key, 然后还得接显示器与键盘后再登录注册的账号就可以使用自己的账号 SSH 远程登录.看起来好像很不错,实际这特别的麻烦,并且如果没有显示器/键盘/HDMI线中的任何一个 或者没有连接到公网,那开机就什么都干不了.

不幸的是,我恰好没 HDMI 线啊.

幸运的是,经过一番摸索,发现可以直接 SSH 登录,流程如下:
0. 系统镜像写入后,TF卡有个boot分区,该分区是可读写的,在该分区下建立一个名为ssh的空文件
1. 接入局域网,供电开机,登录路由查看分配给树莓派的 IP
2. 使用 SSH 登录,账号和密码都是 ubuntu
3. 第一次登录会提示必须重置密码,输入原密码确认后,再输入两次新密码后,就可以使用新密码登录了.

使用

其实就是 snap 服务的使用,关于 snap 的使用其实和 apt 有些类似,基本的操作有如下几个:

  • snap list 列出已安装的包,跟上参数--all则可以列出已装包的所有版本.
  • snap install <app name> ... 安装指定的包,跟上参数--classic可安装推荐版,--revision=<version>可以指定版本安装.
  • snap refresh <app name> ... 更新指定的包,不添加包名则会更新所有的包.
  • snap revert <app name> ... 还原指定包的上一个版本.
  • snap remove <app name> ... 删除指定的包
  • snap find <text to search> 根据关键字查找包名.

通常来说树莓派的TF的容量不会太大,我的只有32G,而 snap 更新包后,默认会保留2个旧的版本,也就是说系统中一个包最多会同时存在三个版本,这会占用大量的空间.因此,可以使用命令snap set system refresh.retain=2让它只保留当前的版本和上一个版本(最小2,最大20).