Ubuntu 18でカーネルをアップグレードした後(4.15から4.19へ)、メモリから「初期RAMディスクをロードする」

Ubuntu 18でカーネルをアップグレードした後(4.15から4.19へ)、メモリから「初期RAMディスクをロードする」

カーネルを必要とするいくつかのベンチマークを実行する必要があるため(一部のカーネルオプションをオンにする)、カーネルを4.19にアップグレードしようとしています。なぜこれがうまくいかないのかわかりません。私はUbuntu 18を2回新しくインストールしましたが、4.19カーネルをダウンロードし、oldconfig(またはolddefconfig)を作成し、モジュールとカーネル自体をインストールしました。再起動後の出力は次のようになります。

Loading Linux 4.19.237
Loading initial ramdisk
error: out of memory
Press any key to continue

キーを押すと、初期起動メッセージとエラースタックのみが表示されます。

ここに画像の説明を入力してください。

再起動すると、古い(4.15)カーネルはまだ起動し、完全に実行されます。

grub.cfgの両方のエントリは類似しています。

menuentry 'Ubuntu, with Linux 4.19.237' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.237-advanced-cbc1623f-b651-454a-87dd-da2056dd55\05' {
                recordfail
                load_video
                gfxmode $linux_gfx_mode
                insmod gzio
                if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
                insmod part_gpt
                insmod ext2
                set root='hd0,gpt2'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  cbc1623f-b651-454a-87dd-da2056dd5505
                else
                  search --no-floppy --fs-uuid --set=root cbc1623f-b651-454a-87dd-da2056dd5505
                fi
                echo    'Loading Linux 4.19.237 ...'
                linux   /boot/vmlinuz-4.19.237 root=UUID=cbc1623f-b651-454a-87dd-da2056dd5505 ro
                echo    'Loading initial ramdisk ...'
                initrd  /boot/initrd.img-4.19.237
        }

menuentry 'Ubuntu, with Linux 4.15.0-20-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-20-generic-advanced-cbc1623f-b651-45\4a-87dd-da2056dd5505' {
                recordfail
                load_video
                gfxmode $linux_gfx_mode
                insmod gzio
                if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
                insmod part_gpt
                insmod ext2
                set root='hd0,gpt2'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  cbc1623f-b651-454a-87dd-da2056dd5505
                else
                  search --no-floppy --fs-uuid --set=root cbc1623f-b651-454a-87dd-da2056dd5505
                fi
                echo    'Loading Linux 4.15.0-20-generic ...'
                linux   /boot/vmlinuz-4.15.0-20-generic root=UUID=cbc1623f-b651-454a-87dd-da2056dd5505 ro
                echo    'Loading initial ramdisk ...'
                initrd  /boot/initrd.img-4.15.0-20-generic
        }

私は完全にアイデアを持っていません。カーネルを数回再コンパイルし、BIOSでTPMを無効にし、BIOSを更新し、LVMなしでUbuntuを再インストールし、回復モードを試み、RAIDからAHCIに変更しました(ディスク1つのみ)。

どんなアイデアがありますか?

編集:設定を検索して変更した後に起動しましたが、まだメモリ不足エラーが発生してキーを押す必要がありました。カーネルで複数のVIRTIO、AHCI、およびその他のBLKパラメータを有効にしました。その後、メモリ不足エラーが発生した後にボタンを押すと、まったく異なるUUIDのリストが表示されます。

ここに画像の説明を入力してください。

これによりUUIDを使用しようとしませんでした。したがって、キーを押すと長いブートログとログインプロンプトが表示されますroot=/dev/sda2out of memory error

何らかの理由でネットワークデバイスの名前が新しいカーネルで(enp4s0からenp3s0に)変更されたため、netplanファイルを編集する必要があり、ネットワークが作成されました。

今でもまだメモリ不足エラーに苦しんでいますが、その理由がわかりません。このコンピュータをリモートで使用して再起動する必要があるたびにアクセスできないため、この問題を解決する必要があります。このような単純なカーネルアップグレードでなぜこれが起こるのかというアイデアはまだ開いています。

答え1

initrd画像が非常に大きいことがわかりました。デフォルトの50MBと比較して500MBです。サイズを縮小する鍵は次のとおりです。カーネルをコンパイルするときにinitrdのサイズを小さくするには?

デフォルトでは:に/etc/initramfs-tools/initramfs.conf変更します。MODULESMODULES=dep

モジュールのインストール時にデバッグシンボルを削除する変数を渡します。make INSTALL_MOD_STRIP=1 modules_install

それ以来、out of memoryエラーも消え、何らかの理由でvfsエラーも消えました。 initrdは50MB未満です。これらの変更を適用する前に、カーネルを含むすべてのパッケージをアップグレードしましたが、おそらく影響はありません。

答え2

MODULESを変更することに加えて、initrdsの圧縮レベルを上げることができます。

存在する/etc/initramfs-tools/initramfs.conf

MODULES=dep
COMPRESS=xz

confファイルを更新したら、次のコマンドを実行します。

sudo update-initramfs -c -k all
sudo update-grub

関連情報