Здравствуйте, мои маленькие любители авиационного спирта!
Сегодня я вам расскажу на примере Gentoo GNU/Linux как создать загрузочную USB-флешку или любой другой накопитель, HDD, SSD, и расскажу как сделать откат неудачных конфигураций. Прям как в NixOS, но главное отличие и преимущество, что это не NixOS, а это может быть вообще любой дистрибутив на ваш выбор. Так!
Скачиваем генту.
# wget https://bouncer.gentoo.org/fetch/root/all/releases/amd64/autobuilds/20200624T214505Z/stage3-amd64-20200624T214505Z.tar.xz
# mkdir gentoo/
# tar xf stage3-* -C gentoo/
Сразу установим пароль для root чтобы потом войти в систему, все остальные настройки по вашему желанию.
# chroot gentoo/ /bin/bash <<EOF
echo -e "toor\ntoor" | (passwd root)
EOF
Всё, на этом этапе у нас есть директория gentoo/, это может быть вообще любой дистрибутив, значения не имеет.
Теперь для создания загрузочной USB-флешки вам понадобится:
✅ USB-флешка
✅ Ядрышко, можно ванильное (/boot/vmlinuz-* подойдёт).
✅ initrd-образ (создадим сами).
Не забудьте USB-накопитель подключить к компьютеру.
Подключив, USB-накопитель появится по адресу, например, /dev/sdb.
Создадим initrd-образ:
# mkinitramfs `mktemp -d` > initrd
А теперь создаём загрузочный USB-накопитель:
# mkbootable /dev/sdb \ # <- это флешка
--kernel /boot/vmlinuz \ # <- это ядро linux
--initrd ./initrd \ # <- это initrd
--overlay gentoo/ \ # <- это папка с дистрибутивом linux
--squashfs-xz # <- это способ сжатия папки с дистрибутивом linux
⚠⚠⚠ Все данные на /dev/sdb будут уничтожены!!! ⚠⚠⚠
Всё готово, вы великолепны! Теперь вы можете загрузиться с данного USB-накопителя в свою Gentoo!
А вся красота данного метода заключается в том, что вы можете продолжать пользоваться своим USB-накопителем как USB-накопителем! И к тому же установленной системой на ней!
USB-флешка загружается и на BIOS, и на UEFI-системах!
Структура накопителя следующая:
/dev/sdb # <- ваша флешка
/dev/sdb1 # <- BIOS раздел 1мб
/dev/sdb2 # <- UEFI раздел 50мб
/EFI/BOOT/BOOTX64.EFI
/dev/sdb3 # <- ваш линукс и ваши данные
/boot/grub
/boot/vmlinuz
/boot/initrd
/system/10-gentoo.squashfs # <- гента!1!
/ANIME
/MLP NEW SERIES # <- другие важные данные на флешке
Создание BIOS / UEFI загрузочной USB-флешки всего одной командой!!!!1
И эта флешка ещё может продолжать использоваться как флешка!11
Загрузившись с использованием опции boobs.use-overlayfs, или выбрав в меню загрузчика grub пункт: «Boot using Overlay FS», ваша условная Gentoo GNU/Linux будет работать как read-only оверлей.
Все изменения которые вы сделаете в системе сохраняются отдельной в папке /mnt/overlays/roofs-changes.
Что мы делаем теперь? А теперь мы можем все эти изменения сохранить и положить сюда же, на USB-накопитель! Это может быть SquashFS-образ, cpio-архив или просто директория, да.
Из загруженой системы монтируем флешку в /mnt/storage:
# mount /dev/sdb3 /mnt/storage
После обновления «мира», добавления новых пакетов сохраняем все изменения как SquasFS-образ:
# mksquashfs /mnt/overlays/rootfs-changes /mnt/storage/system/rootfs-changes.squashfs
Все наши /home-данные можно просто скопировать как обычную директорию на флешку:
# cp -a /home /mnt/storage/system/home-data
Каждое обновление системы можно сохранять отдельным SquashFS-образом.
В случае неудачной загрузки системы конфигурацию можно откатить просто удалением оверлея с неудачной конфигурацией системы и перезагрузившись.
Шах и мат, NixOS!
Скачать: https://github.com/sp00f1ng/boobstrap