
私は独自のモジュールを作成し、このモジュールをカーネルソースコードに追加し、システムコールを実装するという実践を実証する必要があります。 Ubuntuは3.16カーネルを使用していますが、ソースからカーネルをインストールするのに約2時間かかりました。
新しくインストールされたカーネルを定期的に使用する予定がないため、ソースからカーネルの一部(不要なドライバなど)を削除して時間を節約できますか?それではどうですか?
答え1
コメントで述べたように、make -j4
保持しているCPUコアの数と同じか少し高い数字を使用する必要があります。
ローカル構成の変更
次のガイドラインは、アップストリームでカーネルを構築するためのものです。個人的にこれが一番簡単だと思います。 Ubuntuパッチが適用されたツリーを取得する方法がわかりません。このようにビルドする準備ができました。
(1)理論的に、より合理的な期間にわたってテストするためにカーネルを構築する方法は次のとおりです。
cp /boot/config-`uname -r` .config
新しいものを有効にする必要はありません。したがって、唯一の問題は、名前を変更すると操作が中断されることです。
make oldnoconfig
現在ロードされていないすべてのモジュールが無効になりました。 (必要なすべてのUSBデバイスを接続していることを確認してください...):
make localmodconfig
最近私にうまくいきましたので役に立ちます。前回試してみましたがあまり良くありませんでした。
1時間程度から10分程度に短縮したようです。make localmodconfig
それは私が必要としない膨大な量のものを作っているにもかかわらず。OTOHは実際にこれらの項目(例make xconfig
:)を見つけて無効にするのに時間がかかります(または望むものを誤って無効にした場合は時間がかかります)。する必要)。
私はその存在がそれほど価値があることを知りたいです。ただそれがあなたを幸せにするという保証はありません。
(2)各プロジェクトを構築するのに2時間かかるとは思いません。改訂するあなたの「モジュール」に。 (新しいシステムコールを実装する場合は、実際に組み込み関数でなければなりません。) make
変更されたファイルのみが再コンパイルされ、カーネルバイナリに組み込まれます。したがって、Kconfigを正しく設定するのが大きすぎる問題であれば、ビルドの最初の2時間はそれほど悪くないかもしれません。
展開カーネルソースパッケージを使用してビルドすると、この問題が発生することがあります。 (手動ビルドに切り替えるか、ソースコードパッケージを使用してデプロイをだますことができますccache
)。あるいは、変更により、残念ながら多くのソースファイルに含まれるヘッダーファイルが変更される可能性があります。
それにもかかわらず、別のカーネルバージョンに移植、実行、および他のビルドオプションをテストしたい場合は、カスタムgit bisect
Kconfig(たとえば、より小さなKconfig)を作成すると便利です。
答え2
同じマシンでカーネルを繰り返しビルドする場合隠れ家特に、仮想マシンを使用している場合は、多くの役に立ちます。私の経験によれば、バーチャルマシンで同じプロジェクトを連続的にクリーンビルドするのに、ccacheのないビルドに比べて約半分の時間がかかります。最初のビルドで保存されたオブジェクトファイルを保存するには、追加のディスク容量が必要です。また、ccacheが有効になっている最初のビルドでは、~/.ccache
すべてのオブジェクトファイルをフォルダに書き込むのに少し時間がかかります(5〜10%長くなります)。
私のビルドマシンの設定スクリプトには次のようなものがあります。
sudo apt-get install ccache
for binary in gcc g++ cc c++ i686-linux-gnu-g++ i686-linux-gnu-gcc x86_64-linux-gnu-gcc x86_64-linux-gnu-g++
do
if [[ -e /usr/bin/$binary ]]
then
sudo ln --symbolic /usr/bin/ccache /usr/local/bin/$binary
test $? -eq 0 || echo error: symlinking $binary to ccache
fi
done
echo "If you have the space, you may want to increase your ccache size with \"ccache -s 5G\" (or however much space you can afford)"