Образ rootfs — различия между версиями
Noname (обсуждение | вклад) |
|||
Строка 8: | Строка 8: | ||
== Где скачать rootfs Росы == | == Где скачать rootfs Росы == | ||
− | Раз в день автоматически выполняются сборки rootfs | + | Раз в день автоматически выполняются сборки rootfs архитектуры x86_64 на платформе rosa2021.1. |
− | '''Найти и скачать самые свежие сборки можно [https://abf.io/platforms/ | + | '''Найти и скачать самые свежие сборки x86_64 можно [https://abf.io/platforms/rosa2021.1/products/284 здесь].'''<br /> |
+ | Сборки других архитектур можно найти [https://abf.io/platforms/rosa2021.1/products/ здесь] | ||
− | Образы rootfs-min — это минималистичный образ (ввиду того, что некоторые пакеты в репозитории сейчас тянут лишние зависимости, в rootfs также есть лишние пакеты, например, grub2). | + | Образы rootfs-min — это минималистичный образ (ввиду того, что некоторые пакеты в репозитории сейчас тянут лишние зависимости, в rootfs также есть лишние пакеты, например, grub2).<br /> |
− | Образы rootfs-std — это более расширенный набор пакетов, добавлены пакеты, необходимые для сборки других пакетов (rpm-build, git-core и др.). | + | Образы rootfs-std — это более расширенный набор пакетов, добавлены пакеты, необходимые для сборки других пакетов (rpm-build, git-core и др.). |
== Порядок скачивания последней сборки rootfs == | == Порядок скачивания последней сборки rootfs == | ||
− | * Зайти в [https://abf.io/platforms/ | + | * Зайти в [https://abf.io/platforms/rosa2021.1/products/284 список] сборок |
* Нажать на номер нужной сборки, обычно это последняя сборка | * Нажать на номер нужной сборки, обычно это последняя сборка | ||
* Скачать нужный файл | * Скачать нужный файл | ||
Строка 28: | Строка 29: | ||
== Пример использования rootfs == | == Пример использования rootfs == | ||
− | Разберем на примере ежедневной сборки [https://abf.io/platforms/ | + | Разберем на примере ежедневной сборки [https://abf.io/platforms/rosa2021.1/products/284/product_build_lists/44893 №44893]. Контейнер назовем "rosa1". |
su - | su - | ||
cd /var/lib/machines | cd /var/lib/machines | ||
− | wget | + | wget --content-disposition https://file-store.rosalinux.ru/api/v1/file_stores/bfbdc6531f18db1eeacdf1c0a6cf7cecda9a7222 |
mkdir rosa1 | mkdir rosa1 | ||
cd rosa1 | cd rosa1 | ||
− | tar -xvf ../rootfs- | + | tar -xvf ../rootfs-std-rosa2021.1_x86_64_2022-11-06.tar.xz |
cd /var/lib/machines | cd /var/lib/machines | ||
systemd-nspawn -D rosa1 -b | systemd-nspawn -D rosa1 -b | ||
Строка 42: | Строка 43: | ||
В команде wget выше | В команде wget выше | ||
− | wget <ссылка> - | + | wget --content-disposition <ссылка> |
− | + | '''--content-disposition''' - благодаря этому параметру файл получит исходное имя, а не будет в виде хеша sha1, '''<ссылка>''' - это скопированная ссылка на скачивание архива.<br /> | |
+ | При желании дать файлу любое другое имя нужно заменить '''--content-disposition''' на '''-O <имя файла для сохранения>'''. | ||
=== Пример использования на BTRFS для быстрого клонирования контейнеров === | === Пример использования на BTRFS для быстрого клонирования контейнеров === | ||
Строка 51: | Строка 53: | ||
su - | su - | ||
cd /var/lib/machines | cd /var/lib/machines | ||
− | wget | + | wget --content-disposition https://file-store.rosalinux.ru/api/v1/file_stores/bfbdc6531f18db1eeacdf1c0a6cf7cecda9a7222 |
btrfs subvol create rosa1 | btrfs subvol create rosa1 | ||
cd rosa1 | cd rosa1 | ||
− | tar -xvf ../rootfs- | + | tar -xvf ../rootfs-std-rosa2021.1_x86_64_2022-11-06.tar.xz |
cd /var/lib/machines | cd /var/lib/machines | ||
btrfs subvol snapshot rosa1 rosa2 | btrfs subvol snapshot rosa1 rosa2 |
Версия 00:15, 7 ноября 2022
Содержание
Что такое rootfs
rootfs, то есть root file system, корневая файловая система — это архив с минималистичной системой, грубо говоря, это как если бы вы открыли файловый менеджер в корне своего Linux и запаковали всё найденное в архив, только здесь предустановлено минимально необходимое количество пакетов.
Для чего нужен rootfs
- chroot
- запуск в контейнере (systemd-nspawn, lxc, docker)
- установка системы вручную
Где скачать rootfs Росы
Раз в день автоматически выполняются сборки rootfs архитектуры x86_64 на платформе rosa2021.1.
Найти и скачать самые свежие сборки x86_64 можно здесь.
Сборки других архитектур можно найти здесь
Образы rootfs-min — это минималистичный образ (ввиду того, что некоторые пакеты в репозитории сейчас тянут лишние зависимости, в rootfs также есть лишние пакеты, например, grub2).
Образы rootfs-std — это более расширенный набор пакетов, добавлены пакеты, необходимые для сборки других пакетов (rpm-build, git-core и др.).
Порядок скачивания последней сборки rootfs
- Зайти в список сборок
- Нажать на номер нужной сборки, обычно это последняя сборка
- Скачать нужный файл
- Распаковать его как архив
Как собрать rootfs самому
Нужно взять скрипты сборки и запустить mkimage-urpmi.sh.
Патчи и пулл-реквесты для улучшения скриптов сборки принимаются на Github.
Пример использования rootfs
Разберем на примере ежедневной сборки №44893. Контейнер назовем "rosa1".
su - cd /var/lib/machines wget --content-disposition https://file-store.rosalinux.ru/api/v1/file_stores/bfbdc6531f18db1eeacdf1c0a6cf7cecda9a7222 mkdir rosa1 cd rosa1 tar -xvf ../rootfs-std-rosa2021.1_x86_64_2022-11-06.tar.xz cd /var/lib/machines systemd-nspawn -D rosa1 -b
После последней команды загрузится консоль контейнера, вводите логин root, пароль не запросит. Если убрать -b и сделать просто systemd-nspawn -D rosa1, то вы попадете в консоль без полноценного запуска виртуальной системы.
В команде wget выше
wget --content-disposition <ссылка>
--content-disposition - благодаря этому параметру файл получит исходное имя, а не будет в виде хеша sha1, <ссылка> - это скопированная ссылка на скачивание архива.
При желании дать файлу любое другое имя нужно заменить --content-disposition на -O <имя файла для сохранения>.
Пример использования на BTRFS для быстрого клонирования контейнеров
/var/lib/machines должно быть внутри раздела BTRFS.
su - cd /var/lib/machines wget --content-disposition https://file-store.rosalinux.ru/api/v1/file_stores/bfbdc6531f18db1eeacdf1c0a6cf7cecda9a7222 btrfs subvol create rosa1 cd rosa1 tar -xvf ../rootfs-std-rosa2021.1_x86_64_2022-11-06.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, чтобы было удобно их различать.
Запуск 32-битного контейнера на 64-битном хосте
Без доп. параметров всё запустится, но, например, uname и lscpu будут выдавать x86_64, в результате чего утилиты типа rpm будут думать, что они работают на 64-битной Ос, а не 32-битной.
Для решения проблемы в параметры запуска systemd-nspawn добавьте: --personality=x86, пример:
systemd-nspawn -D rosa-i586-1 --personality=x86