kernel.org カーネルをコンパイルし、ディスクのカスタムボリュームにインストールします。

kernel.org カーネルをコンパイルし、ディスクのカスタムボリュームにインストールします。

/dev/sda5kernel.orgカーネルを現在のUbuntuディレクトリとマージするのではなく、カスタムHDDボリュームにコンパイルしてインストールしたいと思います。

Web全体で構成およびコンパイルプロセスに関する情報を見つけることができますが、カーネルをカスタムボリューム(コンパイル時に使用したブートディストリビューションとは異なります)に配置する方法についてのトレースはありません。私が尋ねるのは、1つのHDD内の2つの異なるボリュームに2つの異なるディストリビューションをインストールし、私のカスタムカーネルを別のディストリビューションとして処理する方法です。

答え1

ホームディレクトリを含む任意の場所でカーネルをコンパイルできます。ビルドツリー外のディレクトリが変更される唯一の時間は、ターゲットの1つを作成するときですinstall*。したがって、カーネルをインストールするには、次の明確な作業を行う必要があります。

cd $SOME_DIRECTORY
tar -xjvf linux-$VERSION.tar.bz2
cd linux-$VERSION
make mrproper menuconfig
# Configure the kernel here.
# Now build it using all your CPU threads in parallel.
make -j$(grep -c processor /proc/cpuinfo) bzImage modules

カーネルを構成した後にビルドされます。この時点で、Arch / $ YOUR_ARCHITECTURE / boot / bzImageの下にカーネルバイナリ(vmlinux)と起動可能なカーネルイメージが作成されます。

モノリシックカーネルを構築したら完了です。圧縮されていないファイル(vmlinux)または圧縮ファイル(bzImage)を目的のボリュームにコピーし、必要に応じてブートマネージャを設定します。

モジュールをインストールする必要があり、ターゲットボリュームが/ mntにマウントされていると仮定すると、次のように言うことができます。

INSTALL_MOD_PATH=/mnt \
INSTALL_PATH=/mnt/boot \
make modules_install

これにより、カーネルイメージがに/mnt/boot、モジュールがにコピーされます/mnt/lib/modules/$VERSION

過度に単純化したことに注意してください。カーネルを手動で構築するのに手助けが必要な場合は、カーネルソースツリーのサブディレクトリにあるいくつかのドキュメントを読む必要がありますDocumentation/。ファイルREADMEには、ビルドとインストールの方法も詳しく説明されています。

しかし、カーネルを起動するのは別の話です。ほとんどの最新のディストリビューションは、残りのカーネル(ブロックデバイス、ファイルシステム、ネットワークなど)を起動するために必要なハードウェアドライバホストを含​​む初期RAMdiskイメージを使用します。このプロセスでは、このイメージは生成されません。何をすべきかによって異なります(何をする何をしたいですか? )、既存のツールチェーンを使用するか、展開ツールチェーンを使用して新しいツールチェーンを作成できます。のマニュアルを確認する必要がありますupdate-initramfs

しかし、他の問題もあります。標準ツールチェーンでは、他のアーキテクチャやサブアーキテクチャ用のカーネルをコンパイルすることはできません。場合によっては、特定の種類のx86システムでコンパイルされたカーネルでも、他の種類のx86システムでは実行されないことがあります。これはすべて、サブアーキテクチャとカーネル構成の組み合わせによって異なります。適切なクロスコンパイルツールチェーンがインストールされていないと、クロスアーキテクチャのコンパイル(x86システムにARMコアを構築するなど)は完全に不可能です。

ただし、他のインストールやシステムを回復したい場合は、このようなカスタムカーネルを構築するよりも回復ディスクが便利です。

もう1つ:コンパイル中のコンピュータと同じアーキテクチャを持ち、DebianまたはDebianファミリのOS(Ubuntuも含む)を実行している他のブートコンピュータ用のカーネルを構築する場合は、installPackage kernel-packagesudo aptitude install kernel-package)を使用できます。次に、cdソースツリーのルートにカーネルを解凍し、次のように言います。

CONCURRENCY_LEVEL=$(grep -c processor /proc/cpuinfo) \
sudo make-kpkg --initrd binary-arch

これにより、必要なパッチが適用され、カーネルが構成され、ビルドされ、.debパッケージ(実際には複数のパッケージ)にパッケージ化されます。あなたがすべきことは、ターゲットシステムにインストールすることだけです。これで作業が完了します。

関連情報