== [wiki:UsingBOOTP BOOTP¸¦ ÀÌ¿ëÇÑ ¿ø°ÝºÎÆÃ] == * ÀÛ¼ºÀÚ Á¶ÀçÇõ([mailto:minzkn@minzkn.com]) * °íÄ£°úÁ¤ 2010³â 8¿ù 10ÀÏ : óÀ½¾¸ === ½ÃÀÛÇϱâÀü¿¡ === ÇÊÀÚ´Â ¼­¹ö¿Í ³ÝºÏÀ» ÀÌ¿ëÇϴµ¥ ³ÝºÏ¿¡´Â ODDÀåÄ¡°¡ ¾ø½À´Ï´Ù. ÀÌ °æ¿ì ³ÝºÏ¿¡ OSÇѹø ¼³Ä¡ÇÏ·Á¸é ¸Å¿ì º¹ÀâÇØÁý´Ï´Ù. ¼­¹ö´Â ÀÖÀ¸´Ï ¼­¹ö·ÎºÎÅÍ ¿ø°Ý ºÎÆÃÀ» ÇÒ¼ö ÀÖÀ¸¸é ÁÁ°Ú´Ù´Â »ý°¢À» ¸¹ÀÌ Çß¾ú´Âµ¥ ±× ÇØ´äÀÌ ÀÖ¾ú½À´Ï´Ù. ¹Ù·Î BOOTP°¡ µÇ°Ú½À´Ï´Ù. ÀÌÁ¦ PXE¸¦ Áö¿øÇÏ´Â BIOS¸¦ °¡Áø ÄÄÇ»ÅÍ´Â ¸ðµÎ ¿ø°ÝºÎÆÃÇÒ¼ö ÀÖ°Ô È¯°æÀ» ±¸ÃàÇغ¸·Á°í ÇÕ´Ï´Ù. === Kernel ¼³Á¤ === === Gentoo Linuxȯ°æ¿¡¼­ Gentoo LiveCD¸¦ ÀÌ¿ëÇÑ ¿ø°Ý ºÎÆñ¸Ãà === ¼³¸íÀÇ ÆíÀǸ¦ À§Çؼ­ ´ÙÀ½°ú °°Àº ȯ°æº¯¼ö¸¦ »ç¿ëÇÏ°Ú½À´Ï´Ù. {{{#!plain export PATH_LIVECD="/mnt/cdrom" export PATH_TEMP="/tftpboot/tmp" export PATH_TFTPROOT="/tftpboot" }}} 1. ÀÛ¾÷¿¡ ÇÊ¿äÇÑ (ÀÓ½Ã)µð·ºÅ丮µéÀ» ¸¸µì´Ï´Ù. {{{#!plain mkdir -p ${PATH_LIVECD} mkdir -p ${PATH_TEMP} mkdir -p ${PATH_TEMP}/gentoo.init.dir mkdir -p ${PATH_TFTPROOT} mkdir -p ${PATH_TFTPROOT}/netboot mkdir -p ${PATH_TFTPROOT}/netboot/pxelinux.cfg mkdir -p ${PATH_TFTPROOT}/netboot/gentoo }}} 1. DHCP server¸¦ ¼³Ä¡ÇÕ´Ï´Ù. {{{#!plain emerge net-misc/dhcp }}} {{{#!plain option domain-name "example.com"; option domain-name-servers 168.126.63.1, 168.126.63.2, 210.94.0.7, 164.124.101.2, 203.248.252.2, 210.181.1.24, 203.255.112.34; default-lease-time 600; max-lease-time 7200; # <<< ÀÌ ºÎºÐ Ãß°¡ >>> allow booting; allow bootp; ddns-update-style none; log-facility local7; subnet 10.0.0.0 netmask 255.0.0.0 { option broadcast-address 10.255.255.255; option routers 10.0.0.1; # <<< Booting ¿¡ ÀÌ¿ëÇÒ pxelinux.0ÀÇ À§Ä¡ ¹× TFTP server IPÁÖ¼Ò ¼³Á¤ >>> filename "netboot/pxelinux.0"; next-server 10.0.0.1; pool { range 10.0.0.100 10.0.0.200; allow unknown-clients; } # group { # host bootp_client { # hardware ethernet XX:XX:XX:XX:XX:XX; # fixed-address 10.0.0.200; # } # } } }}} 1. TFTP server¸¦ ¼³Ä¡ÇÕ´Ï´Ù. À̶§ ÁÖÀÇÇÒ°ÍÀÌ netkit-tftp package´Â Á¦´ë·Î Áö¿øÇÏÁö ¸øÇϹǷΠtftp-hpa package¸¦ ¼³Ä¡ÇÏ¼Å¾ß ÇÕ´Ï´Ù. ±×¸®°í ¹æÈ­º®ÀÌ ÀÖ´Â °æ¿ì "/etc/conf.d/in.tftpd"¿¡¼­ ÀûÀýÇÑ port´ë¿ªÀ» ¼³Á¤ÇØÁÖ°í ¹æÈ­º®¿¡¼­ ÇØ´ç port´ë¿ªÀ» udp¿¡ ´ëÇÏ¿© Çã¿ëÇϵµ·Ï ÇØÁÖ¼Å¾ß ÇÕ´Ï´Ù. {{{#!plain emerge net-ftp/tftp-hpa }}} 1. syslinux package¸¦ ¼³Ä¡ÇÏ°í ÇÊ¿äÇÑ ÆÄÀϵ鸸 "${PATH_TFTPROOT}/netboot" ÇÏÀ§¿¡ º¹»çÇÕ´Ï´Ù. {{{#!plain emerge sys-boot/syslinux cp /usr/share/syslinux/pxelinux.0 ${PATH_TFTPROOT}/netboot cp /usr/share/syslinux/memdisk ${PATH_TFTPROOT}/netboot }}} 1. Gentoo minimal install CD image¸¦ ´Ù¿î·Îµå ¹Þ½À´Ï´Ù. 1. ´Ù¿î·Îµå ¹ÞÀº Gentoo minimal install CD image¸¦ "${PATH_LIVECD}"¿¡ mount ÇÕ´Ï´Ù. {{{#!plain mount -o loop install-XX-minimal-XXXXXXXX.iso ${PATH_LIVECD} }}} 1. "${PATH_LIVECD}/isolinux/gentoo" Ä¿³ÎÆÄÀÏÀ» "${PATH_TFTPROOT}/netboot/gentoo"¿¡ º¹»çÇÕ´Ï´Ù. {{{#!plain cp ${PATH_LIVECD}/isolinux/gentoo ${PATH_TFTPROOT}/netboot/gentoo }}} 1. gentoo.igz ÆÄÀÏÀ» Àӽõð·ºÅ丮 "${PATH_TEMP}/gentoo.init.dir"¿¡ ¾ÐÃàÇØÁ¦ÇÕ´Ï´Ù. {{{#!plain cd ${PATH_TEMP}/gentoo.init.dir gunzip -c ${PATH_LIVECD}/isolinux/gentoo.igz | cpio -idv }}} 1. "${PATH_TEMP}/gentoo.init.dir/mnt/cdrom"µð·ºÅ丮¸¦ ¸¸µé°í ±× ¹Ø¿¡ "image.squashfs"ÆÄÀÏÀ» º¹»çÇÕ´Ï´Ù. {{{#!plain mkdir -p ${PATH_TEMP}/gentoo.init.dir/mnt/cdrom cp ${PATH_LIVECD}/isolinux/image.squashfs ${PATH_TEMP}/gentoo.init.dir/mnt/cdrom }}} 1. "${PATH_TEMP}/gentoo.init.dir/init" ÆÄÀÏÀ» "${PATH_TEMP}/gentoo.init.dir/init.org"·Î ¹é¾÷ÇÕ´Ï´Ù. {{{#!plain cp ${PATH_TEMP}/gentoo.init.dir/init ${PATH_TEMP}/gentoo.init.dir/init.org }}} 1. "${PATH_TEMP}/gentoo.init.dir/init" ÆÄÀÏ¿¡¼­ ´ÙÀ½ºÎºÐÀ» ã¾Æ¼­ ¼öÁ¤ÇÕ´Ï´Ù. {{{#!plain -- if [ "${REAL_ROOT}" != "/dev/nfs" ] && [ "${LOOPTYPE}" != "sgimips" ] ++ if [ "${REAL_ROOT}" != "/dev/nfs" ] && [ "${LOOPTYPE}" != "sgimips" ] && [ "${REAL_ROOT}" != "/" ] -- elif [ -b "${REAL_ROOT}" ] || [ "${REAL_ROOT}" = "/dev/nfs" ] ++ elif [ -b "${REAL_ROOT}" ] || [ "${REAL_ROOT}" = "/dev/nfs" ] || [ "${REAL_ROOT}" = "/" ] -- cache_cd_contents -- mount -t squashfs -o loop,ro ${NEW_ROOT}/mnt/cdrom/${LOOPEXT}${LOOP} ${NEW_ROOT}/mnt/livecd ++ mount -t squashfs -o loop,ro /mnt/cdrom/${LOOPEXT}${LOOP} ${NEW_ROOT}/mnt/livecd }}} 1. "${PATH_TEMP}/gentoo.init.dir"À» ´Ù½Ã ¾ÐÃàÇÏ°í "${PATH_TFTPROOT}/netboot/gentoo"·Î º¹»çÇÕ´Ï´Ù. {{{#!plain cd ${PATH_TEMP}/gentoo.init.dir find . -print | cpio -o -H newc |gzip -9 -c - > ${PATH_TFTPROOT}/netboot/gentoo/initrd.gz }}} 1. "${TFTPROOT}/netboot/pxelinux.cfg/default"À¸·Î ´ÙÀ½ÀÇ ³»¿ëÀ» ÆíÁýÇÏ¿© ¸¸µì´Ï´Ù. {{{#!plain default gentoo_x86 prompt 1 timeout 600 label gentoo_x86 kernel gentoo/gentoo append initrd=gentoo/initrd.gz ip=dhcp root=/dev/ram0 init=/linuxrc loop=/image.squashfs looptype=squashfs cdroot=1 real_root=/ vga=normal dokeymap label local LOCALBOOT 0 }}}