kernel.org カーネルを別のパーティションにコンパイルしてインストールした後にデュアルブートを設定する方法

kernel.org カーネルを別のパーティションにコンパイルしてインストールした後にデュアルブートを設定する方法

該当する質問:kernel.org カーネルをコンパイルし、ディスクのカスタムボリュームにインストールします。私の質問に部分的に答えますが、完全ではありません!

30GBの容量のディスクがあります。 2つのパーティションがあります

  • 2GBパーティション(/dev/sda1)にDebianが含まれています。
  • 28GBパーティション(/dev/sda2)が完全に空です(フォーマット済み、ファイルシステムはext4)。

kernel.orgカーネル(https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.78.tar.xz)/dev/sda2そして、私のDebianと新しいカーネルの間にデュアルブートを設定します。

これまで:

2番目のパーティションを(たとえば)にマウントし、/mntその中にmount /dev/sda2 /mntディレクトリを作成しました(つまり、そのディレクトリがあります)。/src/mnt/src

いつ/mnt/src

カーネルをダウンロードして解凍しました。

wget --no-check-certificate https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.78.tar.xz
unxz -v linux-5.10.78.tar.xz
tar xvf linux-5.10.78.tar

また、カーネルのコンパイルとインストールに必要なツールもインストールしました。

apt-get update
apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev

ダンジャイ/mnt/src/linux-5.10.78

既存のDebianカーネル設定を現在のディレクトリ(たとえばcp -v /boot/config-$(uname -r) .config)にコピーして実行しましたmake olddefconfig(既存の設定を使用し、他のすべての項目にデフォルト値を提供することがアイデアでした)。 。途中でクリックしたAvoid speculative indirect branches in kernelので、対応するオプションも選択解除しました。You are building kernel with non-retpoline compiler, please update your compiler.. Stop.make

それからmake -j 4再び走り、終わるのを待った。

その後、INSTALL_MOD_PATH=/mnt INSTALL_PATH=/mnt/boot make modules_install上記の質問で提案されているように、必要なモジュールのインストールを実行しました。

私の問題は、今実行するとフォルダが見つからupdate-initramfsないため失敗することです。/lib/modules/5.10.78明らかにこれは本当です/mnt/lib/modules/5.10.78。オプションを使用して別のルートパスを提供しようとしましたが、うまくいきませ-bんでした。私もそれを試しましたが、実際にchroot必要な設定/実行ファイルがありません。/mntchroot

上記の「修正」の後、実行時にupdate-grubカーネルイメージ、起動するルートファイルシステム、および設定ファイルを検索し、再起動後に2つの起動オプション(Debianと新しいカーネル)を持つようにすべてを設定できるようにしたいと思います。 )。

これらの両方の助けと後で実際のグラブ構成の助けをいただきありがとうupdate-initramfsございます!ここでリンクを見つけましたが、常にプロセスの高レベルの概要です。

ベストアンサー1

最小限のDebianシステムをインストールする最も簡単な方法の1つは、debootstrap bullseye /mnt探しているバージョンと/mntインストールするパスを確認することです。

コアが必要で、プロセスが正しいようです。複雑なブートシーケンスにのみInitramfsまたはinitrdが必要です。通常、RAIDアレイのルートディレクトリです。私のサーバーには何もなく、うまく動作します。 (ルートファイルシステムタイプはモジュールとしてコンパイルされず、カーネルに組み込まれなければなりません。)

また、通常、次のものを含める必要があります/boot/grub/grub.cfg


menuentry "Alternate Debian , kernel 5.10.78" {
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos2'
        linux   /boot/vmlinuz-5.10.78 root=/dev/sda2 ro  
}

insmod part_msdos古いパーティションスキームがある場合は必須です。 UEFIシステムではなければなりませんが、よくinsmod part_gptわかりません。insmod ext2grubがext2(またはext4)ファイルシステムを読み取ることを許可します。 set root=grubに/boot/vmlinuz-5.10.78を検索するパーティションを指定し(実際の名前を確認してください。異なる場合があります)、起動するlinuxカーネルを指定し、将来のroot=/dev/sda2ルートディレクトリを指定してください。

本当に小さな代替システムが欲しいなら、Gentooはより良い方法かもしれませんが、私は名前だけを知っています。で始める必要がありますdebootstrap

おすすめ記事