ONIEで遊んでみようとした話
Dec 6, 2016
Masaru OKI @masaru0714
誰?
沖 勝 (Masaru OKI)
● 株式会社インターネットイニシアティブ所属
● OpenFlowソフトウェアスイッチLagopusの開発をやってます
○ Dataplane: DPDK制御、OpenFlowによるパケット処理
● IIJの自社開発ルータSEIL(ザイル)のファームウェア開発をやっていました
○ NetBSDカーネル、デバイスドライバ、 NAT/filter、CLI、各種デーモンなど
● 昔、NetBSD/x68k (シャープのパソコンへの移植)作りました
● 大昔、LHA for UNIXというのを公開しました
ホワイトボックス・スイッチ
● 外見は通常のL2スイッチ、L3スイッチと変わらない
● 中身(ハードウェア)も同様
● 中身(ソフトウェア)が違う
● L2, L3スイッチは、電源を入れて設定すれば即使える中身が入っている
● ホワイトボックススイッチは、中身が入ってない(!)
● 中身(NOS)を入れるための最低限のソフトウェアだけ入っている
○ ブートローダー(bootstrap loader)と呼ばれます
● ユーザーが自分でNOSをインストールして使う
○ サーバーにUbuntuやCentOSやその他どれでも好きな OSをインストールするのと同じ
ONIEとは?
● Open Network Install Environment
● http://onie.opencompute.org/
● ベアメタルネットワークスイッチのためのインストール環境。
● Cumulus NetworksがOpen Compute Project (OCP)に寄贈した。
● データセンターにおけるスイッチの自動プロビジョニングを実現する。
もう少しぶっちゃけると
● Linuxカーネルとbusybox
● DHCPクライアント機能でIPアドレスをもらう
○ 厳密には静的にIPアドレスを付与することもできる
● DHCPサーバがよこしてくるインストーラ―のURLを使ってNOSをインストールする
○ RFC3925 VIVSO
○ 厳密には静的に設定、 USBなどのローカルメディアから、など複数の手段のいずれかを使う
● サポートしているCPUはx86, PowerPCと32bit ARM
● PowerPCと32bit ARMではU-bootから起動されることを前提とする
● インストーラの要件やNOSの要件はx86とそれ以外で異なる
x86に絞って話を進めます
● どこかのストレージにONIEがインストールされているのが前提
○ 最小4GB、推奨16GB
● GRUBでONIEがブートする環境からNOSインストールが始まる
○ BIOSでもUEFIでもOK
● NOS本体をどうやって取得するか複数の方法がある
○ http,ftp,tftpなどネットワークから取得
○ USBメモリなどローカルストレージに入っているものを使う
● NOSインストーラはGRUBのdefault bootをNOSに切り替えるまでがお仕事
○ 実際にはONIEを起動しているのとは別の場所に GRUBをインストールする
○ インストールしたGRUBから、ONIEのGRUBを起動できるようにする (chainloader)
● ONIEは書きつぶさず、NOS上では/mnt/onie-bootにmountすること
● ONIEのGRUBエントリ名は”ONIE”、grub-reboot ONIEで切り替えできるように
最初のブート
USB
SATA
ONIE
空
empty
GRUB
ONIEがインストーラをダウンロード
USB
SATA
ONIE
空
empty
installer.bin
http://……../installer.bin
GRUB
DHCPでIPアドレスを取得する
オプションでURLが降ってくる
インストーラの動作
USB
SATA
ONIE
空
empty
installer.bin
NOS image
インストーラが何らかの手段で拾い SATAにインストール
GRUB
NOS起動
USB
SATA
ONIE
NOS
GRUB
GRUB
NOSの再インストールは?
chainloaderという仕組みでONIEを起動させる
USB
SATA
ONIE
NOS
GRUB
GRUB
installerとNOS image
たとえばNOSとしてUbuntuを使おうとする場合
● 通常のubuntu-xx.xx-amd64-server.isoを起動すると対話形式でインストール
● 自動化できない!
→自動インストールの方法が公開されていました
● https://help.ubuntu.com/lts/installation-guide/i386/apb.html
ざっくり一言でいえば、debian-installerを使うとできます! とのこと
遊んでみようと計画する
● 用意するもの
○ ふつうのPC
○ USBメモリ
○ 空のSATA SSD
○ DHCPサーバー兼NOSイメージ提供サーバー
● どういうことをやるか
○ USBメモリにGRUBとONIEを入れる
○ サーバーにNOSイメージを用意しDHCPサーバーの設定をする
○ インストーラを作る
○ PCをブート→ONIEが起動してNOSを自動インストールして起動 ! (できるか?)
計画はまだ実行に移せていません。年末年始にやってみようと思います。

Onieで遊んでみようとした話