Ubuntu Core内容解析

关于Ubuntu Core

Ubuntu Core是一个非常小型的文件系统,主要面向物联网和大型容器部署。在Ubuntu的snap包管理系统中使用。

Ubuntu Core内容解析

目前Ubuntu正式对外发布的Ubuntu-core image是基于16.04版本的。我们就以此来解析Ubuntu core大致包含的内容。
用KVM启动Image后,Ubuntu Core需要配置网络并添加Ubunutu账户才能进入。注册账户后进入,这个Core Image默认是不会打开控制台的,而是显示信息,要求通过ssh连接。但是尝试了几次,注册的账户无法认证,这里我们没有使用这种方式,而是使用recure mode(添加single启动参数)进入了系统。
Ubuntu Core中没有dpkg包管理相关的信息,因此主要从启动脚本、可执行程序等方面进行判断并使用本地工具验证下来,主要包含的内容大致有:

  • 最小系统(可使用debootstrap构建)
  • cgmanager、acl、gawk等基础包
  • snappy支持包(snapd、apparmor等以及他们依赖库)
  • 硬件支持包(包含linux-firmware等固件)
  • 网络支持包(包含iptables、wpasupplicent、ubuntu-fan、ppp等以及依赖库)
  • 磁盘及分区支持工具(包含parted、dosfstools、gdisk等工具以及依赖库)
  • 启动支持包(grub、efi-bootmgr以及支持包)
  • openssh服务端
  • 键盘配置 keyboard-configuration
  • core.snap
  • pc-kenrel.snap
  • libc6:i386基础库
    并在此基础上做了少量的裁剪(可能包含裁剪本地dpkg数据库相关信息)。

自行尝试构建Core文件系统

记录一下根据Ubuntu Core自动构建类似的文件系统的过程(未包含安装snap包和生成可启动img的过程)。
利用debootstrap,基于Ubuntu16.04的源生产最小环境:
$ sudo debootstrap xenial /var/tmp/debootroot http://mirrors.ustc.edu/ubuntu

  • 对比两个环境的差异,安装软件包(后面是依赖):
    • apparmor: libapparmor-perl
    • cgmanager: libcap-ng0, libdbus, dbus, libnih-dbus1, libcgmanager0
    • keyboard-configration
    • openssh-server: ca-certificates, krb5-locales, libedit2, libgssapi-krb5-2, libkrbcrypto3, libkeyutils1, libkrb5-3, libhrb5support0, libwrap0, libx11-6, libxmuu1, ncurses-term, openssh-client, openssh-sftp-server, openssl, python3-chardet, python3-pkg-resources, python3-requests, python3-urllib3, python3-six, ssh-import-id, tcpd, wget xauth
    • ubuntu-fan: bridge-utils, dns-root-data, dnsmasq-base, libnetfilter-conntrack3, libnfnetlink0
    • acl
    • efibootmgr: libefivar0
    • apparmor-easyprof: python3-libapparmor, python3-apparmor
    • gawk: libmpfr4, libsigsegr2
    • grub2-common: gettext-base, libasprintf0v5, libfuse2, libfreetype6, grub-common, os-probe
    • xdg-utils: 53个包
    • snapd:liblzo2, squashfs-tools,ubuntu-core-launcher
    • wpasupplicant: libnl-3-200, libnl-genl-3-200, libpcsclite1
    • dosfstools
    • iptables: iw wireless-regdb, crda
    • parted: libparted2
    • gdisk: groff-base
    • linux-firmware
    • libc6:i386 (没有安装成功)

另外有部分文件不太确定属于哪个包,没有安装:/usr/share/subiquity, /lib/firmware/下的部分固件以及/usr/share/click。

你可能感兴趣的:(Linux系统)