gPXEを試してみた→が、失敗

id:viver に gPXE というのを教えてもらいました。

gPXEは、TFTPじゃなくてHTTPでkernelやinitramfsをダウンロードできるところにぐっときたのでちょっと試してみたメモ。

NICのROMを書き換えるのはちょっとアレなので、PXE→gPXEのchainloadingを試した。

内容は↓に書いてある通り。

  if not ( option user-class = "gPXE" ) {
    filename  "undionly.kpxe";
  } else {
    filename  "http://ore.no.webserver.local/bububunoboot";
  }

とか

  if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
    filename  "undionly.kpxe";
  } else {
    filename  "http://ore.no.webserver.local/bububunoboot";
  }

とか

option space gpxe;
option gpxe-encap-opts code 175 = encapsulate gpxe;
option gpxe.bus-id code 177     = string;
(snip)
  if exists gpxe.bus-id {
    filename  "undionly.kpxe";
  } else {
    filename  "http://ore.no.webserver.local/bububunoboot";
  }

とか試すも、gPXEがHTTPでゲットしてきてくれない。

ただ、gPXEは立ち上がり、C-b で対話モードには入れるので、そこで config で filename http://.../bububunoboot を指定して、後、autoboot すれば bububunoboot で書いた通り

#!gpxe
kernel http://ore.no.webserver.local/boot/linux/vmlinuz
initrd http://ore.no.webserver.local/boot/linux/initramfs
boot

kernelとinitramfsをHTTPでGETしてくれてスコスコブートしてくれたす。

なのでもうちょっといけそうかなーと思うのですがちと保留。

メモ

メニューも出せるっぽい。