Немного предыстории

Недавно, после очередного неудобного сетапа Windows в университете, меня посетила мысль загружать Linux с флешки, которая всегда со мной, и использовать его при работе где бы то ни было. Казалось бы, всё просто – взять условный Debian/Alpine/Arch Linux, установить его в раздел в loop устройстве, записать получившийся сырой образ диска на флешку и всё готово, но это далеко не то, чего бы я хотел.

У данного подхода есть свои плюсы и минусы, пожалуй начну с минусов:

  • Разного рода компоненты, например Xorg и systemd-journald, могут писать свои логи на диск для долгосрочного хранения, а флеш-память, как мы знаем, не вечная.

  • Система не защищена от перезаписи – даже смонтировав rootfs в ReadOnly, никто не мешает перемонтировать его и натворить бед.

  • Такой линукс без танцев с бубном при надобности не установить на диск.

А так же плюсы:

  • Возможность хранить данные и всегда иметь какие-то документы с собой.

  • Устанавливать и удалять пакеты при надобности.

  • Полная свобода при создании своего рабочего окружения.

В моём случае я бы хотел Live-образ, так как преимущества обычной установки мне не нужны и хранить данные мне тоже не нужно. У этого подхода так же есть свои плюсы и минусы, но они в основном противоположные представленным выше к первому подходу.

Сам процесс создания образа

Изначально я планировал использовать pungi с его огромным функционалом и гибкостью, но он слишком сильно завязан на Koji, так что мой выбор пал на livemedia-creator, который вполне справляется с данной задачей.

Утилита livemedia-creator из пакета lorax использует установщик из семейства RHEL – Anaconda, которая в свою очередь использует сценарии Kickstart для формирования системы. Данная операция требует как минимум 10 Гб свободного пространства на диске. Для начала установим пакеты:

# dnf install lorax-lmc-novirt pykickstart

Эти пакеты необходимы для непосредственно создания Live-образа и формирования одного Kickstart файла, чтобы избежать ошибок в Anaconda. Далее необходимо определиться с релизом Fedora (или другого RHEL-подобного дистрибутива) для нашего Live-образа, в моём случае это Fedora 37. Так как моя версия 36-ая, сценарии Kickstart из пакета spin-kickstarts от Fedora 36 для 37-ой не совсем подойдут, поэтому установим еще Git:

# dnf install git

Альтернативный вариант

Но если желаемая версия совпадает с той, где будет проводиться процесс создания образа, можно установить и сам пакет spin-kickstarts:

# dnf install spin-kickstarts

После установки вышеперечисленных пакетов переходим в любую директорию, где будет проводиться работа, и клонируем репозиторий со сценариями Kickstart:

$ git clone https://pagure.io/fedora-kickstarts --depth=1 -b f37

Так как моя цель не просто создать собственный Live-образ, который от представленного на сайте Fedora Linux будет отличаться лишь более свежими пакетами и датой создания, а заполучить полноценное окружение для работы с возможностью при необходимости установить его на диск, я перехожу в директорию клонированного репозитория и создаю файл fedora-live-custom.ks с нужными мне программами, например GNOME Builder и Telegram Desktop. Вот его содержимое:

# Включим основной файл Fedora Workstation под LiveCD
%include fedora-live-workstation.ks

# Добавим репозиторий RPM Fusion Free
repo --name="rpmfusion-free" --metalink=https://mirrors.rpmfusion.org/metalink?repo=free-fedora-$releasever&arch=$basearch

%packages
# Добавим несколько пакетов
clapper
cntlm
gnome-builder
gnome-console
gimp
libasan
telegram-desktop
vim
# И группу пакетов для разработки
@development-tools

# А так же уберём несколько пакетов
-gnome-music
-gnome-terminal # gnome-console на gtk4 вполне его заменяет
-gnome-terminal-nautilus
-xterm # устанавлиивается вместе с каким-то пакетом
%end

Так же туда можно дописать ещё некоторые параметры, например часовой пояс (timezone) или действия после установки пакетов (%post), но это уже зависит от потребностей. Больше информации можно найти в документации сценариев Kickstart.

Далее необходимо сформировать один .ks файл для livemedia-creator:

$ ksflatten -c fedora-live-custom.ks -o flat-fedora-live-custom.ks -v f37

А теперь самое главное – создание Live-образа. Перепроверьте ещё раз наличие достаточного количества свободного пространства на диске, оно может закончиться в самый неподходящий момент. Для начала отключим защиту SELinux, что необходимо для Lorax:

# setenforce 0

Само создание образа производится одной командой:

# livemedia-creator --make-iso --ks flat-fedora-live-custom.ks --no-virt --iso-only --iso-name Fedora-Workstation-custom-Live-x86_64.iso --volid Fedora-Workstation --releasever 37 --resultdir ./result --nomacboot --project "Fedora Workstation"

Для понимания написанного объясню значения параметров:

  • --make-iso – сообщаем livemedia-creator о создании образа в формате загрузочного ISO

  • --ks flat-fedora-live-custom.ks – выбираем файл сценария Kickstart

  • --no-virt – сообщаем о ненадобности использовать виртуализацию

  • --iso-only – удалить все производные файлы, кроме конечного Live-образа

  • --iso-name – задаём название образа для предыдущего параметра

  • --volid – название корневого раздела в образе диска

  • --releasever 37 – задаём версию дистрибутива

  • --nomacboot – не применяем изменения для загрузки на компьютерах Mac, для желающих есть так же параметр --macboot

  • --project – задаём название проекта, используется к примеру в GRUB

После выполнения команды в директорию ./result/ будет помещён Fedora-Workstation-custom-Live-x86_64.iso. Сам процесс у меня занял 35 минут и больше всего времени у меня ушло к большому удивлению не на медленный DNF, а на сжатие SquashFS и скачивание пакетов.

Приложения в Live-образе
Приложения в Live-образе

Заключение

Создание своего Live-образа Fedora не является чем-то сложным, если использовать достаточно дружелюбный livemedia-creator. Это не единственный способ создать Live-образы, упомянутый ранее pungi может создавать сразу несколько образов, rootfs в самых разных вариантах, с или без OSTree, с индивидуальными настройками, со своими RPM пакетами, фильтрами, репозиториями и прочим, но это уже тема для отдельной статьи.

Замечу, что на Хабре есть полезная статья о создании LiveCD CentOS, которую можно прочесть здесь в учебных целях.

Делитесь своими предложениями и жалобами в комментариях, а так же результатами ваших стараний и замечаниями к статье. Это моя первая статья и я буду рад прочесть все комментарии кому эта статья пригодилась на практике.

Всем peace!

Комментарии (4)


  1. NougatUser
    26.10.2022 12:04

    Весьма интересная задумка)


  1. AlexGluck
    27.10.2022 00:49
    -1

    А что мешала готовый исошник через fedora media writer записать на флешку и загружаться в лайв режиме с него?
    А что если на флешку установить ос?


    1. 000exploit Автор
      27.10.2022 11:06
      -1

      Мешало как раз таки то, что оно берёт готовый образ с fedoraproject.org, а мне так же нужны ещё некоторые приложения для работы. Именно для этого я и использовал livemedia-creator и добавлял пакеты в Kickstart сценарий.

      Почему я противник установки ОС на флешку написано в самом начале статьи.


  1. Ytin224
    27.10.2022 10:50
    -1

    Золотце вернись в ъеъ(

    А так в принципе спасибо за гайд