@tyamadajp
gPXE and SYSLINUX :
 ブートローダで楽しむ
←
 ネットサーフィン( 死語)
まずは質問
ネットブート、
してますか?
(ブートローダ、何使ってますか?)
今日の話
● ネットブートがいかに便利か
● gPXE & SYSLINUX の中身と歴史
● 間違った使い方( /w デモ)
「山盛りのサーバに圧殺され、ブート中毒と
 なった我々は普通のブート環境ではもはや
 足りない!ネットブートを、一心不乱の
 ネットブートを!」(某少佐)
今日のメイン
普通のブート vs ネットブート
DHCP TFTP
BOX
#01
BOX
#02
BOX
#03
ふつうの PC (1台) ネットワーク越しに多数台
普通のブート vs ネットブート
DHCP TFTP
BOX
#01
BOX
#02
BOX
#03
ふつうの PC (1台) ネットワーク越しに多数台
BootSV
…
BOX
#01 BOX
#02
BOX
#03
BootSV
…
…
WAN / Internet
WAN/ インターネット越しに
どこからでも・何からでも
gPXE (+ SYSLINUX)
● grub/syslinux/... 同様のローダ
● PXE/UNDI BIOS にもなれる
昔は拡張 ROM を焼いて
NIC の ROM ソケットに
挿して使ってました。
これに使った Etherboot
プロジェクトの後継
ちょっと歴史の話
SYSLINUX
SYSLINUX
gPXE
Etherboot
Etherboot
gPXE
gPXE
2007 年に合流
g
少し真面目にブートの話
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
ここからネットブートが開始
普通のネットブート
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 で送り込む
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)
乗っ取ると何ができる?
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
...
ちょっとだけ gPXE Internal
PXE->PXENV_FILE_OPEN(uri_string) …
を呼ぶと
http ftp x-slam
mtftp aoe
tftp
URI Abstraction
xfer API
netdev API
undi rtl8139 e1000 ib
PXE BIOS API interface
POSIX もどき API
中のコード、目茶目茶綺麗です
この高機能、ブートに使うのは…
もったいない
よろしい、ならばネットサーフィンだ
え? Gopher みたい?
そんなことは
ありません
これくらいでウェブですか?
ちゃんと動的に取得・生成してます
HeartRails さんの WebAPI を使って
アクセスしたページをロードしてます。
HeartRails さん、ありがとう!
http://capture.heartrails.com/
おしまい
今日は家に帰ったらネットブート
● ネットブートは便利です
● gPXE & SYSLINUX を使おう
● コード構造も綺麗で改造に最適
● 間違った使い方もできます

More Related Content

PDF
Rumpを使ってみる
PDF
20220207 sd輪読&座談会#33 kitazaki
PDF
ほんとはこわくない Gentoo Linux
PPT
Packet
PPTX
NNTPについて簡単すぎる説明
PPTX
パケット解析ノススメ
PDF
PNA3秒クッキング
PDF
Open vzでdr hbstudy
Rumpを使ってみる
20220207 sd輪読&座談会#33 kitazaki
ほんとはこわくない Gentoo Linux
Packet
NNTPについて簡単すぎる説明
パケット解析ノススメ
PNA3秒クッキング
Open vzでdr hbstudy

What's hot (20)

PDF
Vimpulse について
PDF
Raspberry Piにdiskless modeのalpine linuxを導入してみる
PDF
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
PPT
FreeBSDで行こう for small server
PDF
ハニーポッターと謎のアクセス
PDF
NetwalkerとARM Linuxのカスタマイズ情報
PDF
FreeBSDのpostfixをblacklistd(8)に対応させてみた
ODP
How to use blacklistd
PDF
GnukトークンでSSH
PDF
NanoStrand
PPTX
フレッシャーズのためのパケット解析入門
PDF
Debian tokyo-20150224-01
PDF
プラグインの下位互換性を最大化する
PDF
Infernoについて(仮)
PDF
最近のスマートウォッチについて
PPTX
WebSocketでリアルタイム通信 (第13回学生LT資料)
PDF
Iron Python / Iron Ruby で .NET Programming
PDF
20130126 第2回福岡debian勉強会 debian wheezyとdebian installerのはなし
PDF
Happy status Coding
ODP
Lt
Vimpulse について
Raspberry Piにdiskless modeのalpine linuxを導入してみる
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
FreeBSDで行こう for small server
ハニーポッターと謎のアクセス
NetwalkerとARM Linuxのカスタマイズ情報
FreeBSDのpostfixをblacklistd(8)に対応させてみた
How to use blacklistd
GnukトークンでSSH
NanoStrand
フレッシャーズのためのパケット解析入門
Debian tokyo-20150224-01
プラグインの下位互換性を最大化する
Infernoについて(仮)
最近のスマートウォッチについて
WebSocketでリアルタイム通信 (第13回学生LT資料)
Iron Python / Iron Ruby で .NET Programming
20130126 第2回福岡debian勉強会 debian wheezyとdebian installerのはなし
Happy status Coding
Lt
Ad

Viewers also liked (6)

PDF
Charity Items from Debian JP Project
PDF
The CAcert Project - An Invitation to CAcert ATE at OSC/Tokyo 2011 (JP)
PDF
Invitation to Kernel Parameter and Code Exploration
PDF
The CAcert Project - An Invitation to CAcert ATE in OSC/Tokyo 2011 (EN)
PDF
Infinite Debian - Platform for mass-producing system every second
PDF
Hacking Ruby with Python
Charity Items from Debian JP Project
The CAcert Project - An Invitation to CAcert ATE at OSC/Tokyo 2011 (JP)
Invitation to Kernel Parameter and Code Exploration
The CAcert Project - An Invitation to CAcert ATE in OSC/Tokyo 2011 (EN)
Infinite Debian - Platform for mass-producing system every second
Hacking Ruby with Python
Ad

More from Taisuke Yamada (17)

PDF
ウェブパフォーマンス計測の落とし穴
PDF
DIY Akamai Globe in 50 Minutes
PDF
ウェブサイト最適化101 - 正しく測ろうあなたのサイト -
PDF
Quick QUIC Technical Update (2017)
PDF
IoT Deep Dive - Be an IoT Developer for an Hour
PDF
Pythonではじめるソフトウェア無線
PDF
Getting Started with SDR in Python
PDF
VSCode Remoteでも画像コピペがしたいです!
PDF
InfiniBand on Debian
PDF
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
PDF
Introduction to Initramfs - Initramfs-tools and Dracut
PDF
Hadoop book-2nd-ch3-update
PDF
201012 cacert-at-tokyodebian
PDF
Nilfs usage-report-and-comparison-at-tokyodebian
PDF
Embed Shogiboard - my first mediawiki extension -
PDF
The Web That Wasn't - WikiBana #10 LT
PDF
WebDAV, ATOM, and REST
ウェブパフォーマンス計測の落とし穴
DIY Akamai Globe in 50 Minutes
ウェブサイト最適化101 - 正しく測ろうあなたのサイト -
Quick QUIC Technical Update (2017)
IoT Deep Dive - Be an IoT Developer for an Hour
Pythonではじめるソフトウェア無線
Getting Started with SDR in Python
VSCode Remoteでも画像コピペがしたいです!
InfiniBand on Debian
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
Introduction to Initramfs - Initramfs-tools and Dracut
Hadoop book-2nd-ch3-update
201012 cacert-at-tokyodebian
Nilfs usage-report-and-comparison-at-tokyodebian
Embed Shogiboard - my first mediawiki extension -
The Web That Wasn't - WikiBana #10 LT
WebDAV, ATOM, and REST

Casual Web-browsing with gPXE and SYSLINUX