Casual Web-browsing with gPXE and SYSLINUX

1,595 views

Published on

5-minutes introduction to gPXE/SYSLINUX netbooting, with bizarre usage as a web browser.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,595
On SlideShare
0
From Embeds
0
Number of Embeds
34
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Casual Web-browsing with gPXE and SYSLINUX

  1. 1. @tyamadajp gPXE and SYSLINUX :  ブートローダで楽しむ ← ネットサーフィン( 死語)
  2. 2. まずは質問 ネットブート、 してますか? (ブートローダ、何使ってますか?)
  3. 3. 今日の話 ● ネットブートがいかに便利か ● gPXE & SYSLINUX の中身と歴史 ● 間違った使い方( /w デモ) 「山盛りのサーバに圧殺され、ブート中毒と  なった我々は普通のブート環境ではもはや  足りない!ネットブートを、一心不乱の  ネットブートを!」(某少佐) 今日のメイン
  4. 4. 普通のブート vs ネットブート DHCP TFTP BOX #01 BOX #02 BOX #03 ふつうの PC (1台) ネットワーク越しに多数台
  5. 5. 普通のブート vs ネットブート DHCP TFTP BOX #01 BOX #02 BOX #03 ふつうの PC (1台) ネットワーク越しに多数台 BootSV … BOX #01 BOX #02 BOX #03 BootSV … … WAN / Internet WAN/ インターネット越しに どこからでも・何からでも
  6. 6. gPXE (+ SYSLINUX) ● grub/syslinux/... 同様のローダ ● PXE/UNDI BIOS にもなれる 昔は拡張 ROM を焼いて NIC の ROM ソケットに 挿して使ってました。 これに使った Etherboot プロジェクトの後継
  7. 7. ちょっと歴史の話 SYSLINUX SYSLINUX gPXE Etherboot Etherboot gPXE gPXE 2007 年に合流 g
  8. 8. 少し真面目にブートの話 BIOS (ext) ISR ROM BIOS VIDEO BIOS VIDEO RAM BIOS DATA (ext) RAM BIOS DATA BIOS RAM 640KB =0xa0000 1MB =0x100000 ① x86 startup address =0xFFFF0 ここから CPU が実行スタート ② Network Bootstrap Program Entry Point=0x7C00 ここからネットブートが開始
  9. 9. 普通のネットブート BIOS (ext) ISR ROM BIOS VIDEO BIOS VIDEO RAM BIOS DATA (ext) RAM BIOS DATA BIOS RAM UNDI code/data NBP (ブートローダ) PXE code/data/stack UNDI/PXE runtime 普通は、 PC に(最近は 最初から)入ってる UNDI/PXE ROM を使って、 指定したブートローダを TFTP で送り込む
  10. 10. GPXE (+SYSLINUX) のネットブート BIOS (ext) ISR ROM BIOS VIDEO BIOS VIDEO RAM BIOS DATA (ext) RAM BIOS DATA BIOS RAM UNDI code/data NBP (ブートローダ) PXE code/data/stack ××××××××××× gPXE は「ベンダの ROM は ヘボで駄目杉なので」 TFTP で送り込まれると UNDI/PXE を置き換えて、 自分 or 提携ブートローダを 動かす UNDI/PXE runtime (gPXE)
  11. 11. 乗っ取ると何ができる? PXE BIOS API のコール方法が呼び出し用 アドレス(=関数)1つ+ OPCODE なのを 逆用して、勝手に OPCODE を増やしている 普通の PXE API gPXE な PXE API 1. PXENV_TFTP_OPEN 2. PXENV_TFTP_READ 3. PXENV_UDP_OPEN 4. PXENV_UDP_WRITE ... 1. PXENV_TFTP_OPEN 2. PXENV_TFTP_READ 3. PXENV_UDP_OPEN 4. PXENV_UDP_WRITE … A. PXENV_FILE_OPEN B. PXENV_FILE_EXEC ...
  12. 12. ちょっとだけ gPXE Internal PXE->PXENV_FILE_OPEN(uri_string) …を呼ぶと http ftp x-slammtftp aoetftp URI Abstraction xfer API netdev API undi rtl8139 e1000 ib PXE BIOS API interface POSIX もどき API 中のコード、目茶目茶綺麗です
  13. 13. この高機能、ブートに使うのは… もったいない
  14. 14. よろしい、ならばネットサーフィンだ
  15. 15. え? Gopher みたい? そんなことは ありません
  16. 16. これくらいでウェブですか?
  17. 17. ちゃんと動的に取得・生成してます HeartRails さんの WebAPI を使って アクセスしたページをロードしてます。 HeartRails さん、ありがとう! http://capture.heartrails.com/
  18. 18. おしまい 今日は家に帰ったらネットブート ● ネットブートは便利です ● gPXE & SYSLINUX を使おう ● コード構造も綺麗で改造に最適 ● 間違った使い方もできます

×