![]() GoboLInuxのアイコンマスコットです。 | |
![]() GoboLinuxのデスクトップです。 | |
OSの系統 | Unix系 |
---|---|
開発状況 | 開発中[1] |
ソースモデル | オープンソース |
最新安定版 | 017.01 / 2025年3月31日 |
最新開発版 | 017-beta / 2020年4月17日 |
使用できる言語 | 5言語日本語対応無し。 |
プラットフォーム | 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/Bash/3.0/bin/bash
や/Programs/Xorg-Server/Settings/X11/xorg.conf
が挙げられる。/Users/harley
である。/System/Settings/passwd
)とGoboLinuxスクリプト(例えば/System/Index
)が管理する。
/Programs
配下にあるファイルへのシンボリックリンクと共に、以下のディレクトリが含まれる:
bin
ディレクトリにあるファイルへのリンクが含まれる。include
ディレクトリからのファイルへのリンクが含まれる。lib
ディレクトリにあるファイルへのリンク。share
ディレクトリにあるファイルへのリンク。Resources/Tasks
ディレクトリへのリンク。Settings
ディレクトリにあるファイルへのリンク。
/Programs/BootScripts
配下にあるディレクトリSettings/BootScripts
へのシンボリックリンクである。proc
ファイルシステムにより管理される)。/Depot
のサブディレクトリは標準GoboLinux階層構造の一部とみなされない。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のその他の機能を以下に示す:
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で破られた。
Resources
と呼ばれるパッケージ毎のメタデータディレクトリを追加。Gobolinuxは公式にはx86-64用のみ(015以前はi686用のみ)が作成されており、i386への移植を行うプロジェクトが存在したが、休眠してしまいその移植は不完全なままである(このプロジェクトは015-alphaリリースから休眠状態となった)。Gobolinuxの移植はARMアーキテクチャやSuperHといった組み込みアーキテクチャのために作成され、移植作業はBootstrapというツールで容易に成し遂げられた[要出典]。このツールは移植作成を自動化するため特別に開発されたものである。