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


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

ื‘ืจืฆื•ื ื™ ืœื”ืฆื™ื’ ืœืชืฉื•ืžืช ืœื‘ื›ื ืžืกื’ืจืช ื‘ืฉื boobstrap, ื”ื›ืชื•ื‘ื” ื‘ืžืขื˜ืคืช POSIX, ืœื™ืฆื™ืจืช ืชืžื•ื ื•ืช ืืชื—ื•ืœ ืขื ื”ืคืฆื•ืช ืฉืœ GNU/Linux. ื”ืžืกื’ืจืช ืžืืคืฉืจืช ืœืš ืœืขื‘ื•ืจ ืืช ื›ืœ ื”ืชื”ืœื™ืš ื‘ืฉืœื•ืฉื” ืฉืœื‘ื™ื ืคืฉื•ื˜ื™ื ื‘ืœื‘ื“: ืžืคืจื™ืกืช ื”ืžืขืจื›ืช ื‘-chroot, ื™ืฆื™ืจืช ืชืžื•ื ืช initramfs ื”ื›ื•ืœืœืช ืืช ื”ืžืขืจื›ืช ื”-chrooted, ื•ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ืชืžื•ื ืช ISO ื”ื ื™ืชื ืช ืœืืชื—ื•ืœ. boobstrap ื›ื•ืœืœ ืฉืœื•ืฉื” ื›ืœื™ ืขื–ืจ mkbootstrap, mkinitramfs ื•-mkbootisofs ื‘ื”ืชืืžื”.

mkbootstrap ืžืชืงื™ืŸ ืืช ื”ืžืขืจื›ืช ื‘ืกืคืจื™ื™ื” ื ืคืจื“ืช, ื™ืฉ ืชืžื™ื›ื” ืžืงื•ืจื™ืช ื‘-CRUX, ื•ื‘ืžืงืจื” ืฉืœ ื”ืคืฆื•ืช ืžื‘ื•ืกืกื•ืช Arch Linux/Manjaro ื•ื“ื‘ื™ืืŸ, ื™ืฉ ืœื”ืฉืชืžืฉ ื‘ื›ืœื™ ื”ืฉื™ืจื•ืช ืฉืœ ืฆื“ ืฉืœื™ืฉื™ pacstrap, basestrap ื•-debootstrap ื‘ื”ืชืืžื”.

mkinitramfs ื™ื•ืฆืจ ืชืžื•ื ืช initramfs, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืžืขืจื›ืช ื”ืžื•ืชืงื ืช ื‘ืกืคืจื™ื™ื” ื›"ืฉื›ื‘ืช ืขืœ", ื“ื—ื•ืกื” ื‘ืืžืฆืขื•ืช SquashFS, ืื• ืœืื—ืจ ืืชื—ื•ืœ ืœืžืขืจื›ืช, ืœืขื‘ื•ื“ ื™ืฉื™ืจื•ืช ื‘-tmpfs. ื›ืš ืœืžืฉืœ, ื”ืคืงื•ื“ื” mkinitramfs `mktemp -d` --overlay "arch-chroot/" --overlay "/home" --squashfs-xz --output initrd ืชื™ืฆื•ืจ ืงื•ื‘ืฅ initrd, ื›ื•ืœืœ ืฉืชื™ ืฉื›ื‘ื•ืช ืขื "arch- ืžืขืจื›ืช chroot/" ื•ื”-"/home" ืฉืœืš, ื“ื—ื•ืกื™ื ื‘ืืžืฆืขื•ืช SquashFS, ืฉืื•ืชื” ืชื•ื›ืœ ืœืื—ืจ ืžื›ืŸ ืœืืชื—ืœ ื‘ืืžืฆืขื•ืช PXE ืœืชื•ืš tmpfs, ืื• ืœื™ืฆื•ืจ ืชืžื•ื ืช ISO ื”ื ื™ืชื ืช ืœืืชื—ื•ืœ ืขื initrd ื–ื”.

mkbootisofs ื™ื•ืฆืจ ืชืžื•ื ืช ISO ื”ื ื™ืชื ืช ืœืืชื—ื•ืœ BIOS/UEFI ืžื”ืกืคืจื™ื™ื” ืฉืฆื•ื™ื ื”. ืคืฉื•ื˜ ืฉื™ื /boot/vmlinuz ื• /boot/initrd ื‘ืกืคืจื™ื™ื”.

boobstrap ืœื ืžืฉืชืžืฉ ื‘-busybox, ื•ื›ื“ื™ ืœื™ืฆื•ืจ ืกื‘ื™ื‘ืช initramfs ืขื•ื‘ื“ืช, ืงื‘ื•ืฆื” ืžื™ื ื™ืžืœื™ืช ืฉืœ ืชื•ื›ื ื™ื•ืช ืžื•ืขืชืงืช ื‘ืืžืฆืขื•ืช ldd, ื”ื ื—ื•ืฆื” ืœืืชื—ื•ืœ ื•ืœืžืขื‘ืจ ืœืžืขืจื›ืช. ืืช ืจืฉื™ืžืช ื”ืชื•ื›ื ื™ื•ืช ืœื”ืขืชืงื”, ื›ืžื• ื›ืœ ื“ื‘ืจ ืื—ืจ, ื ื™ืชืŸ ืœื”ื’ื“ื™ืจ ื“ืจืš ืงื•ื‘ืฅ ื”ืชืฆื•ืจื” /etc/boobstrap/boobstrap.conf. ื›ืžื• ื›ืŸ, ืืชื” ื™ื›ื•ืœ ืœื”ืชืงื™ืŸ ื›ืœ ื”ืคืฆื” ืžื™ื ื™ืžืœื™ืกื˜ื™ืช ืœืชื•ืš chroot/ ื ืคืจื“, ืฉืžืžื ื• ืชื•ื›ืœ ืœื™ืฆื•ืจ ืกื‘ื™ื‘ืช initramfs ืžืœืื”. ื›ืกื‘ื™ื‘ื” ืžื™ื ื™ืžืœื™ืกื˜ื™ืช, ืืš ื‘ื• ื–ืžื ื™ืช ืžืœืื”, ืžื•ืฆืข ืœื”ืฉืชืžืฉ ื‘ืชื‘ื ื™ืช "crux_gnulinux-embedded", ืฉืื—ืจื™ xz ืชื•ืคืกืช ืคืฉืจื” ืฉืœ 37 ืžื’ื”-ื‘ื™ื™ื˜. busybox, ืžืœื‘ื“ ื”ื’ื•ื“ืœ ืฉืœื•, 3-5 ืžื’ื”-ื‘ื™ื™ื˜ ืœืขื•ืžืช 30-50 ืžื’ื”-ื‘ื™ื™ื˜ ืฉืœ ืกื‘ื™ื‘ืช ื’ื ื•/ืœื™ื ื•ืงืก ืžืœืื”, ื›ื‘ืจ ืœื ืžืฆื™ืข ื™ืชืจื•ื ื•ืช ื›ืœืฉื”ื, ื›ืš ืฉื”ืฉื™ืžื•ืฉ ื‘-busybox ื‘ืคืจื•ื™ืงื˜ ืœื ื ืจืื” ืžืชืื™ื.

ื›ื™ืฆื“ ืœื‘ื“ื•ืง ื‘ืžื”ื™ืจื•ืช ืืช ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื•ืœื”ืชื—ื™ืœ? ื”ืชืงืŸ ื•ื”ืคืขืœ.

# ืฉื™ื‘ื•ื˜ git https://github.com/sp00f1ng/boobstrap.git
# ืจืฆื•ืขืช ืฆื™ืฆื™ื ืœืชืงืœื™ื˜ื•ืจ
# ื‘ืฆืข ื”ืชืงื ื”# boobstrap/tests/crux_gnulinux-download-and-build
# qemu-system-x86_64 -enable-kvm -m 1G -cdrom tmp.*/install.iso

ืืชื” ื’ื ืฆืจื™ืš ืœื”ืชืงื™ืŸ ืชืœื•ืช, ื›ืœื•ืžืจ: cpio, grub, grub-efi, dosfstools, xorriso. ืื™ืŸ ืฆื•ืจืš ืœื”ืฉืชืžืฉ ื‘ื›ืœื™ squashfs; ืืชื” ื™ื›ื•ืœ ืœืขื‘ื•ื“ ื‘-tmpfs ืขื ื”ื›ืžื•ืช ื”ืžืชืื™ืžื” ืฉืœ ื–ื™ื›ืจื•ืŸ RAM. ืื ืžืฉื”ื• ื—ืกืจ ื‘ืžืขืจื›ืช, boobstrap ื™ื“ื•ื•ื— ืขืœ ื›ืš ืขื ื”ื”ืคืขืœื”.

ื›ื“ื™ ืœืคืฉื˜ ืืช ื™ืฆื™ืจืช ื”ืชืฆื•ืจื•ืช, boobstrap ืžืฆื™ืข ืœื”ืฉืชืžืฉ ื‘"ืชื‘ื ื™ื•ืช" ื•"ืžืขืจื›ื•ืช", ื”ืžื”ื•ืช ืฉืœื”ืŸ ื”ื™ื ืœื”ืฉืชืžืฉ ื‘"ืชื‘ื ื™ื•ืช" (bootstrap-templates/) ื›ื“ื™ ืœื”ืชืงื™ืŸ ื‘ืžื”ื™ืจื•ืช ืžืขืจื›ื•ืช ืžืงื•ื‘ืฅ, ื•ื‘ืื•ืคืŸ ื™ืฉื™ืจ "ืžืขืจื›ื•ืช" (bootstrap- systems/) ื”ืžืฉืžืฉื™ื ืœื”ื’ื“ืจืช ืชืฆื•ืจื•ืช ืกื•ืคื™ื•ืช.

ื›ืš ืœืžืฉืœ, ื”ืคืขืœืช ื”ืกืงืจื™ืคื˜ boobstrap/bootstrap-templates/crux_gnulinux-embedded.bbuild ืชืชืงื™ืŸ ืืช ื”ืชืฆื•ืจื” ื”ืžื™ื ื™ืžืœื™ืช ืฉืœ ืžืขืจื›ืช CRUX GNU/Linux ื•ืชืฉืžื•ืจ ืื•ืชื” ื‘ืงื•ื‘ืฅ crux_gnulinux-embedded.rootfs, ื•ืื– ืชืคืขื™ืœ ืืช boobstrap/bootstrap-systems /default/crux_gnulinux.bbuild ืืฉืจ ื™ื˜ืขืŸ ืืช ื”ืชืฆื•ืจื” ื”ืจืืฉื™ืช ืžื”ืงื•ื‘ืฅ ืฉื”ื•ื–ื›ืจ, ื™ื‘ืฆืข ืืช ื›ืœ ื”ืชืฆื•ืจื” ื”ื ื“ืจืฉืช ื•ื™ื›ื™ืŸ ISO ืฉื ื™ืชืŸ ืœืืชื—ื•ืœ. ื–ื” ื ื•ื—, ืœืžืฉืœ, ื›ืืฉืจ ืžืขืจื›ื•ืช ืจื‘ื•ืช ืžืฉืชืžืฉื•ืช ื‘ืื•ืชื• ืกื•ื’ ืฉืœ ืชืฆื•ืจื”: ื›ื“ื™ ืœื ืœืชืืจ ืืช ืื•ืชื” ืกื˜ ื—ื‘ื™ืœื•ืช ื‘ื›ืœ ืคืขื, ืืชื” ืžืฉืชืžืฉ ื‘ืชื‘ื ื™ืช ืื—ืช, ืฉืขืœ ื‘ืกื™ืกื” ืืชื” ื™ื•ืฆืจ ืชืžื•ื ื•ืช ืืชื—ื•ืœ ืฉืœ ืžืขืจื›ื•ืช ืขื ื”ืชืฆื•ืจื” ื”ืกื•ืคื™ืช.

ืื™ืคื” ืื ื™ ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ื›ืœ ื–ื”?

ืืชื” ืžื’ื“ื™ืจ ืืช ื”ืžืขืจื›ืช ื‘ืงื•ื‘ืฅ ืคืขื ืื—ืช ื•ืขืœ ื™ื“ื™ ื”ืคืขืœืชื• ืืชื” ื‘ื•ื ื” ื•/ืื• ืžืขื“ื›ืŸ ืื•ืชื•. ื”ืžืขืจื›ืช ืคื•ืขืœืช ื‘-tmpfs, ืžื” ืฉื”ื•ืคืš ืื•ืชื” ืœืžืขืฉื” ื—ื“ ืคืขืžื™ืช. ืื ื”ืžืขืจื›ืช ื ื›ืฉืœืช, ืชื•ื›ืœ ืœื—ื–ื•ืจ ืœืžืฆื‘ื” ื”ืžืงื•ืจื™ ื‘ืœื—ื™ืฆื” ืื—ืช ืขืœ ื›ืคืชื•ืจ ื”ืื™ืคื•ืก. ืืชื” ื™ื›ื•ืœ ืœื”ืจื™ืฅ ื‘ื‘ื˜ื—ื” ืืช rm -rf /.

ืืชื” ื™ื›ื•ืœ ืœื”ื’ื“ื™ืจ ืืช ื”ืชืฆื•ืจื•ืช ืฉืœ ื›ืœ ื”ืžืขืจื›ื•ืช ืฉืœืš ื‘ืื•ืคืŸ ืžืงื•ืžื™, ืœื™ืฆื•ืจ ืชืžื•ื ื•ืช, ืœื‘ื“ื•ืง ืื•ืชืŸ ื‘ืžื›ื•ื ื” ื•ื™ืจื˜ื•ืืœื™ืช ืื• ื‘ื—ื•ืžืจื” ื ืคืจื“ืช, ื•ืื– ืœื”ืขืœื•ืช ืื•ืชืŸ ืœืฉืจืช ืžืจื•ื—ืง ื•ืœื”ืจื™ืฅ ืจืง ืฉืชื™ ืคืงื•ื“ื•ืช kexec -l /vmlinuz โ€”initrd=/initrd && kexec -e ื›ื“ื™ ืœืขื“ื›ืŸ ืืช ื›ืœ ื”ืžืขืจื›ืช ื›ื•ืœื”, ืœืืชื—ืœ ืื•ืชื” ืœ-tmpfs.

ื‘ืื•ืชื• ืื•ืคืŸ, ื ื™ืชืŸ ืœื”ืขื‘ื™ืจ ืืช ื›ืœ ื”ืžืขืจื›ื•ืช, ืœืžืฉืœ ื‘-VDS, ืœืขื‘ื•ื“ื” ื‘-tmpfs, ื•ืœื”ืฆืคื™ืŸ ืืช ื”ื“ื™ืกืง /dev/vda ื•ืœื”ืฉืชืžืฉ ื‘ื• ืจืง ืขื‘ื•ืจ ื ืชื•ื ื™ื, ืœืœื ืฆื•ืจืš ืœื”ื—ื–ื™ืง ื‘ื• ืืช ืžืขืจื›ืช ื”ื”ืคืขืœื”. "ื ืงื•ื“ืช ื“ืœื™ืคืช ื”ืžื™ื“ืข" ื”ื™ื—ื™ื“ื” ื‘ืžืงืจื” ื–ื” ืชื”ื™ื” ืจืง โ€‹โ€‹"ื”ืžื–ื‘ืœื” ื”ืงืจื”" ืฉืœ ื”ื–ื™ื›ืจื•ืŸ ืฉืœ ื”ืžื›ื•ื ื” ื”ื•ื™ืจื˜ื•ืืœื™ืช ืฉืœืš, ื•ื‘ืžืงืจื” ืฉืœ ืคื’ื™ืขื” ื‘ืžืขืจื›ืช (ืœื“ื•ื’ืžื”, ืขืœ ื™ื“ื™ ื ื™ื—ื•ืฉ ืกื™ืกืžืช ssh ืื• ืคื’ื™ืขื•ืช ื‘ Exim), ืืชื” ื™ื›ื•ืœ ืœื”ื•ืจื™ื“ ISO ื—ื“ืฉ ื“ืจืš "ืœื•ื— ื”ื‘ืงืจื”" ืฉืœ ื”ืกืคืง ืฉืœืš, ื›ื“ื™ ืœื”ื—ื–ื™ืจ ืืช ื”-VDS ืœืคืขื•ืœื”, ืžื‘ืœื™ ืœืฉื›ื•ื— ืœืขืจื•ืš ืืช ืชืฆื•ืจืช ื”ืžืขืจื›ืช ื›ื“ื™ ืœืกื’ื•ืจ ืืช ื›ืœ ื”ืคื’ื™ืขื•ื™ื•ืช. ื–ื” ืžื”ื™ืจ ื™ื•ืชืจ ืžื”ืชืงื ื” ืžื—ื“ืฉ, ืชืฆื•ืจื” ืฉืœืื—ืจ ืžื›ืŸ ื•/ืื• ืฉื—ื–ื•ืจ ืžื’ื™ื‘ื•ื™, ืžื›ื™ื•ื•ืŸ ืฉื‘ืขืฆื, ื”-ISO ื”ื ื™ืชืŸ ืœื”ื•ืจื“ื” ืขื ื”ืžืขืจื›ืช ืฉืœืš ื”ื•ื ื”ื’ื™ื‘ื•ื™ ืฉืœืš. "ืฉื‘ืข ืฆืจื•ืช - ืื™ืคื•ืก ืื—ืช".

ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ, ืชื•ื›ืœื• ืœื™ืฆื•ืจ ื›ืœ ื”ืคืฆื” ืœืฆืจื›ื™ื ืฉืœื›ื, ืœื›ืชื•ื‘ ืื•ืชื” ืœื›ื•ื ืŸ USB ื•ืœืขื‘ื•ื“ ื‘ื•, ืœืขื“ื›ืŸ ืื•ืชื” ืœืคื™ ื”ืฆื•ืจืš ื•ืœืฉื›ืชื‘ ืื•ืชื” ืฉื•ื‘ ืœื›ื•ื ืŸ ื”-USB. ื›ืœ ื”ื ืชื•ื ื™ื ืžืื•ื—ืกื ื™ื ื‘ืขื ื ื™ื. ืืชื” ื›ื‘ืจ ืœื ืฆืจื™ืš ืœื“ืื•ื’ ืœื‘ื˜ื™ื—ื•ืช ื”ืžืขืจื›ืช ื•ืœื‘ืฆืข ื’ื™ื‘ื•ื™ ื›ืืฉืจ ื”ืžืขืจื›ืช, ืื ื™ ื—ื•ื–ืจ, ื”ืคื›ื” ื‘ืขืฆื ืœ"ื—ื“ ืคืขืžื™ืช".

ืจืฆื•ื ื•ืชื™ื›ื, ื”ื”ืฆืขื•ืช ื•ื”ื”ืขืจื•ืช ืฉืœื›ื ื™ืชืงื‘ืœื• ื‘ื‘ืจื›ื”.

ื‘ืžืื’ืจ ื‘ืงื™ืฉื•ืจ ืœืžื˜ื” ื™ืฉ ืงื•ื‘ืฅ README ืžืคื•ืจื˜ (ื‘ืื ื’ืœื™ืช) ืขื ืชื™ืื•ืจ ืฉืœ ื›ืœ ื›ืœื™ ื•ื“ื•ื’ืžืื•ืช ืœืฉื™ืžื•ืฉ, ื™ืฉ ื’ื ืชื™ืขื•ื“ ืžืคื•ืจื˜ ื‘ืจื•ืกื™ืช ื•ื”ื™ืกื˜ื•ืจื™ื™ืช ืคื™ืชื•ื— ื–ืžื™ื ื” ื‘ืงื™ืฉื•ืจ: ืžืชื—ื ืกืงืจื™ืคื˜ ื”ืืชื—ื•ืœ ืฉืœ boobstrap.

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

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