Авторские статьи

Личное знакомство с Ubuntu Snappy Core. Часть 1.


Писа́л про Ubuntu Snappy, а сам не удосужился пощупать данного зверя. Исправляюсь! Пишу личные впечатления от светлого будущего, которое неминуемо нас поджидает за углом. Минималистичный Ubuntu Snappy с транзакционной системой обновления и отсутствием apt-get/deb как класс.

Приготовления.

Так как нет пока ISO, в котором бодрый GUI/CLI установщик поставит мне систему через Далее - Далее, то мне приглянулся вариант через "OVA images: multiple hypervisor support". Хоть этот вариант идеален для:

  • VMware Fusion
  • VMware Desktop
  • VMware ESXi/VSphere
  • VirtualBox
  • Microsoft SCVMM
  • Citrix XenServer

а у меня внедрён свободный проект за 0 рублей под названием ProxmoxVE, но разве стандарт OVA не зашаманить в ProxmoxVE, использующий KVM/QEMU? Легко! Не забудьте выполнить инструкции, связанные с созданием seed.iso, иначе не сможете зайти в систему. Я пока не знаю зачем такие финты ушами, возможно, это как-то связано с системным разделом, доступным read-only .

Итак, seed.iso у нас в виртуальном CDROM и Ubuntu Snappy Core, наконец-то нас пустила внутрь. Что видим? Говорил же - светлый, будущий мир! Brave new world.

Welcome to Ubuntu 15.04 (GNU/Linux 3.19.0-18-generic x86_64)
 * Documentation:  https://help.ubuntu.com/
Welcome to snappy Ubuntu Core, a transactionally updated Ubuntu.
 * See https://ubuntu.com/snappy
It's a brave new world here in snappy Ubuntu Core! This machine
does not use apt-get or deb packages. Please see 'snappy --help'
for app installation and transactional updates.

Рекогносцировка на местности.

Первое что мне было интересно - df -h
/dev/sda3 976M 536M 373M 59% /
/dev/sda5 6.8G 19M 6.4G 1% /oem
...
/dev/sda4 976M 1.3M 908M 1% /writable/cache/system
/dev/sda2 63M 7.2M 56M 12% /boot/efi

М-м-м, а где /dev/sda1 ? Делаем sudo fdisk -l /dev/sda

Disk /dev/sda: 13 GiB, 13958643712 bytes, 27262976 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 4E21234A-E2D2-4ACD-B1A5-153A805FB53A

Device       Start      End  Sectors Size Type
/dev/sda1     8192    16383     8192   4M BIOS boot
/dev/sda2    16384   147455   131072  64M EFI System
/dev/sda3   147456  2244607  2097152   1G Linux filesystem
/dev/sda4  2244608  4341759  2097152   1G Linux filesystem
/dev/sda5  4341760 19042303 14700544   7G Linux filesystem

Мы видим, что два раздела имеют равный размер и это не спроста. Команда sudo blkid выводит:
/dev/sda2: LABEL="system-boot" UUID="F04F-02A0" TYPE="vfat" PARTLABEL="system-boot" PARTUUID="af77c3ad-47f6-4776-bcb7-7bbd93194fca"
/dev/sda3: LABEL="system-a" UUID="49b12f6b-124f-4c60-8e0a-c3ac0cd16b7f" TYPE="ext4" PARTLABEL="system-a" PARTUUID="c08e097b-7620-4e8d-97da-7bc973bd5b6d"
/dev/sda4: LABEL="system-b" UUID="eea23f02-a0c8-413c-be08-1f74df296f7c" TYPE="ext4" PARTLABEL="system-b" PARTUUID="81c10a98-d7e2-41b1-a1e2-ce609f0f0133"
/dev/sda5: LABEL="writable" UUID="18f18399-c4c0-41fa-8ef2-aaa9a832dd02" TYPE="ext4" PARTLABEL="writable" PARTUUID="f4217e3a-9eec-4d45-954b-36cbd71cbbfd"
/dev/sda1: PARTLABEL="grub" PARTUUID="314959ea-cd0c-4252-b15d-4c46f96f43a8"

Метки system-a и system-b намекают нам, что перед нами легендарные два раздела под систему, благодаря которым будет работать механизм rollback. В свежей системе раздел system-a будет занят системой, а system-b будет пустым, ибо отформатирован. Администратору не стоит забивать голову какой именно раздел является текущим и с которого производится загрузка. После обновления системы через sudo snappy update оба раздела system-a/b будут содержать образ системы, только разных версий. "Snappy update" не только производит обновление системы в другой раздел, но и "переключается" между ними, делая текущим то один, то другой.

Команда sudo lsblk -f вывела тоже самое что и blkid, только в виде ASCII дерева.

NAME   FSTYPE  LABEL       UUID                                 MOUNTPOINT
sda                                                             
|-sda1                                                          
|-sda2 vfat    system-boot F04F-02A0                            /boot/efi
|-sda3 ext4    system-a    49b12f6b-124f-4c60-8e0a-c3ac0cd16b7f /
|-sda4 ext4    system-b    eea23f02-a0c8-413c-be08-1f74df296f7c /writable/cache/system
`-sda5 ext4    writable    18f18399-c4c0-41fa-8ef2-aaa9a832dd02 /writable

Как говорит нам дерево, system-a активен и является корнем (/), а system-b подмонтирован в /writable/cache/system/, что намекает на его доступность для записи при обновлении системы.

Метка раздела Дефолтный размер (Мб) Тип ФС Запись? Описание
grub 4 Да Файлы для загрузки
system-boot 64 vfat Да Файлы для загрузки
system-a 1024 ext4 Нет Primary root filesystem
system-b 1024 ext4 Нет Secondary root filesystem
writable Всё оставшееся место ext4 Да Все данные пользователя

Давайте выведем примонтированные вещи и получим инфаркт! mount

sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=500376k,nr_inodes=125094,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=101684k,mode=755)
/dev/sda4 on / type ext4 (ro,relatime,data=ordered)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,mode=755)
/dev/sda5 on /writable type ext4 (rw,relatime,discard,data=ordered)
tmpfs on /etc/fstab type tmpfs (rw,nosuid,noexec,relatime,mode=755)
/dev/sda5 on /etc/systemd/system type ext4 (rw,relatime,discard,data=ordered)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset,clone_children)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
tmpfs on /etc/machine-id type tmpfs (ro,relatime,size=101684k,mode=755)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=21,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
/dev/sda5 on /etc/sudoers.d type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /etc/ssh type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /var/lib/system-image type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /usr/share/click/frameworks type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /etc/sysctl.d type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /var/lib/apparmor type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /apps type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /etc/writable type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /var/log type ext4 (rw,relatime,discard,data=ordered)
tmpfs on /tmp type tmpfs (rw,relatime)
/dev/sda5 on /var/lib/dhcp type ext4 (rw,relatime,discard,data=ordered)
tmpfs on /var/lib/sudo type tmpfs (rw,relatime,mode=700)
/dev/sda5 on /var/lib/initramfs-tools type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /root type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /var/tmp type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /etc/udev/rules.d type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /var/lib/apps type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /etc/hosts type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /var/lib/cloud type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /var/lib/systemd/random-seed type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /etc/network/interfaces.d type ext4 (rw,relatime,discard,data=ordered)
tmpfs on /mnt type tmpfs (rw,relatime)
/dev/sda5 on /var/lib/dbus type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /var/lib/logrotate type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /var/lib/snappy type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /etc/dbus-1/system.d type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /etc/apparmor.d/cache type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /var/cache/apparmor type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /var/lib/extrausers type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /oem type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /home type ext4 (rw,relatime,discard,data=ordered)
/dev/sda5 on /etc/ufw type ext4 (rw,relatime,discard,data=ordered)
/dev/sda3 on /writable/cache/system type ext4 (ro,relatime,data=ordered)
/dev/sda2 on /boot/efi type vfat (rw,relatime,sync,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
/dev/sda2 on /boot/grub type vfat (rw,relatime,sync,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=101684k,mode=700,uid=1000,gid=1000)

Что интересного даёт вывод mount?

  • /etc/network/interfaces.d rw. Нам дают на запись каталог, в котором мы должны определять свои сетевые настройки. Файл /etc/network/interfaces содержит строку source-directory /etc/network/interfaces.d и сам нам не доступен для записи.
    Так ли это?
    date | sudo tee -a /etc/network/interfaces
    -bash: /etc/network/interfaces: Read-only file system
  • fstab. /etc/fstab теперь лежит на разделе-только-для-чтения и генерируется из /etc/system-image/writable-paths.

Продолжение статьи "Личное знакомство с Ubuntu Snappy Core. Часть 2."

Дата последней правки: 2023-12-28 11:22:56

RSS vasilisc.com   


Разделы

Главная
Новости
Ворох бумаг
Видео Linux
Игры в Linux
Безопасность
Статьи об Astra Linux
Статьи о FreeBSD
Статьи об Ubuntu
Статьи о Snappy
Статьи об Ubuntu Phone
Статьи о Kubuntu
Статьи о Xubuntu
Статьи о Lubuntu
Статьи об Open Source
Карта сайта