wiki:TipAndDoc/boot/PXE/pxelinux

Version 8 (modified by mitty, 10 years ago) (diff)

--

syslinux

  • Continue HD boot option? | syslinux | users
    from syslinux.doc inside the syslinux package (did you read the doc?) 
    
    LOCALBOOT type [ISOLINUX, PXELINUX] 
    On PXELINUX, specifying "LOCALBOOT 0" instead of a "KERNEL" 
    option means invoking this particular label will cause a local 
    disk boot instead of booting a kernel. 
    The argument 0 means perform a normal boot. The argument 4 
    will perform a local boot with the Universal Network Driver 
    Interface (UNDI) driver still resident in memory. Finally, 
    the argument 5 will perform a local boot with the entire PXE 
    stack, including the UNDI driver, still resident in memory. 
    All other values are undefined. If you don't know what the 
    UNDI or PXE stacks are, don't worry -- you don't want them, 
    just specify 0. 
    On ISOLINUX, the "type" specifies the local drive number to 
    boot from; 0x00 is the primary floppy drive and 0x80 is the 
    primary hard drive. The special value -1 causes ISOLINUX to 
    report failure to the BIOS, which, on recent BIOSes, should 
    mean that the next boot device in the boot sequence should be 
    activated. 
    
    This labels forks for me on isolinux.cfg : 
    
    label harddisk 
    localboot 0x80 
    append SLX=0x80 
    
    label floppy 
    localboot 0x00 
    append SLX=0x00 
    
    except on some weird Compaq BIOSes, Works. 
    And the append line I can't remember where it cames from, should work without 
    it, I guess some patch for gfxboot that I still using for impress. 
    

'include' chain

  • include <filename> で別のファイルに書かれたsyslinuxの設定を読み込むことが出来る
  • その場合、各設定ファイルでの<filename>のパスは一致している必要がある
    • PXE bootでの例
      1. dhcpd.conf
                filename "/pxelinux.0";
        
      2. /srv/tftp/pxelinux.cfg/default
        include lucid-amd64/ubuntu-installer/amd64/boot-screens/menu.cfg
        default lucid-amd64/ubuntu-installer/amd64/boot-screens/vesamenu.c32
        
      3. /srv/tftp/lucid-amd64/ubuntu-installer/amd64/boot-screens/menu.cfg
        (snip)
        include ubuntu-installer/amd64/boot-screens/stdmenu.cfg
        include ubuntu-installer/amd64/boot-screens/text.cfg
        (snip)
        
        • この時点で「ubuntu-installer/amd64/boot-screens/」とパスが変わっているため、正常に読み込まれない
      4. /srv/tftp/lucid-amd64/ubuntu-installer/amd64/boot-screens/stdmenu.cfg (<= 正常に読み込まれない)
        menu background ubuntu-installer/amd64/boot-screens/splash.png
        (snip)
        
        • splash.pngを指定しているstdmenu.cfgが正常に読み込まれないため、Ubuntuのロゴは表示されない
      5. /srv/tftp/lucid-amd64/ubuntu-installer/amd64/boot-screens/text.cfg (<= 正常に読み込まれない)
        default install
        label install
                menu label ^Install
                menu default
                kernel ubuntu-installer/amd64/linux
                append vga=normal initrd=ubuntu-installer/amd64/initrd.gz -- quiet
        
        • text.cfgも正常に読み込まれないため、kernelが指定できず、画面には以下のように表示される。
          Invalid or corrupt kernel image.
          boot:
          
      6. /srv/tftp/lucid-amd64/ubuntu-installer/amd64/boot-screens/menu.cfg に戻る
      7. 以上を無限ループする
        • /var/log/daemon.log
          Dec  5 15:14:27 ubuntu atftpd[5092]: Serving /pxelinux.0 to 192.168.XYZ.253:2070
          (snip)
          
          Dec  5 15:14:27 ubuntu atftpd[5092]: Serving /pxelinux.cfg/default to 192.168.XYZ.253:57099
          Dec  5 15:14:27 ubuntu atftpd[5092]: Serving /lucid-amd64/ubuntu-installer/amd64/boot-screens/menu.cfg to 192.168.XYZ.253:57100
          Dec  5 15:14:27 ubuntu atftpd[5092]: Serving /ubuntu-installer/amd64/boot-screens/stdmenu.cfg to 192.168.XYZ.253:57101
          Dec  5 15:14:27 ubuntu atftpd[5092]: Serving /ubuntu-installer/amd64/boot-screens/text.cfg to 192.168.XYZ.253:57102
          Dec  5 15:14:27 ubuntu atftpd[5092]: Serving /ubuntu-installer/amd64/boot-screens/amdtext.cfg to 192.168.XYZ.253:57103
          Dec  5 15:14:27 ubuntu atftpd[5092]: Serving /ubuntu-installer/amd64/boot-screens/gtk.cfg to 192.168.XYZ.253:57104
          (snip)
          
          Dec  5 15:14:27 ubuntu atftpd[5092]: Serving /ubuntu-installer/amd64/boot-screens/adgtk.cfg to 192.168.XYZ.253:57109
          Dec  5 15:14:27 ubuntu atftpd[5092]: Serving /ubuntu-installer/amd64/boot-screens/adamdgtk.cfg to 192.168.XYZ.253:57110
          Dec  5 15:14:30 ubuntu atftpd[5092]: Serving /lucid-amd64/ubuntu-installer/amd64/boot-screens/vesamenu.c32 to 192.168.XYZ.253:57111
          Dec  5 15:14:30 ubuntu atftpd[5092]: Serving /pxelinux.cfg/default to 192.168.XYZ.253:57112
          Dec  5 15:14:30 ubuntu atftpd[5092]: Serving /lucid-amd64/ubuntu-installer/amd64/boot-screens/menu.cfg to 192.168.XYZ.253:57113
          Dec  5 15:14:30 ubuntu atftpd[5092]: Serving /ubuntu-installer/amd64/boot-screens/stdmenu.cfg to 192.168.XYZ.253:57114
          Dec  5 15:14:30 ubuntu atftpd[5092]: Serving /ubuntu-installer/amd64/boot-screens/text.cfg to 192.168.XYZ.253:57115
          Dec  5 15:14:30 ubuntu atftpd[5092]: Serving /ubuntu-installer/amd64/boot-screens/amdtext.cfg to 192.168.XYZ.253:57116
          

fixit

  • /srv/tftp/pxelinux.cfg/defaultを以下のように修正し、includeされる設定ファイルとそろえる
    include ubuntu-installer/amd64/boot-screens/menu.cfg
    default ubuntu-installer/amd64/boot-screens/vesamenu.c32
    
  • /srv/tftp/lucid-amd64/ubuntu-installer/amd64/boot-screens/menu.cfgなどのパスを、変更する
    • /srv/tftp$ sudo mv lucid-amd64/ubuntu-installer .
      /srv/tftp/lucid-amd64/ubuntu-installer/amd64/boot-screens/menu.cfg
      ↓
      /srv/tftp/ubuntu-installer/amd64/boot-screens/menu.cfg
      

boot Debian 6.0 installer with PXE

pxelinux.0

  • Ubuntu lucid付属の「2:3.63+dfsg-2ubuntu3」では、Debian 6.0は正常に起動しない
    sha1sum -b /srv/tftp/pxeboot/pxelinux.*
    88e0da1f23cf8bfa4246483e96632385121842d6 */srv/tftp/pxeboot/pxelinux.0
    3b98c5c0edf4c5fa69f59fac29d81d23c103a869 */srv/tftp/pxeboot/pxelinux.0.old
    
    • $ sudo mv /srv/tftp/pxeboot/pxelinux.0 /srv/tftp/pxeboot/pxelinux.0.old
    • /srv/tftp/pxeboot$ sudo ln -s debian-installer/amd64/pxelinux.0 .
  • /srv/tftp/pxeboot/pxelinux.cfg/default の更新