Как это произошло? (предыдущий длинный ответ)

Как это произошло? (предыдущий длинный ответ)

Запускаю Ubuntu 14.04 на Oracle VirtualBox 4.3.24 и полностью застрял с монтированием гостевых дополнений. Я потратил немало времени на поиски решения в сети, но ничего не помогло...

введите описание изображения здесь

Как предложено ниже, я пробовал монтировать вручную, а также скачать ISO из сети (версия соответствует VirtualBox). Та же ошибка:

введите описание изображения здесь

РЕДАКТИРОВАТЬ:

Теперь некоторые папки стали «только для чтения», что вызывает большие проблемы. Даже установка свежего образа Ubuntu 14.04 не помогает... Так что переустановка самого VirtualBox...

решение1

Мне удалось решить проблему монтирования, переустановив образ Linux:

sudo apt-get install --reinstall linux-image-$(uname -r)

Кстати, все началось с обновления VirtualBox. Двунаправленный буфер обмена перестал работать, поэтому я попытался переустановить ISO гостевых дополнений. Это вызвало вышеуказанные проблемы. Теперь гостевые дополнения смонтированы обратно, но буфер обмена все равно не работает...

решение2

TL;DR это можно быстро исправить перезагрузкой.НЕ ИСПОЛЬЗУЙТЕ apt-get. Смотрите внизу: «Просто перезагрузитесь!».


Как это произошло? (предыдущий длинный ответ)

Именно такая проблема возникнет, если вы:

  • обновить ядро ​​(например с .66 до .67)
  • запустить apt-get autoremoveи каким-то образом удалить работающее ядро, или вручную удалить «старое» ядро, тем самым удалив все модули из /lib/modules/kernel.66
  • не перезагружается, тем самым сохраняя "старое" ядро ​​.66 работающим. Загруженные модули остаются в памяти и все работает, ноникакие новые модули не могут быть загруженыс версии .66 модули были удалены.
  • попробуйте сделать что-нибудь, требующее загрузки модуля, который еще не был загружен

А для установки VirtualBox ISO может потребоваться именно это — загрузка модуля поддержки ISO9660.

Запрошенный модуль теперь больше не может быть автоматически загружен, поскольку работающее ядро ​​(.66) не находит ничего в /lib/modules/kernel.66.Модуль существует, но он находится в /lib/modules/kernel.67, о котором текущее ядро ​​.66 ничего не знает (и не рекомендуется загружать несоответствующий модуль).

Переустановка безымянного ядра, конечно же, переустановит работающие модули ядра, тем самым сделав ../.66/.../isofs.ko снова доступным и сделав перезагрузку ненужной.Это понижение версии установленного ядра и проблема обновления останется.(см. ниже).

То есть, когда вы запускаете Additions CD, он установится длябег.66 ядро,нетобновленное ядро ​​.67 (которое все еще не запущено).

Если вы находитесь в такой ситуации, вы также можетеконечноисправьте это перезагрузкой (новое работающее ядро ​​.67 найдет свои модули) ивероятнозагрузив модуль, принадлежащий новому ядру ( isofsдовольно стабилен), который, если только вы не подверглись важному обновлению ядра, все равно будет совместим (это все еще не рекомендуется!):

# mount /dev/cdrom /mnt
mount: unknown filesystem type 'iso9660'

Выше приведена основная ошибка, которую вы получаете («неизвестный тип файловой системы»).

# uname -a
Linux virtual 3.13.0-66-generic ...

Итак, проверяем, какая версия модулей установлена. Она должна быть .66:

# ls /lib/modules
3.13.0-67-generic

...но есть только один каталог, и это .67 (каталог .66 может быть там, но пустой; в этом случае du -sh /lib/modules/*он покажет, сколько места занимают различные каталоги, что позволит отличить пустые каталоги от полных).

Переустановка старого образа ядра без regrub не решит реальную проблему.

Вы переустанавливаете работающее ядро ​​с его модулями и заголовками. Теперь у вас есть оба ядра, grubнастроенные на загрузку нового ядра.

Можно смонтировать ISO CD-ROM (поскольку модуль теперь присутствует), а модули VBox будут скомпилированы (поскольку заголовочные файлы установлены).

Он скомпилирует модули для работающего ядра .66, и они будут работать... некоторое время.

При первой перезагрузке вы обнаружите ядро ​​.67 без каких-либо дополнений VirtualBox.

Переустановка ядра также не решит настоящую проблему.

apt-get install --reinstall linux-image-$(uname -r)

Как и выше, при первой перезагрузке вы обнаружите себя с пониженной версией (или лучше сказать "не обновленной") ядра. Очень скоро Ubuntu попытается обновить его... и вы вернетесь к тому, с чего начали (см. ниже: "понижение версии ядра"), и вам нужно будет перезагрузиться и снова установить Virtualbox Additions.

Внесение исправлений в модуль ISO также не решит реальную проблему.

Скорее всего, мы все равно сможем принудительно загрузить модуль ISO9660, поскольку между ядрами 66 и 67 не было выполнено никакой работы, а двоичный файл по сути не изменился, поэтому мы пробуем:

# insmod /lib/modules/3.13.0-67-generic/kernel/fs/isofs/isofs.ko

Ошибок нет. Сработало. Ядро .66 загрузило модуль из ядра .67. Попробуем еще раз смонтировать CD-ROM:

# mount /dev/cdrom /mnt
mount: block device /dev/sr0 is write-protected, mounting read-only

Эй! Сработало!

Да, но это все равно не окажет никакой реальной помощи, поскольку устанавливаемый компакт-диск — это VirtualBox Additions, для которого требуетсябегзаголовки ядра, которые нужно установить. Если запущенное ядромодулиих больше нет,есть вероятность, что и заголовки ядра тоже. Таким образом, CD-ROM может быть смонтирован, но установщик даст сбой при запуске.

Кроме того, даже если он каким-то образом нашел заголовки и компиляция не завершилась ошибкой, вновь скомпилированные модули Virtualbox не будут куда-либо помещаться, поскольку каталог модулей .66 был очищен (именно поэтому модуль isofsизначально не был найден!).

Но предположим, что вы исправили все это, восстановив каталоги модулей и заголовков для предыдущего ядра: по сути, вы выполнили дорогостоящее (и частичное) понижение версии ядра, и дополнения будутпотерянныйпри следующей перезагрузке, вместе с остальной частью ядра .66, когда оживает недавно установленное ядро ​​.67. Потому что Virtualbox Additions CD, запущенный с ядра .66 с заголовками .66, добросовестно установил модули ядра .66, а не .67.

Понижение версии ядра будет работать... некоторое время

Если мыудалятьядро .67 и переустановите ядро ​​.66 с модулями вместо него, все будет отлично некоторое время. Перезагрузка не требуется, как в решении "force ISO module" выше.

И перезагрузка ничего не потеряет, поскольку не установлено ядро, оспариваемое Additions.

Но в этом случае ядро ​​все равно будет находиться в списке «для обновления», и эта же проблема рано или поздно обязательно возникнет (обычно на следующий день или на следующей неделе, в зависимости от частоты автоматических обновлений).

Предоставленный,теперь вы можете заставить его возникнуть в более подходящий момент по вашему выбору, что может стоить довольно много. Принудительное обновление посреди марафона кодирования для проекта, который задерживается, — это дьявол.

Итак: просто перезагрузитесь! (и перезапустите Additions CD).

При перезагрузке будет активировано уже установленное и более новое ядро ​​.67, а также все его модули и заголовки; среди них — модуль isofsдля чтения файловых систем CD ISO9660.

 sudo reboot

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

«Лучшая» последовательность обновления ядра на VirtualBox с дополнениями следующая:

 apt-get update
 apt-get upgrade              (or apt-get dist-upgrade)
 reboot                       
 (re)install VirtualBox Additions on the new kernel that is now running
 apt-get autoremove

(Предпоследнее старое ядро ​​может не быть автоматически удалено по соображениям безопасности, чтобы вы могли «вернуться назад»).

решение3

Согласно другим ответам, это обычно можно исправить перезагрузкой.

Почему-то модуль "iso9660" не загружен. depmodПросканировать все модули и создать зависимости модулей.

sudo depmod -a
sudo mount /dev/sr0 /mnt
ls -l /mnt

это решит проблему.

решение4

Я решил эту проблему (на Ubuntu 16.04) путем обновления пакетов и перезапуска:

sudo apt-get update
sudo apt-get upgrade
sudo reboot

Связанный контент