Ubuntu Server VM의 PXE 부팅 서버 설치 단계


답변:


31

PXE (Preboot eXecution Environment, 발음 픽시) ‬

Wikipedia : PXE 참조

어떻게 작동합니까?

이것은 나의 이해입니다!

PXE_Diagram_en.png

  1. 클라이언트 시스템의 전원이 켜져 있습니다. BIOS가 장치를 검색합니다. 그런 다음 Boot Order / Sequence에 나열된 필수 장치에서 부트 로더를로드하려고 시도합니다 . 네트워크 카드 ROM에서 PXE를로드합니다.
  2. PXE (클라이언트 측)는 IP 요청을 브로드 캐스트합니다. IP, Next Server IP (TFTP 서버 IP), pxelinux.0(PXE 부트 스트랩 로더 파일 이름) 등 의 필수 정보를 포함한 DHCP 서버 응답

    PXE_Boot_1.png

  3. PXE (클라이언트 측) pxelinux.0는 TFTP 서버에서 파일을 요청하고 파일을 RAM에로드 한 다음 제어를로 전달합니다 pxelinux.0.

    pxelinux.0TFTP 서버에서 다음과 같은 이름으로 부팅 구성 파일을 가져옵니다
    (없는 경우 다음으로 시도)

    • UUID
    • Capital Hex의 IP
    • IP의 일부
    • default파일로 삭제

    PXE_Boot_2.png

  4. 사용자 선택 또는 기본 메뉴 항목. pxelinux.0TFTP 서버에서 해당 커널과 RAMDisk를 요청하여 RAM에로드합니다.

    그런 다음 부팅 매개 변수와 제어를로드 된 커널에 전달합니다.

    PXE_Linux.png

  5. 커널은 기능 / 속성에 따라 TFTP 서버 또는 다른 프로토콜 서버에서 나머지 부분을로드합니다.

    Parted_Magic_1.png Parted_Magic_2.png

서버 설정

PXE 서버를 설정하는 방법은 여러 가지가 있는데,이 중 하나입니다.

이 지침은 실제 컴퓨터의 Ubuntu 9.10Ubuntu 10.04 에서 테스트되었습니다 . 변경 사항이 적을 때만 유효합니다. (VirtualBox에서 Ubuntu 14.04에 대해 업데이트 및 테스트되었으며 이전 릴리스의 편집 개정을 확인하십시오)

내 목표는 PartedMagic 4.5 였으며 우분투 또는 Linux 배포판과 비슷해야합니다.

  1. DHCP 및 TFTP 패키지 설치

        sudo apt-get install isc-dhcp-server openbsd-inetd lftp tftpd-hpa syslinux
    
  2. DHCP 설정

    • /etc/default/isc-dhcp-serverDHCP 서비스를위한 이더넷 인터페이스 편집

      INTERFACES="eth0"
      
    • DHCP 서비스 구성이 편집 /etc/dhcp/dhcpd.conf‬되었거나 /etc/ltsp/dhcpd.conf존재합니다

      PXE 특정 구성 : filename&next-server

      default-lease-time 600;
      max-lease-time 7200;
      subnet 192.168.10.0 netmask 255.255.255.0 {
          range 192.168.10.50 192.168.10.100;
          option subnet-mask 255.255.255.0;
          option routers 192.168.10.123;
          option broadcast-address 192.168.10.255;
          filename "pxelinux.0";
          next-server 192.168.10.123;
      }
      
    • 고정 IP 설정 eth0, 192.168.10.123데스크탑 에디션 또는 네트워크 관리자를 사용하여 내 경우에는 /etc/network/interfaces서버 에디션.

      auto eth0
      iface eth0 inet static
      address 192.168.10.123
      netmask 255.255.255.0
      network 192.168.10.0
      broadcast 192.168.10.255
      

      네트워크 인터페이스를 다시 초기화하십시오.

      sudo ifdown eth0
      sudo ifup eth0
      
    • 서비스를 다시 시작하십시오

      sudo service isc-dhcp-server restart
      

      상태를 확인하세요

      netstat -lu
      

      산출

      Proto Recv-Q Send-Q Local Address           Foreign Address         State      
      udp        0      0 *:bootpc                *:*                                
      
  3. TFTP 설정

    • 편집 ‪/etc/inetd.conf하고 줄 #<off>#의 시작 부분에서 제거 tftp하거나 #:BOOT:주석 이 없으면 추가하십시오 . (systemd, 15.10 이상으로 건너 뛰십시오)

      tftp    dgram   udp wait    root    /usr/sbin/in.tftpd  /usr/sbin/in.tftpd -s /var/lib/tftpboot
      
    • 부팅 서비스 활성화 inetd

      sudo update-inetd --enable BOOT
      
    • 서비스 시작

      sudo service openbsd-inetd restart
      sudo service tftpd-hpa restart
      

      상태를 확인하세요

      netstat -lu
      

      산출

      Proto Recv-Q Send-Q Local Address           Foreign Address         State 
      udp        0      0 *:tftp                  *:*                          
      
  4. PXE 부팅 파일 설정

    • 압축을 풉니 다 pmagic-pxe-4.5.zip. 경우 pxelinux.0가없는에서 그것을 얻을 sysliux-common설치 패키지 /usr/lib/syslinux/pxelinux.0, SYSLINUX 프로젝트 또는 우분투을 Netboot 이미지 .

      그것들을 비슷한 구조로 놓으십시오.

      /var/lib/tftpboot/
       |-- pxelinux.0
       |-- pxelinux.cfg/
       |   `-- default
       `-- pmagic/
           |-- bzimage
           `-- initramfs
      
    • /var/lib/tftpboot/pxelinux.cfg/default예제 경로가 필요한 경우 편집 : pmagic/bzimage&pmagic/initramfs

      DEFAULT partmagic 
      
      LABEL partmagic 
          MENU LABEL PartMagic 4.5 
          KERNEL pmagic/bzimage 
          APPEND initrd=pmagic/initramfs edd=off noapic load_ramdisk=1 prompt_ramdisk=0 rw vga=791 sleep=10 loglevel=0 keymap=us livemedia
      
    • 올바른 권한 설정

      sudo find /var/lib/tftpboot -type f -exec chmod 644 {} \;
      sudo find /var/lib/tftpboot -type d -exec chmod 755 {} \;
      

클라이언트 설정

한 번에 변경 BIOS 부팅 순서를 사용 F9하거나 F12, BIOS 구성에서 영구 설치를 위해 DEL, F2또는 F12. (기계 브랜드에 따라 다름)

맨 위로 이동 : [PXE | NIC | LAN | Ethernet | Network].

노트

  • inetutils-inetd또는 xinetd대신에 사용할 수 있지만 openbsd-inetd일부 inetd단계가 다릅니다.

  • TFTP 루트 디렉토리는에서 변경 될 수 있습니다 /etc/default/tftpd-hpa. 업데이트 ‪/etc/inetd.conf도 잊지 마십시오 .

  • SSH (SFTP), SMB, NFS ... Ubuntu 지원 NFS와 같은 많은 프로토콜을 통해 RAMDisk 로딩을 지원하는 많은 배포판.

  • 일부 오래된 네트워크 카드는 PXE를 지원하지 않습니다 . 플로피 디스크, USB 드라이브, 하드 디스크 ( 파티션) 또는 ROM에 플래시 (NIC 지원이 거의 없음 ) 에서 iPXE ( 예 : gPXE 또는 Etherboot )를 사용할 수 있습니다 /boot. GRUB2에는 PXE를 사용한 부팅을 지원하는 모듈이 있습니다.

    Wikipedia : gPXEROM-O-matic 도 참조하십시오 .

  • cdimage.ubuntu.com/netboot/의 Ubuntu Netboot 이미지 네트워크에서 Ubuntu 설치를 제공하며 공식 미러 또는 로컬 패키지 (있는 경우)에서 필요한 모든 패키지를 다운로드하도록 요청합니다.

    대부분의 사용자는 PXE를 통해 라이브 이미지를 부팅하려고합니다. 이 질문은 PXE 서버를 설정하기위한 것입니다. 참조 우분투 위키 : 설치 - localnet에

    우분투 넷 부트-공식 아카이브 미러 우분투 NetBoot-사용자 정의 / 로컬 아카이브 미러

  • PXE 메뉴는 사용자 정의 할 수 있으며 Ubuntu NetBoot 에서 배울 수있는 최상의 템플릿 입니다. Pxeboot Multiple 이미지 참조

    PXE_Linux_Menu.png

  • memdiskPXE를 통해 ISO 또는 플로피 디스크 이미지를 직접로드하는 데 사용할 수 있습니다. syslinux-common패키지에 사본이 있습니다. 클라이언트에는 이미지와로드 된 OS를 실행하기위한 부분을 담을 수있는 충분한 RAM이 있어야합니다.

    구성 예 :

    /var/lib/tftpboot/
    |-- FDSTD.144
    |-- memdisk
    |-- pxelinux.0
    |-- slitaz-cooking.iso
    |-- pxelinux.cfg
    |   `-- default
    `-- pmagic/
        |-- bzimage
        `-- initramfs
    

    /pxelinux.cfg/default

    DEFAULT partmagic
    
    LABEL partmagic
        MENU LABEL PartMagic 4.5
        KERNEL pmagic/bzimage
        APPEND initrd=pmagic/initramfs edd=off noapic load_ramdisk=1 prompt_ramdisk=0 rw vga=791 sleep=10 loglevel=0 keymap=us livemedia
    
    LABEL slitaz
        MENU LABEL ^Slitaz.iso
        TEXT HELP
    Testing boot from iso.
        ENDTEXT 
        KERNEL memdisk
        APPEND initrd=slitaz-cooking.iso
    
    LABEL freedos_std
        MENU LABEL ^FreeDOS STD
        TEXT HELP
    Testing boot from Floppy IMG.
        ENDTEXT 
        KERNEL memdisk
        APPEND initrd=FDSTD.144
    
  • 오리지널 개발자가 상용화하기로 결정한 후 PartedMagic 패키지는 공식 사이트에서 삭제되었으며 일부 릴리스는 토런트 네트워크를 통해 찾을 수 있습니다. 내 대답은 저에게 효과적 인 첫 번째 PXE 설정의 이력서입니다. Ubuntu Netboot Image 는 동일한 지침으로 작동해야합니다.


친구, 사실 Pxeboot에서 일하고 있습니다. 나는이 패키지를 하나의 가상 머신 (Oracle Virtualbox)에 설치했습니다. .conf 파일 및 dhcp 서버 실행
Beginner

@Sneetsher : 안녕하세요, 기본값으로 구성된 tftpd-hda를 사용하고 있습니다. A netstat -lu | grep tftp는 청취 모드에서 보여줍니다. / tftpboot 폴더는 777이지만 tftp> get pxelinux.0클라이언트에서 시도 하면 항상 tftp가 나타납니다. pxelinux.0 : 권한 거부 오류. 디버깅 아이디어가 있습니까? 미리 감사드립니다.
Danduk82

@ Danduk82, /var/lib/tftpboot/755 (기본값)는 정상 입니다. 모든 내용을 읽을 수 있도록 pxelinux.0644가 있거나 실행 중인지 확인하십시오 sudo chmod -R +r /var/lib/tftpboot/.
user.dz

1
안녕하세요, 실제로 나는 문제를 해결했습니다 : 사실 나는 (어리석게도) filename "pxelinux.0";... 코멘트를 추가 한 후 DHCP 서비스를 다시 시작하는 것을 잊었습니다 . 건배
Danduk82

1
@ Matthieu, 당신은 토런트 네트워크를 통해 일부 릴리스를 찾을 수 있습니다, 원래 개발자가 상업적으로하기로 결정한 후 공식 사이트에서 패키지가 삭제되었습니다. PXE를 처음 테스트하거나 설정 하려는 경우 cdimage.ubuntu.com/netboot를 사용할 수도 있습니다 .
user.dz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.