LINUX.ORG.RU
ФорумTalks

Любой GNU/Linux. С любого накопителя. С откатом неудачных конфигураций.

 


4

4

Здравствуйте, мои маленькие любители авиационного спирта!

Сегодня я вам расскажу на примере 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

★★★★★

Шах и мат, NixOS!

не только никсос, еще и zfs. всех побил!

zarkone ★★
()

Нужно (хотя и не мне лично).
Просто нравится тема stateless дистрибутивов. Надеюсь конкуренция с их стороны подстегнёт debian к поддержке подобной конфигурации.

aidaho ★★★★★
()

Уймись уже, пожалуйста. Твоё поделие сегодня нужно 5 людям на всей планете, и двое из них ты.

Чем эта тема от трёх предыдущих отличается?

kardapoltsev ★★★★★
()
Последнее исправление: kardapoltsev (всего исправлений: 1)

Чувак, ты офигенен просто. Жаль у меня нет времени даже это потестить все :D

Gonzo ★★★★★
()
Ответ на: комментарий от Gonzo

спасибо, только такие комментарии мотивируют продолжать работу над пет-проектами, а не

Уймись уже, пожалуйста. Твоё поделие сегодня нужно 5 людям на всей планете, и двое из них ты.

вот эти вот.

Spoofing ★★★★★
() автор топика

Нужной дорогой идешь, товарищ!

Nervous ★★★★★
()

А теперь мы можем все эти изменения сохранить и положить сюда же, на USB-накопитель! Это может быть SquashFS-образ, cpio-архив или просто директория, да.

Т.е. это как бы diff, положенный в отдельный squashfs, получается? Они потом как-то объединяются или там будет куча образов, из которых промежуточный не выкинуть?

cocucka ★★★★☆
()
Ответ на: комментарий от cocucka

diff, положенный в отдельный squashfs

да

как-то объединяются

на выходе одна директория, условный /newroot, в котором система как одно целое

будет куча образов, из которых промежуточный не выкинуть

да

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

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

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

ну можно тестировать всякое на «живом», без страха сломать систему т.к. можно откатить.

если пользоваться аккуратно, такой принцип построения системы имеет место быть. лично я в сквошах храню отдельно систему с пакетами, отдельно конфигурацию, отдельно свой хомяк. когда надо обновить систему, то собираю новый сквош с новой системой, вместо её обновления step-by-step, а конфиги ложатся поверх при загрузке и норм.

живу в таком лайв-режиме 3 месяца почти. если у вас есть идеи, что можно улучшить в этом механизме — пожалуйста, делитесь мыслями, всё сделаем ))

Spoofing ★★★★★
() автор топика

Шах и мат, NixOS!

Ахахахахахахаха.

Сэмулировал одну маленькую побочку от нормального менеджмента пакетов — все, ребята, расходимся, дистр больше не нужон.

t184256 ★★★★★
()
Ответ на: комментарий от t184256

я вас ждал. гляжу, шутка удалась.

Spoofing ★★★★★
() автор топика

ZFS со снапшотами и никакого пердолева.

hateyoufeel ★★★★★
()
Ответ на: комментарий от Spoofing

Это от зависти, очевидно же. Так было и будет всегда.

Gonzo ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.