Создаём Fedora LiveUSB с поддержкой сохранения настроек

В данной статье мы рассмотрим способ создания загрузочной флешки Fedora LiveUSB с поддержкой сохранения файлов и настроек между загрузками (persistence mode).

Введение

Ранее мы уже подробно описывали процесс создания загрузочных LiveUSB для Fedora, но официальные конфигурации всегда записываются на накопитель «как есть» и поэтому не поддерживают возможность сохранения изменений, поэтому при каждой загрузке с них всегда создаётся чистое окружение.

Сегодня мы представим другой способ, с использованием небольшой консольной утилиты livecd-iso-to-disk, позволяющий вносить свои изменения в процесс загрузки образа.

Предупреждение

USB-накопитель должен иметь достаточный объём для хранения основного squashfs-образа, а также одного, либо двух оверлеев, поэтому рекомендуется использовать устройства стандарта USB 3.0 от 8 ГБ и выше.

Следует помнить, что большинство USB-накопителей, в отличие от SSD, никак не балансируют износ ячеек, поэтому частая перезапись одних и тех же файлов может привести к быстрому выходу их из строя.

Использование LiveUSB в режиме persistence не является альтернативой обычной установке системы.

Все данные на целевом устройстве будут уничтожены.

Подготовка

Сначала установим все необходимые для работы пакеты:

sudo dnf install livecd-tools livecd-iso-to-mediums

Далее скачаем оригинальный установочный образ Fedora Live (netinstall не поддерживаются), либо обновлённый респин и сохраним его на жёстком диске устройства.

Создаём Live

Обязательно убедимся, что целевой USB-накопитель размонтирован:

sudo umount /dev/sdX*

Создадим свой вариант LiveUSB с поддержкой UEFI-загрузки (рекомендуемый гибридный вариант):

sudo livecd-iso-to-disk --efi --format --overlay-size-mb 2048 --home-size-mb 2048 --unencrypted-home --label Fedora /path/to/Fedora-Workstation-Live-x86_64-32-1.6.iso /dev/sdX

Обязательные параметры:

  • overlay-size-mb — максимальный размер в MiB для основного оверлея системы (используется для хранения всех изменений внутри корневого раздела);
  • home-size-mb — максимальный размер в MiB для зашифрованного оверлея с пользовательскими файлами, который будет смонтирован как /home;
  • /path/to/Fedora-Workstation-Live-x86_64-32-1.6.iso — полный путь к файлу с оригинальным ISO-образом дистрибутива (поддерживаются варианты с любой рабочей средой);
  • /dev/sdX — устройство подключённой USB-флешки без номеров разделов, с которой мы будем работать.

Дополнительные параметры:

  • msdos — включает использование файловой системы FAT32 на устройстве вместо ext4;
  • extra-kernel-args — позволяет задать дополнительные параметры для ядра при необходимости;
  • unencrypted-home — позволяет отключить шифрование оверлея с данными при необходимости (по умолчанию оно включено).

Внимание! Максимально допустимый раздел для каждого оверлея составляет 4096 MiB из-за ограничений файловой системы FAT32. На ext4 они не распространяются.

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

sync

Литература

При написании данной статьи использовалась литература из следующих источников:

10 commentaries to post

  1. Параметры overlay-size-mb и home-size-mb допустимо использовать и отдельно.

    1. Да. Если не нужен оверлей для корневого раздела, а лишь для пользовательских данных, то достаточно указать только home-size-mb.

  2. Для людей желающих попробовать, лучший вариант наглядно увидеть это, был бы ролик с пояснением процесса на YouTube. Для пользователей Windows это сложновато.

    1. Интерфейс программы Fedora Media Writer, на наш взгляд, достаточно прост и интуитивно понятен любому пользователю.

  3. Используйте свежую утилиту по ссылке «исходные коды утилиты livecd-iso-to-disk», в дистрибутиве (fc35) — старая версия.

    —msdos параметр устарел, —format msdos — актуальная замена (для новой версии). Также можно форматировать в других ФС и выбирать их и параметры (для новой версии).

    Максимальный размер раздела для msdos (FAT32) — 4095 Мб, а не 4096.

    Ещё пожелание к мануалу: добавить в пример —unencrypted-home, т.к. после продолжительной подготовки данных самой утилитой неприятно озадачивает выбор пароля. Простой пароль выбрать не даёт.

    Как вариант — две строки примера или до примера указать, что ТРЕБУЕТСЯ решить заранее про шифровку home, т.к. придется ждать продолжительное время, если home шифровать не надо, а по умолчанию шифровка включена.

    1. Используйте свежую утилиту по ссылке «исходные коды утилиты livecd-iso-to-disk», в дистрибутиве (fc35) — старая версия.

      Самая свежая тегированная версия в репозитории — 28.3. Она и опакечена в Fedora 35.

      —msdos параметр устарел, —format msdos — актуальная замена (для новой версии). Также можно форматировать в других ФС и выбирать их и параметры (для новой версии).

      Форматировать можно в любую поддерживаемую ядром ФС, однако загрузиться без проблем получится лишь с той, которая поддерживается прошивкой UEFI BIOS, т.е. FAT, либо FAT32.

      Максимальный размер раздела для msdos (FAT32) — 4095 Мб, а не 4096.

      Погрешность округления после деления на 1024. 4 294 967 295 байт.

      Ещё пожелание к мануалу: добавить в пример —unencrypted-home, т.к. после продолжительной подготовки данных самой утилитой неприятно озадачивает выбор пароля. Простой пароль выбрать не даёт.

      Шифровать разделы на флешках далеко не лучшее решение, т.к. будет очень медленно, поэтому добавим в статью информацию об этом. Спасибо.

      1. Чтобы не забыть:

        1. Флешка, записанная утилитой из дистрибутива, не завелась, а по ссылке из статьи — запустилась.

        2.1. Добавьте ключик про не шифровать /home в пример.

        2.2. lsblk покажет как называются подключенные блочные устройства.

        3. Система обновляется по dnf upgrade, но кроме ядра. Если ядро в репозиториях обновилось — надо будет доставлять kernel-devel (если они нужны).

        Смотрим, что стоит в дистрибутиве:

        dnf -C list installed | grep kernel

        Скачиваем весь пакет kernel целиком (скачается много объемных файлов, аккуратно с трафиком и объемом на флешке):

        koji download-build --arch=x86_64 kernel-5.15.7-200.fc35

        Устанавливаем требуемый нам старый kernel-devel:

        sudo dnf install ./kernel-devel-5.15.7-200.fc35.x86_64.rpm

        4. Привет команде разработчиков, ужимающей дистр в 2 Гб. Из 16 Гб флешки даже с этими костылями весь объем использовать не получается. 🙁

        1. Флешка, записанная утилитой из дистрибутива, не завелась, а по ссылке из статьи — запустилась.

          Какие ошибки при этом возникли? При написании статьи я тестировал и всё работало.

          Добавьте ключик про не шифровать /home в пример.

          Добавил.

          Система обновляется по dnf upgrade, но кроме ядра.

          Обновлять такую систему не рекомендуется, т.к. обновляется лишь оверлей, а корневая система остаётся с оригинального Live-образа.

          Если требуется полноценная переносная установка, то рекомендую приобрести внешний SSD с интерфейсом Thunderbolt 3/4 и установить систему на него напрямую стандартным способом в EFI-режиме. Такая система будет работать на любом устройстве, имеющим порт Thunderbolt.

  4. Какие ошибки при этом возникли? При написании статьи я тестировал и всё работало.

    Не запускалось ни UEFI ни Legacy. По обновленному скрипту только Legacy.

    Обновлять такую систему не рекомендуется

    Всё долго запускается. Операции с флешкой очень медленные: создание флешки, обновление, загрузка, инсталляция и тормозит в процессе работы.

    Я хотел сделать флешку, с которой можно поставить Федору на ноутбук с вайфаем на broadcom без подключения его к сети по проводу.

    Итог: обновлять Live систему не следует, и вообще она бесполезна. Надо скачать rpm broadcom-wl и kernel-devel версии как на Live образе и с другой флешки считать после установки. А ещё проще — подключить провод, что я и сделал.

    Как выделить дополнительное место на большой флешке под эти два файла особо не разбирался, а по-простому не получилось. Обидно, что пропадает много свободного места и приходится устраивать танцы с бубном.

    1. Не запускалось ни UEFI ни Legacy. По обновленному скрипту только Legacy.

      Legacy для современного железа — это очень плохо ибо лишает всех полезных функций UEFI, плюс реализован он сейчас большинством производителей, что называется «для галочки», и либо вообще не тестируется, либо тестируется по остаточному принципу.

      Всё долго запускается. Операции с флешкой очень медленные: создание флешки, обновление, загрузка, инсталляция и тормозит в процессе работы.

      Разумеется ибо флешка — это очень медленное устройство (кроме очень дорогих моделей, которые внутри SSD, но в форм-факторе флешки).

      К тому же флешки никак не балансируют износ, т.е. постоянная перезапись одних и тех же файлов быстро исчерпает лимит циклов перезаписи и она либо уйдёт в защиту (станет r/o), либо вообще перестанет определяться.

      Я хотел сделать флешку, с которой можно поставить Федору на ноутбук с вайфаем на broadcom без подключения его к сети по проводу.

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

      В идеале конечно удалить из ноутбука Wi-Fi модуль производства Broadcom и заменить его на Intel AX200 ибо он даже с проприетарным драйвером будет работать очень плохо и нестабильно.

      Надо скачать rpm broadcom-wl и kernel-devel версии как на Live образе и с другой флешки считать после установки. А ещё проще — подключить провод, что я и сделал.

      В случае использования Kickstart, достаточно добавить из установленной системы скомпилированный kmod-пакет для соответствующего ядра (последнее на момент сборки ISO-образа). Компилятор и пакеты для разработки не потребуются.

Обсуждение закрыто.