私は最小限のソースコードLinuxディストリビューション用のブートローダを作成しようとしています。
私はchrootのような環境で構築したいと思います。これにより包装が簡素化されます。今はセキュリティに興味がありません。ブートローダには非標準のサードパーティコマンドは必要ありません。ルートが必要でなければ良いでしょう。
これがfakechroot(1) fakeroot(1) chroot(1)が私が探しているのではない理由です。
/を偽造するためにunshare(1)と/ bin / shを使用できますか?
答え1
はい。もしあなたのカーネルはuser_namespacesをサポートしています(そしてアクティブです)。まず、「rootユーザーとして偽装」してからchroot
(実際のrootユーザーとして)呼び出し権限を取得できます。 (以前はrootユーザーのみに制限する必要がありました。一般ユーザーは権限アップグレードを実行できます。(たとえば、chrootディレクトリのset-UID-rootバイナリとカスタムライブラリを介して)
シェルで次のことを試すことができます。
unshare --user --map-root-user --mount-proc --pid --fork
/sbin/chroot ......
su - user1
答え2
私は最近、さまざまなLinuxディストリビューションでこれを行う方法を調べました。最も簡単な方法は次のとおりです。
unshare -r chroot <target_folder> <command_w_path>
機能するには、chroot
正しいライブラリとそのパスがターゲットフォルダに存在する必要があります。これは、ldd <command_w_path>
そのエントリとそのパスを使用してターゲットフォルダにコピーすることで確認できます。ディストリビューション間に若干の違いがあります。たとえば、Arch Linux では機能するにはusr/lib
シンボリックリンクが必要です。lib
答え3
fakeroot / fakechrootはすでに素晴らしいので、バンドルされているかインストールしてください。インスピレーションを得るには、cdebootstrapをチェックしてください。