Fuchsia のソースコードをちょっと眺めてみました。
FuchsiaはGoogleが2016年8月に公開したOSです。
Brilloと違ってLinux kernelではなく、独自のkernelを使っているのが特徴です。
自分が興味があるネットワーク関連の下回りの部分について調査しました。
drivers/wifi
- mediatek rt5370 のwifiドライバが追加されてた。
bluetooth
- bluetoothのHCI送受信部が追加されて。
magenta
- kernel+αです。
- マイクロカーネルなので、小さなカーネル+ユーザーモードライブラリ+ユーザーモードドライバという組み合わせ。
- 独自のIPv6スタックがある。(現状TCPは未対応。)
- ネットワークAPIのサンプルがある
-
Ethernetドライバがある。kernel/dev/netとsystem/udevにある。カーネルのドライバとユーザーモードドライバなのでしょうか?
-
現時点でのターゲットは3つ Acer Switch Alpha 12 と Intel NUC (Skylake and Broadwell) と Raspberry Pi 3
-
Acer Switch Alpha 12で動作させた時のスクリーンショット (via HN)
-
最初のコミットは2016-06-15
Magenta is the OS kernel that powers FNL for Phones and Personal Computers.
gigaboot20x6
- ブートローダ
- 要UEFI。
- UDPv6によるネットワークブートに対応
- ネットワークブートのやり方 https://fuchsia.googlesource.com/magenta/+/master/docs/getting_started.md
その他
- LwIPがある。 実際はmagentaのIPv6スタックはあまり使わないでLwIPを使うみたいですけど、どうでしょうか?
- FuchsiaのコードはFuchsiaブランチのports/fuchsiaにある。
- https://fuchsia.googlesource.com/third_party/lwip/+/fuchsia/ports/fuchsia
- ethernetドライバを使った送信は、/dev/class/ethernet/enをopen()して、ファイルディスクリプタにwrite()する。
- ethernetドライバを使った受信は、ファイルディスクリプタをread()する。
- VapidSSL というBoringSSLをforkしたSSLがある。
- hostapがあるので、Wi-Fi対応するのかもしれない。
- https://fuchsia.googlesource.com/third_party/hostap/
- fuchsia用のwpa_supplicant のmain部分
- https://fuchsia.googlesource.com/third_party/hostap/+/fuchsia/wpa_supplicant/main_fuchsia.c
- fuchsia用のeloop 、だけど、すぐrevertされてた。
- https://fuchsia.googlesource.com/third_party/hostap/+/27398e96aa3b38817cb2a693d746ada42bb4e4a2