Образ rootfs — различия между версиями

Материал из Rosalab Wiki
Перейти к: навигация, поиск
Строка 8: Строка 8:
  
 
== Где скачать rootfs Росы ==
 
== Где скачать rootfs Росы ==
Раз в день автоматически выполняются сборки rootfs архитектур x86_64 и i586 на платформах rosa2016.1 и rosa2014.1.
+
Раз в день автоматически выполняются сборки rootfs архитектуры x86_64 на платформе rosa2021.1.
  
'''Найти и скачать самые свежие сборки можно [https://abf.io/platforms/rosa2016.1/products/224 здесь].'''
+
'''Найти и скачать самые свежие сборки 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/rosa2016.1/products/224 список] сборок
+
* Зайти в [https://abf.io/platforms/rosa2021.1/products/284 список] сборок
 
* Нажать на номер нужной сборки, обычно это последняя сборка
 
* Нажать на номер нужной сборки, обычно это последняя сборка
 
* Скачать нужный файл
 
* Скачать нужный файл
Строка 28: Строка 29:
 
== Пример использования rootfs ==
 
== Пример использования rootfs ==
  
Разберем на примере ежедневной сборки [https://abf.io/platforms/rosa2016.1/products/224/product_build_lists/25111 №25111]. Контейнер назовем "rosa1".
+
Разберем на примере ежедневной сборки [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 http://file-store.rosalinux.ru/api/v1/file_stores/5c52311846752f9c3238aab629028ec2ba5155c4 -O rootfs-min-rosa2016.1_x86_64_2019-03-14.tar.xz
+
  wget --content-disposition https://file-store.rosalinux.ru/api/v1/file_stores/bfbdc6531f18db1eeacdf1c0a6cf7cecda9a7222
 
  mkdir rosa1
 
  mkdir rosa1
 
  cd rosa1
 
  cd rosa1
  tar -xvf ../rootfs-min-rosa2016.1_x86_64_2019-03-14.tar.xz
+
  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 <ссылка> -O <имя файла для сохранения>
+
   wget --content-disposition <ссылка>
"ссылка" - это скопированная ссылка на скачивание архива, "имя файла для сохранения" - с каким именем сохранить скачанный файл, можно указать то имя, что в списке сборок. Если не указать, то файл будет назван хешем SHA1 вместо человекопонятного имени.
+
'''--content-disposition''' - благодаря этому параметру файл получит исходное имя, а не будет в виде хеша sha1, '''<ссылка>''' - это скопированная ссылка на скачивание архива.<br />
 +
При желании дать файлу любое другое имя нужно заменить '''--content-disposition''' на '''-O <имя файла для сохранения>'''.
  
 
=== Пример использования на BTRFS для быстрого клонирования контейнеров ===
 
=== Пример использования на BTRFS для быстрого клонирования контейнеров ===
Строка 51: Строка 53:
 
  su -
 
  su -
 
  cd /var/lib/machines
 
  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
+
  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-min-rosa2016.1_x86_64_2019-03-14.tar.xz
+
  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