GNU/Linux >> Linux Esercitazione >  >> Linux

Converti la tua installazione di Windows in una VM su Linux

Uso spesso VirtualBox per creare macchine virtuali per testare nuove versioni di Fedora, nuovi programmi applicativi e molti strumenti amministrativi come Ansible. Ho persino utilizzato VirtualBox per testare la creazione di un host guest Windows.

Non ho mai usato Windows come sistema operativo principale su nessuno dei miei personal computer o anche in una macchina virtuale per eseguire attività oscure che non possono essere eseguite con Linux. Tuttavia, faccio volontariato per un'organizzazione che utilizza un programma finanziario che richiede Windows. Questo programma viene eseguito sul computer del responsabile dell'ufficio su Windows 10 Pro, che è stato preinstallato.

Questa applicazione finanziaria non è speciale e un programma Linux migliore potrebbe facilmente sostituirla, ma ho scoperto che molti contabili e tesorieri sono estremamente riluttanti ad apportare modifiche, quindi non sono ancora riuscito a convincere quelli della nostra organizzazione a migrare .

Questo insieme di circostanze, insieme a un recente allarme per la sicurezza, ha reso altamente desiderabile convertire l'host che esegue Windows in Fedora e eseguire Windows e il programma di contabilità in una macchina virtuale su quell'host.

È importante capire che ho un'estrema antipatia per Windows per molteplici ragioni. I principali che si applicano a questo caso sono che mi dispiacerebbe pagare per un'altra licenza di Windows – Windows 10 Pro costa circa $ 200 – per installarlo su una nuova VM. Inoltre, Windows 10 richiede informazioni sufficienti durante la configurazione su un nuovo sistema o dopo un'installazione per consentire ai cracker di rubare la propria identità, in caso di violazione del database Microsoft. Nessuno dovrebbe aver bisogno di fornire il proprio nome, numero di telefono e data di nascita per registrare il software.

Per iniziare

Il computer fisico aveva già un dispositivo di archiviazione NVMe m.2 da 240 GB installato nell'unico slot m.2 disponibile sulla scheda madre. Ho deciso di installare un nuovo SSD SATA nell'host e di utilizzare l'SSD esistente con Windows come dispositivo di archiviazione per la VM Windows. Kingston offre un'eccellente panoramica di vari dispositivi SSD, fattori di forma e interfacce sul suo sito Web.

Più risorse Linux

  • Comandi Linux cheat sheet
  • Cheat sheet sui comandi avanzati di Linux
  • Corso online gratuito:Panoramica tecnica RHEL
  • Cheat sheet della rete Linux
  • Cheat sheet di SELinux
  • Cheat sheet dei comandi comuni di Linux
  • Cosa sono i container Linux?
  • I nostri ultimi articoli su Linux

Questo approccio significava che non avrei dovuto eseguire un'installazione completamente nuova di Windows o di qualsiasi software applicativo esistente. Significava anche che il responsabile dell'ufficio che lavora su questo computer avrebbe utilizzato Linux per tutte le normali attività come e-mail, accesso al Web, creazione di documenti e fogli di calcolo con LibreOffice. Questo approccio aumenta il profilo di sicurezza dell'host. L'unica volta che la macchina virtuale Windows verrebbe utilizzata è eseguire il programma di contabilità.

Prima esegui il backup

Prima di fare qualsiasi altra cosa, ho creato un'immagine ISO di backup dell'intero dispositivo di archiviazione NVMe. Ho creato una partizione su un'unità di archiviazione USB esterna da 500 GB, ho creato un filesystem ext4 su di essa e quindi ho montato la partizione su /mnt . Ho usato dd comando per creare l'immagine.

Ho installato il nuovo SSD SATA da 500 GB nell'host e ho installato lo spin Fedora 32 Xfce su di esso da una Live USB. Al riavvio iniziale dopo l'installazione, sia le unità Linux che Windows erano disponibili nel menu di avvio di GRUB2. A questo punto, l'host potrebbe essere dual-boot tra Linux e Windows.

Cerco aiuto in tutti i luoghi di Internet

Ora avevo bisogno di alcune informazioni sulla creazione di una macchina virtuale che utilizza un disco rigido fisico o un SSD come dispositivo di archiviazione. Ho scoperto rapidamente molte informazioni su come farlo nella documentazione di VirtualBox e in Internet in generale. Sebbene la documentazione di VirtualBox mi abbia aiutato a iniziare, non è completa, tralasciando alcune informazioni critiche. Anche la maggior parte delle altre informazioni che ho trovato su Internet sono piuttosto incomplete.

Con l'aiuto fondamentale di uno dei nostri corrispondenti di Opensource.com, Joshua Holm, sono stato in grado di superare il problema e farlo funzionare con una procedura ripetibile.

Far funzionare

Questa procedura è in realtà abbastanza semplice, anche se è necessario un hack arcano per farlo funzionare. I sistemi operativi Windows e Linux erano già operativi quando ero pronto per questo passaggio.

Innanzitutto, ho installato la versione più recente di VirtualBox sull'host Linux. VirtualBox può essere installato da repository software di molte distribuzioni, direttamente dal repository Oracle VirtualBox o scaricando il file del pacchetto desiderato dal sito Web di VirtualBox e installandolo localmente. Ho scelto di scaricare la versione AMD64, che in realtà è un programma di installazione e non un pacchetto. Uso questa versione per aggirare un problema che non è correlato a questo particolare progetto.

La procedura di installazione crea sempre un vboxusers gruppo in /etc/group . Ho aggiunto gli utenti destinati a eseguire questa VM ai vboxusers e disco gruppi in /etc/group . È importante aggiungere gli stessi utenti al disco gruppo perché VirtualBox viene eseguito come l'utente che lo ha avviato e richiede anche l'accesso diretto a /dev/sdx file speciale del dispositivo per funzionare in questo scenario. Aggiunta di utenti al disco gruppo fornisce quel livello di accesso, che altrimenti non avrebbero.

Ho quindi creato una directory per archiviare le VM e le ho assegnato la proprietà di root.vboxusers e 775 permessi. Ho usato /vms per la directory, ma potrebbe essere qualsiasi cosa tu voglia. Per impostazione predefinita, VirtualBox crea nuove macchine virtuali in una sottodirectory dell'utente che crea la VM. Ciò renderebbe impossibile condividere l'accesso alla VM tra più utenti senza creare un'enorme vulnerabilità di sicurezza. Posizionare la directory VM in una posizione accessibile consente la condivisione delle VM.

Ho avviato VirtualBox Manager come utente non root. Ho quindi utilizzato le Preferenze ==> Generali di VirtualBox menu per impostare la cartella macchina predefinita sulla directory /vms .

Ho creato la VM senza un disco virtuale. Il Tipo dovrebbe essere Windows e la versione dovrebbe essere impostato su Windows 10 64-bit . Impostare una quantità ragionevole di RAM per la VM, ma può essere modificata in un secondo momento purché la VM sia spenta. Sul Disco rigido pagina dell'installazione, ho scelto la voce "Non aggiungere un disco rigido virtuale" e ho cliccato su Crea . La nuova VM è apparsa nella finestra di VirtualBox Manager. Questa procedura ha anche creato il /vms/Test1 directory.

L'ho fatto utilizzando Avanzate menu ed eseguito tutte le configurazioni su un'unica pagina, come mostrato nella Figura 1. La Modalità guidata ottiene le stesse informazioni ma richiede più clic per passare attraverso una finestra per ogni elemento di configurazione. Fornisce un po' di più in termini di testo della guida, ma non ne avevo bisogno.

Figura 1:crea una nuova macchina virtuale ma non aggiungere un disco rigido.

Quindi avevo bisogno di sapere quale dispositivo era stato assegnato da Linux all'unità Windows grezza. Come root in una sessione terminale, usa lshw comando per scoprire l'assegnazione del dispositivo per il disco di Windows. In questo caso, il dispositivo che rappresenta l'intero dispositivo di archiviazione è /dev/sdb .

# lshw -short -class disk,volume
H/W path           Device      Class          Description
=========================================================
/0/100/17/0        /dev/sda    disk           500GB CT500MX500SSD1
/0/100/17/0/1                  volume         2047MiB Windows FAT volume
/0/100/17/0/2      /dev/sda2   volume         4GiB EXT4 volume
/0/100/17/0/3      /dev/sda3   volume         459GiB LVM Physical Volume
/0/100/17/1        /dev/cdrom  disk           DVD+-RW DU-8A5LH
/0/100/17/0.0.0    /dev/sdb    disk           256GB TOSHIBA KSG60ZMV
/0/100/17/0.0.0/1  /dev/sdb1   volume         649MiB Windows FAT volume
/0/100/17/0.0.0/2  /dev/sdb2   volume         127MiB reserved partition
/0/100/17/0.0.0/3  /dev/sdb3   volume         236GiB Windows NTFS volume
/0/100/17/0.0.0/4  /dev/sdb4   volume         989MiB Windows NTFS volume
[root@office1 etc]#

Invece di un dispositivo di archiviazione virtuale situato in /vms/Test1 directory, VirtualBox deve avere un modo per identificare il disco rigido fisico da cui deve essere avviato. Questa identificazione si ottiene creando un *.vmdk file, che punta al disco fisico non elaborato che verrà utilizzato come dispositivo di archiviazione per la macchina virtuale. Come utente non root, ho creato un vmdk file che punta all'intero dispositivo Windows, /dev/sdb .

$ VBoxManage internalcommands createrawvmdk -filename /vms/Test1/Test1.vmdk -rawdisk /dev/sdb
RAW host disk access VMDK file /vms/Test1/Test1.vmdk created successfully.

Ho quindi utilizzato il VirtualBox Manager File ==> Virtual Media Manager finestra di dialogo per aggiungere il vmdk disco sui dischi rigidi disponibili. Ho fatto clic su Aggiungi e il valore predefinito /vms posizione è stata visualizzata nella finestra di dialogo di gestione dei file. Ho selezionato il Test1 directory e quindi Test1.vmdk file. Ho quindi fatto clic su Apri e Test1.vmdk il file è stato visualizzato nell'elenco dei dischi rigidi disponibili. L'ho selezionato e ho fatto clic su Chiudi .

Il passaggio successivo è stato aggiungere questo vmdk disco ai dispositivi di archiviazione per la nostra VM. Nel menu delle impostazioni per la VM Test1 , ho selezionato Archiviazione e fai clic sull'icona per aggiungere un disco rigido. Questo ha aperto una finestra di dialogo che mostrava il Test1vmdk file del disco virtuale in un elenco intitolato Non allegato. Ho selezionato questo file e ho fatto clic su Scegli pulsante. Questo dispositivo è ora visualizzato nell'elenco dei dispositivi di archiviazione collegati alla VM Test1 . L'unico altro dispositivo di archiviazione su questa macchina virtuale è un'unità CD/DVD-ROM vuota.

Ho fatto clic su OK per completare l'aggiunta di questo dispositivo alla VM.

C'era un altro elemento da configurare prima che la nuova macchina virtuale funzionasse. Utilizzando le Impostazioni di VirtualBox Manager finestra di dialogo per la VM Test1 , sono passato alla System ==> scheda madre pagina e spuntato la casella Abilita EFI . Se non lo fai, VirtualBox genererà un errore che indica che non riesce a trovare un supporto di avvio quando tenti di avviare questa VM.

La macchina virtuale ora si avvia dal disco rigido di Windows 10 grezzo. Tuttavia, non ho potuto accedere perché non avevo un account normale su questo sistema e inoltre non avevo accesso alla password per l'account amministratore di Windows.

Sblocco dell'unità

No, questa sezione non riguarda la violazione della crittografia del disco rigido. Piuttosto, si tratta di bypassare la password per uno dei tanti account amministratore di Windows, che nessuno all'interno dell'organizzazione aveva.

Anche se potevo avviare la VM Windows, non potevo accedere perché non avevo account su quell'host e chiedere alle persone le loro password è un'orribile violazione della sicurezza. Tuttavia, avevo bisogno di accedere alla VM per installare le VirtualBox Guest Additions , che fornirebbe l'acquisizione e il rilascio senza interruzioni del puntatore del mouse, mi permetterebbe di ridimensionare la VM in modo che sia più grande di 1024 x 768 ed eseguire la normale manutenzione in futuro.

Questo è un caso d'uso perfetto per la capacità di Linux di modificare le password degli utenti. Anche se sto accedendo all'account dell'amministratore precedente per iniziare, in questo caso, non supporterà più questo sistema e non sarò in grado di distinguere la sua password o i modelli che usa per generarli. Cancellerò semplicemente la password per l'amministratore di sistema precedente.

C'è uno strumento software open source molto carino specifico per questo compito. Sull'host Linux ho installato chntpw , che probabilmente sta per qualcosa come "Change NT PassWord."

# dnf -y install chntpw

Ho spento la VM e quindi ho montato /dev/sdb3 partizione su /mnt . Ho determinato che /dev/sdb3 è la partizione corretta perché è la prima grande partizione NTFS che ho visto nell'output di lshw comando che ho eseguito in precedenza. Assicurati di non montare la partizione mentre la VM è in esecuzione; che potrebbe causare un danneggiamento significativo dei dati sul dispositivo di archiviazione della macchina virtuale. Tieni presente che la partizione corretta potrebbe essere diversa su altri host.

Passa a /mnt/Windows/System32/config directory. Il chntpw programma di utilità non funziona se quella non è la directory di lavoro attuale (PWD). Avvia il programma.

# chntpw -i SAM
chntpw version 1.00 140201, (c) Petter N Hagen
Hive <SAM> name (from header): <\SystemRoot\System32\Config\SAM>
ROOT KEY at offset: 0x001020 * Subkey indexing type is: 686c <lh>
File size 131072 [20000] bytes, containing 11 pages (+ 1 headerpage)
Used for data: 367/44720 blocks/bytes, unused: 14/24560 blocks/bytes.

<>========<> chntpw Main Interactive Menu <>========<>

Loaded hives: <SAM>

  1 - Edit user data and passwords
  2 - List groups
      - - -
  9 - Registry editor, now with full write support!
  q - Quit (you will be asked if there is something to save)


What to do? [1] ->

Il chntpw Il comando utilizza una TUI (Text User Interface), che fornisce una serie di opzioni di menu. Quando viene scelta una delle voci del menu principale, di solito viene visualizzato un menu secondario. Seguendo i nomi dei menu chiari, ho prima scelto la voce di menu 1 .

What to do? [1] -> 1


===== chntpw Edit User Info & Passwords ====

| RID -|---------- Username ------------| Admin? |- Lock? --|
| 01f4 | Administrator                  | ADMIN  | dis/lock |
| 03ec | john                           | ADMIN  | dis/lock |
| 01f7 | DefaultAccount                 |        | dis/lock |
| 01f5 | Guest                          |        | dis/lock |
| 01f8 | WDAGUtilityAccount             |        | dis/lock |

Please enter user number (RID) or 0 to exit: [3e9]

Successivamente, ho selezionato il nostro account amministratore, john , digitando il RID al prompt. Visualizza le informazioni sull'utente e offre voci di menu aggiuntive per gestire l'account.

Please enter user number (RID) or 0 to exit: [3e9] 03eb
================= USER EDIT ====================

RID     : 1003 [03eb]
Username: john
fullname:
comment :
homedir :

00000221 = Users (which has 4 members)
00000220 = Administrators (which has 5 members)

Account bits: 0x0214 =
[ ] Disabled        | [ ] Homedir req.    | [ ] Passwd not req. |
[ ] Temp. duplicate | [X] Normal account  | [ ] NMS account     |
[ ] Domain trust ac | [ ] Wks trust act.  | [ ] Srv trust act   |
[X] Pwd don't expir | [ ] Auto lockout    | [ ] (unknown 0x08)  |
[ ] (unknown 0x10)  | [ ] (unknown 0x20)  | [ ] (unknown 0x40)  |

Failed login count: 0, while max tries is: 0
Total  login count: 47

- - - - User Edit Menu:
 1 - Clear (blank) user password
 2 - Unlock and enable user account [probably locked now]
 3 - Promote user (make user an administrator)
 4 - Add user to a group
 5 - Remove user from a group
 q - Quit editing user, back to user select
Select: [q] > 2

A questo punto, ho scelto la voce di menu 2 , "Sblocca e abilita account utente", che elimina la password e mi consente di accedere senza password. A proposito, questo è un accesso automatico. Quindi sono uscito dal programma. Assicurati di smontare /mnt prima di procedere.

Lo so, lo so, ma perché no! Ho già aggirato la sicurezza su questa unità e host, quindi non importa di una virgola. A questo punto, ho effettuato l'accesso al vecchio account amministrativo e ho creato un nuovo account per me stesso con una password sicura. Ho quindi effettuato l'accesso come me stesso ed ho eliminato il vecchio account amministratore in modo che nessun altro potesse usarlo.

Ci sono anche istruzioni su Internet per l'utilizzo dell'account amministratore di Windows (01f4 nell'elenco sopra). Avrei potuto eliminare o modificare la password su quell'account se non fosse stato attivato un account amministratore dell'organizzazione. Si noti inoltre che questa procedura può essere eseguita da una USB attiva in esecuzione sull'host di destinazione.

Riattivazione di Windows

Quindi ora avevo l'SSD di Windows in esecuzione come VM sul mio host Fedora. Tuttavia, in una frustrante svolta degli eventi, dopo aver eseguito per alcune ore, Windows ha visualizzato un messaggio di avviso che indicava che dovevo "Attivare Windows".

Dopo aver seguito molte altre pagine Web senza uscita, alla fine ho rinunciato a provare a riattivare utilizzando un codice esistente perché sembrava essere stato in qualche modo distrutto. Infine, durante il tentativo di seguire una delle sessioni di chat di supporto virtuale online, l'applicazione virtuale "Richiedi aiuto" ha indicato che la mia istanza di Windows 10 Pro era già attivata. Come può essere questo il caso? Continuava a volere che lo attivassi, ma quando ho provato, ha detto che era già attivato.

Oppure no

Dopo aver trascorso diverse ore in tre giorni a fare ricerche e sperimentazioni, ho deciso di tornare all'avvio dell'SSD originale in Windows e di tornare su questo in un secondo momento. Ma poi Windows, anche se avviato dal dispositivo di archiviazione originale, ha chiesto di essere riattivato.

La ricerca nel sito del supporto Microsoft non è stata di aiuto. Dopo aver dovuto occuparmi dello stesso supporto automatizzato di prima, ho chiamato il numero di telefono fornito solo per essere informato da un sistema di risposta automatica che tutto il supporto per Windows 10 Pro era fornito solo da Internet. A questo punto, avevo quasi un giorno di ritardo per far funzionare il computer e reinstallarlo in ufficio.

Ritorno al futuro

Alla fine l'ho risucchiato, ho acquistato una copia di Windows 10 Home – per circa $ 120 – e ho creato una VM con un dispositivo di archiviazione virtuale su cui installarla.

Ho copiato un gran numero di documenti e fogli di calcolo nella home directory del responsabile dell'ufficio. Ho reinstallato l'unico programma Windows di cui abbiamo bisogno e verificato con il responsabile dell'ufficio che funzionasse e che i dati fossero tutti lì.

Pensieri finali

Quindi il mio obiettivo è stato raggiunto, letteralmente con un giorno di ritardo e circa $ 120 in meno, ma utilizzando un approccio più standard. Sto ancora apportando alcune modifiche alle autorizzazioni e ripristinando la rubrica di Thunderbird; Ho alcuni backup CSV su cui lavorare, ma *.mab i file contengono pochissime informazioni sull'unità Windows. Ho persino usato trova di Linux comando per individuare tutti quelli sul dispositivo di archiviazione originale.

Sono andato in un certo numero di tane di coniglio e ho dovuto estrarmi e ricominciare da capo ogni volta. Mi sono imbattuto in problemi che non erano direttamente correlati a questo progetto, ma che hanno influenzato il mio lavoro su di esso. Questi problemi includevano cose interessanti come il montaggio della partizione di Windows su /mnt sulla mia macchina Linux e ricevendo un messaggio che la partizione era stata chiusa in modo improprio da Windows (sì, sul mio host Linux) e che aveva risolto l'incoerenza. Nemmeno Windows potrebbe farlo dopo più riavvii attraverso la sua cosiddetta modalità di "ripristino".

Forse hai notato alcuni indizi nei dati di output di chntpw utilità. Ho eliminato alcuni degli altri account utente visualizzati sul mio host per motivi di sicurezza, ma ho visto da quelle informazioni che tutti gli utenti erano amministratori. Inutile dire che l'ho cambiato. Sono ancora sorpreso dalle cattive pratiche amministrative che incontro, ma credo che non dovrei esserlo.

Alla fine sono stato costretto ad acquistare una licenza, ma almeno un po' meno costosa dell'originale. Una cosa che so è che il pezzo Linux di questo ha funzionato perfettamente una volta che ho trovato tutte le informazioni necessarie. Il problema riguardava l'attivazione di Windows. Alcuni di voi potrebbero essere riusciti a riattivare Windows. Se è così, mi piacerebbe ancora sapere come hai fatto, quindi aggiungi la tua esperienza ai commenti.

Questo è un altro motivo per cui non mi piace Windows e uso Linux solo sui miei sistemi. È anche uno dei motivi per cui sto convertendo tutti i computer dell'organizzazione in Linux. Ci vuole solo tempo e convincente. Ci è rimasto solo questo programma di contabilità e devo lavorare con il tesoriere per trovarne uno che funzioni per lei. Lo capisco:mi piacciono i miei strumenti e ho bisogno che funzionino nel modo migliore per me.


Linux
  1. Installa OpenVPN sul tuo PC Linux

  2. Esegui le tue applicazioni Windows preferite su Linux

  3. Esegui app Linux sul tuo Chromebook

  4. Come installare la calcolatrice Microsoft Windows su Linux

  5. Come installo 'convert' su un sistema Linux?

Come eseguire il desktop remoto nel tuo server Windows

Come SSH nel tuo server Linux da Windows

Installa Windows 10 su Linux con VirtualBox

Come installare Linux Fedora su Hyper-v Windows 10?

Come installare Linux Mint su Hyper-v Windows 10?

Desktop remoto da Windows a Linux