[PXE] PXE란?

Preboot eXcution Enviroment라고 하는 환경이다.

아직은 연구중이라 글이 완벽하지 않을 수 도 있다.

데이터센터 같은데서 여러서버에 OS 를 배포할 때 사용하거나 기업에서 OS를 배포할 때 사용하기도 하며, 기본적으로 Network로 부팅을 진행할 때 사용한다.

여러분들이 PXE를 어딘가에서 봤다면 PC방에서 노하드 시스템을 사용하는곳을 보면 PXE로 부팅 하는 것을 볼 수있다.

Screen-Shot-2022-07-28-at-9.06.14-PM

PXE는 dhcp와 tftp 그리고 OS를 뿌려줄 NFS or web서버가 필요로한다.

기본적으로 네트워크인터페이스카드(이하 NIC)를 사용하여 부팅을 진행한다.

NIC에 있는 펌웨어가 dhcp에다 IP를 요청하여, 해당 IP를 할당 받은 후 tftp로 syslinux를 불러와, 기본적인 리눅스 커널 위에서 OS 설치 파일들을 요청하여 설치를 하게 된다.

여기서도 두가지가 나눠지는데 kickstart를 사용하여 자동으로 패키지 등을 설치하여 바로 사용할 수 있게 하는 방법과, Live OS 를 불러와서 사용하는 방법이 있다.

먼저 디렉터리들을 살펴보면

/tftpboot아래는 syslinux + pxeboot.cfg 디렉터리가 있다.
syslinux와 부팅파일을 살펴보면

libcom32.c32
ldlinux.c32
pxelinux.0
vesamenu.c32
menu.c32
memdisk
libutil.c32
linux.c32
vmlinuz
initrd

등이 있다.

실제로 부팅할때는 vmlinuz와 initrd를 불러오는 것을 확인할 수 있다.
Screen-Shot-2022-07-28-at-9.07.29-PM
이런식으로 불러와서 부팅을 진행한다.

그리고 함께
pxelinux.cfg 디렉터리 아래 default파일이 있는데, 이 default파일이 어떤 OS 를 설치 할 지 선택하는 메뉴를 표출해주는 파일이다.

해당파일을 보면

default menu.c32
prompt 0
timeout 100

menu title Select an option to boot

menu label Boot from local drive
	localboot 0xffff

label ubuntu-desktop-2004-live
    menu label Install Ubuntu Desktop 20.04 LTS
	kernel pxe/casper/vmlinuz
    append boot=casper maybe-ubiquity netboot=nfs ip=dhcp nfsroot=IP:/volume1/ISO/pxe initrd=pxe/casper/initrd
label ubuntu-server-2004-netboot
    menu label Install Ubuntu Server 20.04 LTS (netboot)

lable test_ubuntu_liveCD
	menu label TEST LIVE
	kernel memdisk
	initrd ubuntu-20.04.3-live-server-amd64.iso
	APPEND iso raw

lable VMWARE
    menu label ESXI 7.0
    kernel memdisk
    initrd VMware-VMvisor-Installer-7.0U3f-20036589.x86_64.iso
    APPEND iso raw

이런 형태로 되어있다. 일부만 살펴보면

menu label로 실제 PXE부팅때 확인 할 수 있는 메뉴이며,
kernel은 부팅시 사용할 커널을 불러오며 append 부분은 어떻게 부팅을 할 것인지 정해주는 부분이다.

ubuntu-desktop-2004-live를 보면
ip는 dhcp로 할당을 받으며, nfs를 사용하여 파일들을 설치할 때 넘겨준다.

크게 어려운건 없다

/tftpboot아래 vmlinuz와 initrd파일이 있어야 tftp로 불러 올 수 있다.
절대 경로로 다른 디렉터리에 있는 vmlinuz,initrd파일을 불러오려고 하니 진행이 안되서 tftpboot디렉터리에 같이 넣어주니 잘 동작한다.

그 다음 nfsroot=IP:/foobar 이부분은 OS의 ISO가 들어가면 되는 부분이다.

mount -o loop foobar.iso /mnt/iso
cp -r /mnt/iso /foobar

로 파일들을 옮겨준다.
이후 nfsroot를

nfsroot=example.com:/foobar

로 설정하게 되면 부팅시 해당 foobar디렉터리에서 파일들을 불러와서 설치를 할 수 있게 된다.

Read more

[VOIP] Korea-WAN-VoIP

일본인 친구들과 이야기 하다보니, VoIP로 WAN을 만들 수 있지 않을까 싶어서 프로젝트를 시작 해봤다. VoIP를 VPN을 묶어서 WAN으로 만들 수 있지 않을까? 생각 해보니, 이미 일본측에서는 해당 프로젝트를 진행하고 있었다. 한국쪽에서도 해당 프로젝트를 진행해보기 위해서, 디스코드 서버를 생성하였다. Korea-WAN-VoIP 먼저, 용어 정리를 해보고 시작하자. PBX : Private Branch Exchange 의 약자로,

By dobob

[Yubikey] Yubikey 5C 사용기

최근에 Steam Account가 2FA를 사용해도 해킹을 당하는 일이 있어, 보안에 관심이 생겨 Yubikey를 하나 구입했다. Amazon.com에서 구매를 하였고, 해당 Hardware 키가 도착하여 리뷰를 작성한다. Yubikey Manager 자신이 사용하고 있는 OS상에서 사용할 Yubikey Manager를 다운받고 실행한다. Yubikey 5C NFC를 구매하였으므로, 해당 제품의 정보가 나오는 것을 볼 수 있다. Application -&

By dobob