booty - утиліта для створення завантажувальних образів та накопичувачів

Представлена ​​програма видобуток, яка дозволяє однією командою створювати завантажувальні образи initrd, файли ISO або накопичувачі, що включають будь-який дистрибутив GNU/Linux. Код написаний на POSIX shell та поширюється ліцензія GPLv3.

Всі дистрибутиви, завантажені з використанням Booty, працюють або в SHMFS (tmpfs), або в SquashFS + Overlay FS, на вибір користувача. Дистрибутив створюється один раз, а в процесі завантаження вибираються параметри, що дозволяють використовувати чистий tmpfs для кореня або зв'язку Overlay FS + SquashFS із записом змін у tmpfs. Є можливість попередньо скопіювати дистрибутив, що завантажується в ОЗУ, що дозволяє відключити USB-накопичувач після завантаження і копіювання дистрибутива в пам'ять.

Насамперед, Booty генерує власний initrd образ, в якому можуть використовуватися рідні утиліти з поточної системи або busybox. Є можливість включити (упакувати) повністю в initramfs встановлений в директорії дистрибутив (chroot). Це може бути корисним, коли необхідно оновити систему з використанням kexec: просто перезавантажити initrd з новим ядром і новою системою всередині initrd.

Створення Booty-специфічного initrd образу:

mkdir initramfs/
mkinitramfs initramfs/ —output initrd

Створення initrd образу із включенням до нього дистрибутива з директорії «gentoo/»:

mkdir initramfs/
mkinitramfs initramfs/ -overlay gentoo/ -cpio -output initrd

Після цього даний initrd образ повністю готовий до завантаження, наприклад, через PXE або через kexec.

Далі Booty генерує образи із системою, яка вказана як «оверлеї». Наприклад, можна встановити (розпакувати архів) умовний Gentoo в окремій директорії, після чого з використанням Booty буде згенеровано cpio-архів або SquashFS образ із цією системою. Також можна в окремій директорії виконати налаштування дистрибутива, а ще одну директорію скопіювати особисті налаштування. Всі ці "шари" будуть послідовно завантажені один поверх одного і створювати єдину робочу систему.

mkdir initramfs/
mkinitramfs initramfs/ —overlay gentoo/ —overlay settings/ —overlay documents/ —squashfs —output initrd

У кінцевому рахунку, Booty дозволяє створювати завантажувальні ISO-образи та USB, HDD, SSD та інші накопичувачі, встановлюючи систему з образів. видобуток підтримує створення завантажувальних систем BIOS та UEFI. Підтримуються завантажувачі GRUB2 та SYSLINUX. Завантажувачі можна комбінувати, наприклад, для завантаження в BIOS використовувати SYSLINUX, а для UEFI — GRUB2. Для створення ISO-образів додатково знадобиться пакет cdrkit (genisoimage), або xorriso (xorrisofs), на вибір.

Єдина додаткова дія, яка буде потрібна, це заздалегідь підготувати ядро ​​(vmlinuz) для завантаження. Автор (Spoofing) рекомендує використовувати "make defconfig". Перед створенням образу необхідно підготувати директорію, поклавши в неї ядро ​​vmlinuz і заздалегідь підготовлений порожній initrd, створений у першому прикладі.

mkdir iso/
cp /boot/vmlinuz-* iso/boot/vmlinuz
cp initrd iso/boot/initrd

На цьому підготовка завершена, тепер можемо створювати з цієї директорії образи ISO.

Наступна команда створить ISO образ, не завантажувальний, просто ISO:

mkdir iso/
mkbootisofs iso/ —output archive.iso

Для створення завантажувального образу необхідно вказати опцію "-legacy-boot" для BIOS і "-efi" для UEFI відповідно, як параметри опції приймають або grub2, або syslinux, так само можна вказати тільки одну опцію (наприклад, не потрібна підтримка UEFI завантаження , її можна вказувати).

mkbootisofs iso/ -legacy-boot syslinux -output boot-biosonly.iso

mkbootisofs iso/ —legacy-boot syslinux —efi grub2 —output boot-bios-uefi.iso

mkbootisofs iso/ -efi grub2 -output boot-uefionly.iso

І також, як раніше були включені образи з системою в initrd, можна включити їх до ISO.

mkbootisofs iso/ -overlay gentoo/ -squashfs -legacy-boot grub2 -efi grub2 -output gentoo.iso

Після цієї команди буде сформований завантажувальний BIOS/UEFI ISO-образ, що завантажує Gentoo в SquashFS-образу з використанням Overlay FS, що використовує tmpfs для зберігання даних. Ядро має бути зібране за допомогою Overlay FS з SquashFS. Однак, якщо це з якихось причин не потрібно, можна використовувати опцію «-cpio» замість -squashfs, для упаковки gentoo/ як cpio-архіву, в такому випадку архів буде розпакований прямо в tmpfs при завантаженні, головне, щоб розпакувати систему у tmpfs було досить оперативної пам'яті.

Цікавий факт: якщо ISO образ створений з використанням опції «efi» розпакувати на FAT32-флешку шляхом простого копіювання файлів (cp -r), то Flash-накопичувач завантажуватиметься в UEFI-режимі без будь-якої попередньої підготовки, завдяки специфіці UEFI- завантажувачів.

Крім завантажувальних ISO з тими ж параметрами може бути створений будь-який завантажувальний накопичувач: USB, HDD, SSD і так далі, при цьому цей накопичувач може продовжувати використовуватися за прямим призначенням. Для цього необхідно примонтувати, наприклад, USB-пристрій і запустити mkbootisofs на ньому. Тільки додати одну опцію «-bootable», щоб накопичувач, на якому знаходиться вказана директорія, став завантажувальним.

змонтувати /dev/sdb1 /mnt
mkbootisofs /mnt -overlay gentoo/ -squashfs -legacy-boot grub2 -efi grub2 -bootable

Після цього USB-пристрій стане завантажувальним з оверлеєм gentoo/ (слід не забути скопіювати файли /boot/vmlinuz і /boot/initrd на пристрій).

Якщо з якихось причин накопичувач не був примонтований в /mnt, і виявиться так, що /mnt знаходиться на основному пристрої /dev/sda, відповідно завантажувач буде перезаписаний на /dev/sda. Слід виявляти обережність при вказівці опції bootable.

У процесі завантаження Booty підтримує ряд опцій, які можна передати вказати у завантажувачі, grub.cfg або syslinux.cfg. За замовчуванням без будь-яких опцій виконується завантаження та розпакування всіх оверлеїв у tmpfs (за замовчуванням ooty.use-shmfs). Для використання Overlay FS має бути використана опція booty.use-overlayfs. Опція booty.copy-to-ram попередньо копіює оверлеї в tmpfs, після чого тільки підключає їх та завантажує. Після копіювання USB-пристрій (або інший накопичувач) можна вийняти.

Джерело: opennet.ru

Додати коментар або відгук