小さい NetBSDの作り方 - e

小さいNetBSDの作り方
榎本 優樹 @ 千歳科学技術大学大学院
ホームページ: https://e-yuuki.org
連絡先: [email protected]
なぜNetBSDなのか?
なぜNetBSDなのか?
• build.shの存在
• 「移植性」はハッカーが嬉しいだけ
• 一般ユーザにとってはbuild.shがすべて
小さいNetBSDとは?
○○が小さい/少ない
NetBSD
ディストリビューション
○○が小さい / 少ない
• サイズ
• メモリ使用量
• ビルド時間
など……
作る意義
作る意義とは
• 小ささへの挑戦
• ソースセットの探検
• BSD救急キットという妄想
なぜ今更やるのか?
なぜ今更やるのか?
• 勉強になる
• どうせみんな忘れているだろう
ひとまとめ
ディストロを作ることで
Unixの勉強をする
具体的な手法の紹介
全体的な流れ
• コマンドを小さくする
• カーネルを作る
• ルートファイルシステムを作る
• ↑を埋める
• ディスクイメージを作る
コマンドを小さくする
コマンドを小さくする
• lsとかcatとか
• crunchgenを使う
・複数のプログラムを1つのバイナリにする
・Crunched binaryと呼ばれるもの
コツ
src/distrib/utils
は
宝の山
libhack, ssh, tls
カーネルを作る
configをいじくる
configをいじくる
• 使わないものは全部削除
• 削りすぎると機種によっては動かない
ルートファイルシステム
をつくる
レッツmakefs
–M 最大サイズ -m 最小サイズ
-o bsize=ブロックサイズ,fsize=フラグメントサイズ,density=Byte/inode
-f inodeの最小数
-B エンディアン
-t ファイルシステムの種類
-N ユーザデータベースがあるディレクトリ
イメージファイルの名前 イメージの元となるディレクトリ
カーネルに
ファイルシステムを
埋め込む
カーネルに
ファイルシステムを埋め込む
• 作ったバイナリはカーネルの中へ
• mdsetimageを使う
ディスクイメージを作る
レッツmakefs
完成図
完成図
netbsd.gz
/usr
/etc
/bin
/mnt
...
/boot
ひとまとめ
既存のコマンドだけで
好きなディストロを
作ることが可能!!
今後の展望
どうしよう……