В бесконечных поисках работы Vagrant я пытаюсь обновить Fedora. Vagrant требуется VirtualBox, VirtualBox нужны исходные коды ядра, а исходные коды доступны только для последней версии ядра.
$ uname -r
4.3.5-300.fc23.x86_64
Я попытался обновить систему.
$ sudo dnf update
Last metadata expiration check: 2:03:57 ago on Tue May 10 11:20:17 2016.
Dependencies resolved.
Nothing to do.
Complete!
Понятно, что система уже обновлена.
$ sudo dnf install kernel
Last metadata expiration check: 2:05:00 ago on Tue May 10 11:20:17 2016.
Package kernel-4.4.8-300.fc23.x86_64 is already installed, skipping.
Dependencies resolved.
Nothing to do.
Complete!
Я попытался удалить текущее ядро:
$ sudo dnf удалить ядро-(uname -r)
Полная. Давайте посмотрим, что установлено:
$ rpm -qva "kernel-*"
kernel-core-4.4.8-300.fc23.x86_64
kernel-core-4.4.4-301.fc23.x86_64
kernel-headers-4.4.8-300.fc23.x86_64
kernel-modules-4.4.8-300.fc23.x86_64
kernel-devel-4.4.8-300.fc23.x86_64
kernel-modules-4.4.4-301.fc23.x86_64
Пока все хорошо.
Так я перезагрузился ....
Только чтобы обнаружить, что в Grub были перечислены три ядра: 4.3.5-300.fc23.x86_64 и два более старых из ветви 4.2.
$ rpm -qva "kernel-*"
kernel-modules-4.3.5-300.fc23.x86_64
kernel-core-4.4.8-300.fc23.x86_64
kernel-core-4.4.4-301.fc23.x86_64
kernel-core-4.3.5-300.fc23.x86_64
kernel-headers-4.4.8-300.fc23.x86_64
kernel-modules-4.4.8-300.fc23.x86_64
kernel-devel-4.4.8-300.fc23.x86_64
kernel-modules-4.4.4-301.fc23.x86_64
Что здесь происходит?
Изменить: позже я попытался обновить Grub, чтобы забрать новое ядро.
$ cd /boot/grub2
$ mv grub.cfg grub.cfg.old
$ sudo grub2-mkconfig -o grub.cfg.new
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.4.8-300.fc23.x86_64
Found initrd image: /boot/initramfs-4.4.8-300.fc23.x86_64.img
Found linux image: /boot/vmlinuz-4.4.4-301.fc23.x86_64
Found initrd image: /boot/initramfs-4.4.4-301.fc23.x86_64.img
Found linux image: /boot/vmlinuz-4.3.5-300.fc23.x86_64
Found initrd image: /boot/initramfs-4.3.5-300.fc23.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-0468365313db460f867aa0a7c6284ace
Found initrd image: /boot/initramfs-0-rescue-0468365313db460f867aa0a7c6284ace.img
Я могу подтвердить, что новый файл конфигурации имеет правильные записи:
$ grep 4.4 grub.cfg
menuentry 'Fedora (4.4.8-300.fc23.x86_64) 23 (Workstation Edition)' --class fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.3.5-300.fc23.x86_64-advanced-29e2d74b-255e-44fa-b8e7-edb54b33f225' {
linux16 /vmlinuz-4.4.8-300.fc23.x86_64 root=/dev/mapper/fedora_deepwinter-root ro rd.lvm.lv=fedora_deepwinter/root rd.luks.uuid=luks-b09d62d7-9782-42d5-890d-f117ccb8a1cc rd.lvm.lv=fedora_deepwinter/swap rhgb quiet splash acpi_backlight=vendor acpi_osi='!Windows 2013' acpi_osi='!Windows 2012' LANG=en_GB.UTF-8
initrd16 /initramfs-4.4.8-300.fc23.x86_64.img
menuentry 'Fedora (4.4.4-301.fc23.x86_64) 23 (Workstation Edition)' --class fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.3.5-300.fc23.x86_64-advanced-29e2d74b-255e-44fa-b8e7-edb54b33f225' {
linux16 /vmlinuz-4.4.4-301.fc23.x86_64 root=/dev/mapper/fedora_deepwinter-root ro rd.lvm.lv=fedora_deepwinter/root rd.luks.uuid=luks-b09d62d7-9782-42d5-890d-f117ccb8a1cc rd.lvm.lv=fedora_deepwinter/swap rhgb quiet splash acpi_backlight=vendor acpi_osi='!Windows 2013' acpi_osi='!Windows 2012' LANG=en_GB.UTF-8
initrd16 /initramfs-4.4.4-301.fc23.x86_64.img
Теперь я не двойная загрузка или что-то сложное в этом роде. У меня есть один жесткий диск с одной установкой Fedora. Как может быть, что grub.cfg имеет правильные записи, но когда я перезагружаю компьютер, он все еще показывает 4.2.4, 4.2.3 и 4.3.5? Может ли быть проблема точки монтирования с несколькими /boots?
$ mount | grep boot
/dev/sda2 on /boot type ext4 (rw,relatime,seclabel,data=ordered)
$ ls /dev/ | grep sd
sda
sda1
sda2
sda3
sda4
Файлы ядра определенно есть:
$ ls /boot | grep 4.4
config-4.4.4-301.fc23.x86_64
config-4.4.8-300.fc23.x86_64
initramfs-4.4.4-301.fc23.x86_64.img
initramfs-4.4.8-300.fc23.x86_64.img
System.map-4.4.4-301.fc23.x86_64
System.map-4.4.8-300.fc23.x86_64
vmlinuz-4.4.4-301.fc23.x86_64
vmlinuz-4.4.8-300.fc23.x86_64
Возможно, мне стоит попробовать переустановить grub на жесткий диск ...
$ sudo grub2-install --target=/dev/sda
grub2-install: error: /usr/lib/grub/dev/sda/modinfo.sh doesn't exist. Please specify --target or --directory.
$ sudo grub2-install --directory=/boot
grub2-install: error: /boot/modinfo.sh doesn't exist. Please specify --target or --directory.
Я не знаю, что такое modinfo.sh, но это выглядит важно ...
На данный момент я не совсем уверен, почему Grub не собирает ядра или откуда он загружает их из конфигурации.