GoboLinux
OSの系統 | Unix系 |
---|---|
開発状況 | 開発中[1] |
ソースモデル | オープンソース |
最新安定版 | 016.01 / 2017年4月4日 |
最新開発版 | 016-beta / 2016年11月8日 |
使用できる言語 | ドイツ語、英語、ハンガリー語、ポルトガル語、スペイン語 |
プラットフォーム | x86-64 |
カーネル種別 | モノリシックLinuxカーネル |
既定のUI | Awesome |
ライセンス | GNU General Public License |
ウェブサイト |
gobolinux |
GoboLinux(ゴーボーリナックス)とはフリーかつオープンなソフトウェアオペレーティングシステムであり、その最も有名な特徴としては伝統的なLinuxファイルシステムの再構成が挙げられる。ほとんどのUnix系システムと違いFilesystem Hierarchy Standardに準拠しないため、GoboLinuxシステムの各プログラムは自身の(固有の設定を含む)ファイルを全て発見できる独自のサブディレクトリツリーに格納される。このため、プログラム "Foo" に固有のファイルとライブラリは全て/Programs/Foo
に格納される。GoboLinux開発者はこれによってシステムがより綺麗になるとしている[2]
概要
[編集]GoboLinuxのファイルシステム階層構造は、ほとんどのUnix系オペレーティングシステムで採用されている伝統的なファイルシステム階層構造からの根本的な脱却を象徴している。伝統的なファイルシステム階層構造とは(実行可能ファイル用に/bin
があり設定ファイル用に/etc
があるというように)特定の種類のファイルを共通の標準サブディレクトリにまとめて格納する階層構造であり、パッケージ管理システムはどのファイルがどのプログラムに属しているかを追跡するためにこの階層構造を使用する。GoboLinuxにおける各プログラムのファイルは、各プログラム専用のサブディレクトリに配置される。GoboLinuxの作成者は「ファイルシステム自体がパッケージデータベースである」と言っており、GoboLinuxパッケージシステムはパッケージデータベースとしてファイルシステム自体を使用する[3]。これによってより簡単で、より散らかりにくいディレクトリツリーを生成することが可能だと言われている。GoboLinuxは伝統的なLinuxファイルシステム階層構造と完全な互換性を維持しながらこれを完全に達成するためにシンボリックリンクを使用し、必要に応じてGoboHideと呼ばれるカーネルモジュールを使用する。
GoboLinuxの作成者らは、自らの設計により伝統的なファイルシステム階層構造からの脱却という「モダニズム」だけではなく、それ以外の「モダニズム」も導入されると発言している。このようなモダニズムの例としては、(実行可能ファイルの置き場所となる/bin
、/usr/bin
および/usr/local/bin
のような)類似の伝統的ディレクトリ間における若干の区分けを排除することが挙げられる。GoboLinuxの設計者は、設計にモダニズムが導入されることで他のLinuxディストリビューションにくらべシェルスクリプトが動かなくなることが減ると主張している。GoboLinuxではユーザーが同じプログラムの異なるバージョンを同時にインストールすること(さらには同時に実行すること)ができる。さらに存在しないファイルへの参照は単に壊れたリンクとなり結果としてアクティブにならないため、GoboLinuxはパッケージ管理インデックスがファイルシステムと必ず同期すると言われている。さらにGoboLinuxのファイルシステムを変更することで、System VやBSDスタイルのinitシステムを使用しない全く新しいブートシステムのような、既存のものとは異なる新システムを導入できる。
ファイル階層構造
[編集]GoboLinuxの設計はNeXTSTEP、AtheOSおよびBeOSのような初期のシステムに影響された。これらのシステムは全て、UNIXとの互換性をかなりの程度まで維持しながら独自のファイルシステム構造を採用したものである。GoboLinuxツリーのルートにはPrograms、Users、System、Files、Mount、Depotの6個のディレクトリが存在する。それぞれの内容を以下に示す。
- /Programs/ - このディレクトリにはシステムにインストールされたプログラムごとに1つのディレクトリが含まれる。各プログラムのディレクトリには1つ以上のバージョンのディレクトリが順番に含まれ、必要に応じてSettingsおよびVariableサブディレクトリも含まれる。Programs配下パスの例としては、
/Programs/Bash/3.0/bin/bash
や/Programs/Xorg-Server/Settings/X11/xorg.conf
が挙げられる。 - /Users/ - このディレクトリには各ユーザーのホームディレクトリが含まれる。ユーザー "harley" のホームディレクトリは
/Users/harley
である。 - /System/ - このディレクトリには重要なシステムファイルが含まれる。システムファイルのほとんどはシステムアプリケーション(例えば
/System/Settings/passwd
)とGoboLinuxスクリプト(例えば/System/Index
)が管理する。- /Index/ - ファイルシステムインデックス:
/Programs
配下にあるファイルへのシンボリックリンクと共に、以下のディレクトリが含まれる:- bin/ - 各プログラムの
bin
ディレクトリにあるファイルへのリンクが含まれる。 - include/ - このディレクトリには各プログラムの
include
ディレクトリからのファイルへのリンクが含まれる。 - lib/ - 各プログラムの
lib
ディレクトリにあるファイルへのリンク。 - share/ - 各プログラムの
share
ディレクトリにあるファイルへのリンク。
- bin/ - 各プログラムの
- Environment/ - 環境ファイルへのリンク。各プログラム自身が固有の環境変数を登録できるようにするために、環境ファイルはキャッシュファイルにコンパイルされシェルによりロードされる。
- Tasks/ - 各プログラムのブートタスクである
Resources/Tasks
ディレクトリへのリンク。 - Settings/ - 設定ファイルと各プログラムの
Settings
ディレクトリにあるファイルへのリンク。- BootScripts/ - システムブート中に使用されるスクリプト。これは
/Programs/BootScripts
配下にあるディレクトリSettings/BootScripts
へのシンボリックリンクである。
- BootScripts/ - システムブート中に使用されるスクリプト。これは
- Variable/ - ログ、テンポラリ、トランジェントおよびスプールファイルといった多目的ファイル。
- tmp/ - テンポラリファイル。
- Kernel/ - カーネル関連のディレクトリ。
- Boot/ - オペレーティングシステムブートストラップ中に使用されるプログラムと設定ファイル。ここはカーネルイメージとブートローダ設定ファイルが置かれる場所である。
- Devices/ - デバイスファイル(Udevにより管理される)。
- Modules/ - カーネルリリースにより編成される、様々なカーネルモジュールが含まれる。
- Objects/ - (カーネル2.6シリーズのsysfsファイルシステムに導入された)カーネルデバイスツリーのビューを提供する。
- Status/ - カーネルステータスファイル(
proc
ファイルシステムにより管理される)。
- /Index/ - ファイルシステムインデックス:
- /Files/ - Filesには、プログラムが使用するがプログラム自身の一部ではない構造化されたデータが格納される。これらのファイルは通常フォント、コーデック、およびプラグイン(またはその他パッケージ管理を必要としないであろうファイル)のようにスタンドアローンなエンティティである。加えて、各プログラムはサイト固有のデータを保存するためにプログラム自身のサブディレクトリを定義するかもしれない。例として、Compile(GoboLinuxパッケージコンパイルフロントエンドツール)は自身のサブディレクトリを定義する。
- /Mount/ - 追加のローカルファイルシステムやリモートファイルシステム用のマウンティングポイント。一般的なサブディレクトリはCD-ROM、フロッピーおよびZipである。
- /Depot/ - ユーザーファイル用のリポジトリ。このリポジトリはユーザーが適当に編成するように意図されている。
/Depot
のサブディレクトリは標準GoboLinux階層構造の一部とみなされない。
"Compile" プログラム
[編集]Compileはソースコードtarballのダウンロード、解凍、コンパイルと、それらの結果として得られた実行可能コードのインストールを、"recipes" として知られる単純なコンパイルスクリプトを使用して(Compile foo
のように)全て1つのコマンドで行うプログラムである[4]。
Compileシステムは、FreeBSD Ports collectionを基盤とするGentooのPortageシステムとやや類似しているところがある[5]。しかしながら、PortageはFilesystem Hierarchy Standardと互換性のある伝統的なファイルシステム階層構造用に作られている。一方Compileは、GoboLinux独自のファイルシステム階層構造の効能をパッケージ管理の領域に拡張する。このためGoboLinuxでは、ファイルシステム自体がパッケージ管理データベースの一種として自ずから役立つことになる[6]。
CompileプログラムはGoboLinuxバージョン011に導入された。それ以前はGentooのパッケージ管理システムをGoboLinuxに移植し、GoboPortageという名前のもとにSourceForge.netプロジェクトとしてその移植を開発することについての議論があった[7][8]。
Compileのその他の機能を以下に示す:
- 各プログラム自身におけるダウンロードサイトの使用
- ディストリビューションのリポジトリ(またはそのミラー)はrecipesのダウンロード用にしか使用されない。recipesは即座にダウンロードすることやバッチでダウンロードすることができる。
- 最小限度で宣言型指向のコンパイルスクリプト
- 典型的な "configure; make; make install" ソフトウェアは、大幅にメンテナンスがし易くなるよう2行にスクリプト化されることが多い。
- GoboLinuxスタイル依存性のサポート
- ユーザーが「手動で」コンパイルしたソフトウェアは検出機構により考慮される。
- パス不可知論
- rootlessなGoboLinuxインストール(つまり任意のGoboLinux以外のディストリビューションにおけるホームディレクトリへのインストール)で動作する[9]。
伝統的ディストリビューションとの違い
[編集]ファイル階層構造
[編集]GoboLinuxの階層構造では、ファイルはシンボリックリンクを使用して/System/Index
をルートとするインデックスライクな構造で機能的カテゴリに分類されている。全ての実行可能ファイルは/System/Index/bin
配下にアクセス可能であり、全てのライブラリは/System/Index/lib
配下にアクセス可能であるなどといった具合である。これにより、/usr
に格納される特に重要ではないファイルと、ルートディレクトリのサブディレクトリに直接格納される極めて重要な緊急ファイルとの間に生ずる区分けのような、Filesystem Hierarchy Standardの伝統的区分けの多くは排除される。GoboLinuxの開発者らは、これらの区分けはかつては大変有用であったが、GoboLinuxのスキーマではもはや必要ないと主張している。
シンボリックリンク
[編集]一般的なUNIXディレクトリのほとんどとGoboLinuxツリーとを関連付けるシンボリックリンクが存在するため、/etc
、/var/log
および/usr/bin
のような期待通りのディレクトリを見つけることができる。これらのシンボリックリンクは/System/Index
ツリー内に存在する、機能的に同等なファイルを指し示しているため、(/bin/sh
や/etc/passwd
といった)伝統的に決まっているパス名は正しく解決される。これらのUNIXと互換性のあるディレクトリは、GoboHideはLinuxに隠しファイルのサポートを実装するためのGoboHideと呼ばれるカスタムカーネル修正を使用することでビューから隠蔽されている。GoboHideは美的利用のみに使用されるため、オプション機能である。
ブートシステム
[編集]BSDスタイルやSystem Vスタイルのinitを使用するほとんどのLinuxディストリビューションと異なり、GoboLinuxは独自の初期化手順を使用する。/System/Settings/BootScripts
にはブート手順の全体について命令するファイルがいくつか存在する。/System/Settings/BootScripts
に含まれるBootUp
とShutdown
は、それぞれシステムブートやシャットダウンを行う。加えて、/System/Settings/BootScripts
にはシステムを初期化する様々な方法を指定するための「ランレベル」スクリプト(例えばシングルユーザー用のSingle
、マルチユーザー用のMulti
、グラフィックモードによるブート用のGraphical
など)を定義することもできる。「ランレベル」スクリプトはブートローダーメニューから制御できる。/System/Settings/BootOptions
ファイルはスクリプト以外のファイルから場所固有の設定を分離する。アプリケーション固有のタスクは/System/Tasks
から見つけることができ、これらはブートスクリプトと呼ばれる。
リリース
[編集]リリースは八進法を基盤とする表記で番号付けされる。著者によると、八進表記であれば多くのフリーソフトウェアのバージョン番号でよく見受けられるように先頭にゼロを付けることができ(先頭のゼロはその数が八進表記であることを表すのが普通であるため)、さらに1999年のLinuxディストリビューションに発生した「バージョン番号競合」に対処法できるためにこのスキームを選んだとのことである。十進数として読む場合に八進数を使うと当然の事ながら8リリースごとに「バージョン衝突」が発生する。リリースの中には他のリリースよりも安定しているものもあるという意味合いを避けるために、バージョン013までGoboLinuxは「ポイントリリース」を作成しなかった。この伝統は、バグ修正に焦点を当てた014のアップデートである、バージョン014.01で破られた。
- 016.01 - 2017年4月4日 : Linuxカーネルバージョン4.9.16
- 016 - 2016年12月15日 : Linuxカーネルバージョン4.8.2、Awesomeデスクトップ。
- 016-beta - 2016年11月8日
- 016-alpha - 2016年10月10日
- 015 - 2014年5月7日 : /System/Index階層を導入。Linuxカーネルバージョン3.14.2、Enlightenment 18デスクトップ。
- 015-beta - 2014年3月4日
- 015-alpha - 2014年1月21日
- 014.01[10] - 2008年3月30日 : Updates of 014のアップデートで、バグ修正といくつかのパッケージのアップデートを組み込んだ。
- 014 - 2007年12月31日 : パッケージのアップデート、バグ修正、そしてGoboLinux管理ツールの新しいバージョンを組み込んだ。
- 013 - 2006年11月2日 : ファイルシステムイベントをリスンしアクションを自動で行うよう割り当てるためのツールである、Listenerを導入。
- 012 - 2005年6月6日 : グラフィカルシステム管理ツールのManagerを導入。
- 011 - 2004年6月7日 : GoboLinuxパッケージコンパイルツールであるCompileを導入。
- 010 - 2004年1月7日 : Live CDデスクトップ環境を通じてアクセス可能なグラフィカルインストーラーの追加。
- 007 - 2003年10月22日 :
Resources
と呼ばれるパッケージ毎のメタデータディレクトリを追加。 - 006 - 2003年5月9日 : GoboHideの導入とプログラムのサンドボックス化されたインストールを採用。
- 005 - 2003年 : GoboLinuxが世に送り出される。
- バージョン005以前のリリースは初期開発者グループのみが使用していた。
移植
[編集]Gobolinuxは公式にはx86-64用のみ(015以前はi686用のみ)が作成されており、i386への移植を行うプロジェクトが存在したが、休眠してしまいその移植は不完全なままである(このプロジェクトは015-alphaリリースから休眠状態となった)。Gobolinuxの移植はARMアーキテクチャやSuperHといった組み込みアーキテクチャのために作成され、移植作業はBootstrapというツールで容易に成し遂げられた[要出典]。このツールは移植作成を自動化するため特別に開発されたものである。
脚注
[編集]- ^ Distrowatch (2014年3月5日). “Project status listed as Active as of Wednesday 5 March 2014 06:13 GMT”. 2014年3月10日閲覧。
- ^ Hisham Muhammad (2003年5月9日). “The Unix tree rethought: an introduction to GoboLinux”. 2008年3月17日閲覧。
- ^ Marc Weinem (2008年3月13日). “Simplified package management on GoboLinux - an interview with Lucas Villa Real”. 2008年3月31日閲覧。
- ^ Mayank Sharma (2007年2月14日). “GoboLinux's recipe for delicious package management”. Linux.com. 2009年7月19日閲覧。
- ^ “GoboLinux Compile -- A Scalable Portage ?”. Slashdot (2004年6月5日). 2009年7月19日閲覧。
- ^ “The Ideas Behind Compile”. GoboLinux. 2009年7月19日閲覧。
- ^ Gentoo Forums : View topic - GoboGentoo
- ^ SourceForge.net: GoboPortage
- ^ Mayank Sharma (2007年8月21日). “GoboLinux: An Interview with Lucas Villa Real”. 2008年3月31日閲覧。
- ^ Thom Holwerda (2008年4月4日). “GoboLinux 014.01 Released”. 2008年4月4日閲覧。