TL; DR questo può essere rapidamente risolto riavviando . Quindi il CD-ROM funzionerà e le aggiunte degli ospiti saranno installabili:
sudo reboot
La sequenza "migliore" per aggiornare il kernel su VirtualBox con aggiunte è:
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
(Il kernel precedente all'ultimo potrebbe non essere rimosso automaticamente per motivi di sicurezza, per consentire di "tornare indietro").
Come è successo? (precedente risposta lunga)
Esattamente questo tipo di problema sorgerà se:
- aggiorna il kernel (diciamo da .66 a .67)
- eseguire
apt-get autoremove
e in qualche modo rimuovere il kernel in esecuzione o rimuovere manualmente il "vecchio" kernel, rimuovendo così tutti i moduli da /lib/modules/kernel.66
- non riavviare, mantenendo in esecuzione il "vecchio" kernel .66. I moduli caricati rimangono in memoria e tutto funziona, ma non è possibile caricare nuovi moduli poiché i moduli .66 sono stati eliminati.
- prova a fare tutto ciò che richiede il caricamento di un modulo che non è stato ancora caricato
E l'installazione di VirtualBox ISO può richiedere esattamente questo: il caricamento del modulo di supporto ISO9660.
Il modulo richiesto ora non può più essere caricato automaticamente, poiché il kernel in esecuzione (.66) non trova nulla in /lib/modules/kernel.66. Il modulo esiste , ma è in /lib/modules/kernel.67, di cui l'attuale kernel .66 non sa nulla (e non è consigliabile caricare un modulo non corrispondente).
La reinstallazione del kernel senza nome reinstallerà ovviamente i moduli del kernel in esecuzione, rendendo di nuovo disponibile ../.66/.../isofs.ko e rendendo superfluo il riavvio. Questo è un downgrade del kernel installato e il problema di aggiornamento rimarrà (vedi sotto).
Cioè, quando si esegue il CD delle aggiunte, verrà installato per il kernel .66 in esecuzione , non per il kernel .67 aggiornato (che non è ancora in esecuzione).
Se ti trovi in una situazione del genere, puoi sicuramente risolverlo riavviando (il nuovo kernel .67 funzionante troverà i suoi moduli), e probabilmente caricando il modulo appartenente al nuovo kernel ( isofs
è abbastanza stabile), che a meno che tu non abbia sottoposto a un importante aggiornamento del kernel sarà comunque compatibile ( questo non è ancora consigliato! ):
# mount /dev/cdrom /mnt
mount: unknown filesystem type 'iso9660'
Questo sopra è l'errore di root che stai ricevendo ("tipo di filesystem sconosciuto").
# uname -a
Linux virtual 3.13.0-66-generic ...
Quindi controlliamo quale versione dei moduli è installata. Dovrebbe essere .66:
# ls /lib/modules
3.13.0-67-generic
... ma c'è solo una directory ed è .67 (la directory .66 potrebbe essere lì, ma vuota; in questo caso du -sh /lib/modules/*
dirà quanto spazio è occupato dalle varie directory, permettendo di dire tra quelle vuote e quelle piene).
Reinstallare la vecchia immagine del kernel senza re-grub non risolverà il vero problema
Si reinstalla il kernel .66 con i suoi moduli e intestazioni. Ora hai entrambi i kernel, con grub
set per caricare il nuovo .67.
È possibile montare il CD-ROM ISO (perché il modulo è ora presente) e i moduli VBox verranno compilati (poiché le intestazioni sono state installate).
Compilerà i moduli per il kernel .66 in esecuzione e funzioneranno ... per un po '.
Al primo riavvio, ti ritroverai con un kernel .67 senza aggiunte VirtualBox.
La reinstallazione della vecchia immagine del kernel con re-grub e il riavvio non risolverà il vero problema
Come sopra, riavvii e ti ritrovi con un kernel declassato. Molto presto Ubuntu proverà ad aggiornarlo e tornerai da dove hai iniziato (vedi sotto: "downgrade del kernel").
Anche l'applicazione di patch nel modulo ISO non risolverà il vero problema
È probabile che possiamo forzare il caricamento del modulo ISO9660 lo stesso, poiché non è stato eseguito alcun lavoro tra i kernel 66 e 67 e il binario è sostanzialmente invariato, quindi proviamo:
# insmod /lib/modules/3.13.0-67-generic/kernel/fs/isofs/isofs.ko
Nessun errore Ha funzionato. Kernel .66 modulo caricato dal kernel .67. Proviamo di nuovo a montare il CD-ROM:
# mount /dev/cdrom /mnt
mount: block device /dev/sr0 is write-protected, mounting read-only
Questo non è ancora d'aiuto, perché il CD da installare è VirtualBox Additions, che richiede l' installazione delle intestazioni del kernel in esecuzione . Se i moduli del kernel in esecuzione non sono più presenti, è probabile che le intestazioni del kernel non lo siano neppure.
Inoltre, i moduli Virtualbox appena compilati non dovranno andare da nessuna parte, poiché la directory dei moduli .66 è stata pulita.
Ma dite di aver risolto tutto ciò: avete essenzialmente effettuato un downgrade del kernel costoso e parziale, e le aggiunte andranno perse al prossimo aggiornamento insieme al resto del kernel .66, esattamente come nel caso sopra.
Il downgrade del kernel funzionerà ... per un po '
Se rimuoviamo il kernel .67 e reinstalliamo il kernel .66 con i moduli al suo posto, per un po 'le cose saranno enormi. Nessun riavvio necessario, come nella soluzione "force ISO module" sopra.
E un riavvio non perderà nulla, poiché non è installato alcun kernel con problemi di aggiunta.
Ma in questo modo il kernel sarà ancora nella lista "da aggiornare", e questo stesso problema è destinato a sorgere prima o poi.
Certo, ora puoi farlo sorgere in un momento più appropriato della tua scelta, che potrebbe valere parecchio.
Basta riavviare!
Al riavvio, verrà attivato il kernel .67 più recente e tutti i suoi moduli e intestazioni sono lì.
Quindi, dopo il riavvio, le Aggiunte agli ospiti funzioneranno e l'aggiornamento "prenderà".