Come eseguire l'avvio da un'unità USB in VirtualBox?


72

La domanda è semplice e diretta:

Come eseguire l'avvio da un'unità USB in VirtualBox?

MODIFICA :

Ho collegato usba VirtualBox come mostrato nello screenshot.

https://i.stack.imgur.com/UPZZo.png

Ma non è possibile eseguire l'avvio da un'unità USB anche se collegato (riferimento) .

Quindi vorrei sapere se esiste qualche altra possibilità per l'avvio da un'unità USB?


Puoi semplicemente aprire la tua USB, comprimere tutto in un file ISO e avviarlo normalmente.
dat tutbrus

@Ravan - per non dimenticare che spesso gli utenti non collegano la proprietà "boot" alla chiavetta USB. Questo è nel menu 'partizione' di gparted e lì puoi modificare la bandiera risp. l'etichetta della chiavetta USB e attivare il parametro "boot".
dschinn1001,

1
@dattutbrus Non funzionerà se si desidera modificare i file su USB
Paul

Risposte:


89

VirtualBox stesso non supporta l'avvio da un dispositivo USB. Per eseguire l'avvio da un dispositivo USB, è necessario un altro bootloader. I passaggi seguenti forniscono un modo possibile per ottenere questo risultato:

  1. Scarica Plop Boot Manager (attualmente v5.0.15)
  2. Estrai il file plpbt.isodall'archivio ZIP e salvalo da qualche parte.
  3. Apri le impostazioni per la macchina virtuale e allega il file ISO:

    inserisci qui la descrizione dell'immagine

  4. Aggiungi un filtro per il dispositivo USB:

    inserisci qui la descrizione dell'immagine

  5. Avviare la VM e selezionare l'opzione "USB" nel menu:

    inserisci qui la descrizione dell'immagine

Se tutto è andato bene, la macchina ora dovrebbe avviarsi dal dispositivo USB.


1
Questa è sicuramente una risposta più semplice della mia. Mi piace! Vorrei poter votare di più. =)
Terrance

3
Questa risposta dovrebbe includere la necessità di far parte del gruppo vboxusers .
musiKk,

6
Per me non funziona. Quando seleziono usb aspetto per sempre con il suo schermo. Qualche idea? postimg.org/image/dv8w83pi3
Giovanni

6
Volevo aggiungere che Plop Boot Manager supporta ufficialmente solo EHCI. Se sei come me e stai cercando di utilizzare un'unità USB 3.0 con Plop Boot Manager, non funzionerà. Potresti provare a utilizzare il metodo menzionato nell'altro post, ma VirtualBox non sembra molto affezionato a lavorare con vmdks grezzi da dispositivi USB 3.0. Se sul computer sono presenti solo porte USB 3, è possibile ordinare un hub USB 2.0 e collegare l'unità tramite quella. Si comporterà essenzialmente come un'unità USB 2.0.
fakedad

3
Se si combina questa soluzione con quella VMDK, è possibile ottenere prestazioni USB native. Altrimenti funziona solo con USB 1.1.
Will Bickford,

50

EDIT: 7 marzo 2018

Qualcosa da notare qui. Lasciare l'unità USB nel computer al riavvio può modificare la /dev/sddesignazione della lettera di unità facendo in modo che il usb.vmdkfile non elaborato punti all'unità errata in modo che non si avvii in VirtualBox. Come test ne ho lasciato uno nel mio sistema. Era /dev/sdiprima che riavviassi, dopo il riavvio lo era /dev/sdc. Quando si riavvia il computer per eventuali modifiche, rimuovere l'unità USB prima di riavviare. Sto esaminando se il disco non elaborato può essere creato dall'UUID dell'unità, poiché non cambierà.


Poiché VirtualBox non si avvia su unità USB, è possibile creare un .vmdkfile che punta all'unità USB per l'avvio.

NOTA: DEVI aggiungere il tuo account utente al vboxusersgruppo per VirtualBox per vedere la tua USB. DEVI anche aggiungere il tuo account al diskgruppo o non puoi aggiungere il .vmdkfile alla tua Macchina Virtuale. Aggiunte le istruzioni di seguito in EDIT . Anche questo non copia l'unità USB sul disco rigido e utilizza direttamente l'USB. Ciò può essere utile se si desidera mantenere la persistenza sull'USB. Non tutte le situazioni sono uguali, quindi potrebbe non funzionare in tutti i casi.

Innanzitutto, devi avere la tua USB che hai creato nel tuo sistema e determinare quale sia l'unità fisica. Supponiamo che l'unità sia montata come /dev/sdb1. Quindi, l'unità fisica sarebbe /dev/sdb.

Quindi, digitare quanto segue da una finestra del terminale per creare il .vmdkfile che punta all'unità USB:

sudo vboxmanage internalcommands createrawvmdk -filename  ~/usb.vmdk -rawdisk /dev/sdb

O

sudo VBoxManage internalcommands createrawvmdk -filename  ~/usb.vmdk -rawdisk /dev/sdb

Quindi dovresti vedere qualcosa di simile a questo:

RAW host disk access VMDK file /home/ravan/usb.vmdk created successfully.

Nota: alcune persone hanno avuto problemi di proprietà del file appena creato. Assumi la proprietà del nuovo file:

sudo chown $USER:$USER ~/usb.vmdk

Quindi tutto ciò che dovresti fare è aggiungere il .vmdkfile al tuo VirtualBox Virtual Machine e assicurarti di poterlo avviare.

inserisci qui la descrizione dell'immagine

MODIFICARE:

Per aggiungere il tuo utente al vboxusersgruppo, esegui il seguente comando:

sudo usermod -a -G vboxusers username

Per aggiungere il tuo utente al diskgruppo, esegui il seguente comando:

Nota: l'aggiunta dell'utente al gruppo di dischi può essere pericolosa e rischi per la sicurezza. È pericoloso come avere l'accesso sudo per scrivere su un disco non elaborato.

sudo usermod -a -G disk username

Quindi DEVI riavviare il sistema affinché le modifiche abbiano effetto.

Prima di riavviare:

inserisci qui la descrizione dell'immagine

Dopo il riavvio:

inserisci qui la descrizione dell'immagine

Spero che sia di aiuto!


1
Ho ricevuto questo errore: VBoxManage: errore: VMDK: impossibile aprire il file del disco non elaborato '/ dev / sdc' VBoxManage: errore: codice di errore VERR_WRITE_PROTECT su /build/virtualbox-VDAABr/virtualbox-4.3.36-dfsg/src/VBox/ Storage / VMDK.cpp (3390) nella funzione int vmdkCreateRawImage (PVMDKIMAGE, PVBOXHDDRAW, uint64_t) VBoxManage: errore: Impossibile creare il disco rigido VMDK: VERR_WRITE_PROTECT VBoxManage: errore: il file vmdk del disco grezzo non è stato creato
John

@John Hai aggiunto il tuo account al diskgruppo, quindi ti sei disconnesso e riavviato o riavviato dopo aver aggiunto il gruppo?
Terrance

Sì, lo riavvio e l'evento se lo eseguo perché il risultato di root è lo stesso ...
John

2
funziona bene per me. Note: non è necessario riavviare, solo per disconnettersi / accedere. Una volta nel gruppo di dischi, non si dovrebbe usare sudo.
Karl Forner,

1
Ho seguito le istruzioni, ma quando provo ad avviare Windows 10 dall'unità USB nella virtualbox dice "FATAL: impossibile leggere dal supporto di avvio! Il sistema si è arrestato". Eventuali suggerimenti? Grazie per l'aiuto!
Arch Linux Tux,

15

Sono venuto a questo post solo pochi giorni fa. Non voglio usare Plop Boot Manager, perché la mia chiavetta USB è già avviabile.

Quindi ho cercato di puntare la chiavetta USB su un disco VMDK (come nella risposta di Terrance) creando vboxmanage internalcommands createrawvmdk -filename ~/usb.vmdk -rawdisk /dev/sdb

Sfortunatamente, questo ha rifiutato di funzionare ... Io chmode chownil usb.vmdkdisco, e quindi sono stato in grado di collegarlo a una VM, ma semplicemente non ha funzionato.

Alla fine, ho provato un'altra soluzione e questa ha funzionato perfettamente. Eccolo (grazie a Gean Santos per la ricerca):

  1. Inserisci la chiavetta USB e identificala (la mia è /dev/sdb, con Sabayon Linux);
  2. Crea un .vmdkdisco convertendo il dispositivo non elaborato (ovvero la chiavetta USB) in un disco VirtualBox

    sudo VBoxManage convertfromraw /dev/sdb ./usb.vmdk --format vmdk
    
  3. Ora hai un usb.vmdkdisco creato dalla tua chiavetta USB avviabile. Ho provato anche ddla chiavetta USB su un file immagine e ho creato il .vmdkdisco dal file immagine. Funziona, così come i .vdidischi creati nel modo precedente (o dal file immagine)

  4. Ora concedi le autorizzazioni al disco creato per consentire a VirtualBox di accedere al file. Significa solo cambiare il proprietario del file in un utente che appartiene al gruppo vboxusers . Se l'installazione di VirtualBox funziona correttamente, probabilmente questo proprietario sarà:

    sudo chown `whoami`:`whoami` ./usb.vmdk
    
  5. Ora devi solo collegare il usb.vmdkdisco a una macchina virtuale. Ma deve essere collegato a un controller IDE . Ho provato SATAsenza successo.

Un esempio di macchina virtuale con un <code> usb.vmdk </code> avviabile collegato a un controller IDE

A questo punto, stai bene.

Basta avviare la nuova macchina virtuale, premere F12e selezionare l'unità di avvio.

Godere!


Funziona con USB 3.0 (vedi i commenti qui askubuntu.com/questions/693719/… )?
pazzo di schifo il

Ho appena controllato e in pratica hai copiato la tua chiavetta USB e non hai usato la chiavetta USB originale in questo modo.
Fedcomp

11

La soluzione più semplice è copiare il contenuto della chiave USB in un file ISO (beh, la prossima volta scaricherò l'iso sulla macchina giusta, in primo luogo non è necessaria alcuna chiave USB)

dd if=/dev/sdc of=myusbkey.iso

E quindi aggiungi questo .iso come unità ottica nelle impostazioni di VirtualBox, in Archiviazione, Controller: IDE (o SATA, immagino).

Non è necessario creare un file .vmdk, VirtualBox supporta i file .iso.


Questa risposta dovrebbe essere al top.
McMutton,

Sono d'accordo :-) Ma ciò richiede ancora più voti;)
David Faure,

La cosa qui è se hai una partizione con un'immagine di avvio di circa 40 GB genererà un file con quella dimensione 😅
Sposmen,

Giusto, ma anche tutte le altre soluzioni lo fanno, vero?
David Faure,

1
@DavidFaure La risposta originale sull'uso di "comandi interni VBoxManage createrawvmdk ..." crea semplicemente qualcosa che potresti pensare equivalente a un collegamento all'unità USB che hai collegato al sistema nel momento in cui esegui il comando sopra. Quindi non si ottiene un'immagine potenzialmente enorme della chiavetta USB come menzionato dall'utente33845
ConceptRat

5

Vorrei suggerire i seguenti passaggi.

  1. Apri dischi.
  2. Cerca l'USB.
  3. Fai clic lì e nell'angolo in alto a destra vedrai un'icona delle impostazioni che ha 3 linee parallele.
  4. Fai clic lì e scegli Crea immagine disco ...
  5. Seleziona la posizione e fai clic su Crea . Creerà un file .img che puoi usare in VirtualBox.

2

Non volevo eseguire Virtualbox come root. Non volevo che il mio utente appartenesse al gruppo di dischi, con autorizzazioni complete per tutti i dischi.

Quindi ecco cosa ho avuto modo di lavorare:

Scopri cos'è sd il memory stick. Nelle seguenti istruzioni è sdc.

  • Smonta memory stick

    su -
    chmod 666 /dev/sdc1
    chmod 666 /dev/sdc
    exit # Run the following command as regular user:
    VBoxManage internalcommands createrawvmdk -filename usb.vmdk -rawdisk /dev/sdc
    su - # Back as root again:
    chmod 777 usb.vmdk
    chmod 666 /dev/sdc
    
  • Collegare la macchina virtualbox usb.vmdk

    chmod 666 /dev/sdc
    
  • Avvia la macchina virtualbox
  • Al termine, reimpostare l'autorizzazione sdc1 per la sicurezza:

    chmod 660 /dev/sdc1
    

In quanto sopra puoi vedere che ho dovuto ripristinare alcune volte le autorizzazioni per la memory stick, perché ogni volta veniva ripristinato il root.

Sto usando Mandriva Linux, ma dovrebbe essere più o meno lo stesso in Ubuntu


Il permesso di armeggiare qui è un pessimo consiglio. Prima di tutto, lo stai facendo come root, quindi non hai davvero bisogno di cambiare le autorizzazioni per far funzionare quei comandi. In secondo luogo, è meglio aggiungere l'utente appropriato nel gruppo di dischi in modo che non sia nemmeno necessario.
Evan Teran,

@ Evan Teran L'hai mai provato? E sì, l'utente fa parte del gruppo di dischi. Questo è il metodo che uso ancora oggi con il mio sistema operativo Linux. Wayne Sallee Wayne@WayneSallee.com
Wayne Sallee il

Non ho detto che non avrebbe funzionato, ho detto che non era un buon consiglio. Indipendentemente dai gruppi dell'utente, se stai eseguendo i comandi come root, non dovresti nemmeno aver bisogno delle autorizzazioni perché l'accesso root è comunque. Inoltre, creare file e cartelle con 777 e 666 è una cattiva pratica, non dovresti rendere le cose leggibili o scrivibili nel mondo a meno che non lo siano.
Evan Teran,

@ Evan Teran non è un buon consiglio per eseguire un programma come root, che non ha bisogno di essere root. La memory stick è attiva solo per un po 'di tempo e non si trova su un server. È una questione di dove vuoi mettere il rischio. Ho scelto di mettere il rischio sulla memory stick anziché sul sistema. Wayne@WayneSallee.com
Wayne Sallee il

Correzione: non ho inserito il mio utente nel gruppo di dischi. Wayne@WayneSallee.com
Wayne Sallee il

1

Se l'unità USB è un'unità avviabile EFI, Plop Boot Manager non funzionerà in quanto non supporta l'avvio EFI. Ciò che ha funzionato per me in questo caso è stato l'utilizzo del boot manager rEFInd ( http://www.rodsbooks.com/refind/ ).

  1. Scarica isE avviabile rEFInd da http://sourceforge.net/projects/refind/files/0.11.4/refind-cd-0.11.4.zip/download e decomprimilo.

  2. Apri le impostazioni della macchina virtuale in VirtualBox e allega il file ISO del CD di rEFInd.

  3. Assicurarsi che l'opzione "Abilita EFI (solo sistemi operativi speciali)" nelle impostazioni della macchina virtuale nella scheda "Sistema" sia abilitata.

  4. Avvia la macchina virtuale e dovresti vedere rEFInd menu di avvio:

menu di ricerca

  1. Collega la tua unità USB in VirtualBox.

  2. Premere backspace per aggiornare il menu o attendere pochi secondi e l'unità dovrebbe apparire nel menu.

  3. Seleziona l'unità USB e premi invio e l'unità USB dovrebbe iniziare l'avvio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.