schrootにインストールする

schrootにインストールする

chroot に関して質問があります。たとえば、ルート ファイルのツリー構造にコンパイルされ、組み込まれたプログラムがあるとします。

.
├── bin
│   └── software
├── etc
...

つまり、これをインストールするには、これをルート (/) とマージする必要があります。今、これを chroot に rsync しましたが、実行しようとすると、エラー コード 127 (そのようなファイルはありません) が表示されます。他に何かする必要があるのでしょうか?

答え1

あなたが書いた内容を正しく解釈しているのであれば、chroot が何をするのかをあなたがよく理解していないと思います。/mytemproot というディレクトリがあり、そこに bin、etc、sbin、foo などのディレクトリがあるファイル システムをマウントすると、次のようになります。

% cd /mytemproot
% pwd
/mytemproot
% chroot /mytemproot
% pwd
/
% ls /
bin etc sbin foo

chroot は、/mytemproot が / であるかのように扱われるシェルに移動します。実際の / は、実際の / の下にある他のすべてのファイル システムと同様に、ユーザーには見えません。ファイル システムはマージされません。

昔、下級のシステム管理者が新しい UNIX ディストリビューションを一から構築していた頃は、新しいディスク パーティションを作成し、そのパーティションにファイル システムを配置して、そこで構築とインストールを行っていました。その後、そのファイル システムをどこかにマウントし、そこに chroot して、ユーザーにリリースする前にすべてをチェックアウトしていました。今日の開発者もほぼ同じように使用していると思います。

関連情報