Cambiar su kernel en AWS parece interrumpir la secuencia de inicio (¿problema de configuración de grub?)

Cambiar su kernel en AWS parece interrumpir la secuencia de inicio (¿problema de configuración de grub?)

Al usar Ubuntu 20.04 en AWS (ec2), quería cambiar mi kernel de AWS a uno genérico. Cuando lo intento de la forma sugerida cambiando Grub Config, la máquina se detiene.

Esto se debe a que Jibri (Jitsi Video Recorder) requiere el uso de ALSA y modprobe snd-aloop, pero cualquier cosa que desee una baja latencia o un kernel diferente tendría la misma necesidad.

Lo que probé:

Coge la imagen:

sudo apt install linux-image-extra-virtual

Verá que hace referencia a algo como Linux 5.4.0-84-generic en los paquetes de instalación; será útil más adelante. Ahora, enumere las entradas de arranque que tiene para ese nuevo kernel genérico.

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

Veo:

entrada de menú 'Ubuntu, con 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, con Linux 5.4.0-84-generic (modo de recuperación)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4 .0-84-recuperación-generica-e8070c31-bfee-4314-a151-d1332dc23486' {

En lo que probablemente sea la línea superior, y no la que menciona el modo de recuperación, copie la entrada del menú al comienzo de la línea. En el mío se parece a Ubuntu, con Linux 5.4.0-84-generic, pero será diferente para todos.

Ahora voy a editar/etc/default/grub,

Comente GRUB_DEFAULT=0 (carga la primera entrada en su lista de arranque de grub) y cámbielo a la cadena que encontramos anteriormente. Para mí, esta sección del archivo ahora se ve así:

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

Esta aún no es una configuración adecuada; la estamos usando para permitir que grub verifique y nos diga cuál es la mejor manera de hacerlo.

En este punto, podemos sudo update-grub, lo que me dará una advertencia amigable como esta (¡esto es bueno!)

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)

De nuevo, ¡esto es bueno! Sabemos que hemos especificado algo que reconoce. Todos ejecutan grub más reciente que 2.00 en estos días, por lo que ahora editamos /etc/default/grub nuevamente y lo cambiamos a su valor final:

(mis valores serán diferentes a los tuyos)

#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 y veo que la advertencia ya no está.

ahora hago unsudo reboot now

En este punto, grub me ha proporcionado una configuración que debería intentar arrancar el kernel genérico, volviendo al normal.

En lugar de eso, se queda atascado en un bucle de arranque.

En la consola serie, veo esto repetidamente durante el ciclo de arranque.

[    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)

Me dice que no puede encontrar el dispositivo de arranque ni el partuuid según él. En este punto, tengo que terminar la instancia e intentarlo de nuevo, ya que no puedo recuperarla fácilmente.

¿Existe alguna forma mejor de cambiar mi kernel por uno genérico? Estaría feliz de poder usar la imagen genérica de todas las formas posibles en este momento si arranca.

información relacionada