Я использую для установки обновлений ядра 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 после того, как он запущен и запущен.
Что может быть причиной того, что новейшее ядро не будет использоваться и как его исправить?
В первом взгляде все кажется прекрасным, ваш 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 В первом взгляде все кажется прекрасным, ваш 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
В первом взгляде все кажется прекрасным, ваш 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
Я не запускаю сервер, а рабочий стол. Я заметил что-то странное во время моего обновления до 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
Просто чтобы быть в безопасности перед перезагрузкой.
Я не запускаю сервер, а рабочий стол. Я заметил что-то странное во время моего обновления до 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
Просто чтобы быть в безопасности перед перезагрузкой.
Я не запускаю сервер, а рабочий стол. Я заметил что-то странное во время моего обновления до 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
Просто чтобы быть в безопасности перед перезагрузкой.