728x90
우분투에서 PXE 네트워크 부팅 서버를 구성하는 방법
1. TFTP 설치 및 설정
sudo apt-get update
sudo apt-get install -y tftpd-hpa
- TFTP 서비스 상태 확인
sudo systemctl status tftpd-hpa
- TFTP 서비스 비활성화
sudo systemctl disable tftpd-hpa
- TFTP 서비스 중지
sudo systemctl stop tftpd-hpa
2. TFTP 설정 파일
sudo vim /etc/default/tftpd-hpa
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure --create"
- TFTP 루트 디렉토리 생성
sudo mkdir -p /var/lib/tftpboot
3. Syslinux 및 PXELINUX 설치
sudo apt-get install -y syslinux-common pxelinux
4. 부팅 이미지 파일 복사
PXELINUX 부팅 이미지(pxelinux.0)를 /var/lib/tftpboot 디렉터리로 복사
sudo cp /usr/lib/PXELINUX/pxelinux.0 /var/lib/tftpboot
sudo cp /usr/lib/PXELINUX/lpxelinux.0 /var/lib/tftpboot
sudo cp /usr/lib/syslinux/modules/bios/{libcom32.c32,libutil.c32,menu.c32,vesamenu.c32} /var/lib/tftpboot
sudo cp /usr/lib/syslinux/modules/bios/ldlinux.c32 /var/lib/tftpboot
UEFI 모드
더보기
---
sudo apt-get install -y syslinux-efi
sudo mkdir -p /var/lib/tftpboot/uefi
sudo cp /usr/lib/SYSLINUX.EFI/efi64/syslinux.efi /var/lib/tftpboot/uefi
sudo cp /usr/lib/syslinux/modules/efi64/{ldlinux.e64,libcom32.c32,libutil.c32,vesamenu.c32} /var/lib/tftpboot/uefi
ln -s /var/lib/tftpboot/pxelinux.cfg /var/lib/tftpboot/uefi/pxelinux.cfg
---
5. ISO 이미지에서 파일 복사
- ISO 이미지 다운로드
cd /usr/local/src
wget https://cdimage.ubuntu.com/ubuntu-server/jammy/daily-live/current/jammy-live-server-amd64.iso
- ISO 마운트 포인트 디렉토리 생성
sudo mkdir -p /mnt/iso
sudo mount -o loop ./jammy-live-server-amd64.iso /mnt/iso
- repository 디렉토리 생성
sudo mkdir -p /var/www/html/repository/ubuntu-releases/22.04
sudo ln -s /var/www/html/repository/ubuntu-releases/22.04 /var/www/html/repository/ubuntu-releases/jammy
sudo mv /usr/local/src/jammy-live-server-amd64.iso /var/www/html/repository/ubuntu-releases/22.04/.
sudo cp -r /mnt/iso/* /var/www/html/repository/ubuntu-releases/22.04/
- vmlinuz, initrd 파일 복사
sudo cp /mnt/iso/casper/{vmlinuz,initrd} /var/lib/tftpboot
- TFTP 루트 디렉토리 설정
sudo chmod -R 755 /var/lib/tftpboot
sudo chown -R nobody:nogroup /var/lib/tftpboot
6. 부팅 설정 파일 생성
/srv/tftp/pxelinux.cfg/default 파일을 생성하고 PXE 부팅 메뉴를 구성
sudo mkdir -p /var/lib/tftpboot/pxelinux.cfg
sudo vim /var/lib/tftpboot/pxelinux.cfg/default
DEFAULT menu.c32
PROMPT 0
MENU TITLE PXE Boot Menu
TIMEOUT 300
LABEL Ubuntu
MENU LABEL Install Ubuntu 22.04
KERNEL vmlinuz
INITRD initrd
APPEND root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://192.168.56.71/ubuntu-releases/22.04/jammy-live-server-amd64.iso fsck.mode=skip
LABEL local
MENU LABEL Boot Local Disk
LOCALBOOT 0
728x90
dnsmasq(DHCP) 설치 및 설정
- dnsmasq 패키지 설치
sudo apt-get install -y dnsmasq
- dnsmasq 설정
sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf_$(date '+%Y%m%d_%H%M%S')
echo "conf-dir=/etc/dnsmasq.d/,*.conf" > /etc/dnsmasq.conf
sudo mkdir -p /etc/dnsmasq.d /var/log/dnsmasq
echo "
# Network Interfaces
bind-interfaces
interface=enp0s8
interface=lo
# DNS Settings
domain=sangchul.kr
server=8.8.8.8
# DHCP Settings
dhcp-range=192.168.56.200,192.168.56.230,12h
dhcp-option=3,192.168.56.1
dhcp-option=6,192.168.56.71
dhcp-leasefile=/var/log/dnsmasq/dnsmasq.leases
# TFTP Settings
enable-tftp
tftp-root=/var/lib/tftpboot
dhcp-boot=pxelinux.0,pxeserver,192.168.56.71
# Logging
log-facility=/var/log/dnsmasq/dnsmasq.log
" | sudo tee /etc/dnsmasq.d/pxe.conf
- 구성 파일 구문 확인(syntax check)
dnsmasq --test
$ dnsmasq --test
dnsmasq: syntax check OK.
- dnsmasq 서비스 다시 시작
sudo systemctl restart dnsmasq
Nginx 설치 및 설정
curl -s https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
gpg --dry-run --quiet --no-keyring --import --import-options import-show \
/usr/share/keyrings/nginx-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
sudo apt-get update
sudo apt-get install -y nginx
echo "### pex.host
server {
listen 80;
server_name _;
root /var/www/html/repository;
index index.html index.htm;
autoindex on;
access_log /var/log/nginx/pxe.host-access.log main;
error_log /var/log/nginx/pxe.host-error.log;
location / {
try_files $uri $uri/ =404;
}
}" | sudo tee /etc/nginx/conf.d/pex.host.conf
sudo systemctl restart nginx
dnsmasq, nginx 재시작
sudo systemctl restart dnsmasq nginx
네트워크 부팅 설치(Network boot)
DEFAULT menu.c32 PROMPT 0 메뉴 제목 PXE 부팅 메뉴 시간 초과 300 LABEL Ubuntu MENU LABEL Ubuntu 22.04 설치 KERNEL vmlinuz INITRD initrd APPEND root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://192.168.56.71/ubuntu-releases /22.04/jammy-live-server-amd64.iso fsck.mode=skip LABEL 로컬 메뉴 LABEL 부팅 로컬 디스크 LOCALBOOT 0
728x90
'리눅스' 카테고리의 다른 글
우분투에 데스크톱 환경을 구성하기(ubuntu-desktop 패키지) (0) | 2024.03.07 |
---|---|
우분투에서 dnsmasq를 설치하고 구성하는 방법 (0) | 2024.03.06 |
ISO 이미지 파일을 마운트하는 방법 (0) | 2024.03.05 |
우분투에서 cowsay를 설치하고 설정하는 방법 (0) | 2024.03.05 |
우분투에서 motd를 설정하는 방법 (0) | 2024.03.05 |