ื™ืฆื™ืจืช ืชืžื•ื ื•ืช ืืชื—ื•ืœ ืฉืœ boobstrap v1.2


ื™ืฆื™ืจืช ืชืžื•ื ื•ืช ืืชื—ื•ืœ ืฉืœ boobstrap v1.2

ืื—ืจื™ ืจืง ื—ื•ื“ืฉ ืœืื—ืจ ืคื™ืชื•ื— ืื™ื˜ื™, ืฉื•ื—ืจืจ boobstrap v1.2 - ืกื˜ ื›ืœื™ื ื‘ืžืขื˜ืคืช POSIX ืœื™ืฆื™ืจืช ืชืžื•ื ื•ืช ืืชื—ื•ืœ ื•ื›ื•ื ื ื™ื.

Boobstrap ืžืืคืฉืจ ืœืš ืœื‘ืฆืข ืคืงื•ื“ื” ืื—ืช ื‘ืœื‘ื“:

  • ืฆื•ืจ ืชืžื•ื ืช initramfs, ื›ื•ืœืœ ื›ืœ ื”ืคืฆื” ืฉืœ GNU/Linux ื‘ื”.
  • ืฆื•ืจ ืชืžื•ื ื•ืช ISO ื”ื ื™ืชื ื•ืช ืœืืชื—ื•ืœ ืขื ื›ืœ ื”ืคืฆืช GNU/Linux.
  • ืฆื•ืจ ื›ื•ื ื ื™ USB, HDD, SSD ื”ื ื™ืชื ื™ื ืœืืชื—ื•ืœ ืขื ื›ืœ ื”ืคืฆืช GNU/Linux.

ื”ืžื•ื–ืจื•ืช ื”ื™ื ืฉืื—ืจื™ ื˜ืขื™ื ืช GNU/Linux ื™ืคืขืœื• ืœื—ืœื•ื˜ื™ืŸ ื‘-tmpfs ื˜ื”ื•ืจ, ืื• ื‘ืืžืฆืขื•ืช ืชืžื•ื ื•ืช Overlay FS ื•- SquashFS, ืœื‘ื—ื™ืจืชื›ื. ืืชื” ืžืชืงื™ืŸ ื›ืœ ื”ืคืฆืช GNU/Linux ื‘ืกืคืจื™ื™ื”, ืžื‘ืฆืข ืืช ื›ืœ ื”ื”ื’ื“ืจื•ืช ื”ื“ืจื•ืฉื•ืช (ืืคืฉืจ ื‘ืกืคืจื™ื™ื” ื ืคืจื“ืช), ื•ืœืื—ืจ ืžื›ืŸ ืืชื” ื™ื•ืฆืจ ื”ืชืงืŸ ืืชื—ื•ืœ ืขื ืคืงื•ื“ื” ืื—ืช ื‘ืœื‘ื“, ื‘ื™ืŸ ืื ื–ื” ืชืžื•ื ืช ISO, USB, HDD, ื›ื•ื ืŸ SSD, ืื• ืืชื” ื™ื›ื•ืœ ืœื™ืฆื•ืจ ืชืžื•ื ื” ืจืืฉื•ื ื™ืช ืขื ืžืขืจื›ืช. ื”ืžืขืจื›ืช ืชืžื™ื“ ืชื”ื™ื” ื‘ืื•ืชื• ืžืฆื‘ ื•ื‘ืžืงืจื” ืฉืœ ืชืงืœื” ื ื™ืชืŸ ืœื—ื–ื•ืจ ืœืžืฆื‘ื” ื”ืžืงื•ืจื™ ื‘ืœื—ื™ืฆื” ืขืœ ื›ืคืชื•ืจ ืื™ืคื•ืก ืื—ื“. ื”ืื ื‘ืจืฆื•ื ืš ืœื”ืขื‘ื™ืจ ืืช ื”ืžืขืจื›ืช ืœืžืืจื— ืื—ืจ, ืื• ืœื™ืฆื•ืจ ืžืขืจื›ืช ืžืžื™ื›ืœ ืงื™ื™ื? ื‘ื•ื‘ืกื˜ืจืืค ื™ืขืฉื” ืืช ื–ื”.

ื‘ื™ืŸ ื”ืฉื™ื ื•ื™ื™ื ื”ืžืจื›ื–ื™ื™ื:

  • ื ื•ืกืคื” ืชืžื™ื›ื” ืขื‘ื•ืจ ื˜ื•ืขืŸ ื”ืืชื—ื•ืœ 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, ืืชื—ื•ืœ. ื›ืคื™ ืฉืืชื” ื™ื›ื•ืœ ืœืจืื•ืช, ืืคื™ืœื• ืœ-initrd ืจื’ื™ืœ ืขื ื”ืžืขืจื›ืช ืฉืœืš ื‘ืคื ื™ื ื™ืฉ ืฉื™ืžื•ืฉื™ื ืจื‘ื™ื.

ื›ื“ื™ ืœื™ืฆื•ืจ ื›ื•ื ื ื™ื ื•ืชืžื•ื ื•ืช ื ื™ืชื ื™ื ืœืืชื—ื•ืœ, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืคืงื•ื“ื” mkbootisofs, ืœื“ื•ื’ืžื”, ื›ืš ื ืจืื™ืช ื™ืฆื™ืจืช ืชืžื•ื ืช ISO ืขื ืืคืฉืจื•ืช -iso-9660 ื‘ืืžืฆืขื•ืช syslinux ื›ื“ื™ ืœืืชื—ืœ ืœืชื•ืš ืžืฆื‘ Legacy (BIOS) ื•-grub2 ื›ื“ื™ ืœืืชื—ืœ ืœืชื•ืš EFI- ืžืฆื‘ (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, ื”ื™ื›ืŸ ืฉื”ืžืขืจื›ืช ื”ื‘ื™ืชื™ืช ืฉืœืš ืžื•ืชืงื ืช, ื™ื—ื•ื‘ืจ ื›ืฉื›ื‘ืช Overlay FS ืœืงืจื™ืื” ื‘ืœื‘ื“, ื•ื›ืœ ื”ืฉื™ื ื•ื™ื™ื ืฉืชื‘ืฆืข ื™ื™ื›ืชื‘ื• ืจืง ื‘ืื•ืคืŸ ื–ืžื ื™ ืœ-tmpfs. ืืชื” ื™ื›ื•ืœ ืœื”ื•ืกื™ืฃ ืืช ื”ืืคืฉืจื•ืช boobs.copy-to-ram ื•ืื– ื›ืœ ื”ืžืขืจื›ืช ืฉืœืš ืชื•ืขืชืง ืœ-RAM, ื•ื ื™ืชืŸ ืœื ืชืง ืืช ื”ื›ื•ื ืŸ ื”ืงืฉื™ื— ืžื”ืžื—ืฉื‘. ื ื•ื— ื›ืืฉืจ ืืชื” ืฆืจื™ืš ืœืฉื‘ื•ืจ ืžืฉื”ื•, ื•ืืชื” ื™ื›ื•ืœ ืœื”ื—ื–ื™ืจ ืฉื™ื ื•ื™ื™ื ืคืฉื•ื˜ ืขืœ ื™ื“ื™ ืืชื—ื•ืœ ืžื—ื“ืฉ. ๐Ÿ™‚

ืื‘ืœ ืžื” ืื ื‘ื›ืœ ื–ืืช ืฆืจื™ืš ืœืฉืžื•ืจ ืืช ื›ืœ ื”ืฉื™ื ื•ื™ื™ื ื‘ืžืขืจื›ืช? ืœื“ื•ื’ืžื”, ื”ืชืงื ืช ืชื•ื›ื ื” ืื• ืžืฉื”ื• ืื—ืจ. ื›ืืฉืจ ืขื•ื‘ื“ื™ื ื‘-tmpfs ื˜ื”ื•ืจื™ื, ื–ื” ืœืžืจื‘ื” ื”ืฆืขืจ ื‘ืœืชื™ ืืคืฉืจื™, ืื‘ืœ ืื ืืชื—ื•ืœ ื‘ืืžืฆืขื•ืช Overlay FS, ืื– ื›ืœ ื”ืฉื™ื ื•ื™ื™ื ื”ืžืชืจื—ืฉื™ื ื‘ืžืขืจื›ืช ื ืฉืžืจื™ื ื‘ืกืคืจื™ื™ืช tmpfs ื ืคืจื“ืช: /mnt/overlayfs/rootfs-changes! ืชืจื—ื™ืฉ ื”ืฉื™ืžื•ืฉ ืคืฉื•ื˜ ืžืื•ื“. ืืชื—ื•ืœ ืœืžืขืจื›ืช ืฉืœืš ืžื”ืชืงืŸ USB, ืขืฉื™ืช ืขื‘ื•ื“ื” ื•ืจืฆื™ืช ืœืฉืžื•ืจ ืืช ื›ืœ ืžื” ืฉื”ืฉืชื ื”, ื•ืื– ืœื™ืฆื•ืจ ืืจื›ื™ื•ืŸ cpio ื•ืœืฉื™ื ืื•ืชื• ื›ืืŸ, ืขืœ ืื•ืชื• ื”ืชืงืŸ USB.

# cd /mnt/overlayfs/rootfs-changes
# ืœืžืฆื•ื . -print0 | cpio --create --ืคื•ืจืžื˜ "newc" --null --quiet > /mnt/drive/rootfs-changes.cpio
# ืชืงืœื™ื˜ื•ืจ $OLDPWD

ืืชื” ื™ื›ื•ืœ ืœืฉื™ื ืืช ื”ืืจื›ื™ื•ืŸ ืœื™ื“ "ืฉื›ื‘ื•ืช" ืื—ืจื•ืช ืฉืœ SquashFS ื•-cpio, ื•ืื– ื‘ื˜ืขื™ื ื” ืฉืœืื—ืจ ืžื›ืŸ ื”ืืจื›ื™ื•ืŸ ื™ืชื—ื‘ืจ ื›ืฉื›ื‘ื” ื ื•ืกืคืช ืœืงืจื™ืื” ื‘ืœื‘ื“. ื›ื“ื™ ืœื”ืžืฉื™ืš ืœืขื‘ื•ื“ ืขื ืฉื™ื ื•ื™ื™ื, ื”ืฉืชืžืฉ ื‘ืืคืฉืจื•ืช ื”ื”ืขืœืื” boobs.rootfs-changes=/rootfs-changes.cpio. ื”ืืคืฉืจื•ืช boobs.rootfs-changes ืžืืคืฉืจืช ืืช ื”ืฉื›ื‘ื” ืฉืฆื•ื™ื ื” ืขื ื’ื™ืฉืช ืฉื™ื ื•ื™. ื”ืฉื›ื‘ื” ื™ื›ื•ืœื” ืœื”ื™ื•ืช ื”ืชืงืŸ ื‘ืœื•ืง, ืœืžืฉืœ ืืชื” ื™ื›ื•ืœ ืœืฆื™ื™ืŸ /dev/sdb1, ื•ืื– ื›ืœ ื”ืฉื™ื ื•ื™ื™ื ืฉื ืขืฉื• ื‘-Overlay FS ืคืฉื•ื˜ ื™ื™ืฉืžืจื• ื‘-/dev/sdb1.

Boobstrap, ืœืžืจื•ืช ื”ืืคืฉืจื•ื™ื•ืช ื”ืจื—ื‘ื•ืช ื”ื–ืžื™ื ื•ืช, ืขื“ื™ื™ืŸ ื‘ืฉืœื‘ ื”ืคื™ืชื•ื—, ื›ืœ ื”ื”ืขืจื•ืช ื•ื”ื”ืฆืขื•ืช ืฉืœืš ื ืœืงื—ื•ืช ื‘ื—ืฉื‘ื•ืŸ!

ืžืงื•ืจ: linux.org.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”