前言
第一次在 CSDN 开个博客,写点自己学习的东西。
首先就先写个 Ubuntu Snappy 的专题,我知道英文的网站以及 Ubuntu 官方网站已经有很多文章介绍了,我尽量翻译并结合自己的心得写一些,也为一些不太懂英文的同学有个借鉴的地方。我也不怎么喜欢码字,所以写的不一定很多,有些东西可能就是简单说说,有问题的欢迎留言。写太多了,我写着累,看官们看着更累。那么废话不多说了,先说说 Snappy
什么是 Snappy
http://www.ubuntu.com/cloud/snappy
特点
简单说就是用于物联网的 Ubuntu 操作系统。特点是原子性的升级,支持升级失败回滾到之前的版本。感觉设计还是比较先进的。特点大致如下:
- 操作系统和应用程序完全隔离
- 事务性的,image-based 增量更新,应用程序可回滾
- 文件只读(不清楚这段什么意思,以后弄清楚再补充)
- 支持签名 (signatures) 和手印 (fingerprint) (以后清楚再补充)
- 增量管理,保证只下更新的部分
Snappy 因为这些特点,特别适合于在 IoT (Internet of Things) 物联网上使用。可以安装在机器人,汽车,商用/家用 交换机/路由器,无人机等各个领域里。
Snappy 架构
看得出底层是 Ubuntu core, 就是最小的 Ubuntu 操作系统,上面是构架,再上就是应用了
Snappy 安装
https://developer.ubuntu.com/en/snappy/start/
这里有详尽的安装方法,简单说就是可以安装到你的 Rasberry PI 上,Beaglebone 的板子上,可以在云计算里,还可以在物理机及虚拟机上安装。这里,我用的是 KVM 虚拟机,使用 libvirt + virt-manager 进行管理,挺方便的。如果就在本机上试,也可以用 vagrant + virtualbox 进行实验,这个也很方便,推荐。
Snappy 的简单之旅
https://developer.ubuntu.com/en/snappy/start/using-snappy/
安装完了之后登录进去,首先看看系统信息
$ snappy info
release: ubuntu-core/15.04/stable
architecture: amd64
frameworks:
apps:
这是最基本的系统,还没有安装应用程序。
显示已安装的组件:
$ snappy list -v
Name Date Version Developer
ubuntu-core 2015-11-13 10 ubuntu*
docker 2015-11-30 1.6.2.005 canonical*
hello-world 2015-11-30 1.0.18 canonical*
webdm 2015-11-13 0.9.4 canonical*
generic-amd64 2015-11-13 1.4 canonical*
搜索,安装软件:
$ snappy search docker Name Version Summary matrix.mectors 0.0.11 matrix go-ether.mectors 0.0.3 go-ether docker 1.6.2.005 Docker
$ sudo snappy install docker Installing docker Starting download of docker 8.36 MB / 8.36 MB [========================================] 100.00 % 1016.85 KB/s Done Starting download of icon for package 21.58 KB / 21.58 KB [======================================>_] 100.00 % 72.56 KB/s Done Name Date Version Developer ubuntu-core 2015-11-13 10 ubuntu docker 2015-12-02 1.6.2.005 canonical hello-world 2015-11-30 1.0.18 canonical webdm 2015-11-13 0.9.4 canonical generic-amd64 2015-11-13 1.4 canonical
Snappy Help
$ snappy --help Usage: snappy [OPTIONS]Help Options: -h, --help Show this help message Available commands: activate Activate a package booted internal build Builds a snap package (aliases: bu) config Set configuration for an installed package. console Run snappy console interface deactivate Deactivate a package firstboot internal grub-migrate internal hw-assign Assign a hardware device to a package hw-info List assigned hardware device for a package hw-unassign Unassign a hardware device to a package info Display a summary of key attributes of the snappy system. install Install a snap package internal-run-hooks internal internal-unpack internal list List active components installed on a snappy system (aliases: li) login Log into the store man produces manpage purge Remove all the data from the listed packages remove Remove a snapp part rollback Rollback to a previous version of a package search Search for packages to install (aliases: se) service Query and modify snappy services set Set properties of system or package update Update all installed parts versions (deprecated) please use "list"
再通过 snappy 安装个 hello-world
$ sudo snappy install hello-world
$ snappy info release: ubuntu-core/15.04/stable architecture: amd64 frameworks: docker.canonical apps: hello-world.canonical
看到 docker 是构架, hello-world 是应用程序。
构架对系统的影响或者扩展多一些,所以对 framework 的应用也要严一些;应用程序对系统不造成影响,可以直接从安装源或其他 vendor 那获取安装包安装
如果发现了有系统组件有更新,还可以通过 update 命令更新
$ sudo snappy update ubuntu-core
因为我当前的系统是最新的,所以没有更新,看原链接里的例子,ubuntu-core 有更新,那么可以通过更新到最新版本,然后重启系统,这时系统就进行最新的系统了,旧系统还在,如果有什么问题,可以随时通过回滾到老版本
$ sudo snappy rollback ubuntu-core Setting ubuntu-core to version 3 Name Date Version Developer ubuntu-core 2015-06-11 2 ubuntu! Reboot to use the new ubuntu-core.
然后重启系统,系统又退回到老版本了,对于 IoT 设备,是不是很关键而且必须的特性?
今天先写到这里,随着进行深入的学习,我再继续进行更新。敬请期待