TL; DR, isso pode ser corrigido rapidamente pela reinicialização . Em seguida, o CD-ROM funcionará e as adições de convidados serão instaláveis:
sudo reboot
A melhor "sequência" para atualizar o kernel no VirtualBox with Additions é:
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
(O penúltimo kernel antigo pode não ser removido automaticamente por razões de segurança, para permitir que você "volte").
Como isso aconteceu? (resposta longa anterior)
Exatamente esse tipo de problema surgirá se você:
- atualize o kernel (diga de .66 para .67)
- execute
apt-get autoremove
e de alguma forma remova o kernel em execução ou remova manualmente o kernel "antigo", removendo todos os módulos de /lib/modules/kernel.66
- não reinicie, mantendo assim o ".66" antigo kernel em execução. Os módulos carregados permanecem na memória e tudo funciona, mas nenhum novo módulo pode ser carregado desde que os módulos .66 foram excluídos.
- tente fazer qualquer coisa que exija o carregamento de um módulo que ainda não foi carregado
E a instalação do VirtualBox ISO pode exigir exatamente isso - carregar o módulo de suporte ISO9660.
O módulo solicitado agora não pode mais ser carregado automaticamente, porque o kernel em execução (.66) não encontra nada no /lib/modules/kernel.66. O módulo existe , mas está em /lib/modules/kernel.67, sobre o qual o kernel .66 atual não sabe nada (e não é recomendável carregar um módulo incompatível).
A reinstalação do kernel não nomeado irá, é claro, reinstalar os módulos do kernel em execução, tornando ../.66/.../isofs.ko disponível novamente e tornando a reinicialização desnecessária. Este é um downgrade do kernel instalado e o problema de atualização permanecerá (veja abaixo).
Ou seja, quando você executa o CD Additions, ele é instalado no kernel .66 em execução , não no kernel .67 atualizado (que ainda não está em execução).
Se você estiver nessa situação, certamente também poderá corrigi-lo reiniciando (o novo kernel .67 em execução encontrará seus módulos) e, provavelmente , carregando o módulo pertencente ao novo kernel ( isofs
é bastante estável), o que, a menos que você tenha passou por uma importante atualização do kernel ainda será compatível ( isso ainda não é recomendado! ):
# mount /dev/cdrom /mnt
mount: unknown filesystem type 'iso9660'
Isso acima é o erro raiz que você está recebendo ("tipo de sistema de arquivos desconhecido").
# uname -a
Linux virtual 3.13.0-66-generic ...
Portanto, verificamos qual versão dos módulos está instalada. Deve ser 0,66:
# ls /lib/modules
3.13.0-67-generic
... mas há apenas um diretório e é .67 (o diretório .66 pode estar lá, mas vazio; nesse caso, du -sh /lib/modules/*
será informado quanto espaço é ocupado pelos vários diretórios, permitindo diferenciar entre os vazios e os completos).
Reinstalar a imagem antiga do kernel sem re-grub não resolverá o problema real
Você reinstala o kernel .66 com seus módulos e cabeçalhos. Agora você tem os dois kernels, grub
configurados para carregar o .67 mais recente.
O CD-ROM ISO pode ser montado (porque o módulo agora está presente) e os módulos VBox serão compilados (porque os cabeçalhos foram instalados).
Ele irá compilar módulos para o kernel .66 em execução e eles funcionarão ... por um tempo.
Na primeira reinicialização, você se encontrará com um kernel .67 sem nenhuma adição ao VirtualBox.
Reinstalar a imagem antiga do kernel com re-grub e re-boot também não resolverá o problema real
Como acima, você reinicia e se encontra com um kernel desatualizado. Muito em breve, o Ubuntu tentará atualizá-lo e você voltará onde começou (veja abaixo: "desatualizando o kernel").
A aplicação de patches no módulo ISO também não resolverá o problema real
Provavelmente, podemos forçar o carregamento do módulo ISO9660 da mesma forma, já que nenhum trabalho foi feito entre os núcleos 66 e 67 e o binário é essencialmente inalterado, por isso tentamos:
# insmod /lib/modules/3.13.0-67-generic/kernel/fs/isofs/isofs.ko
Sem erros. Funcionou. Módulo carregado .66 do kernel .67. Vamos tentar novamente montar o CD-ROM:
# mount /dev/cdrom /mnt
mount: block device /dev/sr0 is write-protected, mounting read-only
Isso ainda não ajudará, porque o CD que está sendo instalado é o VirtualBox Additions, que requer a instalação dos cabeçalhos do kernel em execução . Se os módulos do kernel em execução não estiverem mais lá, é provável que os cabeçalhos do kernel também não.
Além disso, os módulos Virtualbox recém-compilados não terão para onde ir, pois o diretório .66 modules foi limpo.
Mas diga que você corrige tudo isso: você fez essencialmente um downgrade caro (e parcial) do kernel, e as adições serão perdidas na próxima atualização juntamente com o restante do .66 kernel, exatamente como no caso acima.
A desclassificação do kernel funcionará ... por um tempo
Se removermos o kernel .67 e reinstalar o kernel .66 com os módulos em seu lugar, as coisas ficarão ruins por um tempo. Não é necessário reiniciar, como na solução "force ISO module" acima.
E uma reinicialização não perderá nada, pois nenhum kernel desafiado por adições está instalado.
Mas, dessa forma, o kernel ainda estará na lista "a ser atualizado" e esse mesmo problema provavelmente surgirá mais cedo ou mais tarde.
É verdade que agora você pode surgir em algum momento mais apropriado de sua escolha, que pode valer bastante.
Apenas reinicie!
Reinicializando, o kernel .67 mais recente será ativado e todos os seus módulos e cabeçalhos estarão lá.
Portanto, após a reinicialização, o Guest Additions funcionará e a atualização será "executada".