NetBSD
![]() |
![]() | |
![]() "NetBSDでのX Window Display Manager" | |
開発者 | The NetBSD Foundation |
---|---|
OSの系統 | BSD |
開発状況 | 開発中 |
ソースモデル | オープンソース |
最新安定版 | 10.0 - 2024年5月28日[1] [±] |
最新開発版 | 9.99.x / Daily builds |
リポジトリ | |
パッケージ管理 | pkgsrc |
プラットフォーム | Alpha, ARM, PA-RISC, 68k, MIPS, PowerPC, SH3, SPARC, RISC-V, VAX, x86 |
カーネル種別 | モノリシックカーネル |
ライセンス | BSDライセンス |
ウェブサイト |
The NetBSD Project 日本NetBSDユーザーグループ |
NetBSD(ネットビーエスディー)は、UNIXライクなオープンソースのオペレーティングシステムである。いわゆるBSDの子孫のひとつであるが、そのなかでも、386BSDがフォークされて生まれた公式リリースの中で最初に生まれたものである。1993年5月に最初の公式リリースである0.8が公開された。さまざまなアーキテクチャへの高い移植性、コードの分かりやすさ、などに焦点が置かれて開発されている。→#特徴
互換性の乏しい商用UNIXが多数併存していた1990年代前半当時には、移植性を重視し、多くのハードウエア上で同一のUNIXが動作することを目指したNetBSDの方向性には一定の意味があると思われていた。しかしながら、実際には、商用UNIXを捨ててNetBSDにOSを載せ替える動きはほとんど見られず、NetBSDは事実上x86アーキテクチャーのPC用OSとして使われることになった。このことは、x86を優先的に考えるFreeBSDと比較した場合、移植性を重視するNetBSDはx86対応の開発が遅れがちになるという問題を抱えることとなり、FreeBSDや他のBSD系OSに、利用者数面で徐々に差をつけられることとなった。
2021年現在、NetBSDの利用者数はFreeBSDの300分の1程度とするデータがある[2]。ある程度の利用者がいたとみられる2005年時点でも、FreeBSDの5分の1程度、さらに、NetBSDから分離してできた後発のOpenBSDに対しても2分の1以下の利用者しかいなかった[3]。
このような状況下にもかかわらず、開発者グループ内の軋轢の結果、OpenBSDが分離し、開発リソースのさらなる減少と、類似したBSD系列間での開発内容の重複などの非効率化を招くこととなり、より一層開発が遅延する結果となった。その後も、開発者グループ内の内紛は絶えることがなく[4]、沈滞傾向に拍車をかけることとなった。2000年以降NetBSDに関する日本語の書籍は刊行されていない。
NetBSDのソースコードは誰でも利用でき、そのライセンスはパーミッシブ・ライセンスである。なお「NETBSD」という名称のほうは、2004年4月20日をもってThe NetBSD Foundationの登録商標となっている。
特徴
[編集]- 移植性の高さ
NetBSDは"Of course it runs NetBSD."(「もちろんその機種でもNetBSDが動きます」といった意味)という標語を掲げて開発が行われており、幅広いアーキテクチャに対して移植され、単一のソースツリーから、58以上のアーキテクチャに対してバイナリが構築可能である。
- コードの分かりやすさ
ソースツリーは機種依存部分と機種独立部分を可能な限り分離するように構成されている。これにより、機種独立部分に追加された機能は、全てのアーキテクチャで利用可能となり、再移植が不要である。ドライバの開発も機種独立である。あるPCIカード向けに書かれたドライバは、80386、Alpha、PowerPC、SPARCなどPCI バスを備えたアーキテクチャであればどれでも使うことができる。それ以外にも、PCI ExpressやUSB等も同様にアーキテクチャに関係なく実装される。この機種独立性が、組み込みシステムでの開発に大きく寄与している。コンパイラ、アセンブラ、リンカその他の、クロスコンパイルに完全対応したツールチェーン一式を持つNetBSD 1.6以降では、特に顕著である。
歴史
[編集]NetBSDはカリフォルニア大学バークレー校のComputer Systems Research Group がリリースした4.3BSDから、Networking/2、および386BSDを介して派生したものである。NetBSDプロジェクトは、386BSDの開発者コミュニティ内の開発のペースや方向性に対する不満から始まった。四人のNetBSDプロジェクトの創始者Chris Demetriou、テオ・デ・ラート、Adam Glass、Charles Hannumは、移植性、きれいで正確なコードを軸とした開かれた開発モデルがプロジェクトに有益であると感じていた。彼らの目的は、統一された、マルチプラットフォームの、製品レベルの品質を持ったBSDベースのオペレーティングシステムを作り出すことであった。"NetBSD"の名称はインターネットなどの当時の急速に発展していたネットワークの重要性と、開発が分散した環境で共同で行われるというプロジェクトの性質からラートが提案したものである。
NetBSDのソースコードリポジトリは1993年3月21日に設立され、最初の公式リリースNetBSD 0.8は1993年4月に行われた。このときのコードは386BSD 0.1に[5]バージョン0.2.2の非公式のパッチをあて、386BSDに不足していたいくつかのプログラムをNet/2リリースから再統合し、そのほかいくつかの改良が含まれていた。最初のマルチプラットフォームのリリースNetBSD 1.0は1994年10月に行われた。同年暮れ、創設者の一人テオ・デ・ラートがプロジェクトから追われることとなった。彼は1995年の終わりごろ、NetBSD 1.0のコードからフォークした新しいプロジェクトOpenBSDを立ち上げた。1998年、NetBSD 1.3でpkgsrcパッケージコレクションが導入された。
対称マルチプロセッシング
[編集]NetBSDは対称型マルチプロセッシング(SMP)を2004年リリースのNetBSD 2.0よりサポートしており[6]、初期の実装はジャイアントロックを用いた方法であった。NetBSD 5のリリースに向けた開発サイクルで、SMPのサポートを改善する主要な作業が完了した。カーネルサブシステムの大半の部分がマルチプロセッサでも安全になり、細粒度のロックを用いるよう修正された。新しい同期機構が導入され、2007年2月にScheduler activationsが1:1スレッドモデルに置き換えられた[7]。スケーラブルなM2スレッドスケジューラが実装されたが、4.4 BSDのスケジューラがデフォルトで使用されている(これもSMPでスケールするよう変更された)。同期化の性能を向上させるため、スレッド化された割り込みが実装された。仮想メモリシステム、メモリ割り当て、例外ハンドリングがマルチプロセッサでも安全になり、仮想ファイルシステムおよび主要なファイルシステムを含むファイルシステムフレームワークもマルチプロセッサ対応になった。2008年4月以降、ジャイアントロックで動作しているのはネットワークプロトコルと大半のデバイスドライバのみとなっている。
バージョンについて
[編集]最新のバージョン
[編集]2022年8月4日現在、NetBSD の最新リリース版は9.3である。
年月日 | バージョン | ||
---|---|---|---|
1993年 | 4月20日 | 0.8 | |
8月23日 | 0.9 | ||
1994年 | 10月26日 | 1.0 | |
1995年 | 11月26日 | 1.1 | |
1996年 | 10月4日 | 1.2 | |
1997年 | 5月20日 | 1.2.1 | |
1998年 | 1月4日 | 1.3 | |
3月9日 | 1.3.1 | ||
5月29日 | 1.3.2 | ||
12月23日 | 1.3.3 | ||
1999年 | 5月12日 | 1.4 | |
8月26日 | 1.4.1 | ||
2000年 | 3月19日 | 1.4.2 | |
11月25日 | 1.4.3 | ||
12月6日 | 1.5 | ||
2001年 | 7月11日 | 1.5.1 | |
9月13日 | 1.5.2 | ||
2002年 | 7月22日 | 1.5.3 | |
9月14日 | 1.6 | ||
2003年 | 4月21日 | 1.6.1 | |
2004年 | 3月1日 | 1.6.2 | |
12月9日 | 2.0 | ||
2005年 | 4月14日 | 2.0.2 | 2.0.1はサーバトラブルのためリリースされなかった |
10月31日 | 2.0.3 | ||
11月2日 | 2.1 | ||
12月23日 | 3.0 | ||
2006年 | 7月24日 | 3.0.1 | |
11月4日 | 3.0.2, 3.1 | ||
2007年 | 12月19日 | 4.0 | |
2008年 | 10月14日 | 4.0.1 | |
2009年 | 4月29日 | 5.0 | |
8月2日 | 5.0.1 | ||
2010年 | 2月12日 | 5.0.2 | |
11月19日 | 5.1 | ||
2012年 | 2月11日 | 5.1.2 | 5.1.1はリリースされなかった[8] |
10月17日 | 6.0 | ||
12月3日 | 5.2 | ||
12月26日 | 6.0.1 | ||
2013年 | 5月18日 | 6.0.2, 6.1 | |
8月22日 | 6.1.1 | ||
9月30日 | 6.0.3, 6.1.2 | ||
2014年 | 1月27日 | 5.1.4, 5.2.2, 6.0.4, 6.1.3 | |
4月12日 | 6.0.5, 6.1.4 | ||
9月22日 | 6.0.6, 6.1.5 | ||
11月15日 | 5.1.5, 5.2.3 | ||
2015年 | 9月25日 | 7.0.0 | |
2016年 | 5月28日 | 7.0.1 | |
10月21日 | 7.0.2 | ||
2017年 | 3月11日 | 7.1 | |
12月22日 | 7.1.1 | ||
2018年 | 3月15日 | 7.1.2 | |
7月17日 | 8.0 | ||
8月29日 | 7.2 | ||
2019年 | 5月31日 | 8.1 | |
2020年 | 2月14日 | 9.0 | |
3月31日 | 8.2 | ||
10月18日 | 9.1 | ||
2021年 | 5月12日 | 9.2 | |
2022年 | 8月4日 | 9.3 | |
2024年 | 5月28日 | 10.0 |
対応機種
[編集]ポート
[編集]- acorn26
- acorn32
- algor
- alpha
- amd64
- amiga
- amigappc
- arc
- atari
- bebox
- cats
- cesfic
- cobalt
- dreamcast
- emips
- epoc32
- evbarm
- evbmips
- evbppc
- evbsh3
- ews4800mips
- hp300
- hp700
- hpcarm 例 Advanced/W-ZERO3[es]など[9]
- hpcmips
- hpcsh
- i386
- ia64
- ibmnws
- iyonix
- landisk
- luna68k
- mac68k
- macppc
- mipsco
- mmeye
- mvme68k
- mvmeppc
- netwinder
- news68k
- newsmips
- next68k
- ofppc
- pmax
- prep
- rs6000
- sandpoint
- sbmips
- sgimips
- shark
- sparc
- sparc64
- sun2
- sun3
- vax
- x68k
- xen
- zaurus
関連プロジェクト
[編集]pkgsrc
[編集]NetBSDには、独自のサードパーティーソフトウェア集、NetBSD Packages Collection (別名pkgsrc)がある。2009年7月現在、8,000を超えるパッケージが用意されている。
GNOME、KDE、Apache HTTP ServerやPerl等をインストールするには、適切なディレクトリに移動して"make install"とタイプするだけである。こうすると、ソースの取り寄せ、展開、configure、構築や、後で削除可能な形でのパッケージのインストールを自動的に行ってくれる。このようなコンパイルを行うかわりに、あらかじめ構築されたバイナリパッケージを使うこともできる。どちらを使うにせよ、事前準備や依存するパッケージのインストールは、パッケージシステムによりすべて自動で行われ、手動での調整は必要ない。
移植性の教義に従い、NetBSD Packages Collection (pkgsrc)は、Linux、FreeBSD、OpenBSD、Solaris、Darwin/macOS、IRIX、Interix (Windows Services for UNIX) など、NetBSD以外の多くのオペレーティングシステムに移植されている。
DragonFly BSDでは標準のパッケージシステムをpkgsrcに変更した。
Lumina
[編集]BSD(BSDの子孫)向けに開発された軽量デスクトップ環境で、NetBSDでも利用可能。
使用例
[編集]![](https://upload.wikimedia.org/wikipedia/commons/thumb/9/95/ISS_on_20_August_2001.jpg/220px-ISS_on_20_August_2001.jpg)
NetBSD のきれいな設計、高い性能とスケーラビリティ、幅広いアーキテクチャのサポートは組み込み機器やサーバー、特にネットワークや工業用途に適している。
商用のリアルタイムオペレーティングシステムQNXは、NetBSDのコードから派生したネットワークスタックを使用しており[10]、デバイスドライバも NetBSD から多数ポートされている[11]。
フォーステンネットワークスはNetBSDを高スケーラビリティのルーターで用いられるFTOS(Force10 Operating System)の基盤OSとして使用している[12]。フォーステンはまた2007年、NetBSD財団の更なる発展とオープンな開発コミュニティを助けるため寄付を行っている[13]。
Wasabi Systemsは、組み込みのサーバーやストレージ機器への応用に焦点を置いてNetBSDに商用のエンタープライズ向けの機能拡張を行ったWasabi Certified BSDを提供している[14]。
NetBSDはNASAによる国際宇宙ステーションの微小重力を調査するプロジェクトで使用され、また人工衛星ネットワークにおけるTCPの利用に関する研究にも使用された[15]。
2004年には、SUNETがNetBSDを用いてInternet2の地上における最高速記録を樹立している。このときNetBSDが選定された理由は「TCPコードのスケーラビリティ」である[16]。
T-Mobile Sidekick LX 2009スマートフォンのオペレーティングシステムはNetBSDを元にしたものである[17]。
インターネットイニシアティブ(IIJ)が自社開発するルータ「SEIL」シリーズは、2000年の「SEIL T1」以降NetBSDをベースOSに採用している[18]。
脚注
[編集]- ^ “Announcing NetBSD 10.0 (Mar 28, 2024)”. The NetBSD Foundation (2024年5月28日). 2024年7月28日閲覧。
- ^ “*BSD Usage Statistics”. 2021年11月24日閲覧。
- ^ “2005 BSD Usage Survey Report”. 2021年11月24日閲覧。
- ^ “NetBSDの将来”. 2021年11月24日閲覧。
- ^ GLYN MOODY 著、小山祐司監訳『ソースコードの反逆』株式会社アスキー、2002年6月11日、103頁。ISBN 4-7561-4100-5。
- ^ “NetBSD 2.0 release notes”. 2009年7月25日閲覧。
- ^ “Significant changes from NetBSD 4.0 to 5.0”. 2009年7月25日閲覧。
- ^ “Re: NetBSD 5.1.1 released and no announcement?”. 2012年2月11日閲覧。
- ^ “NetBSD/hpcarm News”. 2020年9月29日閲覧。
- ^ “Core Networking 6.4: Neutrino's Next Gen Networking Stack and Foundry27”. 2009年7月25日閲覧。
- ^ “Foundry27: Project Networking - Driver wiki page”. 2009年7月25日閲覧。
- ^ "Force10 Networks uses NetBSD to build software scalability into operating system" (Press release).
- ^ "Force10 Networks introduces unified operating system across product portfolio to lower total cost of owning and operating networks" (Press release).
- ^ “Wasabi Certified BSD”. 2009年7月25日閲覧。
- ^ “HTTP Page Transfer Rates over Geo-Stationary Satellite Links”. 2009年7月25日閲覧。
- ^ “SUNET Internet2 Land Speed Record: 69.073 Pbmps”. 2009年7月25日閲覧。
- ^ “Sidekick LX 2009 / Blade Will Run NetBSD”. www.hiptop3.com (2009年1月30日). 2009年2月5日閲覧。
- ^ SEILシリーズの歩み
関連項目
[編集]外部リンク
[編集]- 公式ウェブサイト
- 日本NetBSDユーザーグループ (Japan NetBSD Users' Group, JNUG)