カーネル自体に加えてファイルシステム階層標準おそらく、すべてのLinuxシステムに共通の唯一の主な機能です。一部の曖昧なディストリビューションでは少しだけ修正します。たとえば、staliは単純化されたバージョンを使用し、nixosもそれを追加します(/ etcと/ binを非表示にして直接制御できないようにします)。しかし、両方とも「/etc」があります。初期化システムの変更、PATHの変更、glibcのmuslへの変更、他のウィンドウマネージャ、デスクトップ環境、ディスプレイサーバー、コンポジターなどを選択できます。ただし、Linuxシステムで実行されているシステムに座っている場合は、/etcがあります。あなたはこれを確信できます。
これは質問を頼みます。他の場所に置くとどうなります...
多くの場所やレベルで「/etc」の仮定が行われています。
カーネルはそれが存在すると仮定しますか?
GLibcには確かにソースコードに"/etc/hosts"がハードコードされています。 glibcにはそのようなパスがいくつありますか?どこかにリストがありますか?それらを変えるのはどれほど難しいでしょうか?
組み込みLinuxイメージに含まれるソフトウェアのうちどれだけが見つかりますか?どうすればわかりますか?再コンパイルせずに変更できますか?それでは、Ubuntuではどのように変更する必要がありますか?
ところで、10年前に私がUbuntuを最初にインストールしたときに最初にやりたかったのは、/etcを/confに移すことでしたが、それがうまくいかないことに気づきました。しかし、このようなことが可能なようにLinuxエコシステムが構築されたらどうなるのでしょうか?
これは一般的な好奇心であり、Linuxエコシステムの内容をよりよく理解するためにこの質問をすることです。もちろん、完全な答えを期待するわけではありませんが、誰かが有用な情報を持っているか、正しい方向を伝えることができると思いました。
ベストアンサー1
カーネルはそれが存在すると仮定しますか?
いいえ。カーネルは、使用するファイルシステムの内容をほとんど想定していません。カーネルは/etc/init
場合によってはそれを探していて、/sbin/init
いくつかの一時ドライバはhelpersを使用しますetc
が、カーネルはそうではありません/etc
。
GLibcには確かにソースコードに"/etc/hosts"がハードコードされています。
はい、もちろん。
glibcにはそのようなパスがいくつありますか?どこかにリストがありますか?それらを変えるのはどれほど難しいでしょうか?
私のリポジトリのコピーにgrep -r '"/etc'
86のインスタンスが見つかりました。私はどこにも残っているリストを知りません。ソースコードのパスを変更することは難しくありません。
組み込みLinuxイメージに含まれるソフトウェアのうちどれだけが見つかりますか?
これは決定するのが難しいです。独自の設定が必要なプログラムは間違いなく/etc
そこにあります。他の多くのプログラムは、ライブラリ(Cライブラリのみがある場合)を介して間接的にこれを実行します。前者は他のパスを使用するために変更を必要とし、後者は関連ライブラリへの変更を適用します。
どうすればわかりますか?
grep
...あなたも見ることができますDebian で対応するソースコードを検索する。
再コンパイルせずに変更できますか?
いいえ。関連する質問は、再コンパイルする前にどれだけの変更が含まれているかです。 Autoconfで生成されたconfigure
スクリプトは通常またはデフォルトのsysconfdir
オプションをサポートしますが、すべての場合を処理するわけではありません。多くの場合、プログラムがインストールされている場所を決定し、独自の構成ファイルを探しますが、プログラムが表示される場所は変わりません。他のファイルが必要です(GNU Cライブラリを参照)。/etc
/usr/local/etc
/etc
それでは、Ubuntuではどのように変更する必要がありますか?
私はあなたが「上に」動くにつれて、このようなことがますます減ると思います。ユーザーが設定できるすべての項目は、せいぜいデフォルト値を持っており、/etc
最近多くのプログラムには、構成がまったくない/etc
場合や構成がある場合に直接表示されず、いくつかのメカニズムによって提供されます/etc
。
しかし、このようなことが可能なようにLinuxエコシステムが構築されたらどうなるのでしょうか?
次のいずれかのように見えることもあります無料デスクトップウェブサイトプログラムがファイル(XDGなど)を見つける方法を決定する仕様です。