Образ rootfs — различия между версиями
(Новая страница: «== Что такое rootfs == '''rootfs''', то есть root file system, корневая файловая система — это архив с миним…») |
|||
Строка 14: | Строка 14: | ||
Нужно взять [https://github.com/mikhailnov/docker-rosa скрипты] сборки и запустить mkimage-urpmi.sh. | Нужно взять [https://github.com/mikhailnov/docker-rosa скрипты] сборки и запустить mkimage-urpmi.sh. | ||
Патчи и пулл-реквесты для улучшения скриптов сборки принимаются на Github. | Патчи и пулл-реквесты для улучшения скриптов сборки принимаются на Github. | ||
+ | |||
+ | == Пример использования rootfs == | ||
+ | |||
+ | Разберем на примере ежедневной сборки [https://abf.io/platforms/rosa2016.1/products/224/product_build_lists/25111 №25111]. Контейнер назовем "rosa1". | ||
+ | |||
+ | su - | ||
+ | cd /var/lib/machines | ||
+ | wget http://file-store.rosalinux.ru/api/v1/file_stores/5c52311846752f9c3238aab629028ec2ba5155c4 -O rootfs-min-rosa2016.1_x86_64_2019-03-14.tar.xz | ||
+ | mkdir rosa1 | ||
+ | cd rosa1 | ||
+ | tar -xvf ../rootfs-min-rosa2016.1_x86_64_2019-03-14.tar.xz | ||
+ | cd /var/lib/machines | ||
+ | systemd-nspawn -D rosa1 -b | ||
+ | |||
+ | После последней команды загрузится консоль контейнера, вводите логин root, пароль не запросит. Если убрать -b и сделать просто systemd-nspawn -D rosa1, то вы попадете в консоль без полноценного запуска виртуальной системы. | ||
+ | |||
+ | === Пример использования на BTRFS для быстрого клонирования контейнеров === | ||
+ | |||
+ | /var/lib/machines должно быть внутри раздела BTRFS. | ||
+ | |||
+ | su - | ||
+ | cd /var/lib/machines | ||
+ | wget http://file-store.rosalinux.ru/api/v1/file_stores/5c52311846752f9c3238aab629028ec2ba5155c4 -O rootfs-min-rosa2016.1_x86_64_2019-03-14.tar.xz | ||
+ | btrfs subvol create rosa1 | ||
+ | cd rosa1 | ||
+ | tar -xvf ../rootfs-min-rosa2016.1_x86_64_2019-03-14.tar.xz | ||
+ | cd /var/lib/machines | ||
+ | btrfs subvol snapshot rosa1 rosa2 | ||
+ | btrfs subvol snapshot rosa1 rosa3 | ||
+ | |||
+ | В итоге у нас есть 3 одинаковых контейнера: /var/lib/machines/rosa1, /var/lib/machines/rosa2, /var/lib/machines/rosa3. Поскольку они одинаковые, место на диске занимается 1 раз, а не 3. | ||
+ | После запуска каждого из контейнеров рекомендую менять hostname, чтобы было удобно их различать. |
Версия 08:58, 14 марта 2019
Содержание
Что такое rootfs
rootfs, то есть root file system, корневая файловая система — это архив с минималистичной системой, грубо говоря, это как если бы вы открыли файловый менеджер в корне своего Linux и запаковали всё найденное в архив, только здесь предустановлено минимально необходимое количество пакетов.
Для чего нужен rootfs
- chroot
- запуск в контейнере (systemd-nspawn, lxc, docker)
- установка системы вручную
Где скачать rootfs Росы
Раз в день автоматически выполняются сборки rootfs архитектур x86_64 и i586 на платформах rosa2016.1, rosa2014.1, rosa2012.1 и rosa2012lts. Найти и скачать самые свежие сборки можно здесь.
Как собрать rootfs самому
Нужно взять скрипты сборки и запустить mkimage-urpmi.sh. Патчи и пулл-реквесты для улучшения скриптов сборки принимаются на Github.
Пример использования rootfs
Разберем на примере ежедневной сборки №25111. Контейнер назовем "rosa1".
su - cd /var/lib/machines wget http://file-store.rosalinux.ru/api/v1/file_stores/5c52311846752f9c3238aab629028ec2ba5155c4 -O rootfs-min-rosa2016.1_x86_64_2019-03-14.tar.xz mkdir rosa1 cd rosa1 tar -xvf ../rootfs-min-rosa2016.1_x86_64_2019-03-14.tar.xz cd /var/lib/machines systemd-nspawn -D rosa1 -b
После последней команды загрузится консоль контейнера, вводите логин root, пароль не запросит. Если убрать -b и сделать просто systemd-nspawn -D rosa1, то вы попадете в консоль без полноценного запуска виртуальной системы.
Пример использования на BTRFS для быстрого клонирования контейнеров
/var/lib/machines должно быть внутри раздела BTRFS.
su - cd /var/lib/machines wget http://file-store.rosalinux.ru/api/v1/file_stores/5c52311846752f9c3238aab629028ec2ba5155c4 -O rootfs-min-rosa2016.1_x86_64_2019-03-14.tar.xz btrfs subvol create rosa1 cd rosa1 tar -xvf ../rootfs-min-rosa2016.1_x86_64_2019-03-14.tar.xz cd /var/lib/machines btrfs subvol snapshot rosa1 rosa2 btrfs subvol snapshot rosa1 rosa3
В итоге у нас есть 3 одинаковых контейнера: /var/lib/machines/rosa1, /var/lib/machines/rosa2, /var/lib/machines/rosa3. Поскольку они одинаковые, место на диске занимается 1 раз, а не 3. После запуска каждого из контейнеров рекомендую менять hostname, чтобы было удобно их различать.