Alterar seu kernel na AWS parece quebrar a sequência de inicialização (problema de configuração do grub?)

Alterar seu kernel na AWS parece quebrar a sequência de inicialização (problema de configuração do grub?)

Usando Ubuntu 20.04 na AWS (ec2), eu queria mudar meu kernel de AWS para um genérico. Quando tento da maneira sugerida alterando o Grub Config, ele para a máquina.

Isso ocorre porque o Jibri (Jitsi Video Recorder) requer o uso do ALSA e modprobe snd-aloop , mas qualquer coisa que desejasse uma latência baixa ou um kernel diferente teria a mesma necessidade.

O que eu tentei:

Pegue a imagem:

sudo apt install linux-image-extra-virtual

Você verá que ele faz referência a algo como Linux 5.4.0-84-generic nos pacotes de instalação, isso ajuda mais tarde. Agora, liste as entradas de inicialização que você possui para esse novo kernel genérico

grep -A200 submenu /boot/grub/grub.cfg |grep -P '^(?=.*menuentry)(?=.*generic)'

Eu vejo:

menuentry 'Ubuntu, com Linux 5.4.0-84-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-84-generic-advanced-e8070c31-bfee -4314-a151-d1332dc23486' { menuentry 'Ubuntu, com Linux 5.4.0-84-genérico (modo de recuperação)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4 .0-84-recuperação genérica-e8070c31-bfee-4314-a151-d1332dc23486' {

No que provavelmente é a linha superior, e não aquela que menciona o modo de recuperação, copie sua entrada de menu no início da linha. No meu parece o Ubuntu, com Linux 5.4.0-84-generic, mas será diferente para cada pessoa.

Agora vou editar/etc/default/grub,

Comente GRUB_DEFAULT=0 (carrega a primeira entrada em sua lista de inicialização do grub) e altere-a para a string que encontramos anteriormente. Para mim, esta seção do arquivo agora se parece com:

#GRUB_DEFAULT=0
GRUB_DEFAULT="Ubuntu, with Linux 5.4.0-84-generic"

Esta não é uma configuração adequada ainda - estamos usando-a para permitir que o grub verifique e nos diga a melhor maneira de fazer isso.

Neste ponto, podemos sudo update-grub, que me dará um aviso amigável como este (isso é bom!)

Warning: Please don't use old title `Ubuntu, with Linux 5.4.0-84-generic' for GRUB_DEFAULT, use `Advanced options for Ubuntu>Ubuntu, with Linux 5.4.0-84-generic' (for versions before 2.00) or `gnulinux-advanced-e8070c31-bfee-4314-a151-d1332dc23486>gnulinux-5.4.0-84-generic-advanced-e8070c31-bfee-4314-a151-d1332dc23486' (for 2.00 or later)

Novamente, isso é bom! Sabemos que especificamos algo que ele reconhece. Todo mundo está executando o grub mais recente que 2.00 atualmente, então agora editamos /etc/default/grub novamente e alteramos para seu valor final:

(meus valores serão diferentes dos seus)

#GRUB_DEFAULT=0
#GRUB_DEFAULT="Ubuntu, with Linux 5.4.0-84-generic"
GRUB_DEFAULT="gnulinux-advanced-e8070c31-bfee-4314-a151-d1332dc23486>gnulinux-5.4.0-84-generic-advanced-e8070c31-bfee-4314-a151-d1332dc23486"

sudo update-grub e vejo que o aviso desapareceu agora.

Agora eu faço umsudo reboot now

Neste ponto, o grub me deu uma configuração que deve tentar inicializar o kernel genérico, voltando ao normal.

Em vez disso, ele fica preso em um loop de inicialização.

No console serial, vejo isso repetidamente durante o loop de inicialização.

[    0.000000] Linux version 5.4.0-84-generic (buildd@lgw01-amd64-050) (gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)) #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 
(Ubuntu 5.4.0-84.94-generic 5.4.133)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.4.0-84-generic root=PARTUUID=5198cbc0-01 ro console=tty1 console=ttyS0 nvme_core.io_timeout=4294967295 panic=-
1
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Hygon HygonGenuine
[    0.000000]   Centaur CentaurHauls
[    0.000000]   zhaoxin   Shanghai  
... lots of cpu init that's hard to copy ..
[   10.366218] rtc_cmos 00:00: setting system clock to 2021-09-21T11:25:30 UTC (1632223530)
[   10.373185] md: Waiting for all devices to be available before autodetect
[   10.460173] md: If you don't use raid, use raid=noautodetect
[   10.464642] md: Autodetecting RAID arrays.
[   10.468024] md: autorun ...
[   10.470867] md: ... autorun DONE.
[   10.473906] VFS: Cannot open root device "PARTUUID=5198cbc0-01" or unknown-block(0,0): error -6
[   10.562806] Please append a correct "root=" boot option; here are the available partitions:
[   10.569825] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[   10.674637] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 5.4.0-84-generic #94-Ubuntu
[   10.682527] Hardware name: Amazon EC2 t3.small/, BIOS 1.0 10/16/2017
[   10.686735] Call Trace:
[   10.691100]  dump_stack+0x6d/0x8b
[   10.759061]  panic+0x101/0x2e3
[   10.761974]  mount_block_root+0x23f/0x2e8
[   10.765568]  mount_root+0x38/0x3a
[   10.768584]  prepare_namespace+0x13f/0x194
[   10.771873]  kernel_init_freeable+0x23f/0x263
[   10.775368]  ? rest_init+0xb0/0xb0
[   10.859141]  kernel_init+0xe/0x110
[   10.862101]  ret_from_fork+0x35/0x40
[   10.865843] Kernel Offset: 0x36a00000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)

Está me dizendo que não consegue encontrar o dispositivo de inicialização ou partuuid de acordo com ele. Neste ponto, tenho que encerrar a instância e tentar novamente, pois não consigo recuperá-la facilmente.

Existe alguma maneira melhor de mudar meu kernel para o genérico? Eu ficaria feliz em poder usar a imagem genérica de qualquer maneira possível neste momento, se ela inicializar.

informação relacionada