* [sisyphus] I: система загрузки CoLaBoot
@ 2018-03-16 19:46 Michael A. Kangin
2018-03-17 6:56 ` Igor Vlasenko
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Michael A. Kangin @ 2018-03-16 19:46 UTC (permalink / raw)
To: ALT Linux Sisyphus discussions
Здравствуйте!
Позвольте представить новую систему загрузки CoLaBoot (Compressed Layers
Boot)
Основные идеи:
- корневая файловая система собирается из отдельных слоёв в overlayfs, и
при этом каждый образ слоя сжат в squashfs.
- использование слоёв позволяет нарезать FS функциональными ломтиками,
используя "наследственность" и "переиспользование": пусть у нас есть
слой базовой системы. Поверх него мы можем сделать небольшие
дополнительные слои installer, rescue, и слой побольше live-system. А
поверх live-system еще extended-live-system с мультимедью и тяжёлыми
офисными пакетами. И всё это в сумме займёт меньше места, чем набор
"самостоятельных" образов.
- использование squashfs минимизирует используемую для кеширования
образов слоёв память, а так же позволяет монтировать слои
непосредственно с места, где они расположены.
- образы слоёв могут как скачиваться по сети (http/ftp/tftp/...), так и
монтироваться напрямую с локальных носителей (cdrom/hdd). Или
скачиваться с cdrom, чтобы не держать его в использовании. Или
монтироваться напрямую с NFS/iSCSI. Как удобно, в общем :) (man curl:
supported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP,
IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP,
SMTPS, TELNET and TFTP) - всегда мечтал как-нибудь попробовать
загрузиться с SMTP %) )
- слои могут быть optional - очень удобно для накатывания оперативных
обновлений, которых может и не быть. Выпустили ISO с инсталлятором, а
последние обновления ищутся при загрузке хоста на ftp.altlinux.org, а
если не нашлись (интернета нет) - ничего страшного, продолжим без них.
- стремительность разработки: оперативные изменения могут вноситься
только в последний небольшой слой, и цикл "нашли проблему - пофиксили
слой - сделали squashfs - перезагрузили тестовую виртуалку - проверили"
реально укладывается в пределах одной минуты.
- полное разделение собственно системы от используемой версии ядра и
всех его модулей - загрузочные модули встраиваются в initrd или
подключаются к нему отдельной initramfs по ситуации, полный набор
модулей подключается как отдельный слой, совершенно независимый от
остальной системы. Таким образом, необходимость обновить ядро не
затрагивает все остальные слои (похоже на контейнерную виртуализацию,
системе в контейнере всё равно, что там за ядро в хост-системе).
- слои можно делать ручками. Но вообще в качестве источников слоёв
крайне органически подходит Докер, он сам основан на той же идеологии.
- возможность использования уже готовых докерных сборок, коих миллиарды
- главное, чтобы /sbin/init было и желательно udev.
- просто создано для тощих клиентов! (собственно, для них изначально и
разрабатывалось).
Реализация:
пакеты с весьма-базовой реализацией отправились в Сизиф:
- make-initrd-colaboot с соответствующей фичей для initrd (по мотивам
make-initrd-netboot),
- colaboot-utils cо скриптами для изготовления образов слоёв и образов с
модулями ядра.
Там же и немного документации, и разнообразные примеры
изготовления-использования.
Хотелось бы переделать поддержку сети (я не умею в разные udev-каллбеки,
извините, или как там в initrd надо по-феншую сеть поднимать?), и, в
идеале, вообще оторвать её от CLB и реализовать отдельной фичей.
Так же хотелось бы приделать поддержку NFS/iSCSI, которые пока не
реализованы. И поддержку размещения R/W слоя на nfs/iscsi/hdd, а не
только в памяти, как сейчас.
Приглашаю скачать-посмотреть-распотрошить демонстрационную ISOшечку:
http://mak.complife.ru/colaboot/clb-demo.iso
--
Best regards,
Michael A. Kangin
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [sisyphus] I: система загрузки CoLaBoot
2018-03-16 19:46 [sisyphus] I: система загрузки CoLaBoot Michael A. Kangin
@ 2018-03-17 6:56 ` Igor Vlasenko
2018-03-20 20:35 ` Michael A. Kangin
2018-03-18 5:54 ` [sisyphus] " Антон Николаевич Горошкин
2018-03-18 20:59 ` [sisyphus] I: " Michael A. Kangin
2 siblings, 1 reply; 9+ messages in thread
From: Igor Vlasenko @ 2018-03-17 6:56 UTC (permalink / raw)
To: ALT Linux Sisyphus discussions
On Fri, Mar 16, 2018 at 08:46:07PM +0100, Michael A. Kangin wrote:
> Позвольте представить новую систему загрузки CoLaBoot (Compressed Layers
> Boot)
[...]
Хорошо бы на основе этого письма сделать страничку документации
на www.altlinux.org, а ссылку вставить в Url: пакета
2 NEW repocop-infos added to the list
colaboot-utils-0.5-alt2.1.x86_64 missing-url
--
I V
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [sisyphus] система загрузки CoLaBoot
2018-03-16 19:46 [sisyphus] I: система загрузки CoLaBoot Michael A. Kangin
2018-03-17 6:56 ` Igor Vlasenko
@ 2018-03-18 5:54 ` Антон Николаевич Горошкин
2018-03-18 10:12 ` shadowsbrother
2018-03-18 20:59 ` [sisyphus] I: " Michael A. Kangin
2 siblings, 1 reply; 9+ messages in thread
From: Антон Николаевич Горошкин @ 2018-03-18 5:54 UTC (permalink / raw)
To: ALT Linux Sisyphus discussions
Посмотрите наш проект: https://github.com/neobht/uird
То, что вы планируете, у нас уже много лет работает в продакшен.
Предлагаю не распылять усилие, а попробовать работать совместно над реализацией и совершенствованием этих идей.
——
Антон.
17 марта 2018 г., в 2:46, Michael A. Kangin <mak@complife.ru> написал(а):
> Здравствуйте!
>
> Позвольте представить новую систему загрузки CoLaBoot (Compressed Layers Boot)
>
> Основные идеи:
> - корневая файловая система собирается из отдельных слоёв в overlayfs, и при этом каждый образ слоя сжат в squashfs.
> - использование слоёв позволяет нарезать FS функциональными ломтиками, используя "наследственность" и "переиспользование": пусть у нас есть слой базовой системы. Поверх него мы можем сделать небольшие дополнительные слои installer, rescue, и слой побольше live-system. А поверх live-system еще extended-live-system с мультимедью и тяжёлыми офисными пакетами. И всё это в сумме займёт меньше места, чем набор "самостоятельных" образов.
> - использование squashfs минимизирует используемую для кеширования образов слоёв память, а так же позволяет монтировать слои непосредственно с места, где они расположены.
> - образы слоёв могут как скачиваться по сети (http/ftp/tftp/...), так и монтироваться напрямую с локальных носителей (cdrom/hdd). Или скачиваться с cdrom, чтобы не держать его в использовании. Или монтироваться напрямую с NFS/iSCSI. Как удобно, в общем :) (man curl: supported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP) - всегда мечтал как-нибудь попробовать загрузиться с SMTP %) )
> - слои могут быть optional - очень удобно для накатывания оперативных обновлений, которых может и не быть. Выпустили ISO с инсталлятором, а последние обновления ищутся при загрузке хоста на ftp.altlinux.org, а если не нашлись (интернета нет) - ничего страшного, продолжим без них.
> - стремительность разработки: оперативные изменения могут вноситься только в последний небольшой слой, и цикл "нашли проблему - пофиксили слой - сделали squashfs - перезагрузили тестовую виртуалку - проверили" реально укладывается в пределах одной минуты.
> - полное разделение собственно системы от используемой версии ядра и всех его модулей - загрузочные модули встраиваются в initrd или подключаются к нему отдельной initramfs по ситуации, полный набор модулей подключается как отдельный слой, совершенно независимый от остальной системы. Таким образом, необходимость обновить ядро не затрагивает все остальные слои (похоже на контейнерную виртуализацию, системе в контейнере всё равно, что там за ядро в хост-системе).
> - слои можно делать ручками. Но вообще в качестве источников слоёв крайне органически подходит Докер, он сам основан на той же идеологии.
> - возможность использования уже готовых докерных сборок, коих миллиарды - главное, чтобы /sbin/init было и желательно udev.
> - просто создано для тощих клиентов! (собственно, для них изначально и разрабатывалось).
>
> Реализация:
> пакеты с весьма-базовой реализацией отправились в Сизиф:
> - make-initrd-colaboot с соответствующей фичей для initrd (по мотивам make-initrd-netboot),
> - colaboot-utils cо скриптами для изготовления образов слоёв и образов с модулями ядра.
> Там же и немного документации, и разнообразные примеры изготовления-использования.
>
> Хотелось бы переделать поддержку сети (я не умею в разные udev-каллбеки, извините, или как там в initrd надо по-феншую сеть поднимать?), и, в идеале, вообще оторвать её от CLB и реализовать отдельной фичей.
>
> Так же хотелось бы приделать поддержку NFS/iSCSI, которые пока не реализованы. И поддержку размещения R/W слоя на nfs/iscsi/hdd, а не только в памяти, как сейчас.
>
> Приглашаю скачать-посмотреть-распотрошить демонстрационную ISOшечку: http://mak.complife.ru/colaboot/clb-demo.iso
>
> --
> Best regards,
> Michael A. Kangin
> _______________________________________________
> Sisyphus mailing list
> Sisyphus@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/sisyphus
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [sisyphus] система загрузки CoLaBoot
2018-03-18 5:54 ` [sisyphus] " Антон Николаевич Горошкин
@ 2018-03-18 10:12 ` shadowsbrother
2018-03-18 11:13 ` Антон Николаевич Горошкин
0 siblings, 1 reply; 9+ messages in thread
From: shadowsbrother @ 2018-03-18 10:12 UTC (permalink / raw)
To: sisyphus
> Посмотрите наш проект: https://github.com/neobht/uird
>
> То, что вы планируете, у нас уже много лет работает в продакшен.
> Предлагаю не распылять усилие, а попробовать работать совместно над
> реализацией и совершенствованием этих идей.
>
> ——
> Антон.
>
Вы в очередной раз призываете к вендорлоку в лице федоровских базовых
компонентов, для которых имеются свои собственные аналоги, добытые
опытом, и подтвердившие право на жизнь. Здесь нет желающих завязываться
на федору в свете их полного ухода на systemd, а тем более переходить
на их компоненты.
--
С уважением,
Котляров Сергей
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [sisyphus] система загрузки CoLaBoot
2018-03-18 10:12 ` shadowsbrother
@ 2018-03-18 11:13 ` Антон Николаевич Горошкин
2018-03-18 11:37 ` Serg A. Kotlyarov
0 siblings, 1 reply; 9+ messages in thread
From: Антон Николаевич Горошкин @ 2018-03-18 11:13 UTC (permalink / raw)
To: ALT Linux Sisyphus discussions
Причем здесь федора или какие-то вендорлоки?
Речь идет о начальном уровне - уровне initrd. Там нет еще дистрибутива. Там только ядро и начальные компоненты - в основном busybox.
Не думаю, что правильно комментировать тему в которой не разобрались. Сначала разберитесь.
18 марта 2018 г., в 17:12, shadowsbrother@gmail.com написал(а):
>> Посмотрите наш проект: https://github.com/neobht/uird
>>
>> То, что вы планируете, у нас уже много лет работает в продакшен.
>> Предлагаю не распылять усилие, а попробовать работать совместно над
>> реализацией и совершенствованием этих идей.
>>
>> ——
>> Антон.
>>
> Вы в очередной раз призываете к вендорлоку в лице федоровских базовых
> компонентов, для которых имеются свои собственные аналоги, добытые
> опытом, и подтвердившие право на жизнь. Здесь нет желающих завязываться
> на федору в свете их полного ухода на systemd, а тем более переходить
> на их компоненты.
>
> --
> С уважением,
> Котляров Сергей
> _______________________________________________
> Sisyphus mailing list
> Sisyphus@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/sisyphus
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [sisyphus] система загрузки CoLaBoot
2018-03-18 11:13 ` Антон Николаевич Горошкин
@ 2018-03-18 11:37 ` Serg A. Kotlyarov
2018-03-18 12:01 ` SibSAU
0 siblings, 1 reply; 9+ messages in thread
From: Serg A. Kotlyarov @ 2018-03-18 11:37 UTC (permalink / raw)
To: sisyphus
В Sun, 18 Mar 2018 18:13:44 +0700
Антон Николаевич Горошкин <neobht@sibsau.ru> пишет:
> Причем здесь федора или какие-то вендорлоки?
>
> Речь идет о начальном уровне - уровне initrd. Там нет еще
> дистрибутива. Там только ядро и начальные компоненты - в основном
> busybox.
>
> Не думаю, что правильно комментировать тему в которой не разобрались.
> Сначала разберитесь.
>
"В основе реализации лежит набор скриптов инициализации dracut (модули
base, kernel-modules ) и скрипты uird (livekitlib+uird-init)."
Разве это описание не относится к вашему проекту и dracut не
имеет никакого отношения к тому, что вы предлагаете ? То есть, можно
просто взять ваши наработки и применить к make-initrd ? Если нет, тогда
сначала разберитесь в том, что было написано и что используется в
качестве базы для CoLaBoot.
"Реализация:
пакеты с весьма-базовой реализацией отправились в Сизиф:
- make-initrd-colaboot с соответствующей фичей для initrd (по мотивам
make-initrd-netboot),
- colaboot-utils cо скриптами для изготовления образов слоёв и образов с
модулями ядра."
--
С уважением,
Котляров Сергей
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [sisyphus] система загрузки CoLaBoot
2018-03-18 11:37 ` Serg A. Kotlyarov
@ 2018-03-18 12:01 ` SibSAU
0 siblings, 0 replies; 9+ messages in thread
From: SibSAU @ 2018-03-18 12:01 UTC (permalink / raw)
To: ALT Linux Sisyphus discussions
Да. Можно взять и применить.
Все таки, как я и думал, не смотрели.
Если собирается под конкретное ядро, то можно и без дракут.
Просто проект разрабатывается не под конкретный дистр и не прибивается гвоздями например к Альту, поэтому дракут. Так универсальней и проще отслеживать набор модулей ядра, которые желательно включить в образ рам диска. Но если есть желание это делать сложнее - можно от него отказаться.
Сергей, вы имеете отношение к colaboot? Или просто поговорить?
> 18 марта 2018 г., в 18:37, Serg A. Kotlyarov <shadowsbrother@gmail.com> написал(а):
>
> В Sun, 18 Mar 2018 18:13:44 +0700
> Антон Николаевич Горошкин <neobht@sibsau.ru> пишет:
>
>> Причем здесь федора или какие-то вендорлоки?
>>
>> Речь идет о начальном уровне - уровне initrd. Там нет еще
>> дистрибутива. Там только ядро и начальные компоненты - в основном
>> busybox.
>>
>> Не думаю, что правильно комментировать тему в которой не разобрались.
>> Сначала разберитесь.
>>
> "В основе реализации лежит набор скриптов инициализации dracut (модули
> base, kernel-modules ) и скрипты uird (livekitlib+uird-init)."
>
> Разве это описание не относится к вашему проекту и dracut не
> имеет никакого отношения к тому, что вы предлагаете ? То есть, можно
> просто взять ваши наработки и применить к make-initrd ? Если нет, тогда
> сначала разберитесь в том, что было написано и что используется в
> качестве базы для CoLaBoot.
>
> "Реализация:
> пакеты с весьма-базовой реализацией отправились в Сизиф:
> - make-initrd-colaboot с соответствующей фичей для initrd (по мотивам
> make-initrd-netboot),
> - colaboot-utils cо скриптами для изготовления образов слоёв и образов с
> модулями ядра."
>
> --
> С уважением,
> Котляров Сергей
> _______________________________________________
> Sisyphus mailing list
> Sisyphus@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/sisyphus
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [sisyphus] I: система загрузки CoLaBoot
2018-03-16 19:46 [sisyphus] I: система загрузки CoLaBoot Michael A. Kangin
2018-03-17 6:56 ` Igor Vlasenko
2018-03-18 5:54 ` [sisyphus] " Антон Николаевич Горошкин
@ 2018-03-18 20:59 ` Michael A. Kangin
2 siblings, 0 replies; 9+ messages in thread
From: Michael A. Kangin @ 2018-03-18 20:59 UTC (permalink / raw)
To: sisyphus
С позволения Павла запощу сюда, будущей документации ради :)
On 03/18/2018 07:46 PM, Pavel Vainerman wrote:
> Пытаюсь разобраться как создавать образы.
> У меня правда p8, но colaboot-utils я себе собрал нормально.
Я тоже всё делал под P8. Сорри, мне сейчас после долгой возни с этим
проектом многие вещи кажутся сами-собой разумеющимися и я еще не
добрался их задокументировать по-человечески.
> Столкнулся с тем, что examples не работают.
>
> В sources.list прорвались локальные адреса.
> rpm [p8] http://192.168.123.1/ALTLinux p8/x86_64 classic
> rpm [p8] http://192.168.123.1/ALTLinux p8/x86_64-i586 classic
> rpm [p8] http://192.168.123.1/ALTLinux p8/noarch classic
Это из кастомизированных конфигов apt,
/usr/share/doc/colaboot-utils-0.5/examples/docker/apt/
в частности
examples/docker/apt/sources.list
Мне для сборок нужно было заюзать локальный репозитарий, чтобы он был
доступен (только на время сборки!) внутри докер-контейнеров, и я
выкрутился следующим образом: сделал локальный репозитарий доступным по
http, и нарисовал функцию APT-INIT в docker-functions, которая копирует
эту копию апт-конфига внутрь контейнера, и дальше работа идёт с этой
копией. А после сборки функция APT-CLEAN вычищает эти временные конфиги
из контейнера, и в итоговом имидже они оставаться не должны.
Если такая схема работы не подходит, попробуйте модифицировать APT-INIT
под свои условия. Учитывая, что прочие APT-функции хотят сейчас видеть
конфигурацию в /usr/local/share/apt, может стоит делать симлинк на
настоящую конфигурацию.
> В docker недоступные (по крайней мере я не нашёл на
> https://hub.docker.com/) образы
>
> altlinux-p8-clb-base
> altlinux-p8-clb-xxxx
Да, я их не заливал.
-base образ я готовил методом импорта: в mkimage-profiles нашёл
более-менее близкую мне цель сборки, ve/systemd-bare, и собрал там с
минимальными модификациями:
В conf.d/ve.mk:
ve/clb: ve/systemd-bare use/deflogin/desktop
@$(call add,BASE_PACKAGES,iconv htop)
получившийся ~/out/clb-latest-x86_64.tar импортировал в докер как base
image
(https://docs.docker.com/develop/develop-images/baseimages/#create-a-full-image-using-tar):
# docker import -c 'CMD ["/bin/bash"]' clb-latest-x86_64.tar
altlinux-p8-clb-base
Вот, как-то так. А остальные образы уже изготавливались с помощью
.docker-make файлов.
Докеровский нативный метод с помощью dockerfile меня не удовлетворил:
там создаётся какое-то адское количество промежуточных образов, что для
CLB совершенно не нужно (или файл совершенно теряет в читабельности,
если пытаться упихнуть все заклинания в одну строчку). Готовых рецептов
по мержу я не нагуглил, свой написать порывался, но решил лучше не лезть
куда не надо. :)
И, эмулировав несколько функций и дописав свои, решил делать контейнеры
с помощью визуально похожих на dockerfile'ы обычных скриптов.
Базовый образ в виде .tar я тоже залил на всякий случай:
http://mak.complife.ru/colaboot/clb-20180220-x86_64.tar
>
> Хотелось бы больше примеров и документации )
Ну вот со временем наработается :)
Сейчас выложил всё, что у меня было.
> Я попробовал просто как пример подправил образ на тот который у меня
> есть. Запустил (по root) и получил ошибку
Я очень подозреваю, что тут нужен докер, настроенный на использование
overlayfs:
https://docs.docker.com/storage/storagedriver/overlayfs-driver/
Обратите внимание, там у overlayfs нелюбовь к XFS, отформатированной без
d_type=true - криво файлы стираются. Чтобы не переформатировать всё и
вся, можно подсунуть в /var/lib/docker специально приготовленный
файл-имидж с ext4 или правильно-отформатированной xfs.
>
> [root@pvbook mm]# docker2squash fotengauer/altlinux-p8
> Looking docker objects for "fotengauer/altlinux-p8"...
> Selected object:
> sha256:f6ab513a2bef9d8a624e8dbaf429f5cd29e204adf160d1f871cd4e7d43f05e28
> Type: image; Name: fotengauer_altlinux-p8
Кстати, я хоть и попытался превратить / в _, но не проверял, как в итоге
получится. Обратите внимание на имена создаваемых файлов.
> Can't locate UpperDir for object
Очевидно как раз из-за отсутствия overlayfs.
docker inspect fotengauer/altlinux-p8 должен вернуть значения для
GraphDriver->Data->UpperDir
В принципе, для diff (и может chain) режима можно наверное будет
сделать, чтобы использование других сторадж-драйверов тоже понималось,
но для merged оно точно будет критически-необходимым.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2018-03-20 20:35 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-16 19:46 [sisyphus] I: система загрузки CoLaBoot Michael A. Kangin
2018-03-17 6:56 ` Igor Vlasenko
2018-03-20 20:35 ` Michael A. Kangin
2018-03-18 5:54 ` [sisyphus] " Антон Николаевич Горошкин
2018-03-18 10:12 ` shadowsbrother
2018-03-18 11:13 ` Антон Николаевич Горошкин
2018-03-18 11:37 ` Serg A. Kotlyarov
2018-03-18 12:01 ` SibSAU
2018-03-18 20:59 ` [sisyphus] I: " Michael A. Kangin
ALT Linux Sisyphus discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \
sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru
public-inbox-index sisyphus
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.sisyphus
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git