vmlinuz отсутствует в моей системе, как это исправить?

1607
xpt

Все 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) ... 

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

0
Это после ошибки, которая удалила эти файлы, или система работала без этих файлов? Во втором случае я подозреваю, что система работает внутри контейнера (например, VPS), а затем не нуждается в них. Можете ли вы сказать, в каком случае это? A.B 6 лет назад 1
О, это длинная история @AB, но поскольку вы спросили, нет, это новая новая система, которая никогда не загружалась. Я получаю это, копируя систему Ubuntu Live на мой HD сам. почему я делаю это - еще одна длинная история, но вкратце, сделав такую ​​копию, `/ vmlinuz` и` / initrd.img` указывают на файлы, которых не существует. Таким образом, в итоге, мне нужно вернуть все три. Спасибо. xpt 6 лет назад 0

2 ответа на вопрос

1
A.B
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 
Пожалуйста, объясните еще раз, почему `linux-image-generic_4.15.0.20.23_amd64.deb` снова не в порядке, пожалуйста, так как комментарий был удален. То есть в моем OP есть строка `unpack ... / linux-image-generic_4.15.0.20.23_amd64.deb`, однако она не работает. xpt 6 лет назад 0
Согласно ссылочным страницам, размер пакета linux-image-generic после распаковки составляет 14 КБ. По ссылкам есть * два * файла: `/ usr / share / doc / linux-image-generic / changelog.gz` и` / usr / share / doc / linux-image-generic / copyright`. С другой стороны, другой пакет, содержащий всего 3 файла, содержит этот файл: `/ boot / vmlinuz-4.15.0-20-generic`: ядро. Этого достаточно, чтобы запустить перестроение соответствующего файла initramfs с помощью команды `update-initramfs -u`. Вероятная причина, по которой он был «потерян» при копировании образа, заключается в том, что / boot - это отдельный раздел. A.B 6 лет назад 1
Существует другая (под) зависимость, которая содержит все модули ядра: linux-modules-4.15.0-20-generic https://packages.ubuntu.com/bionic/amd64/linux-modules-4.15.0-20-generic / filelist. Но это было правильно скопировано из образа, поэтому не было необходимости переустанавливать его. В любом случае в нем есть несколько файлов / boot (например, /boot/System.map*), поэтому я добавлю его в ответ. A.B 6 лет назад 0
0
xpt

По- 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не работая, я не могу придумать лучшие идеи.