小さい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 ひとまとめ 既存のコマンドだけで 好きなディストロを 作ることが可能!! 今後の展望 どうしよう……
© Copyright 2024 ExpyDoc