53

Собираем свой дистрибутив Linux на флешке

Всем привет! Думаю, многие из тех, кто хоть как-то связан с IT, знают про популярные live-дистрибутивы, которые можно носить с собой в кармане для решения различных задач (восстановление системы, разметка диска, резервное копирование и многое другое), такие как Slax, Puppy Linux, Porteus или отечественные проекты PuppyRus, MagOS. Сегодня мы с вами соберём свой дистрибутив на флешке на базе Debian.
Что нам понадобится? Дистрибутив на базе Debian (оптимальным выбором будут последние версии Debian, Ubuntu или Mint), либо любой дистрибутив с установленным Docker и немного времени (все операции, описанные в данной статье, включая сборку, занимают не более получаса при наличии достаточно быстрого канала в Internet).
Первые шаги
Собирать мы будем скриптами MiniOS Live, так как они имеют относительно низкий порог вхождения и позволяют собрать вариант с любым набором пакетов на базе Debian 9-Sid.
git clone --depth=1 https://github.com/minios-linux/minios-live.git
Изначально, скрипты настроены на сборку варианта MiniOS Standard на базе Debian 11 с архитектурой amd64. Собрать этот вариант можно достаточно просто
cd minios-live
./install -

либо для Docker
cd minios-live/docker
./01-runme.sh
docker run -it --name mlc --privileged --device-cgroup-rule='b 7:* rmw' -v /dev:/dev -v /home/username/build:/build local/mlc /build/minios-live/install -

где /home/username/build - папка, содержащая minios-live.
Вот что у нас получится в итоге:

Собираем свой дистрибутив Linux на флешке

Основной файл конфигурации сборки MiniOS - minios-live/linux-live/buildconfig, для большинства переменных указано их назначение и значения, которые они могут принимать. В нём можно выбрать готовые наборы пакетов и настроек, архитектуру, изменить стандартный initrd и многое другое.
Модификация базовой системы
Сборка базовой системы 00-core производится из скриптов, расположеных в minios-live/linux-live/basesystem/00-core, там вы можете найти списки пакетов для каждого варианта сборки и изменить их (часть пакетов устанавливается скриптом install, так как в разных дистрибутивах один и тот же пакет может иметь разные названия).Там же расположена папка rootcopy-install, данные из неё автоматически копируются в систему перед началом установки. Для копирования данных в систему после установки создайте папку rootcopy-postinstall и разместите данные в ней. В самом конце выполняется скрипт postinstall.
Модификация/создание модулей
Скрипты, из которых собираются модули, располагаются в minios-live/linux-live/scripts, менять наименования модулей 00-09 нельзя. Наименования скриптов сборки, списков пакетов и папок те же, что и для базовой системы, но теперь к ним добавляется скрипт build. В нём указываются операции сборки ПО из исходных кодов, данный скрипт выполняется после install. При этом, данные, полученные после выполнения install, сохраняются в папке squashfs-root. После сборки ПО скомпилированные файлы необходимо скопировать в эту папку, в конце скрипта необходимо добавить эти строки
if [ $COMP_TYPE = "zstd" ]; then
    time mksquashfs /squashfs-root /$MODULE.$BEXT -comp $COMP_TYPE -Xcompression-level 19 -b 1024K -always-use-fragments -noappend >>$OUTPUT 2>&1
else
    time mksquashfs /squashfs-root /$MODULE.$BEXT -comp $COMP_TYPE -b 1024K -always-use-fragments -noappend >>$OUTPUT 2>&1
fi

Пакеты, установленые скриптом build не сохраняются в системе. Пример такого скрипта можно посмотреть здесь minios-live/linux-live/scripts/04-slax-desktop. Если вам необходимо установить модуль DKMS так, чтобы в системе не осталось пакетов, необходимых для сборки (заголовки ядра и прочие), создайте в папке скриптов модуля файл is_dkms_build, тогда в модуль после работы скрипта build будут скопированы только модули ядра. Пример: minios-live/linux-live/scripts/01-kernel. Для создания простого модуля, где необходима только установка пакетов, используйте в качестве примера скрипты модуля 10-galculator:
cd minios-live/linux-live/scripts
cp -r 10-galculator 10-openshot
замените в packages.list galculator на openshot. В packages.list можно в столбик указать любые пакеты из репозитория Debian, которые вы хотите иметь в модуле. В качестве имени модуля будет использоваться имя первого пакета в списке.
Сборка системы с включением своих модулей
Сборка системы с модулями осуществляется из папок в minios-live/linux-live/modules, где расположены ссылки на папки скриптов, из которых собираются модули. В minios-live/linux-live/modules есть скрипт create_symlinks.sh, с помощью которого можно создать структуру модулей. Например, мы хотим собрать MiniOS с Chromium вместо Firefox, для этого необходимо отредактировать create_symlinks.sh.
#!/bin/bash
if [ ! -d $1 ]; then
mkdir -p $1
fi

for file in $1/00-minios \
$1/01-kernel \
$1/02-firmware \
$1/03-xorg \
$1/04-xfce-desktop \
$1/05-xfce-apps \
$1/10-chromium; do
if [ -L $file ]; then
rm $file
fi
ln -s ../../scripts/$(basename $file) $file
done

Затем запустите скрипт:
create_symlinks.sh xfce-chromium
измените DESKTOP_ENVIRONMENT в buildconfig на xfce-chromium. Обратите внимание, сохранять "xfce", если вы используете XFCE, в наименовании варианта системы и в начале переменой DESKTOP_ENVIRONMENT обязательно.
Сборка модулей для собранной системы
Допустим, вы только что собрали собрали систему и вам необходимо внести изменения модуль. В папке minios-live/build/bullseye-standard-amd64/image/minios (для других вариантов папка может называться иначе) удалите модуль и все модули, которые по алфавиту располагаются после него, затем запустите сборку:
./install build_modules -
Для версии Frugal для модулей с порядковыми номерами 10 и выше удалять модули, располагающиеся по алфавиту после, не надо.

Надеюсь, у вас получится собрать систему под себя достаточно быстро. Если есть вопросы по сборке - пишите комментарии, буду рад помочь. А на сегодня всё. Надеюсь, этот первый пост не станет последним)

GNU/Linux

1.2K постов15.6K подписчиков

Правила сообщества

Все дистрибутивы хороши.

Будьте людьми.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества