Fuchsia のソースコードをちょっと眺めてみました。
FuchsiaはGoogleが2016年8月に公開したOSです。
Brilloと違ってLinux kernelではなく、独自のkernelを使っているのが特徴です。
自分が興味があるネットワーク関連の下回りの部分について調査しました。
drivers/wifi
- mediatek rt5370 のwifiドライバが追加されてた。
- https://fuchsia.googlesource.com/drivers/wifi/+/sandbox/tkilbourn/rt5370
bluetooth
- bluetoothのHCI送受信部が追加されて。
- https://fuchsia.googlesource.com/bluetooth/
magenta
-
kernel+αです。
-
マイクロカーネルなので、小さなカーネル+ユーザーモードライブラリ+ユーザーモードドライバという組み合わせ。
-
独自のIPv6スタックがある。(現状TCPは未対応。)
-
https://fuchsia.googlesource.com/magenta/+/master/system/ulib/inet6/
-
ネットワークAPIのサンプルがある
-
https://fuchsia.googlesource.com/magenta/+/master/system/uapp/netsvc/netsvc.c
-
Ethernetドライバがある。kernel/dev/netとsystem/udevにある。カーネルのドライバとユーザーモードドライバなのでしょうか?
-
https://fuchsia.googlesource.com/magenta/+/master/kernel/dev/net/pcnet
-
https://fuchsia.googlesource.com/magenta/+/master/kernel/dev/net/smc91c96
-
https://fuchsia.googlesource.com/magenta/+/master/system/udev/intel-ethernet/
-
https://fuchsia.googlesource.com/magenta/+/master/system/udev/usb-ethernet/
-
現時点でのターゲットは3つ Acer Switch Alpha 12 と Intel NUC (Skylake and Broadwell) と Raspberry Pi 3
-
https://fuchsia.googlesource.com/magenta/+/master/docs/targets/acer12.md
-
https://fuchsia.googlesource.com/magenta/+/master/docs/targets/nuc.md
-
https://fuchsia.googlesource.com/magenta/+/master/docs/targets/rpi3.md
-
Acer Switch Alpha 12で動作させた時のスクリーンショット (via HN)
-
最初のコミットは2016-06-15
-
https://fuchsia.googlesource.com/magenta/+/53b9e1c8de8446a88409d17c4aed70be33349378
-
最初のコミットのdoc/index.mdには用途の記載がある。(https://fuchsia.googlesource.com/magenta/+/53b9e1c8de8446a88409d17c4aed70be33349378/docs/magenta/index.md)
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がある。
- https://fuchsia.googlesource.com/vapidssl/
- 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