Ubuntu 18에서 커널 업그레이드(4.15에서 4.19로) 후 메모리에서 "초기 램디스크 로드"

Ubuntu 18에서 커널 업그레이드(4.15에서 4.19로) 후 메모리에서 "초기 램디스크 로드"

커널을 요구하는 일부 벤치마크를 실행해야 하기 때문에(일부 커널 옵션 켜기) 커널을 4.19로 업그레이드하려고 합니다. 왜 이것이 작동하지 않는지 전혀 모르겠습니다. 저는 우분투 18을 두 번 새로 설치했는데, 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 없이 우분투를 다시 설치하고, 복구 모드를 시도하고, RAID에서 AHCI로 변경했습니다(디스크 하나만).

어떤 아이디어가 있나요?

편집: 구성을 검색하고 변경한 후 시작했지만 여전히 메모리 부족 오류가 발생하여 키를 눌러야 했습니다. 커널에서 여러 VIRTIO, AHCI 및 기타 BLK 매개변수를 활성화했습니다. 그런 다음 메모리 부족 오류가 발생한 후 버튼을 누르면 완전히 다른 UUID 목록이 표시됩니다.

여기에 이미지 설명을 입력하세요.

이로 인해 UUID를 사용하지 않으려고 했습니다. 그래서 키를 누르면 긴 부팅 로그와 로그인 프롬프트가 표시됩니다 root=/dev/sda2.out 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

관련 정보