ããã§ãGNU/Linux ãã£ã¹ããªãã¥ãŒã·ã§ã³ã§ããŒã ã€ã¡ãŒãžãäœæããããã®ãPOSIX ã·ã§ã«ã§æžãããããŒã¹ãã©ãããšåŒã°ãããã¬ãŒã ã¯ãŒã¯ã玹ä»ããããšæããŸãããã®ãã¬ãŒã ã¯ãŒã¯ã䜿çšãããšãchroot ã§ã®ã·ã¹ãã ã®ãããã€ãããchroot ãããã·ã¹ãã ãå«ã initramfs ã€ã¡ãŒãžã®äœæããããŠæçµçã«ã¯ããŒãå¯èœãª ISO ã€ã¡ãŒãžã®äœæãŸã§ãããã 3 ã€ã®ç°¡åãªã¹ãããã§ããã»ã¹å šäœãå®è¡ã§ããŸããããŒãã¹ãã©ããã«ã¯ããããã mkbootstrapãmkinitramfsãããã³ mkbootisofs ã® 3 ã€ã®ãŠãŒãã£ãªãã£ãå«ãŸããŠããŸãã
mkbootstrap ã¯ã·ã¹ãã ãå¥ã®ãã£ã¬ã¯ããªã«ã€ã³ã¹ããŒã«ããŸããCRUX ã®ãã€ãã£ã ãµããŒãããããArch Linux / Manjaro ããã³ Debian ããŒã¹ã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ã®å Žåã¯ããµãŒãããŒã㣠ãŠãŒãã£ãªãã£ã® pacstrapãbasestrapãããã³ debootstrap ããããã䜿çšããå¿ èŠããããŸãã
mkinitramfs 㯠initramfs ã€ã¡ãŒãžãäœæããŸãããã£ã¬ã¯ããªã«ã€ã³ã¹ããŒã«ãããã·ã¹ãã ãããªãŒããŒã¬ã€ããšããŠäœ¿çšããSquashFS ã䜿çšããŠå§çž®ããããã·ã¹ãã ãèµ·åããåŸãtmpfs ã§çŽæ¥äœæ¥ãããã§ããŸããããšãã°ãã³ãã³ã mkinitramfs `mktemp -d` --overlay "arch-chroot/" --overlay "/home" --squashfs-xz --output initrd ã¯ã"arch-chroot/" --overlay "/home" --squashfs-xz --output initrd ãå«ã initrd ãã¡ã€ã«ãäœæããŸãã chroot/" ã·ã¹ãã ãš "/home" ã SquashFS ã䜿çšããŠå§çž®ããPXE çµç±ã§ tmpfs ã§èµ·åãããããã® initrd ã§èµ·åå¯èœãª ISO ã€ã¡ãŒãžãäœæã§ããŸãã
mkbootisofs ã¯ãæå®ããããã£ã¬ã¯ããªãã BIOS/UEFI ããŒãå¯èœ ISO ã€ã¡ãŒãžãäœæããŸãã /boot/vmlinuz ãš /boot/initrd ããã£ã¬ã¯ããªã«çœ®ãã ãã§ãã
ããŒã¹ãã©ããã¯ããžãŒããã¯ã¹ã䜿çšãããåäœãã initramfs ç°å¢ãäœæããããã«ãããŒãããŠã·ã¹ãã ã«åãæ¿ããããã«å¿ èŠãªæå°éã®ããã°ã©ã ã®ã»ããã ldd ã䜿çšããŠã³ããŒãããŸããã³ããŒããããã°ã©ã ã®ãªã¹ãã¯ãä»ã®ãã¹ãŠãšåæ§ãæ§æãã¡ã€ã« /etc/boobstrap/boobstrap.conf ãéããŠæ§æã§ããŸãããŸããæå°éã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ãå¥ã® chroot/ ã«ã€ã³ã¹ããŒã«ããããããæ¬æ Œç㪠initramfs ç°å¢ãäœæããããšãã§ããŸãããã®ãããªæå°éã§ãããªããåæã«æ¬æ Œçãªç°å¢ãšããŠããcrux_gnulinux-embeddedããã³ãã¬ãŒãã䜿çšããããšãææ¡ãããŠããŸããããã¯ãxz ã®åŸã« 37 MB ã®åŠ¥åç¹ãå¿ èŠãšããŸããæ¬æ Œç㪠GNU/Linux ç°å¢ã® 3 ïœ 5 MB ã«å¯ŸããŠãbusybox ã¯ãµã€ãºã 30 ïœ 50 MB ã§ããããšãé€ãã°ãäœã®å©ç¹ããããŸããããã®ããããããžã§ã¯ã㧠Busybox ã䜿çšããããšã¯é©åã§ã¯ãªããšæãããŸãã
æ©èœãããã«ç¢ºèªããŠéå§ããã«ã¯ã©ãããã°ããã§ãã?ã€ã³ã¹ããŒã«ããŠå®è¡ããŸãã
# git ã¯ããŒã³ https://github.com/sp00f1ng/boobstrap.git
# cd ããŒãã¹ãã©ãã
# ã€ã³ã¹ããŒã«ãè¡ã #boostrap/tests/crux_gnulinux-download-and-build
ãŸããäŸåé¢ä¿ (cpioãgrubãgrub-efiãdosfstoolsãxorriso) ãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã squashfs-tools ã䜿çšããå¿ èŠã¯ãããŸãããé©åãªéã® RAM ãããã° tmpfs ã§äœæ¥ã§ããŸããã·ã¹ãã ã«äœããäžè¶³ããŠããå ŽåãããŒãã¹ãã©ããã¯èµ·åæã«ãããå ±åããŸãã
æ§æã®äœæãç°¡çŽ åããããã«ãbootstrap ã¯ããã³ãã¬ãŒãããšãã·ã¹ãã ãã䜿çšããããšãææ¡ããŠããŸãããã®æ¬è³ªã¯ãããã³ãã¬ãŒãã (bootstrap-templates/) ã䜿çšããŠãã¡ã€ã«ããã·ã¹ãã ããã°ããã€ã³ã¹ããŒã«ããçŽæ¥ãã·ã¹ãã ã (bootstrap- system/) ã¯ãæçµæ§æãã»ããã¢ããããããã«äœ¿çšãããŸãã
ããšãã°ãã¹ã¯ãªããbootstrap/bootstrap-templates/crux_gnulinux-embedded.bbuildãå®è¡ãããšãCRUX GNU/Linuxã·ã¹ãã ã®æå°æ§æãã€ã³ã¹ããŒã«ããããã¡ã€ã«crux_gnulinux-embedded.rootfsã«ä¿åãããŸãããã®åŸãbootstrap/bootstrap-systemsãå®è¡ããŸãã /default/crux_gnulinux.bbuild ã¯ãåè¿°ã®ãã¡ã€ã«ãããã©ã€ããªèšå®ãããŒãããå¿ èŠãªèšå®ããã¹ãŠå®è¡ããŠãããŒãå¯èœãª ISO ãæºåããŸããããã¯ãããšãã°ãå€ãã®ã·ã¹ãã ãåãã¿ã€ãã®æ§æã䜿çšããå Žåã«äŸ¿å©ã§ããæ¯ååãããã±ãŒãžã®ã»ãããèšè¿°ããªãããã«ããããã«ã1 ã€ã®ãã³ãã¬ãŒãã䜿çšããããã«åºã¥ããŠæçµæ§æã®ã·ã¹ãã ã®ããŒã ã€ã¡ãŒãžãäœæããŸãã
ããã¯ã©ãã§äœ¿ããŸãã?
ãã¡ã€ã«ã§ã·ã¹ãã ãäžåºŠæ§æãããããå®è¡ããããšã§ãã«ããæŽæ°ãè¡ããŸããã·ã¹ãã 㯠tmpfs ã§å®è¡ããããããåºæ¬çã«äœ¿ãæšãŠã«ãªããŸããã·ã¹ãã ã«é害ãçºçããå Žåã¯ãããªã»ããããã¿ã³ã 1 åã¯ãªãã¯ããã ãã§å ã®ç¶æ ã«æ»ãããšãã§ããŸãã rm -rf / ãå®å šã«å®è¡ã§ããŸãã
ãã¹ãŠã®ã·ã¹ãã ã®æ§æãããŒã«ã«ã§æ§æããã€ã¡ãŒãžãäœæããä»®æ³ãã·ã³ãŸãã¯å¥ã®ããŒããŠã§ã¢ã§ãã¹ãããŠããããããããªã¢ãŒã ãµãŒããŒã«ã¢ããããŒãããŠã2 ã€ã®ã³ãã³ã kexec -l /vmlinuz âinitrd=/initrd && kexec -e ãå®è¡ããã ãã§æžã¿ãŸããã·ã¹ãã å šäœãæŽæ°ããã«ã¯ãtmpfs ã§åèµ·åããŸãã
åæ§ã«ãVDS ãªã©ã®ãã¹ãŠã®ã·ã¹ãã ã tmpfs ã§åäœããããã«è»¢éãããã/dev/vda ãã£ã¹ã¯ãæå·åããŠããŒã¿ã®ã¿ã«äœ¿çšãããã§ããŸãããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ããã®äžã«ä¿æããå¿ èŠã¯ãããŸããããã®å Žåã®å¯äžã®ãæ å ±æŒæŽ©ãã€ã³ããã¯ãä»®æ³ãã·ã³ã®ã¡ã¢ãªã®ãã³ãŒã«ã ãã³ããã ãã§ãããã·ã¹ãã ã®äŸµå®³ãçºçããå ŽåïŒããšãã°ãSSH ãã¹ã¯ãŒããè匱æ§ã®æšæž¬ã«ããïŒã®ã¿ã§ãã Exim)ããããã€ããŒã®ãã³ã³ãããŒã« ããã«ãããæ°ãã ISO ãããŠã³ããŒããããšãã·ã¹ãã æ§æãç·šéããŠãã¹ãŠã®è匱æ§ã解æ¶ããããšãå¿ããã«ãVDS ãåäœã«æ»ãããšãã§ããŸããããã¯ãæ¬è³ªçã«ãã·ã¹ãã ã«ããŠã³ããŒãå¯èœãª ISO ãããã¯ã¢ããã§ãããããåã€ã³ã¹ããŒã«ããã®åŸã®æ§æãããã³/ãŸãã¯ããã¯ã¢ããããã®åŸ©å ãããé«éã§ãã ã7ã€ã®ãã©ãã«ã1ã€ã®ãªã»ãããã
æçµçã«ã¯ãå¿ èŠã«å¿ããŠãã£ã¹ããªãã¥ãŒã·ã§ã³ãäœæããUSB ãã©ã€ãã«æžã蟌ãã§äœæ¥ããå¿ èŠã«å¿ããŠæŽæ°ããå床 USB ãã©ã€ãã«æžãæããããšãã§ããŸãããã¹ãŠã®ããŒã¿ã¯ã¯ã©ãŠãã«ä¿åãããŸããç¹°ãè¿ããŸãããã·ã¹ãã ãåºæ¬çã«ã䜿ãæšãŠãã«ãªã£ããšãã«ãã·ã¹ãã ã®å®å šæ§ãå¿é ããããããã¯ã¢ãããäœæãããããå¿ èŠã¯ãããããŸããã
ãèŠæããææ¡ãã³ã¡ã³ãããåŸ ã¡ããŠãããŸãã
以äžã®ãªã³ã¯ã®ãªããžããªã«ã¯ãåãŠãŒãã£ãªãã£ã®èª¬æãšäœ¿çšäŸãå«ã詳现㪠README ãã¡ã€ã« (è±èª) ãããããã·ã¢èªã®è©³çŽ°ãªããã¥ã¡ã³ããšéçºå±¥æŽããªã³ã¯ããå ¥æã§ããŸãã ããŒãã¹ãã©ãã ããŒã ã¹ã¯ãªããè€åäœ.
åºæïŒ linux.org.ru