## NetBSD ### こういうOSが欲しい - コンピュータは世界中にある - 昔の計算機から最近のパソコン/組込まで目についたすべてのコンピュータで動くOS - 手持ちの周辺機器が全部使えるOS - すべてのソフトウェアが動くOS - ソースコードを自由に使えるOS - 読む/書く/引用する/売る ### NetBSD - 4.3/4.4BSD&386BSDベース - 1993年3月21日から開始 - 今年18周年 - 2012年2月11日にNetBSD5.1 - 58種類のハードウェアを単一ソースでサポート - ハードウェア依存/非依存部分を分離 - 最新のネットワークプロトコルをサポート - IPv6 マルチキャスト標準サポート - 商用ルータ・プリンタ・家電製品に組み込まれる例も - http://www.NetBSD.org/ - http://commons.wikimedia.org/wiki/File:Unix_history-simple.png ### NetBSDのライセンス - 著作権表示 - ソースコードの再配布においては、上記の著作権表示、この条件の列挙、下記の注意書きを残すこと。 - バイナリー形式の再配布においては、上記の著作権表示、この条件の列挙、下記の注意書きを、配布物に付属した文書および/または他のものに再現させること。 - 注意書き - このソフトウェアに関して問題が生じても、作者は責任を負わない [http://www.netbsd.org/ja/about/redistribution.html] ### BSDライセンスとNetBSD - 著作権表示を保存する - 転用して販売できる - ソースの公開義務なし [http://www.NetBSD.org/about/redistribution.html] - ライセンス条項が異なるソースを分離する - GNUは/usr/src/gnu以下に - /usr/src/external/gpl3 ### 管理元が異なるソースを分離する - /usr/src/dist bzip2,dhcp,file,ipf,iscsi,libpcap,nawk,ntp,nvi... - /usr/src/crypto/dist heimdal,ipsec-tools - /usr/src/external bsd am-util,atf,bind,dhcpcd gpl2 lvm2,xcvs intel-fw-oem intel-fw-public intel-public acpica mit xorg ### GPLv3 - ftp://ftp.NetBSD.org/pub/NetBSD/NetBSD-current/src/external/gpl3/README - http://www.gnu.org/licenses/gcc-exception-faq.html - gcc 4.1.3で止める→4.5.3に移行 - GCCを捨ててpccかllvm - pccで動く(i386/2011/5/10) - gettextは0.14.4 - ブートローダをGPLじゃないものに置き換える ### 単一ソースコード - 単一ソースツリーで - CPUアーキテクチャ 15種類 - 58種類のプラットホームで動く - 16種類のバスサポート - ATA,CardBus,EISA,PCI,PCMCIA,VME ### 新しく移植するときには - まず、機種に依存しない部品を組み合わせる - CPU..バス.. - 機種依存部分だけを追加する - Alpha/arm/acorn26/acorn32/cats/evbarm/hpcarm/Netwinder - shark/WZero3/evbarm/hppa/hp700/i386/sun2/ - Amiga/Atari/Cesfic/Hp300/Luna68k/Mac68k/Mvme68k/News68k/next68k ### ドリームキャスト版CD - http://ftp.netbsd.org/pub/NetBSD/misc/tsutsui/dreamcast/ dreamcastbootcd-20101010.tar.gz - CD-R付きNetBSDマシンで展開 - CD-R入れる - makeすると、バイナリをダウンロードしてブートCDが焼ける - dreamcastに入れて起動 ### X68030 - X68kエミュレータ - XM6i - NetBSDがブートします - http://www.xm6i.org/ - OSC広島で祭り - 21世紀のX68 - CPU内部の挙動を細かく観測できる - ATCエントリが見える ### サポートハードウェア 56種類 ### 4.4BSD由来の機能 - Nullfs – loopbackマウント - Unionfs – ファイルシステムを重ねる - Lfs – 高速書き込み性能 - NFS – NFSv3 NFSoverTCP - IP virtual hosting ### NetBSD独自の改良 - NFS – WebNFS - NFS over IPv6 - UVM virtual memory system - UBC unified buffer cache system - Cardbus - Wscons - USB ver2.0 - 64bit clean - Wireless networking - http://www.NetBSD.org/about/features.html - ZFS? Google Summer of Code ### アーキテクチャに共通する部分 - Package system - バス USB、CardBus - デバイスドライバ - オーディオフレームワーク - OSエミュレーション - バスサポート - 仮想デバイス - Concatenated disk driver - Memory disk driver - RAIDframe disk - Random device - Vnode disk - 物理デバイス - オーディオデバイス - WSCONS - ワークステーションコンソール - wsdisplay - wskbd - wsmouse ### NetBSD:カーネル - 機種に依存する部分 - i386/MIPS/SH/68000… - デバイスに依存する部分 - PCIバス/ISAバス/PCMCIA… - その他 - メモリ管理 ### 新しいマシンをサポートするには - 搭載CPUがサポートされているか? - 搭載バスがサポートされているか? - 搭載デバイスがサポートされているか? - 共有部分はすべてで共有できる - サポートされていない部分だけを作り -     CVSツリーに追加する ### Package - /usr/pkgsrc - 簡単にソフトウェアをコンパイル・インストール - 1997年8月開始ー今年で13年目 - 2011-Q2 もうすぐ準備 - 41種類のジャンル - 9963種類以上のソフトウェア - Make installでソフトウェアのインストール - 各CPUアーキテクチャ間で共通 - Mipsel –mips endian little - Arc – MIPSで動くNTマシン - Cobalt – Cobalt Qube1/2 - Pmax – DEC station - Hpcmips – MIPS搭載WinCE - NetBSD/Solaris/Linux/Darwin/FreeBSD/OpenBSD/ - IRIX/BSDOS/AIX/SUA(Interix)/DragonFlyBSD/OSF1/hpux ### エミュレータ - /usr/pkgsrc/emulators - gxemul - mips (pmax,hpcmips) - dreamcast - simh - NetBSD/vax - tme - sun2,sun3,SPARCstation 2 - QEMU - PC - USBデバッグ ### Packagesジャンル一覧 - ソフトウェアのコンパイル/インストール - drupal - cd /usr/pkgsrc/www/drupal6 - make package - make install - 関連するソフトウェアがインストール - OpenOffice - cd /usr/pkgsrc/misc/openoffice3 - make package - make install - /usr/pkg/bin/soffice .... ### NetBSDを使う時 - OSをインストールする - pkgsrc.tar.gzを取得 - 必要なパッケージをインストール - tcsh,icewm,kterm,anthy-elisp,ja-less - openoffice,firefox,gimp - 目的別 - デスクトップ向け - 組み込み向け - pkgsrc/meta-pkgにいくつかある ### Package対応プラットフォーム - NetBSD - FreeBSD - OpenBSD - BSD/OS - Solaris - Linux - DragonflyBSD - (SSD Linux) ### Package – NetBSD以外での利用 ### Packageとライセンスの取扱い - 個々のパッケージごとにLICENSE定義 - 受け入れられるライセンスを制御したい - ツールとライブラリのライセンスが違う - ツールがGPL,ライブラリがLGPL - GPLv2とv3が混在する例 - rubyとreadline6 - GPL2とGPL2 or laterの区別 - GPL3とリンクできるかできないか - http://d.hatena.ne.jp/obache/20090922/ ### NetBSDのリリース - リリース版2.0 3.0 4.0 5.0...... - マイナーリリース 2.1.. 3.1... - パッチリリース   2.1.1... 3.1.1... - 開発版 2.99 3.99 4.99 5.99... - カーネルAPIの変更があるとき 2.99.1... ### NetBSD開発ロードマップ - NetBSD5.1サポート機能 - RAIDframe parity maps, which greatly improve parity rewrite times after unclean shutdown - X.Org updates - Support for many more network devices - Xen PAE dom0 support - Xen PCI pass-through support ### NetBSD6.0に入れたい機能 - kernel modules - kernel scalability improvements - 64bit time_t (solves year 2038 problem) - DTrace - ZFS - NILFS - Logical Volume Manager - NPF (New Packet Filter) - Thread Local Storage - Xen SMP support  ### NetBSD6.0に入れたい機能(2) - automated tests - improved puffs (Pass-to-Userspace Framework File System) - improved rump (Runnable Userspace Meta Program kernel) - UltraSPARC III(+) support - MIPS 64bit support - a lot of updated and new 3rd party software - Automated Testing Framework - cd /usr/tests; - atf-run | atf-report ### 組織構成 - Core 5人 テクニカルマネージメント - Port maintainer 28人 - 各実装に関する担当者 - Developer - CVS/WWW/FTP等開発資産に書き込みできる - アクティブなのは188人 - NetBSD Foundation,Inc - デラウェア州の法人組織 - サーバマシンを所有 - お金と寄付を管理 - NetBSDの版権を管理 ### developer - 直接ソースを変更できる - CVS/FTP/WWWサーバの内容 - 世界中で188人 - GNATSでバグ管理 - Cvsweb.netbsd.org - 日本人38人 ### NetBSD開発者世界分布図 - NetBSD開発者分布図 ### Developerになるには(1) - 去年のクリパでやったこと - PGP/GnuPGの鍵を作る - fingerprint印刷 - gpg --fingerprint jun@soum.co.jp - fingerprint交換 - 他のDeveloperとfingerprint印刷を交換 - 本人確認 - 公的証明書を見せあって本人確認 ### Developerになるには(2) - 相手の鍵を取り込んで、fingerprint照合 - gpg-email-confirm soda@netbsd.org.. - ランダムな文字列を送る - メールを暗号化して送り返してもらう - 送った文字列とメールアドレスを照合する - 鍵にサインしてもらって送り返してもらう - Developerサイン入り自分の鍵ができる - 自分の鍵束にimport - pgp.mit.eduにサイン入り自分の鍵を登録する ### 世界中で打ち合わせをする時間 - May 21 03:00 PM -0700 America/Los_Angeles - May 21 06:00 PM -0400 America/New_York - May 21 11:00 PM +0100 Europe/London - May 22 00:00 AM +0200 Europe/Berlin - May 22 01:00 AM +0300 Europe/Helsinki - May 22 07:00 AM +0900 Asia/Tokyo - May 22 08:00 AM +1000 Australia/Melbourne ### Port-maintainer - 移植責任者 - 57種類のうち15種類以上は日本人が担当 ### 日本人担当ハードウェア15/56 - NetBSD動作マシン@日本 ### 日本からの貢献 - 国産ハードウェアサポート - ゲーム機・携帯情報端末サポート - IPv6/ IPSEC - Pkgsrc - CardBusサポート - MIPS/SH/m68K - NetBSD書籍が世界一多く出版される - developer53人 ### WindowsCE向けNetBSD - MIPS系CPU搭載 - NEC MobileGear - SHARP Tellios - SH系CPU搭載 - HP ジョルナダシリーズ - SEGA DreamCast - StrongARM系CPU搭載 - Compaq iPAQ - HP ジョルナダシリーズ - WZero3 ### ブートまでの流れ - コンパクトフラッシュを2分割 - WindowsCEの領域 - NetBSD/hpcmipsの領域 - WindowsCE上のブートローダからブート - メモリ空間を取れるだけ確保する - カーネルファイルをメモリ空間に送り込んで - NetBSDの世界へ飛び込んでゆく ### NetBSD/hpcsh - SH搭載WindowsCEマシン向け - HP Jornada680 690 620LX - 日立ペルソナ HPW50 230 - (NetBSD/sh3+NetBSD/hpcmips)/2+α ### 従来の開発ノウハウとソフトウェア資産 - NetBSD/hpcmipsとのソース共有化 - NetBSD/Dreamcast互換 - - NetBSD/hpcarm - StrongArm搭載WindowsCEマシン向け - SA-1100/1110対応 - HP Jornada720 - WZero3 - Compaq iPAQ - hpcファミリー中最速 - ### クロス開発環境 - NetBSD/i386でクロスコンパイル - build.sh –m hpcmips –D /hpcmips-root - Pkgsrc/cross以下に各種パッケージ - Windows環境でクロスコンパイル - Cygwinなど - Linux上でクロスコンパイル - FreeBSD上でクロスコンパイル - distcc - コンパイルだけ速いマシンで - pkgsrcをクロスコンパイル - pkgsrcのcrossbuildでググる! - http://www.lins.jp/~obata/diary/200803242.html - クロス用toolsを作る ### バイナリ互換性を利用する - Cobalt Qube2でhpcmipsバイナリ作成 - MIPSでendian little =mipsel同士なら動く - ユーザランドはほとんどそのまま動く - パッケージも共通化 - NetBSD/{pmax,cobalt,arc,hpcmips}で共通 - 数GBある各種アプリケーション群を共通にする - エミュレーション環境 - Linux - I386以外のバイナリも動くようにする - FreeBSD - Windows2000/XP - PECOFF - Win32アプリケーションをそのまま動かす - ゲームなど - Unixware ### 移植成果をNetBSDに組み込む - カーネル部分を移植する - セルフコンパイルでスナップショット作成 - パッケージソフトウェアセットを作る - ドキュメント整備 - Web・マニュアル・FAQ - インストーラを作る - メーリングリストを作る ### プログラミング以外にすること - Port登録 NetBSD/???? 部分 - Webページ作成 - バグレポートデータベース作成 - GNATS - マニュアル作成 - インストールマニュアル・マニュアル・FAQ - メーリングリスト作成 - ニュースとして報告 ### EeePC&Netbook - Escape押して起動ディスク選択 - バックアップCDあり - ディスプレイ - 82915GM - Attansic Technologies L2 100Mbit Ethernet Adapter - http://www.NetBSD.org/ports/i386/netbook.html - VAIO Type P - ### NetBSD開発者情報 - ftp/WWW/CVS/SUPサーバ - http://www.jp.netbsd.org/ja/JP/sites.html - 開発環境設定方法 - http://www.netbsd.org/developers/ - メーリングリスト - http://www.jp.netbsd.org/ja/JP/ml.html - netbsd-request@re.soum.co.jp - 1994/11-  10年以上! 参加者600名 - http://releng.netbsd.org ### ソースコード取得方法 - ftp - Cvs - cvsup - Sup - Anonymous CVS - rsync ### Japan NetBSD Users’ Group - 1999年8月21日成立 - 日本のNetBSDユーザに便宜を図る - FTP/CVS/WWWサーバの管理 - ドキュメント・WWWページ翻訳 - 場所提供:IIJ - http://www.jp.netbsd.org/ - 年一度定期総会・BoFを実施 - 次回は2012/7/? - 東京 根津 東大武田先端知ビル ### www.netbsd.org 翻訳 - 現在 - www.netbsd.org上のCVSリポジトリ - 削除→各国のwwwサーバ - 各国の翻訳 - ドイツ語 - 韓国語 - ポーランド語 - フランス語 - 緊急度の高い情報を正確に広報する - 古いドキュメントでもあった方がいいか - そもそも英語のドキュメントは正確か ### 国内BSDユーザグループ - http://www.netbsd.org/gallery/groups.html - BBQ - BSD Users Group,Shinshu - Chofu *BSD Users’ Group - Chiba *BSD Users’ Group - Daibou East *BSD Users Group - Echigo BSD Users Group - Kansai *BSD Users Group - Nagoya *BSD Users Group - Northern land BSD Users Group - Shikoku *BSD Users Group - Tohoku BSD Users Group ### まとめ - NetBSDはいろんなハードで動きます - 自作ソフトをいろんなCPUで試せます - 最初から移植を考えて設計されています - 試作機に移植する工数が最小ですみます - 自分の専門分野だけを組み込めます - 自由に利用可能で再配布可能なOSです - 移植するとIPv6マシンに変貌 - さまざまなCPU向けIPv6スタックがあります - 愛着あるハードウェアが生き返ります - 最新のネットワークコードが利用できます - もしかしたらリサイクル団体なんでしょうか?