
該当する質問: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
必要な設定/実行ファイルがありません。/mnt
chroot
上記の「修正」の後、実行時に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 ext2
grubがext2(またはext4)ファイルシステムを読み取ることを許可します。
set root=
grubに/boot/vmlinuz-5.10.78を検索するパーティションを指定し(実際の名前を確認してください。異なる場合があります)、起動するlinux
カーネルを指定し、将来のroot=/dev/sda2
ルートディレクトリを指定してください。
本当に小さな代替システムが欲しいなら、Gentooはより良い方法かもしれませんが、私は名前だけを知っています。で始める必要がありますdebootstrap
。