Създаване на загрузъчни образи 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 „слоеве“, така че при следващото зареждане архива да бъде свързан просто като още един слой с достъп само за четене. За да продължите да работите с промените, използвайте опцията за зареждане boobs.rootfs-changes=\/rootfs-changes.cpio. Опцията boobs.rootfs-changes свързва посочения слой с достъп за промяна. Слоят може да бъде блочно устройство, например можете да посочите \/dev\sdb1, така че всички направени промени в Overlay FS да се запазват просто на \/dev\sdb1.

Boobstrap, въпреки широките си възможности, все още е в етап на разработка, всички ваши коментари и предложения се вземат под внимание!

Източник: linux.org.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster