Не загружайтесь в последнее ядро ​​после обновления до grub 2

Я использую для установки обновлений ядра ubuntu с apt, а затем перезагружаюсь, чтобы добраться до последнего ядра. Однако этот процесс, похоже, не работает на одном из моих серверов. Ядро 4.10.0-21 установлено, но машина, по-видимому, использует 4.10.0-20 при перезагрузке.

Во время процесса apt update для grub2 диалог спросил меня, хочу ли я привязать свое наследие Конфигурация grub. Я выбрал «нет». Я думаю, что это может быть частью проблемы.

Обновление grub, похоже, делает все правильно, сначала ставит новое ядро:

$ sudo update-grub Generating grub configuration file ... Found linux image: /boot/vmlinuz-4.10.0-21-generic Found initrd image: /boot/initrd.img-4.10.0-21-generic Found linux image: /boot/vmlinuz-4.10.0-20-generic Found initrd image: /boot/initrd.img-4.10.0-20-generic Found memtest86+ image: /boot/memtest86+.elf Found memtest86+ image: /boot/memtest86+.bin done

В файле /etc/grub/default указано, что ядро ​​0 должно быть по умолчанию:

GRUB_DEFAULT=0 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT=3 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX=""

Я могу проверить, что grub.cfg получает добавленные ядра:

$ grep menuentry /boot/grub/grub.cfg ... menuentry 'Ubuntu, with Linux 4.10.0-21-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.10.0-21-generic-advanced-6af3f559-58c5-4c56-b1c8-ffe02c700c97' { menuentry 'Ubuntu, with Linux 4.10.0-21-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.10.0-21-generic-recovery-6af3f559-58c5-4c56-b1c8-ffe02c700c97' { menuentry 'Ubuntu, with Linux 4.10.0-20-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.10.0-20-generic-advanced-6af3f559-58c5-4c56-b1c8-ffe02c700c97' { menuentry 'Ubuntu, with Linux 4.10.0-20-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.10.0-20-generic-recovery-6af3f559-58c5-4c56-b1c8-ffe02c700c97' { ... $ grep -Poz "menuentry 'Ubuntu' (.|\n)*?\}" /boot/grub/grub.cfg menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-6af3f559-58c5-4c56-b1c8-ffe02c700c97' { recordfail load_video gfxmode $linux_gfx_mode insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi insmod part_msdos insmod ext2 set root='hd0,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1' 6af3f559-58c5-4c56-b1c8-ffe02c700c97 else search --no-floppy --fs-uuid --set=root 6af3f559-58c5-4c56-b1c8-ffe02c700c97 fi linux /boot/vmlinuz-4.10.0-21-generic root=UUID=6af3f559-58c5-4c56-b1c8-ffe02c700c97 ro quiet splash $vt_handoff initrd /boot/initrd.img-4.10.0-21-generic }

Файл ядра на самом деле существует на диске:

$ ls -l /boot/vmlinuz-4.10.0-21-generic -rw------- 1 root root 7575312 Apr 28 06:41 /boot/vmlinuz-4.10.0-21-generic

По возможности, что он был поврежден каким-то образом, я попытался переустановить его:

$ sudo apt-get install --reinstall linux-image-4.10.0-21-generic

dpkg показывает, что оба ядра установлены:

$ dpkg -l | grep ii | grep linux-image-[0-9].*-generic ii linux-image-4.10.0-20-generic 4.10.0-20.22 amd64 Linux kernel image for version 4.10.0 on 64 bit x86 SMP ii linux-image-4.10.0-21-generic 4.10.0-21.23 amd64 Linux kernel image for version 4.10.0 on 64 bit x86 SMP

Однако после перезагрузки:

$ uname -r 4.10.0-20-generic $ cat /proc/version Linux version 4.10.0-20-generic (buildd@lcy01-05) (gcc version 6.3.0 20170406 (Ubuntu 6.3.0-12ubuntu2) ) #22-Ubuntu SMP Thu Apr 20 09:22:42 UTC 2017 $ cat /proc/cmdline root=UUID=6af3f559-58c5-4c56-b1c8-ffe02c700c97 ro quiet splash

Я действительно думаю, что наследие grub каким-то образом все еще используется на этой машине. /boot/grub/menu.1st имеет ссылки на 20, но не на 21:

title Ubuntu 17.04, kernel 4.10.0-20-generic root (hd0,0) kernel /boot/vmlinuz-4.10.0-20-generic root=UUID=6af3f559-58c5-4c56-b1c8-ffe02c700c97 ro quiet splash initrd /boot/initrd.img-4.10.0-20-generic quiet title Ubuntu 17.04, kernel 4.10.0-20-generic (recovery mode) root (hd0,0) kernel /boot/vmlinuz-4.10.0-20-generic root=UUID=6af3f559-58c5-4c56-b1c8-ffe02c700c97 ro single initrd /boot/initrd.img-4.10.0-20-generic title Ubuntu 17.04, kernel 4.8.0-49-generic root (hd0,0) kernel /boot/vmlinuz-4.8.0-49-generic root=UUID=6af3f559-58c5-4c56-b1c8-ffe02c700c97 ro quiet splash initrd /boot/initrd.img-4.8.0-49-generic quiet title Ubuntu 17.04, kernel 4.8.0-49-generic (recovery mode) root (hd0,0) kernel /boot/vmlinuz-4.8.0-49-generic root=UUID=6af3f559-58c5-4c56-b1c8-ffe02c700c97 ro single initrd /boot/initrd.img-4.8.0-49-generic title Ubuntu 17.04, memtest86+ root (hd0,0) kernel /boot/memtest86+.bin quiet

Этот компьютер находится в центре обработки данных, и у меня нет доступа к консоли во время процесса перезагрузки. Я не могу понять, что говорит grub во время перезагрузки, я могу только ssh после того, как он запущен и запущен.

Что может быть причиной того, что новейшее ядро ​​не будет использоваться и как его исправить?

4
задан 16 May 2017 в 17:29

6 ответов

В первом взгляде все кажется прекрасным, ваш grub.cfg, /etc/default/grub, состояние установки ядра, все так, как должно быть.

Однако, если мы проверим cat /proc/version, как ваш вывод говорит grub загружает неправильное ядро:

Linux version 4.10.0-20-generic ...

И как вы уже сказали, у вас есть GRUB Legacy в вашей системе, поэтому я думаю, что GRUB 2 не установлен в вашем загрузочном секторе вообще.

, поэтому запустите:

sudo grub-install /dev/sda

, чтобы установить grub2 в загрузочный сектор.

Затем, чтобы убедиться, что все выполнено правильно:

sudo update-grub
[d6 ] для восстановления grub.cfg

2
ответ дан 22 May 2018 в 22:33

В первом взгляде все кажется прекрасным, ваш grub.cfg, /etc/default/grub, состояние установки ядра, все так, как должно быть.

Однако, если мы проверим cat /proc/version, как ваш вывод говорит grub загружает неправильное ядро:

Linux version 4.10.0-20-generic ...

И как вы уже сказали, у вас есть GRUB Legacy в вашей системе, поэтому я думаю, что GRUB 2 не установлен в вашем загрузочном секторе вообще.

, поэтому запустите:

sudo grub-install /dev/sda

, чтобы установить grub2 в загрузочный сектор.

Затем, чтобы убедиться, что все выполнено правильно:

sudo update-grub

для восстановления grub.cfg

2
ответ дан 18 July 2018 в 13:12

В первом взгляде все кажется прекрасным, ваш grub.cfg, /etc/default/grub, состояние установки ядра, все так, как должно быть.

Однако, если мы проверим cat /proc/version, как ваш вывод говорит grub загружает неправильное ядро:

Linux version 4.10.0-20-generic ...

И как вы уже сказали, у вас есть GRUB Legacy в вашей системе, поэтому я думаю, что GRUB 2 не установлен в вашем загрузочном секторе вообще.

, поэтому запустите:

sudo grub-install /dev/sda

, чтобы установить grub2 в загрузочный сектор.

Затем, чтобы убедиться, что все выполнено правильно:

sudo update-grub

для восстановления grub.cfg

2
ответ дан 24 July 2018 в 20:07

Я не запускаю сервер, а рабочий стол. Я заметил что-то странное во время моего обновления до 4.10.0-21.23 ...

В конце процесса обновления в терминале появился вывод:

The link /vmlinuz.old is a damaged link
Removing symbolic link vmlinuz.old 
you may need to re-run your boot loader[grub]

Я повторно запустил:

sudo update-grub

Просто чтобы быть в безопасности перед перезагрузкой.

0
ответ дан 22 May 2018 в 22:33

Я не запускаю сервер, а рабочий стол. Я заметил что-то странное во время моего обновления до 4.10.0-21.23 ...

В конце процесса обновления в терминале появился вывод:

The link /vmlinuz.old is a damaged link Removing symbolic link vmlinuz.old you may need to re-run your boot loader[grub]

Я повторно запустил:

sudo update-grub

Просто чтобы быть в безопасности перед перезагрузкой.

0
ответ дан 18 July 2018 в 13:12

Я не запускаю сервер, а рабочий стол. Я заметил что-то странное во время моего обновления до 4.10.0-21.23 ...

В конце процесса обновления в терминале появился вывод:

The link /vmlinuz.old is a damaged link Removing symbolic link vmlinuz.old you may need to re-run your boot loader[grub]

Я повторно запустил:

sudo update-grub

Просто чтобы быть в безопасности перед перезагрузкой.

0
ответ дан 24 July 2018 в 20:07

Другие вопросы по тегам:

Похожие вопросы: