Створення завантажувальних образів boobstrap v1.2


Створення завантажувальних образів boobstrap v1.2

через всього місяць Поспішною розробкою відбувся реліз boobstrap v1.2 — набір інструментів на POSIX shell для створення завантажувальних образів і накопичувачів.

Boobstrap дозволяє лише однією командою:

  • Створювати initramfs образ, включаючи будь-який дистрибутив GNU/Linux.
  • Створювати образи завантаження ISO з будь-яким дистрибутивом GNU/Linux.
  • Створювати завантажувальні USB, HDD, SSD-накопичувачі з будь-яким дистрибутивом GNU/Linux.

Особливість полягає в тому, що після завантаження GNU/Linux буде працювати або повністю в чистому tmpfs, або за допомогою Overlay FS і SquashFS-образів, на ваш вибір. Ви встановлюєте будь-який дистрибутив GNU/Linux в директорію, виконуєте всі необхідні налаштування (можна в окремій директорії), після чого всього однією командою створюєте завантажувальний пристрій, ISO-образ, USB, HDD, SSD накопичувач, а можете створити і initrd образ з системою. Система завжди перебуватиме в одному стані і у разі поломки ви можете повернутися до початкового стану натисканням однієї кнопки Reset. Бажаєте перенести систему на інший хост, або з наявного контейнера створити систему? Boobstrap зробить це.

Із ключових змін:

  • Додано підтримку завантажувача syslinux, крім вже наявного grub2. Тепер ви можете на вибір використовувати або grub2, або syslinux, або те й інше разом, коли створюєте завантажувальний пристрій або ISO образ, за ​​що відповідають опції -legacy-boot syslinux і -efi grub2 відповідно, і так само можна вибирати, які режими завантаження буде підтримувати ISO образ.
  • Додано опцію -bootable, яка робить будь-який блоковий пристрій завантажувальним. Для створення ISO образів має бути використана опція iso-9660.
  • Додані опції завантаження ядра boobs.use-shmfs для копіювання вмісту всіх оверлеїв у tmpfs, boobs.use-overlayfs для завантаження за допомогою Overlay FS, boobs.search-rootfs для вибору джерела з системою, boobs.copy-to-ram для копіювання системи на згадку з наступним вимкненням пристрою.
  • Єдина обов'язкова залежність для роботи boobstrap тільки cpio. Інші залежності опціональні: grub2, syslinux - необхідні для створення завантажувальних носіїв, cdrkit або xorriso на вибір - для створення ISO, squashfs-tools для створення SquashFS, проте ніщо не заважає використовувати опцію cpio замість squashfs для упаковки вашого дистрибутива в архів. busybox буде використаний тільки якщо він встановлений, але якщо ні, будуть скопійовані всі необхідні утиліти з вашої системи. Таким чином робота boobstrap гарантована практично скрізь.

Наприклад, наступна команда створить initrd образ, включивши в нього gentoo-chroot/ систему, упаковану як SquashFS образ, яка буде успішно завантажена після завантаження самого initrd. Нагадаю, щоб використовувати Overlay FS спільно зі SquashFS, необхідно передати опцію ядру boobs.use-overlayfs, інакше система буде розпакована в tmpfs. Всі додаткові налаштування можна зробити в окремій директорії, наприклад gentoo-settings/

# mkdir initramfs/
# mkinitramfs initramfs/ —overlay gentoo-chroot/ —overlay gentoo-settings/ —squashfs > initrd

initrd-образ із системою всередині зручний, коли необхідно швидко розгорнути систему, наприклад, через PXE, або на завантаженій системі перейти в initrd з використанням команди kexec -l /boot/vmlinuz-* -initrd=./initrd && kexec -e, ну або перебуваючи в інтерфейсі віртуальної машини QEMU (можливо навіть Proxmox), завантажитися з віддаленого джерела використовуючи три команди IPXE: kernel http://[…]/vmlinuz , initrd http://[…]/initrd , boot. Як ви бачите, навіть звичайний initrd з вашою системою всередині має безліч варіантів використання.

Для створення завантажувальних накопичувачів і образів використовується команда mkbootisofs, наприклад, так виглядає створення ISO образу з опцією -iso-9660 використовуючи syslinux для завантаження Legacy-mode (BIOS) і grub2 для завантаження в EFI-mode (UEFI).

# mkdir initrd/
# mkinitramfs initrd/ > initrd
# mkdir isoimage/
# mkdir isoimage/boot
# cp /boot/vmlinuz-* isoimage/boot/vmlinuz
# cp initrd isoimage/boot/initrd
# mkbootisofs isoimage/ -iso-9660 -legacy-boot syslinux -efi grub2 -output boot.iso
-overlay gentoo-chroot/ -overlay gentoo-settings/ -squashfs

Ви можете вказати один із режимів завантаження, або не вказувати їх зовсім, відповідний образ ISO буде успішно створений.

Установка на будь-який накопичувач з подальшим завантаженням з нього виконується опцією bootable. Вам необхідно самостійно створити розділи на накопичувачі (fdisk) та відформатувати їх (mkdosfs, mke2fs тощо), після чого змонтувати пристрій у директорію.

# mount /dev/sdb1 /mnt/drive/
# mkbootisofs /mnt/drive/ -bootable -legacy-boot grub2 -efi grub2
-overlay gentoo-chroot/ -overlay gentoo-settings/ -squashfs

Обережно! Опція bootable визначає з якого блокового пристрою змонтована директорія і встановлює завантажувач в даний пристрій. Якщо ви забудете примонтувати пристрій або помилково вкажете директорію, яка знаходиться, наприклад, на /dev/sda, відповідно, завантажувач на /dev/sda буде перезаписаний. Використовуйте bootable з обережністю.

Встановлення будь-якої GNU/Linux системи зводиться лише до однієї команди. Установка може бути виконана на будь-який HDD, SSD і так далі. Це як і раніше система працює з Overlay FS / SquashFS, або повністю завантажується в tmpfs, на вибір.

Крім іншого у boobstrap є ряд цікавих особливостей і додаткових можливостей!

Наприклад, ви можете сформувати фірмовий boobstrap initrd командою mkinitramfs `mktemp -d` > /boot/initrd та завантажитись у свою систему з даними initrd, вказавши опції ядра boobs.use-overlayfs boobs.search-rootfs=/dev/sda1. У такому випадку /dev/sda1, де встановлена ​​ваша домашня система, буде підключений як read-only шар Overlay FS, а всі зміни, які ви зробите, запишуться лише тимчасово в tmpfs. Ви можете додати опцію boobs.copy-to-ram і тоді вся ваша система буде повністю скопійована в RAM, а жорсткий диск можна відключити від комп'ютера. Зручно, коли вам потрібно щось зламати, а відкотити зміни можна просто перезавантажившись. 🙂

Але що якщо потрібно все ж таки зберегти всі зміни в системі? Наприклад, ви встановили софт або ще щось. При роботі в чистому tmpfs таке на жаль неможливе, але якщо ви завантажилися з використанням Overlay FS, то всі зміни, що відбуваються в системі, зберігаються в окремій tmpfs-директорії: /mnt/overlayfs/rootfs-changes! Сценарій використання дуже простий. Ви завантажилися в свою систему з USB-пристрою, попрацювали, захотіли зберегти все, що змінено, тоді створіть cpio-архів з покладіть сюди ж, на цей USB-пристрій.

# cd /mnt/overlayfs/rootfs-changes
# Find. -print0 | cpio -create -format "newc" -null -quiet > /mnt/drive/rootfs-changes.cpio
# cd $OLDPWD

Ви можете покласти архів поруч з іншими SquashFS і cpio шарами, тоді при наступному завантаженні архів буде підключений як просто ще один read-only шар. Щоб продовжувати працювати зі змінами, використовуйте опцію завантаження boobs.rootfs-changes=/rootfs-changes.cpio. Опція boobs.rootfs-changes підключає цей шар з доступом для зміни. Шаром може бути блоковий пристрій, наприклад ви можете вказати /dev/sdb1, тоді всі зміни зроблені в Overlay FS будуть просто зберігатися на /dev/sdb1.

Boobstrap незважаючи на наявні широкі можливості все ще знаходиться на стадії розвитку, всі ваші зауваження та пропозиції враховуються!

Джерело: linux.org.ru

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