GNU/Linux >> Linux の 問題 >  >> Linux

Linux – Kernel.orgカーネルをコンパイルしてディスク上のカスタムボリュームにインストールしますか?

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パッケージ(実際にはいくつかのパッケージ)としてパッケージ化されます。ターゲットシステムにインストールするだけで完了です。


Linux
  1. LinuxにAnsibleをインストールしてテストする方法

  2. LinuxでのGrafanaのインストールとセットアップ

  3. Linux –カスタムLinuxカーネルの構成、コンパイル、およびインストール?

  1. LinuxでFlatpakをインストールして使用する方法

  2. LinuxでTracerouteをインストールして使用する方法

  3. Linux カーネルをコンパイルするには、どのくらいのサイズが必要ですか?

  1. LinuxにElasticsearchとKibanaをインストールする方法

  2. Arch Linuxをインストールした後はどうすればよいですか?

  3. Ukuu Kernel Manager –UbuntuにLinuxカーネルをインストールしてアップグレードする