kernel.orgカーネルをコンパイルしてカスタムHDDボリューム(/dev/sda5
など)にインストールしたい 、現在のUbuntuのディレクトリとマージする代わりに。
構成とコンパイルプロセスに関する情報はWeb全体で見つけることができますが、カーネルをカスタムボリュームに配置する方法がわかりません(コンパイル時に使用している起動済みのディストリビューションとは異なります)。私が求めているのは、1台のHDDの2つの異なるボリュームに2つの異なるディストリビューションをインストールする方法のようなものです。今では、カスタムカーネルを別のディストリビューションと考えてください。
承認された回答:
ホームディレクトリを含め、どこでもカーネルをコンパイルできます。ビルドツリー外のディレクトリが変更されるのは、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カーネルの構築など)はまったく問題外です。
関連:Linux –キャッシュをフラッシュするとファイルが失われます(echo 3> / proc / sys / vm / drop_caches)?ただし、別のインストールやコンピュータをレスキューしようとしている場合は、そのようなカスタムカーネルを構築するよりもレスキューディスクの方が便利な場合があります。
もう1つ:起動し、コンパイルしているものと同じアーキテクチャで、DebianまたはDebianのようなOS(Ubuntuカウント)を実行する別のコンピューターのカーネルを構築しようとしている場合は、 kernel-package
パッケージ(sudo aptitude install kernel-package
)。次に、カーネルを解凍します。cd
ソースツリーのルートに移動し、次のように言います。
CONCURRENCY_LEVEL=$(grep -c processor /proc/cpuinfo) \
sudo make-kpkg --initrd binary-arch
これにより、必要なパッチが適用され、カーネルが構成され、ビルドされて.debパッケージ(実際にはいくつかのパッケージ)としてパッケージ化されます。ターゲットシステムにインストールするだけで完了です。