ブートとchrootingの組み合わせでOSイメージを準備しています。カーネルモジュールの構築などの一部のタスクは、uname
chroot内でもホスト構成を報告する出力に依存します。この構成は、デプロイされる構成とは異なります。その結果、カーネルヘッダが見つからず、他のステップが混乱してしまいます。
創造性を発揮してuname
これを偽シェルスクリプトに置き換えることができますが、より実用的なアプローチは何ですか?
答え1
Linuxは報告された値を変更するための制限された方法を提供しますuname
。personality
システムコールは次のように呼び出すことができます。setarch
ユーティリティ(組み込まれていないすべてのLinuxで利用可能なutil-linuxパッケージの一部)、たとえばamd64コンピュータで使用したり、setarch i386 myprogram
プログラムlinux32 myprogram
が32ビットx86システムで実行されていると信じることができます。
uname
ただし、レポートのバージョンを任意の数に変更する方法はありません。
以下を使用して、プロセスツリーのホスト名を変更することもできます。UTS名前空間。
シュルートこれらのパラメータはchroot設定に従って設定できます。
ただし、コンパイルされたソフトウェアの場合、情報報告を変更するだけではuname
十分ではありません。また、ターゲットプロセッサに適したコンパイラを使用し、正しいコードをリンクする必要があります。これは…クロスコンパイル、クロスコンパイル環境は、ビルドのターゲットとビルド方法を決定するためにホストシステムに関する情報を使用しません。だからふりをするのを忘れuname
て、代わりに読んでください。カーネルモジュールのクロスコンパイル、そしてkbuild ドキュメント。