사전 부트 실행 환경
Preboot Execution Environment이 글은 검증을 위해 인용구가 추가로 필요하다. 부트 – · · · (2021년 5월) (이 템플릿 제거 과 |
컴퓨팅에서 사전 부트 eXecution Environment, PXE(대부분 / /pɪksiː/pixie boot로 발음됨, 흔히 PXE 부트/픽시 부트라고 함) 규격은 PXE 지원 클라이언트에서 네트워크로부터 검색된 소프트웨어 어셈블리를 부팅하는 표준화된 클라이언트-서버 환경을 설명한다.클라이언트 측에서는 PXE 지원 네트워크 인터페이스 컨트롤러(NIC)만 필요하며 DHCP 및 TFTP와 같은 소규모 업계 표준 네트워크 프로토콜 세트를 사용한다.
PXE의 이면에 있는 개념은 BOOTP/DHCP/TFTP와 같은 프로토콜의 초기 단계에서 시작되었으며 2015년[update] 현재 UEFI(Unified Extensible Firmware Interface) 표준의 일부를 형성하고 있다.현대의 데이터 센터에서는 운영 체제 부팅, 설치 및 배포를 위해 PXE를 가장 자주 선택하는[1] 것이 바로 PXE이다.
개요
컴퓨터 네트워크가 시작된 이후, 적절한 구성 매개변수를 사용하여 하나 이상의 네트워크 서버에서 부팅할 때 검색된 적절한 소프트웨어 이미지를 부팅할 수 있는 클라이언트 시스템이 지속적으로 필요하게 되었다.이 목표는 클라이언트에게 산업 표준 네트워크 프로토콜에 기반한 일련의 사전 부트 서비스를 사용하도록 요구한다.또한 처음에 다운로드하여 실행하는 NBP(네트워크 부트스트랩 프로그램)는 주변 네트워크 부팅 환경과 상호 작용하는 하드웨어 독립적인 표준화된 방법을 제공하는 클라이언트 펌웨어 계층(PXE를 통해 부트스트랩될 장치)을 사용하여 구축되어야 한다.이 경우 표준의 가용성과 준수는 네트워크 부팅 프로세스 시스템 상호운용성을 보장하는 데 필요한 핵심 요소다.
이와 관련하여 첫 번째 시도 중 하나는 TFTP 표준 RFC 906을 사용한 부트스트랩 로딩으로, 1984년에 발행된 것으로, 1981년에 발행된 TFTP(Trivial File Transfer Protocol) 표준 RFC 783을 제정하여 부트스트랩 로딩의 표준 파일 전송 프로토콜로 사용하였다.1985년에 발표된 Bootstrap Protocol 표준 RFC 951(BOOTP)이 그 직후에 발표되었는데, 디스크리스 클라이언트 머신이 자신의 IP 주소, TFTP 서버의 주소, NBP의 이름을 메모리에 로드하여 실행할 수 있도록 하였다.BOOTP 구현의 어려움은 무엇보다도 1997년에 발표된 DHCP(Dynamic Host Configuration Protocol) 표준 RFC 2131(Dynamic Host Configuration Protocol)의 개발로 이어졌다.선구적인 TFTP/BOOTP/DHCP 접근법은 당시 프로비저닝 환경의 필요한 표준화된 클라이언트 측면을 정의하지 못했기 때문에 미흡했다.
PXE(Preboot Execution Environment)는 Intel에 의해 Wired for[2] Management 프레임워크의 일부로 도입되었으며 Intel과 SystemSoft가 발행한 사양에 설명되어 있다.PXE 버전 2.0은 1998년 12월에 출시되었으며, 업데이트 2.1은 1999년 9월에 공개되었다.[3]PXE 환경은 DHCP 및 TFTP를 포함한 여러 표준 클라이언트-서버 프로토콜을 사용한다(1992년 발행된 RFC 1350에 의해 정의됨).PXE 스키마 내에서 프로비저닝 방정식의 클라이언트 쪽은 PXE 표준의 필수적인 부분이며 이는 NIC(네트워크 인터페이스 카드) BIOS 확장 또는 UEFI 코드의 현재 장치로 구현된다.이 독특한 펌웨어 계층은 클라이언트에서 기본 범용 네트워크 장치 인터페이스(UNDI), 미니멀리즘 UDP/IP 스택, 사전 부트(DHCP) 클라이언트 모듈 및 TFTP 클라이언트 모듈의 기능을 이용할 수 있게 하며, NBP가 제공하는 서비스와 상호 작용해야 할 때 사용하는 PXE 응용 프로그램 프로그래밍 인터페이스(API)를 형성한다.PXE 환경의 서버 상대 환경TFTP의 낮은 처리량은 특히 대기 시간이 긴 링크를 통해 사용될 때, TFTP Blocksize Option RFC 2348이 1998년 5월에 발행한 TFTP Blocksize Option RFC 2348에 의해 처음에는 완화되었고, 이후 2015년 1월에 발행된 TFTP Windowsize Option RFC 7440에 의해 완화되어, 잠재적으로 더 큰 페이로드 배달을 허용하여 처리량을 향상시켰다.
세부 사항
PXE 환경은 UDP/IP, DHCP 및 TFTP와 같은 업계 표준 인터넷 프로토콜의 조합에 의존한다.이러한 프로토콜은 클라이언트의 NIC 펌웨어에서 쉽게 구현되어 표준화된 소형 풋프린트 PXE ROM이 되기 때문에 선택되었다. 표준화, 소형 PXE 펌웨어 이미지와 낮은 자원 사용은 기본 설계 목표의 일부로서 PXE 표준의 클라이언트 측을 동일하게 구현할 수 있다. o강력한 클라이언트 시스템에서 리소스 제한 단일 보드 시스템(SBC) 및 SoC(System-On-a-chip) 시스템에 이르기까지 다양한 시스템
DHCP는 적절한 클라이언트 네트워크 매개변수와 특히 다운로드 준비, 초기 부트스트랩 프로그램(NBP) 및 보완 파일을 TFTP 서버 호스팅의 위치(IP 주소)를 제공하는 데 사용된다.PXE 부트스트랩 세션을 시작하려면 클라이언트의 PXE 펌웨어의 DHCP 구성 요소가 PXE 관련 옵션을 포함하는 DHCPDISCOVER 패킷을 포트 67/UDP(DHCP 서버 포트)로 브로드캐스트하고, 필요한 네트워크 구성 및 네트워크 부팅 매개 변수를 요청하십시오.PXE별 옵션은 시작된 DHCP 트랜잭션을 PXE 트랜잭션으로 식별한다.표준 DHCP 서버(PXE가 활성화되지 않음)는 네트워킹 정보(예: IP 주소)를 전송하는 일반 DHCPOFFER로 응답할 수 있지만 PXE 특정 매개 변수는 응답할 수 없다.PXE 클라이언트는 PXE를 지원하지 않는 DHCP 서버로부터만 응답을 수신하는 경우 부팅할 수 없다.
PXE 지원 DHCP 서버 DHCPOFFER를 구문 분석 후 클라이언트는 수신된 TFTP 서버 IP 주소와 NBP의 이름을 기반으로 자체 네트워크 IP 주소, IP 마스크 등을 설정하고 네트워크에 위치한 부팅 리소스를 가리킬 수 있다.클라이언트는 다음 번에 TFTP를 사용하여 NBP를 자체 RAM(Random-Access Memory)으로 전송하고 이를 검증(즉, UEFI Secure Boot)한 후 최종적으로 부팅한다.NBP는 부팅 체인 프로세스의 첫 번째 링크일 뿐이며, 일반적으로 최소 OS 임원(예: Windows)을 실행하기 위해 TFTP를 통해 작은 보완 파일 세트를 요청한다.PE 또는 기본 Linux 커널+initrd).소규모 OS 임원은 자체 네트워크 드라이버와 TCP/IP 스택을 로드한다.이 시점에서 전체 OS를 부팅하거나 설치하는 데 필요한 나머지 지침은 TFTP를 통해 제공되는 것이 아니라 강력한 전송 프로토콜(예: HTTP, CIFS 또는 NFS)을 사용하여 제공한다.
통합
PXE 클라이언트/서버 환경은 이미 설치된 DHCP 및 TFTP 서버 인프라와 원활하게 통합될 수 있도록 설계되었다.이 설계 목표는 고전적인 DHCP 프로토콜을 다룰 때 도전을 제시하였다.기업 DHCP 서버는 일반적으로 PXE 환경을 지원하는 데 필요한 추가 매개 변수 및 규칙을 쉽게 추가하지 못하도록 설계된 엄격한 정책의 적용을 받는다.이러한 이유로 PXE 표준은 DHCP 리디렉션 또는 "proxyDHCP"의 개념을 개발했다.프록시DHCP의 이면에 있는 아이디어는 PXE DHCP 요구 사항을 독립적으로 실행 및 관리되는 두 개의 서버 단위로 나누는 것이다.
- 모든 부팅 DHCP 클라이언트에 IP 주소, IP 마스크 등을 제공하는 클래식 DHCP 서버.
- PXE 식별 부팅 클라이언트에만 TFTP 서버 IP 주소 및 NBP 이름을 제공하는 프록시DHCP 서버
DHCP 및 proxyDHCP[3]: 18 서버 환경에서 PXE 클라이언트는 처음에 단일 PXE DHCPDISCOVER 패킷을 브로드캐스트하고 일반 비 PXE 지원 DHCP 서버에서 한 대와 프록시DHCP 서버에서 두 번째 DHCPOFFER를 수신한다.두 답변 모두 PXE 클라이언트가 부팅 프로세스를 계속 진행할 수 있도록 필요한 정보를 제공한다.이러한 비침입적 접근 방식을 통해 이미 작동 중인 DHCP 서버의 구성을 건드리지 않고 PXE 환경을 설정할 수 있다.프록시DHCP 서비스는 표준 DHCP 서비스와 동일한 호스트에서 실행될 수도 있지만 이 경우에도 둘 다 독립적으로 실행되고 관리되는 애플리케이션이다.두 서비스가 동일한 호스트에서 동일한 포트 67/UDP를 사용할 수 없으므로 프록시DHCP는 포트 4011/UDP에서 실행된다. 프록시DHCP 접근법은 기업에서 가정 환경으로 이어지는 광범위한 PXE 시나리오에서 매우 유용하다는 것이 입증되었다.
유용성
PXE는 여러 시스템 아키텍처를 고려하여 고안되었다.규격 2.1 버전에서는 IA-64와 DEC Alpha를 포함한 6가지 시스템 유형에 대해 아키텍처 식별자를 정의했다.그러나 PXE v2.1은 IA-32만 완전히 다루었다.이러한 명백한 완전성의 결여에도 불구하고 Intel은 최근 PXE 기능을 모든 EFI/UEFI 환경으로 확장하는 새로운 UEFI 규격 내에서 PXE를 광범위하게 지원하기로 결정했다.현재 통합 확장 가능한 펌웨어 인터페이스 규격 2.4A, 섹션 21 네트워크 프로토콜 — SNP, PXE 및 BIS는 UEFI 부팅 서비스 환경에서 실행되는 동안 네트워크 장치에 대한 액세스를 제공하는 프로토콜을 정의한다.이러한 프로토콜에는 SNP(Simple Network Protocol), PXE 기본 코드 프로토콜(PXE), BIS(Boot Integrity Services Protocol)가 포함된다.[4][5]오늘날 PXE 환경에서 클라이언트 아키텍처 탐지는 원래 PXE v2.1 규격에 포함된 식별자를 기반으로 하는 경우가 거의 없으며, 대신 네트워크에서 부팅될 각 컴퓨터는 DHCP 옵션 93을 설정하여 클라이언트의 아키텍처를 표시해야 한다.이를 통해 PXE 서버는 첫 번째 네트워크 부팅 패킷에서 클라이언트의 정확한 아키텍처를 (부팅 시) 알 수 있다.클라이언트 시스템 아키텍처 값은 2006년에 발행된 RFC 4578(Intel Preboot eXecution Environment(PXE)을 위한 DHCP(Dynamic Host Configuration Protocol) 옵션) 내에 나열된다.
IPv6 DHCP의 등장과 함께 DHCPv6으로 발전했다. 새로운 DHCP 프로토콜 내에서 PXE를 지원하는 옵션의 필요성은 2010년 발행된 RFC 5970(DHCPv6 네트워크 부팅에 대한 옵션)에서 다루어졌다.
원래 PXE 클라이언트 펌웨어 확장은 IA-32 BIOS의 옵션 ROM으로 설계되었기 때문에 PXE 옵션 ROM을 제공하는 네트워크 인터페이스 컨트롤러(NIC)를 설치하여 PC를 PXE 지원으로 만들 수 있었다.현재 클라이언트 PXE 코드는 NIC의 자체 펌웨어에 직접 포함되거나 마더보드의 UEFI 펌웨어의 일부로 포함되어 있다.
원래 클라이언트 PXE 펌웨어가 Intel에 의해 작성되어 PDK(Product Development Kit)에 포함된 연결 가능한 IA32 객체 코드 형식 모듈로서 항상 무료로 제공되었을 때에도 오픈 소스 세계는 수년 동안 자체 ROM을 제공하는 gPXe/iPXE와 같은 비표준 파생 프로젝트들을 생산해 왔다. 반면 Intel 기반 ROMs는 계속 제공되어 왔다.일부 사용자는 안정성과 PXE 표준 준수를 위해 20년 이상 PXE 표준의 클라이언트 측을 기꺼이 추가 기능을 교환했다.[6]
수락
v2.1 이후 PXE 수락은 어디서나 볼 수 있었다. 오늘날에는 PXE 펌웨어가 없는 네트워크 카드를 찾는 것이 사실상 불가능하다.저렴한 기가비트 이더넷 하드웨어(NIC, 스위치, 라우터 등)의 가용성은 PXE가 기존의 CD, DVD 및 USB 플래시 드라이브 대체 제품과 경쟁할 때 클라이언트에 운영 체제를 설치하는 데 사용할 수 있는 가장 빠른 방법을 만들었다.
수년간 몇 가지 주요 프로젝트에는 PXE 지원을 포함했으며 여기에는 다음이 포함된다.
- 모든 주요 리눅스 배포판.
- Itanium 하드웨어의 HP OpenVMS.
- Microsoft RIS(원격 설치 서비스)
- Microsoft WDS(윈도우즈 배포 서비스)
- MDT(Microsoft Deployment Toolkit)
- 마이크로소프트 SCCM(시스템 센터 구성 관리자)
NBP 개발과 관련하여 부팅 메뉴의 확장 기능, 스크립팅 기능 등을 제공할 수 있는 Boot Manager를 구현하는 몇 가지 프로젝트가 있다.
위에서 언급한 모든 프로젝트는 둘 이상의 OS를 부팅/설치할 수 있는 경우 "Boot Manager - Boot Loader" 패러다임에서 작동한다.초기 NBP는 자체 구성을 검색하고 부팅 옵션 메뉴를 배포할 수 있는 Boot Manager이다.사용자는 부팅 옵션을 선택하고 OS 종속 Boot Loader를 다운로드하여 실행하여 선택한 특정 부팅 절차를 계속 진행하십시오.
형제 환경
애플은 BSDP(Boot Server Discovery Protocol) 규격에 따라 매우 유사한 네트워크 부팅 방식을 내놓았다.BSDP v0.1은 1999년[7] 8월에 애플에 의해 처음 출판되었고 마지막 v1.0.8은 2010년 9월에 출판되었다.[8]OS X 서버에는 NetBoot라는 시스템 도구가 포함되어 있다.NetBoot 클라이언트는 BSDP를 사용하여 적절한 운영 체제를 부팅할 수 있는 리소스를 동적으로 획득한다.BSDP는 표준 DHCP에 없는 추가 NetBoot 기능을 제공하기 위해 벤더별 정보를 사용하여 DHCP 위에 크래프트된다.프로토콜은 클라이언트 펌웨어에서 구현된다.부팅 시 클라이언트는 DHCP를 통해 IP 주소를 얻은 다음 BSDP를 사용하여 부팅 서버를 검색한다. 각 BSDP 서버는 다음과 같이 구성된 부팅 정보로 응답한다.
- 부팅 가능한 운영 체제 이미지 목록
- 기본 운영 체제 이미지
- 클라이언트의 현재 선택된 운영 체제 이미지(정의된 경우)
클라이언트는 목록에서 운영 체제를 선택하고 서버 선택을 나타내는 메시지를 서버로 전송한다.선택한 부팅 서버는 부트 파일 및 부트 이미지, 그리고 선택한 운영 체제를 다운로드하고 실행하는 데 필요한 기타 정보를 제공하는 데 응답한다.
하위 환경
Microsoft는 BINL(부팅 정보 협상 계층)을 사용하여 PXE 환경의 오버랩되지 않는 확장을 생성했다.BINL은 서버 서비스로 구현되며 RIS(원격 설치 서비스)와 WDS(Windows Deployment Services) 전략의 핵심 구성요소다.그것은 어떤 특정한 준비 과정과 어떤 식으로든 마이크로소프트가 조작된 DHCP 확장으로 간주될 수 있는 네트워크 프로토콜을 포함한다.BINL은 PXE 표준 클라이언트 펌웨어를 사용하는 마이크로소프트 독점 기술이다.현재 공개적으로 이용할 수 있는 BINL 규격은 없다.
IETF 표준 문서
RFC # | 제목 | 출판된 | 작가 | 사용되지 않는 정보 및 업데이트 정보 및 업데이트 정보 |
---|---|---|---|---|
RFC 783 | TFTP 프로토콜(개정 2) | 1981년 6월 | K. 솔린스 | 폐기 대상 - RFC 1350 |
RFC 906 | TFTP를 사용한 부트스트랩 로드 | 1984년 6월 | 로스 핀레이슨 | — |
RFC 951 | 부트스트랩 프로토콜 | 1985년 9월 | 빌 크로프트 | RFC 1395, RFC 1497, RFC 1532, RFC 1542, RFC 5494에 의해 업데이트됨 |
RFC 1350 | TFTP 프로토콜(개정 2) | 1992년 7월 | K. 솔린스 | RFC 1782, RFC 1783, RFC 1784, RFC 1785, RFC 2347, RFC 2348, RFC 2349에 의해 업데이트됨 |
RFC 2131 | 동적 호스트 구성 프로토콜 | 1997년 3월 | R. 드롬스 | RFC 3396, RFC 4361, RFC 5494, RFC 6842에 의해 업데이트됨 |
RFC 2348 | TFTP 블록 크기 조정 옵션 | 1998년 5월 | G. 말킨 | — |
RFC 4578 | Intel PXE에 대한 DHCP 옵션 | 2006년 11월 | M. 존스턴 | — |
RFC 5970 | 네트워크 부팅에 대한 DHCPv6 옵션 | 2010년 9월 | T. 허트 | — |
RFC 7440 | TFTP Windowsize 옵션 | 2015년 1월 | P. 마소타 | — |
참고 항목
- 디스크 미포함 노드 – 디스크 미포함 시스템
- Boot Service Discovery Protocol – Apple 네트워크 부팅 프로토콜
- 원격 초기 프로그램 로드(RIPL 또는 RPL)
- SDI(시스템 배포 이미지) – 주로 Microsoft 제품 사용
- 유니파이드 확장 펌웨어 인터페이스 – UEFI 네트워크 부팅
- WOL(Wake-on-LAN)
- Windows 배포 서비스 – Microsoft Windows용 PXE 기반 배포
참조
- ^ Avramov, Lucien (December 31, 2014). The Policy Driven Data Center with ACI: Architecture, Concepts, and Methodology. Cisco Press. p. 43. ISBN 978-1587144905.
In modern data centers, administrators rarely install new software via removable media such as DVDs. Instead, administrators rely on PXE (Preboot eXecution Environment) booting to image servers.
- ^ "Wired for Management Baseline - Version 2.0 Release" (PDF). Intel Corporation. 1998-12-18. Retrieved 2014-02-08.
- ^ a b "Preboot Execution Environment (PXE) Specification - Version 2.1" (PDF). Intel Corporation. 1999-09-20. Archived from the original (PDF) on 2013-11-02. Retrieved 2014-02-08.
- ^ "Unified Extensible Firmware Interface Specification" (PDF). UEFI. 2013-12-02. Retrieved 2014-04-04.
- ^ "UEFI PXE Boot Performance Analysis" (PDF). Intel Corporation. 2014-02-02. Archived from the original (PDF) on 2014-08-08. Retrieved 2014-04-04.
- ^ "Etherboot/gPXE Wiki". Etherboo.org.
- ^ "NetBoot 2.0: Boot Server Discovery Protocol (BSDP) v0.1" (Doc). Apple Corporation. 2003-12-02. Retrieved 2014-04-04.
- ^ "NetBoot 2.0: Boot Server Discovery Protocol (BSDP) v1.08" (Doc). Apple Corporation. 2010-09-17. Retrieved 2014-04-04.
외부 링크
- PXE 사양 – Intel & SystemSoft에서 게시한 사전 부트 실행 환경 규격 v2.1
- BIS 사양 – Intel에서 게시한 부팅 무결성 서비스 사양 v1.0
- Intel Preboot 실행 환경 – PXE 규격에 포함된 PXE 클라이언트/서버 프로토콜의 인터넷-Draft 00
- PXE 오류 코드 – PXE 오류 코드의 카탈로그