PXE-boot
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

Contents

1 PXE
2 ±¸Ãà ȯ°æ
3 ¿î¿µÃ¼Á¦ ¼³Ä¡ ÆÄÀÏ ÀúÀå¼Ò Áغñ
4 TFTP ¼­¹ö ¼³Á¤
4.1 syslinux bootloader ¼³Ä¡
4.2 pxelinux ¼³Á¤
5 DHCP ¼³Á¤
6 PXE Ŭ¶óÀÌ¾ðÆ® Å×½ºÆ®
7 kickstart
8 È÷½ºÅ丮

1 PXE

PXE(Preboot Execution Environment)Àº ³×Æ®¿öÅ© ÀÎÅÍÆäÀ̽º¸¦ ÀÌ¿ëÇØ¼­ ÄÄÇ»Å͸¦ ºÎÆÃÇÒ ¼ö ÀÖ°Ô ¸¸µé¾îÁִ ȯ°æÀ¸·Î, Çϵåµð½ºÅ©³ª CD-ROM °°Àº µ¥ÀÌÅÍ ÀúÀå¼Ò¿¡ ±¸¾Ö ¹ÞÁö ¾Ê°í ¿î¿µÃ¼Á¦¸¦ ¼³Ä¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. 1999³â¿¡ ¼Ò°³µÈ ¿À·¡µÈ ±â¼úÀε¥, ´ÙÀ½°ú °°Àº ±â¼úµéÀ» ÀÌ¿ëÇØ¼­ ±¸ÇöÇÕ´Ï´Ù.
  1. DHCP : Dynamic Host Configuration Protocol
  2. TFTP : Trival File Transfer Protocol
  3. IP : Internet Protocol
  4. UDP : User Datagram Protocol
  5. GUID
  6. UUID

PXE Boot´Â ½Ã½ºÅÛ °ü¸® À̽´·Î ÇÁ·Î±×·¡¸Ó´Â ±»ÀÌ ±íÀÌ ½Å°æ ¾µ ÇÊ¿ä¾ø´Â ±â¼úÀ̶ó°í »ý°¢µË´Ï´Ù¸¸, Ŭ¶ó¿ìµå¸¦ ÇÑ´Ù¸é ¹Ýµå½Ã ¾Ë¾Æ¾ß ÇÏ´Â ±â¼úÀ̱⵵ ÇÕ´Ï´Ù. ÀÚµ¿È­ÀÇ °¡Àå ù ´Ü°è°¡ PXE¸¦ ÀÌ¿ëÇÑ ¿î¿µÃ¼Á¦ÀÇ ¼³Ä¡À̱⠶§¹®ÀÔ´Ï´Ù. PXE Boot¸¦ Çϸé kickstartµµ ÀÚ¿¬½º·´°Ô µû¶ó¿É´Ï´Ù.

2 ±¸Ãà ȯ°æ

PXE Boot ȯ°æÀ» ±¸ÃàÇϱâ À§Çؼ­´Â PXE ¼­¹ö¿Í PXE Ŭ¶óÀÌ¾ðÆ® ÃÖ¼Ò 2´ëÀÇ ³ëµå°¡ ÇÊ¿äÇÕ´Ï´Ù.
  • PXE ¼­¹ö
    PXE Ŭ¶óÀÌ¾ðÆ®¿¡°Ô ¿ø°Ý ºÎÆÃ ¹× ¿î¿µÃ¼Á¦ ÀνºÅç ȯ°æÀ» Á¦°øÇÏ´Â ÄÄÇ»ÅÍ ³ëµåÀÔ´Ï´Ù.
  • PXE Ŭ¶óÀ̾ðÆ®
    ¿î¿µÃ¼Á¦¸¦ ¼³Ä¡ÇϰíÀÚ ÇÏ´Â ¸ðµç ÄÄÇ»ÅÍÀÔ´Ï´Ù. ¸ÞÀκ¸µå°¡ PXE¸¦ Áö¿øÇÏ¸é µÇ´Âµ¥, ¿äÁòÀº °ÅÀÇ ¸ðµç ¸ÞÀκ¸µå°¡ PXE¸¦ Áö¿øÇÏ´Ï °ÆÁ¤ÇÒ °Í ¾ø½À´Ï´Ù.

Àú´Â µÎ °³ÀÇ ¹°¸®Àû ³ëµå´ë½Å¿¡ VMÀ» ÀÌ¿ëÇØ¼­ Å×½ºÆ® ȯ°æÀ» ±¸ÃàÇϱâ·Î Çß½À´Ï´Ù. Host VMÀ» PXE ¼­¹ö·Î Guest VMÀ» PXE Ŭ¶óÀÌ¾ðÆ®·Î ±¸¼ºÇß½À´Ï´Ù.

  1. PXE Server
    Á¦ ubuntu ¸®´ª½º µ¥½ºÅ¾ÀÔ´Ï´Ù.
  2. Gest VM
    PXE BootÇÒ VMµéÀÔ´Ï´Ù.
  3. KVM
    Guest VMÀ» ½ÇÇàÇÒ hypervisor

KVMÀº HVM¹æ½ÄÀÇ ÇÏÀÌÆÛ ¹ÙÀÌÀú·Î qemu·Î Çϵå¿þ¾î¸¦ ¾Ö¹Ä·¹ÀÌ¼Ç ÇÕ´Ï´Ù. µû¶ó¼­ qemu°¡ PXE¸¦ Áö¿øÇϵµ·Ï ÇØ¾ß Çϴµ¥, ¾Æ·¡ÀÇ ÆÐŰÁö¸¦ ¼³Ä¡ÇÏ¸é µË´Ï´Ù.
# apt-get install kvm-pxe 
 

3 ¿î¿µÃ¼Á¦ ¼³Ä¡ ÆÄÀÏ ÀúÀå¼Ò Áغñ

Guest VM¿¡ ¼³Ä¡ÇÒ iso ÆÄÀÏÀ» ´Ù¿î·Îµå ÇÕ´Ï´Ù. Àú´Â CentOS-6.2-x86_64-bin-DVD1.iso, CentOS-6.2-x86_64-bin-DVD1.iso ¸¦ ÁغñÇß½À´Ï´Ù.

Guest VMÀº http ȤÀº NFS¸¦ ÀÌ¿ëÇØ¼­ ¿ø°Ý¿¡ ÀÖ´Â ¿î¿µÃ¼Á¦ ÆÐŰÁö¸¦ ´Ù¿î·ÎµåÇØ¼­ ¼³Ä¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. Àú´Â apache À¥ ¼­¹ö¸¦ ÀÌ¿ëÇß½À´Ï´Ù. apache ¼­¹ö ¼³Ä¡¿Í ¼³Á¤Àº »ý·«ÇÕ´Ï´Ù. DocumentRoot¸¦ /var/www·Î Çß½À´Ï´Ù.

HTTP·Î ÀνºÅç ÇÒ°æ¿ì iso¸¦ Á÷Á¢ ÀνºÅçÇÒ ¼ö ¾ø½À´Ï´Ù. ±×·¡¼­ ¾Æ·¡¿Í °°ÀÌ ¸¶¿îÆ® ÇØ¼­ ±¸ÃàÇß½À´Ï´Ù. ½ÇÁ¦ ¿î¿µÇÒ ¶§´Â mountº¸´Ù´Â ÆÄÀÏÀ» Á÷Á¢ º¹»çÇÏ´Â°É ±ÇÀå ÇÕ´Ï´Ù.
# mkdir /var/www/iso/centos/x86_64/{6.2,5.7} 
# mount -o CentOS-6.2-x86_64-bin-DBD1.iso  /var/www/iso/centos/x86_64/6.2 
 

4 TFTP ¼­¹ö ¼³Á¤

PXE Ŭ¶óÀÌ¾ðÆ®´Â TFTP¸¦ ÀÌ¿ëÇØ¼­ ºÎÆ®·Î´õ¸¦ ´Ù¿î·Îµå ÇÕ´Ï´Ù. ±×·¯¹Ç·Î PXE ¼­¹ö´Â TFTP ¼­¹ö¸¦ ¿î¿µÇØ¾ß ÇÕ´Ï´Ù.

tftp¸¦ ¼³Ä¡ÇÕ´Ï´Ù. xinetd(;12) ±â¹ÝÀ¸·Î ½ÇÇàÇÒ °Ì´Ï´Ù.
# sudo apt-get install tftp tftpd 
 

¼³Á¤ÆÄÀÏÀ» ¼öÁ¤ÇÕ´Ï´Ù.
# cat /etc/xinetd.d 
service tftp  
{  
        disable = no  
        socket_type             = dgram  
        protocol                = udp  
        wait                    = yes  
        user                    = root  
        server                  = /usr/sbin/in.tftpd  
        server_args             = -s /srv/tftpboot  
        per_source              = 11  
        cps                     = 100 2  
        flags                   = IPv4  
}  
 
tftpÀÇ ·çÆ® µð·ºÅ丮´Â /srv/tftpboot·Î Çß½À´Ï´Ù. ¿©±â¿¡ ¿ø°Ý ºÎÆÃÀ» À§ÇÑ ÆÄÀϵéÀ» Ä«ÇÇÇÏ¸é µË´Ï´Ù.

4.1 syslinux bootloader ¼³Ä¡

ÀÌÁ¦ PXE Client°¡ ·ÎµåÇÒ ºÎÆ®·Î´õ¸¦ ¼³Ä¡ ÇÕ´Ï´Ù. Àú´Â syslinux¸¦ ºÎÆ®·Î´õ·Î »ç¿ëÇϱâ·Î Çß½À´Ï´Ù. syslinux´Â °ø°³ ¼ÒÇÁÆ®¿þ¾î·Î FAT filesystem°ú network booting (PXEBoot)¸¦ À§ÇÑ °¡º­¿î ºÎÆ®·Î´õ ¼ÒÇÁÆ®¿þ¾îÀÔ´Ï´Ù.
# apt-get install syslinux syslinux-common 
 

ºÎÆ® À̹ÌÁö¸¦ /srv/tftpboot·Î º¹»çÇÕ´Ï´Ù.
# cd /srv/tftpboot 
# cp /usr/lib/syslinux{pxelinux.0,menu.c32} ./  
 

4.2 pxelinux ¼³Á¤

pxelinux.cfg/default ÆÄÀÏÀ» ÆíÁýÇÕ´Ï´Ù.
# cd /srv/tftpboot 
# mkdir pxelinux.cfg 
# cd pxelinux.cfg 
# vi default 
timeout 60  
default centos6.2 
label centos6.2 
  kernel images/centos/x86_64/6.2/vmlinuz  
  append initrd=images/centos/x86_64/6.2/initrd.img ramdisk_size=100000 ks=http://192.168.56.1/ks.cfg  
prompt 1 
 
  • label : ºÎÆÃ ¸Þ´ºÀÔ´Ï´Ù. Àü centos6.2 ÇϳªÀÇ ¸Þ´º¸¸ ÁغñÇß½À´Ï´Ù.
  • kernel : centos6.2ÀÇ ºÎÅõÀ̹ÌÁö ÀÔ´Ï´Ù.

centos6.2¸®´ª½ºÀÇ À̹ÌÁö´Â iso¸¦ ¸¶¿îÆ®ÇØ¼­ º¹»çÇÏ¸é µË´Ï´Ù. ¸ÕÀú À̹ÌÁö¸¦ º¹»çÇÒ µð·ºÅ丮¸¦ ¸¸µé¾î¾ß °ÚÁÒ.
# mkdir /srv/tftpboot/images/centos/x86_64/6.2 
 

centos iso¸¦ ¸¶¿îÆ® ÇØ¼­, À̹ÌÁö¸¦ º¹»çÇÕ´Ï´Ù.
# mount -o loop CentOS-6.2-x86_64-binDVD1.iso /mnt/centos 
# cp /mnt/centos/images/pxeboot/{initrd.img,vmlinuz}  /srv/tftpboot/images/centos/x86_64/6.2 
# umount /mnt/centos 
 

tftp ¼­¹ö¸¦ Àç ½ÃÀÛ ÇÕ´Ï´Ù.
# /etc/init.d/xinetd restart 
 

tftp ¼­¹ö°¡ Àß ¶¹´ÂÁö È®ÀÎÇÕ´Ï´Ù.
# nmap localhost -sU 
Starting Nmap 5.21 ( http://nmap.org ) at 2012-02-19 14:19 KST 
Nmap scan report for localhost (127.0.0.1) 
Host is up (0.0000050s latency). 
Not shown: 996 closed ports 
PORT     STATE         SERVICE 
69/udp   open|filtered tftp 
111/udp  open          rpcbind 
2049/udp open          nfs 
 

5 DHCP ¼³Á¤

DHCP ¼³Á¤Àº dhcp ¼­¹ö ¼³Ä¡¹®¼­¸¦ Âü°íÇϽñ⠹ٶø´Ï´Ù. ¼³Á¤ÆÄÀϸ¸ pxeboot¿¡ ¸Â°Ô ¾à°£ ¼öÁ¤Çß½À´Ï´Ù.
# cat /etc/dhcp/dhcpd.conf 
.... 
subnet 192.168.56.0 netmask 255.255.255.0 { 
        option routers 192.168.56.1; 
        host pxe-bootos { 
                hardware ethernet 08:00:27:C1:84:53; 
                fixed-address 192.168.56.61; 
                #next-server 192.168.56.1 
                filename "pxelinux.0"; 
        } 
} 
 
MAC ÁÖ¼Ò°¡ 08:00:27:C1:84:53ÀÎ 192.168.56.61ÀÇ IP ÁÖ¼Ò¸¦ ÇÒ´çÇϰí, PXEBOOT¸¦ À§Çؼ­ pxelinux.0¸¦ »ç¿ëÇ϶ó´Â Á¤º¸¸¦ PXE ClientŬ¶óÀÌ¾ðÆ®¿¡°Ô ¾Ë·ÁÁÝ´Ï´Ù.

6 PXE Ŭ¶óÀÌ¾ðÆ® Å×½ºÆ®

KVMÀ¸·Î Å×½ºÆ®Çß½À´Ï´Ù. KVM¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº Qemu¹®¼­¸¦ Âü°íÇϽñ⠹ٶø´Ï´Ù.

KVM ´ë½Å, VMware³ª VirtualBox·Îµµ Å×½ºÆ®°¡ °¡´ÉÇÒ °Ì´Ï´Ù. ´Ù¸¥ ÇÏÀÌÆÛ¹ÙÀÌÀú·Î Å×½ºÆ®´Â Á÷Á¢ ÇØº¸½Ã±â ¹Ù¶ø´Ï´Ù. °³ÀÎÀûÀ¸·Î VirtualBox·Î ½ÃµµÇغ» ÀûÀÌ Àִµ¥, ÀÚ²Ù¸¸ VirtualBox¿¡¼­ Á¦°øÇÏ´Â dhcp µ¥¸óÀÌ ¶ß´Â ¹Ù¶÷¿¡ Á¦´ë·Î Å×½ºÆ®ÇÒ ¼ö ¾ø¾ú½À´Ï´Ù. VirtualBoxÀÇ dhcp ¼³Á¤À» ¹Ù²Ù´Â ¿É¼ÇÀÌ ÀÖÀ»°Å¶ó°í »ý°¢ÇÏÁö¸¸ ã±â ±ÍÂú¾Æ¼­ kvmÀ¸·Î Å×½ºÆ®¸¦ ´ë½ÅÇß½À´Ï´Ù.

¸ÕÀú kvm image¸¦ ¸¸µì´Ï´Ù.
# qemu-img create pxe-boot.raw -f raw 10G 
 

kvm°ú Åë½ÅÇÒ tap µð¹ÙÀ̽º¸¦ ¸¸µé¾ú½À´Ï´Ù.
# openvpn --mktun --dev tap0 
# ifconfig tap0 192.168.56.1 netmask 255.255.255.0 up 
 

ÀÌÁ¦ vmÀ» ½ÇÇàÇÕ´Ï´Ù.
# qemu-system-x86_64 -m 512 -k en-us -hda pxe-boot.raw -boot n -option-rom \ 
/usr/share/kvm/pxe-rtl8139.bin -net nic,macaddr=08:00:27:C1:84:53 \ 
-net tap,ifname=tap0,script=no -net socket,listen=localhost:1200 
 
  • -option-romÀ¸·Î pxe-rtl8139.bin ·ÒÀ» ·Îµù
  • MAC address¸¦ dhcp¿¡ ¼³Á¤ÇÑ °ªÀ¸·Î ÁöÁ¤

BIOS°¡ ¶ß¸é¼­, ³×Æ®¿öÅ© ºÎÆÃÀ» ÇÒ °ÍÀÎÁö ¹¯½À´Ï´Ù.
º¸³½ »ç¶÷ Linux

³×Æ®¿öÅ© ºÎÆÃÀ» ¼±ÅÃÇϸé DCHP¼­¹ö¿¡¼­ IP¿Í ³×Æ®¿öÅ© ºÎÆ®¿¡ »ç¿ëÇÒ ºÎÆ®·Î´õ Á¤º¸¸¦ ¹Þ¾Æ¿À´Â °É È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.
º¸³½ »ç¶÷ Linux

¼³Ä¡È­¸é ¶ß³×¿ä.
º¸³½ »ç¶÷ Linux

±× ´ÙÀ½ ¼³Ä¡ À̹ÌÁö URLÀ» ¸í½ÃÇØÁÖ¸é µË´Ï´Ù.
º¸³½ »ç¶÷ Linux

ÀÌÁ¦ images/install.img¸¦ ·ÎµùÇÏ°í ÆÐŰÁöµéÀ» ¼³Ä¡ÇÕ´Ï´Ù.
º¸³½ »ç¶÷ Linux

7 kickstart

PXEBoot ¼³Á¤À» ÇßÀ¸³ª ¾à°£ ²¨¸²Á÷ÇÕ´Ï´Ù. ¿î¿µÃ¼Á¦ ¼³Ä¡±îÁö ÀÚµ¿À¸·Î ÇØÁÖÁø ¾Ê±â ¶§¹®¿¡, °á±¹ ¸ð´ÏÅ͸¦ ºÙ¿©¼­ ÀÛ¾÷À» ÇØ¾ß Çϱ⠶§¹®Àε¥ ÀÚµ¿È­¶ó°í Çϱ⿣ ºÎÁ·ÇÏÁÒ. IPMI¸¦ ÀÌ¿ëÇÏ¸é ¿ø°Ý¿¡¼­ ¼³Ä¡°¡ °¡´ÉÇϰÚÀ¸³ª ¿ª½Ã ¸¸Á·½º·´Áö ¾Ê½À´Ï´Ù. ¼³Ä¡±îÁö ¸ðµÎ ÀÚµ¿È­ ÇØ¾ß ÇÏÁö ½Í½À´Ï´Ù.


CentOS´Â kickstart¸¦ ÀÌ¿ëÇØ¼­ ¼³Ä¡ÇÏ´Â °úÁ¤À» ÀÚµ¿È­ ÇÒ ¼ö ÀÖ½À´Ï´Ù.. ¼³Ä¡½Ã ÇÊ¿äÇÑ Á¤º¸¸¦ ÀúÀåÇÑ ÆÄÀÏÀ» Àо ÀÚµ¿È­ ÇÏ´Â ¹æ½ÄÀÔ´Ï´Ù.

CentOS¸¦ ¼³Ä¡ÇÏ°í ³ª¸é /rootµð·ºÅ丮¿¡ anaconda-ks.cfgÆÄÀÏÀÌ ¸¸µé¾îÁý´Ï´Ù. ÀÌ ÆÄÀÏÀº ¼³Ä¡ Á¤º¸¸¦ °¡Áö°í Àִµ¥, ÀÌ ÆÄÀÏÀ» ÆíÁýÇØ¼­ »ç¿ëÇÏ¸é µË´Ï´Ù.

kickstart ÆÄÀÏÀº HTTP·Î Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¡¼­ PXEBootÀÇ À¥ ¼­¹ö¿¡ ÆÄÀÏÀ» º¹»ç Çß½À´Ï´Ù.
# scp root@mycentos:/root/anaconda-ks.cfg /vaw/www/ks.cfg  
 

ÆÄÀÏÀ» º¹»çÇÑ ´ÙÀ½ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤Çß´Ù.
# Kickstart file automatically generated by anaconda. 
 
#version=DEVEL 
install 
 
# centos ÆÐŰÁö°¡ µé¾îÀÖ´Â µð·ºÅ丮 
url --url=http://192.168.56.1/iso/centos/x86_64/6.2 
 
# centos´Â GUI ¼³Ä¡¸¦ ±âº»À¸·Î ÇÕ´Ï´Ù. CUI ¹æ½ÄÀ¸·Î ¼³Ä¡Çϵµ·Ï ¼³Á¤Çß½À´Ï´Ù.   
text 
# ¾ð¾î ¼³Á¤ 
lang en_US.UTF-8 
# Űº¸µå ¼³Á¤ 
keyboard us 
 
# ³×Æ®¿öÅ© ¼³Á¤. dhcp·Î ¼³Á¤Çß½À´Ï´Ù. 
network --onboot yes --device eth0 --bootproto dhcp --noipv6 
# ·çÆ®ÆÐ½º¿öµåÀÔ´Ï´Ù. 
rootpw  --iscrypted $6$5.1adfefgxaaaaaEDuWuvvfgG3v/UOGerd6112fgBhxFg9v/12ddi/Px112fSd/ 
firewall --service=ssh 
authconfig --enableshadow --passalgo=sha512 
selinux --enforcing 
timezone --utc Asia/Seoul 
bootloader --location=mbr --driveorder=sda --append=" rhgb crashkernel=auto quiet" 
# The following is the partition information you requested 
# Note that any partitions you deleted are not expressed 
# here so unless you clear all partitions first, this is 
# not guaranteed to work 
 
# ¸ðµç ÆÄƼ¼ÇÀ» ÃʱâÈ­  
clearpart --linux --drives=sda 
# 9G Å©±âÀÇ pv pv.01À» ¸¸µì´Ï´Ù.  
part pv.01 --size 9000 
# pv.01À» Æ÷ÇÔÇÏ´Â º¼·ý±×·ìÀ» ¸¸µì´Ï´Ù. 
volgroup VolGroup pv.01 
# ·çÆ® ÆÄÀÏ ½Ã½ºÅÛÀ» ¸¸µì´Ï´Ù. 
logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --grow --size=1024 --maxsize=51200 
# swap ÆÄÀÏ ½Ã½ºÅÛÀ» ¸¸µì´Ï´Ù. 
logvol swap --name=lv_swap --vgname=VolGroup --grow --size=496 --maxsize=992 
# boot ÆÄÀÏ ½Ã½ºÅÛÀ» ¸¸µì´Ï´Ù. 
part /boot --fstype=ext4 --size=500 
 
repo --name="CentOS"  --baseurl=http://192.168.56.1/iso/centos/x86_64/6.2m --cost=100 
 
# ¼³Ä¡ÇÒ ÆÐŰÁö¸¦ ¼±ÅÃÇÕ´Ï´Ù. Àú´Â core ÆÐŰÁö¸¸ ¼³Ä¡Çß½À´Ï´Ù. 
%packages --nobase 
@core 
%end 
 
# ¼³Ä¡¸¦ ³¡³½ÈÄ ¸®ºÎÆÃ 
reboot 
 

8 È÷½ºÅ丮

  1. 2012³â 2¿ù 19ÀÏ ÀÛ¼º

ÅÂ±× :

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.