GoboLinux

GoboLinux（ゴーボーリナックス）とはフリーかつオープンなソフトウェアオペレーティングシステムであり、その最も有名な特徴としては伝統的なLinuxファイルシステムの再構成が挙げられる。ほとんどのUnix系システムと違いFilesystem Hierarchy Standardに準拠しないため、GoboLinuxシステムの各プログラムは自身の（固有の設定を含む）ファイルを全て発見できる独自のサブディレクトリツリーに格納される。このため、プログラム "Foo" に固有のファイルとライブラリは全てcodice_1に格納される。GoboLinux開発者はこれによってシステムがより綺麗になるとしている
概要.
GoboLinuxのファイルシステム階層構造は、ほとんどのUnix系オペレーティングシステムで採用されている伝統的なファイルシステム階層構造からの根本的な脱却を象徴している。伝統的なファイルシステム階層構造とは（実行可能ファイル用にcodice_2があり設定ファイル用にcodice_3があるというように）特定の種類のファイルを共通の標準サブディレクトリにまとめて格納する階層構造であり、パッケージ管理システムはどのファイルがどのプログラムに属しているかを追跡するためにこの階層構造を使用する。GoboLinuxにおける各プログラムのファイルは、各プログラム専用のサブディレクトリに配置される。GoboLinuxの作成者は「ファイルシステム自体がパッケージデータベースである」と言っており、GoboLinuxパッケージシステムはパッケージデータベースとしてファイルシステム自体を使用する。これによってより簡単で、より散らかりにくいディレクトリツリーを生成することが可能だと言われている。GoboLinuxは伝統的なLinuxファイルシステム階層構造と完全な互換性を維持しながらこれを完全に達成するためにシンボリックリンクを使用し、必要に応じて"GoboHide"と呼ばれるカーネルモジュールを使用する。
GoboLinuxの作成者らは、自らの設計により伝統的なファイルシステム階層構造からの脱却という「モダニズム」だけではなく、それ以外の「モダニズム」も導入されると発言している。このようなモダニズムの例としては、（実行可能ファイルの置き場所となるcodice_2、codice_5およびcodice_6のような）類似の伝統的ディレクトリ間における若干の区分けを排除することが挙げられる。GoboLinuxの設計者は、設計にモダニズムが導入されることで他のLinuxディストリビューションにくらべシェルスクリプトが動かなくなることが減ると主張している。GoboLinuxではユーザーが同じプログラムの異なるバージョンを同時にインストールすること（さらには同時に実行すること）ができる。さらに存在しないファイルへの参照は単に壊れたリンクとなり結果としてアクティブにならないため、GoboLinuxはパッケージ管理インデックスがファイルシステムと必ず同期すると言われている。さらにGoboLinuxのファイルシステムを変更することで、System VやBSDスタイルのinitシステムを使用しない全く新しいブートシステムのような、既存のものとは異なる新システムを導入できる。
ファイル階層構造.
GoboLinuxの設計はNeXTSTEP、AtheOSおよびBeOSのような初期のシステムに影響された。これらのシステムは全て、UNIXとの互換性をかなりの程度まで維持しながら独自のファイルシステム構造を採用したものである。GoboLinuxツリーのルートにはPrograms、Users、System、Files、Mount、Depotの6個のディレクトリが存在する。それぞれの内容を以下に示す。
"Compile" プログラム.
Compileはソースコードtarballのダウンロード、解凍、コンパイルと、それらの結果として得られた実行可能コードのインストールを、"recipes" として知られる単純なコンパイルスクリプトを使用して（codice_23のように）全て1つのコマンドで行うプログラムである。
Compileシステムは、FreeBSD Ports collectionを基盤とするGentooのPortageシステムとやや類似しているところがある。しかしながら、PortageはFilesystem Hierarchy Standardと互換性のある伝統的なファイルシステム階層構造用に作られている。一方Compileは、GoboLinux独自のファイルシステム階層構造の効能をパッケージ管理の領域に拡張する。このためGoboLinuxでは、ファイルシステム自体がパッケージ管理データベースの一種として自ずから役立つことになる。
CompileプログラムはGoboLinuxバージョン011に導入された。それ以前はGentooのパッケージ管理システムをGoboLinuxに移植し、"GoboPortage"という名前のもとにSourceForge.netプロジェクトとしてその移植を開発することについての議論があった。
Compileのその他の機能を以下に示す:
伝統的ディストリビューションとの違い.
ファイル階層構造.
GoboLinuxの階層構造では、ファイルはシンボリックリンクを使用してcodice_11をルートとするインデックスライクな構造で機能的カテゴリに分類されている。全ての実行可能ファイルはcodice_25配下にアクセス可能であり、全てのライブラリはcodice_26配下にアクセス可能であるなどといった具合である。これにより、codice_27に格納される特に重要ではないファイルと、ルートディレクトリのサブディレクトリに直接格納される極めて重要な緊急ファイルとの間に生ずる区分けのような、Filesystem Hierarchy Standardの伝統的区分けの多くは排除される。GoboLinuxの開発者らは、これらの区分けはかつては大変有用であったが、GoboLinuxのスキーマではもはや必要ないと主張している。
シンボリックリンク.
一般的なUNIXディレクトリのほとんどとGoboLinuxツリーとを関連付けるシンボリックリンクが存在するため、codice_3、codice_29およびcodice_5のような期待通りのディレクトリを見つけることができる。これらのシンボリックリンクはcodice_11ツリー内に存在する、機能的に同等なファイルを指し示しているため、（codice_32やcodice_33といった）伝統的に決まっているパス名は正しく解決される。これらのUNIXと互換性のあるディレクトリは、GoboHideはLinuxに隠しファイルのサポートを実装するための"GoboHide"と呼ばれるカスタムカーネル修正を使用することでビューから隠蔽されている。GoboHideは美的利用のみに使用されるため、オプション機能である。
ブートシステム.
BSDスタイルやSystem Vスタイルのinitを使用するほとんどのLinuxディストリビューションと異なり、GoboLinuxは独自の初期化手順を使用する。codice_34にはブート手順の全体について命令するファイルがいくつか存在する。codice_34に含まれるcodice_36とcodice_37は、それぞれシステムブートやシャットダウンを行う。加えて、codice_34にはシステムを初期化する様々な方法を指定するための「ランレベル」スクリプト（例えばシングルユーザー用のcodice_39、マルチユーザー用のcodice_40、グラフィックモードによるブート用のcodice_41など）を定義することもできる。「ランレベル」スクリプトはブートローダーメニューから制御できる。codice_42ファイルはスクリプト以外のファイルから場所固有の設定を分離する。アプリケーション固有のタスクはcodice_43から見つけることができ、これらはブートスクリプトと呼ばれる。
リリース.
リリースは八進法を基盤とする表記で番号付けされる。著者によると、八進表記であれば多くのフリーソフトウェアのバージョン番号でよく見受けられるように先頭にゼロを付けることができ（先頭のゼロはその数が八進表記であることを表すのが普通であるため）、さらに1999年のLinuxディストリビューションに発生した「バージョン番号競合」に対処法できるためにこのスキームを選んだとのことである。十進数として読む場合に八進数を使うと当然の事ながら8リリースごとに「バージョン衝突」が発生する。リリースの中には他のリリースよりも安定しているものもあるという意味合いを避けるために、バージョン013までGoboLinuxは「ポイントリリース」を作成しなかった。この伝統は、バグ修正に焦点を当てた014のアップデートである、バージョン014.01で破られた。
移植.
Gobolinuxは公式にはx86-64用のみ(015以前はi686用のみ)が作成されており、i386への移植を行うプロジェクトが存在したが、休眠してしまいその移植は不完全なままである（このプロジェクトは015-alphaリリースから休眠状態となった）。Gobolinuxの移植はARMアーキテクチャやSuperHといった組み込みアーキテクチャのために作成され、移植作業はBootstrapというツールで容易に成し遂げられた。このツールは移植作成を自動化するため特別に開発されたものである。