Contents

PXE Network Booting

Synology NAS를 이용한 Network Booting

서버에 자주 OS를 설치하는 경우에 USB를 이용하는 설치를 대체할 수 있습니다. PXE Network Booting을 이용하면, USB없이 여러 서버에 OS를 설치하는 작업을 동시에 진행할 수 있습니다.

VirtualBox를 이용한 Tutorial

PXE Network Booting을 체험하기 위함입니다.

설정

OSX 기준으로 아래의 명령어를 실행합니다.

1
2
3
cd ~/Library/VirtualBox; git clone https://github.com/paulmaunders/TFTP-PXE-Boot-Server.git
mv TFTP-PXE-Boot-Server TFTP
cd TFTP; ln -s pxelinux.0 test.pxe

마지막 명령어의 test.pxe는 아래에서 생성할 Virtual Machine의 이름과 같아야 합니다.

Info
<VirtualMachineName>.pxe

Virtual Machine 생성

  • 위에서 Symbolic Link 이름으로 사용된 이름을 Virtual Machine의 이름으로 생성합니다.
  • 생성된 Virtual Machine을 아래와 같이 설정합니다.
    • Settings -> System -> Boot Order -> enable Network -> 최상위로 변경
      /pxe-boot/vm-system.png
      System
    • Settings -> Network -> Advanced -> Adapter Type -> PCnet-Fast III (Am79C973)
      /pxe-boot/vm-network.png
      Network

Network Booting 확인

  • Virtual Machine을 시작하고 다음과 같은 화면이 보이면 성공입니다.
    /pxe-boot/vm-start-1.png
    Boot Virtual Machine
    /pxe-boot/vm-start-2.png
    OS Selection

PXE Network Booting 환경 구축하기

필요조건

  • Router
    • Cisco장비에서는 Network Booting을 위한 설정을 할 수 있었습니다.
  • TFTP Server
    • PXE Network Booting에 필요한 파일과 OS 이미지를 제공합니다.
    • Synology NAS으로 이를 구성합니다.
  • Network booting이 가능한 Client
    • 대부분의 서버급 장비의 Network Card는 PXE Network Booting을 지원합니다.
Info
Router가 아닌 TFTP Server 장비(Synology NAS)를 통해서 DHCP 서버를 구성한 경우에도 PXE Network Booting 인프라를 구성할 수 있습니다.

TFTP Server 설정

Synology NAS 기준으로 설명을 진행하지만 TFTP Server, Root 폴더 구조를 동일하게 하면 다른 장비에서도 적용됩니다.

  • File Station -> 생성 -> 새 공유폴더 생성

    /pxe-boot/new-folder-1.png
    Basic Information
    /pxe-boot/new-folder-2.png
    Encryption
    /pxe-boot/new-folder-3.png
    Advanced

  • 권한

    /pxe-boot/folder-permission.png
    Permission

  • 제어판 -> 파일 서비스 -> TFTP

    /pxe-boot/file-service.png
    File Service

  • 위에서 소개한 git repo의 내용을 TFTP 공유 폴더의 최상단으로 복사합니다.

    /pxe-boot/pxe-root.png
    PXE Root

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
    cd /volume1/PXE; tree
    .
    ├── README.md
    ├── chain.c32
    ├── images
    │   ├── centos
    │   │   ├── 6.3
    │   │   │   └── x86_64
    │   │   │       ├── initrd.img
    │   │   │       └── vmlinuz
    │   │   └── 7.0
    │   │       └── x86_64
    │   │           ├── initrd.img
    │   │           └── vmlinuz
    │   ├── fedora
    │   │   └── 24
    │   │       └── x86_64
    │   │           ├── initrd.img
    │   │           └── vmlinuz
    │   └── ubuntu
    │       └── xenial
    │           └── amd64
    │               ├── initrd.gz
    │               └── linux
    ├── mboot.c32
    ├── memdisk
    ├── menu.c32
    ├── pxelinux.0
    └── pxelinux.cfg
        └── default
    

Image 추가하기

위에서 소개한 git repo에는 ubuntu는 16.04 버전까지의 이미지만 존재합니다.

  • Download Image
1
2
3
4
5
6
cd /volume1/PXE/images/ubuntu
mkdir -p bionic/amd64; mkdir -p focal/amd64
wget -O bionic/amd64/initrd.gz http://mirror.kakao.com/ubuntu/dists/bionic/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz
wget -O bionic/amd64/linux http://mirror.kakao.com/ubuntu/dists/bionic/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux
wget -O focal/amd64/initrd.gz http://mirror.kakao.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/netboot/ubuntu-installer/amd64/initrd.gz
wget -O focal/amd64/linux http://mirror.kakao.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/netboot/ubuntu-installer/amd64/linux
  • OS 선택 목록에서 보이기 위해서는 pxelinux.cfg/default에 아래의 내용을 추가합니다.
1
2
3
4
5
6
7
8
9
LABEL Ubuntu-18.04-Bionic
  MENU LABEL Install Ubuntu 18.04 (Bionic)
  KERNEL images/ubuntu/bionic/amd64/linux
  APPEND initrd=images/ubuntu/bionic/amd64/initrd.gz vga=normal ramdisk_size=16432

LABEL Ubuntu-20.04-Focal
  MENU LABEL Install Ubuntu 20.04 (Focal)
  KERNEL images/ubuntu/focal/amd64/linux
  APPEND initrd=images/ubuntu/focal/amd64/initrd.gz vga=normal ramdisk_size=16432

Router 설정

  • Cisco 장비의 설정은 링크으로 대체합니다.
  • Router(DHCP 서버)에 TFTP 서버의 주소를 설정해야 합니다.

동작확인

  • 서버 시작시에 <F11>버튼을 눌러서 PXE Booting을 하도록 합니다.
    /pxe-boot/server-pxe-booting.png
    Server PXE Booting

정리

이번 글에서는 PXE Network booting 환경을 구축하는 방법을 소개하였습니다. OS설치가 빈번하지 않을 때는 USB으로 설치하는 것이 더 쉽지만, 인프라의 규모가 어느정도 되는 경우에는 PXE Network Booting 환경을 구축하는 것을 추천합니다.