Все Linux должны поставляться с vmlinuz в « / » и « /boot/ ». Тем не менее, моя система не имеет этого:

% ls -l /vmlinuz* /initrd* /boot/vmlinuz*
ls: cannot access '/vmlinuz*': No such file or directory
ls: cannot access '/initrd*': No such file or directory
ls: cannot access '/boot/vmlinuz*': No such file or directory

Как я могу вернуть все три?

Я старался,

apt-get install --reinstall linux-image-generic linux-headers-generic
update-initramfs -u

Что должно было решить проблему в соответствии со статьями, которые я прочитал, потому что фактические пакеты тоже переустанавливаются:

% apt-get install --reinstall linux-image-generic linux-headers-generic 
Preparing to unpack .../linux-headers-generic_4.15.0.20.23_amd64.deb ...
Unpacking linux-headers-generic (4.15.0.20.23) over (4.15.0.20.23) ...
Preparing to unpack .../linux-image-generic_4.15.0.20.23_amd64.deb ...
Unpacking linux-image-generic (4.15.0.20.23) over (4.15.0.20.23) ...
Processing triggers for ureadahead (0.100.0-20) ...
Processing triggers for install-info (6.5.0.dfsg.1-2) ...
Processing triggers for systemd (237-3ubuntu10) ...
Processing triggers for man-db (2.8.3-2) ...
Setting up linux-image-generic (4.15.0.20.23) ...
Setting up linux-headers-generic (4.15.0.20.23) ...
Processing triggers for ureadahead (0.100.0-20) ...
Processing triggers for systemd (237-3ubuntu10) ...

но я все еще пропускаю вышеупомянутые три файла впоследствии.

2 ответа2

1
apt-get install --reinstall linux-image-generic

Будет переустанавливать только пустой пакет, который не содержит реального кода ядра, но существует только для зависимостей, которые он извлекает.

Вместо этого следует (пере) установить (восстановить) отсутствующие /boot файлы, так как пакет в настоящее время указывается как зависимость от linux-image-generic. Сегодня это linux-image-4.15.0-20-generic. Так:

apt-get install --reinstall linux-image-4.15.0-20-generic

должен сделать отсутствующие файлы (повторно) появляться. На самом деле он содержит только минимально необходимый файл: /boot/vmlinuz-4.15.0-20-generic . Также переустановка зависимостей linux-modules-4.15.0-20-generic восстановит несколько других отсутствующих файлов в /boot (согласно списку):

/boot/System.map-4.15.0-20-generic
/boot/abi-4.15.0-20-generic
/boot/config-4.15.0-20-generic
/boot/retpoline-4.15.0-20-generic
0

Очевидно, что apt-get install --reinstall не помогает, поэтому сначала я удалил их все, а затем снова установил:

apt-get --purge remove linux-headers-4.15.0-20 linux-headers-4.15.0-20-generic linux-image-4.15.0-20-generic
apt-get install linux-image-generic linux-headers-generic 

% ls -l /vmlinuz* /initrd* /boot/vmlinuz* /boot/initrd*
-rw-r--r-- 1 root root 57592934 Apr 28 16:55  /boot/initrd.img-4.15.0-20-generic
-rw------- 1 root root  8249080 Apr 24 04:42  /boot/vmlinuz-4.15.0-20-generic
lrwxrwxrwx 1 root root       33 Apr 28 16:54  /initrd.img -> boot/initrd.img-4.15.0-20-generic
lrwxrwxrwx 1 root root       33 Apr 28 16:54  /initrd.img.old -> boot/initrd.img-4.15.0-20-generic
lrwxrwxrwx 1 root root       30 Apr 28 16:54  /vmlinuz -> boot/vmlinuz-4.15.0-20-generic
lrwxrwxrwx 1 root root       30 Apr 28 16:54  /vmlinuz.old -> boot/vmlinuz-4.15.0-20-generic

Может быть, это слишком жестко , но с apt-get install --reinstall не работает, я не могу придумать лучшие идеи.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .