Δημιουργία εκκινήσιμου Windows USB μέσα από Linux (Ubuntu)

ΣΗΜΕΙΩΣΗ: ΑΥΤΗ Η ΔΗΜΟΣΙΕΥΣΗ ΕΧΕΙ ΓΙΝΕΙ ΠΑΝΩ ΑΠΟ ΕΝΑ ΧΡΟΝΟ ΠΡΙΝ!

Εισαγωγή

Πραγματικά, δεν έχω σαφή απάντηση για ποιό λόγο γράφω έναν τέτοιο οδηγό. Υπάρχει όμως η περίπτωση όπου σε κάποιον θα φανεί χρήσιμος και επειδή βλέπω κάμποσες τέτοιες ερωτήσεις στο διαδίκτυο, έτσι και το αποφάσισα.
Ειλικρινά, αν και δεν θέλω να ακυρώσω τον οδηγό που θα δούμε παρακάτω, δεν σας χρειάζεται αυτό το λειτουργικό σύστημα (Windows). Ακόμη και αν χρειάζεστε κάποιο πρόγραμμα το οποίο δεν υπάρχει σε Linux, υπάρχουν εναλλακτικές οι οποίες λειτουργούν εξίσου καλά. Επίσης, υπάρχει και το VirtualBox.
Ωστόσο, αν βρεθείτε σε εκείνη την ανάγκη όπου χρειάζεται να δημιουργήσετε ένα εκκινήσιμο (bootable) USB stick με Windows μέσα από λειτουργικό Linux, ο παρακάτω οδηγός θα σας φανεί χρήσιμος.



 

Περιεχόμενα

Πακέτα προς εγκατάσταση
Για BIOS/MBR σύστημα
Αντιγραφή αρχείων Windows
Μετατροπή του USB σε εκκινήσιμο (bootable)
Για UEFI/GPT σύστημα
Σημειώσεις
WinUSB


 

Πακέτα προς εγκατάσταση

Πίσω στα περιεχόμενα →
Ως διανομή επίδειξης θα πάρουμε το Ubuntu και αυτό διότι εκεί έχω δοκιμάσει τον οδηγό και λειτουργεί σωστά.
Τα πακέτα που πρέπει να εγκαταστήσουμε ενδέχεται να είναι ήδη εγκατεστημένα στην διανομή μας, αλλά για να είμαστε απόλυτα σίγουροι, ανοίγουμε ένα τερματικό και δίνουμε την παρακάτω εντολή.

sudo apt-get install gparted grub-pc-bin p7zip-full ntfs-3g

tutorial1

Θα χωρίσουμε τον οδηγό σε δυο σκέλη. Πρώτα θα δούμε την εφαρμογή του σε BIOS/MBR συστήματα και έπειτα σε UEFI/GPT.

Σημείωση:
Θα επισημάνω ότι τον συγκεκριμένο οδηγό τον έχω δοκιμάσει μόνο σε BIOS/MBR σύστημα καθώς μόνο τέτοιο διαθέτω.


 

Για BIOS/MBR σύστημα

Πίσω στα περιεχόμενα →
Σε αυτή την περίπτωση υποθέτουμε ότι έχουμε ένα σύστημα με BIOS (ακόμη και CSM – BIOS legacy mode).

USB Format

Θα κάνουμε ένα format στο USB stick, χρησιμοποιώντας το πρόγραμμα Gparted, σε σύστημα αρχείων NTFS.
Σε περίπτωση που δεν το έχετε εγκατεστημένο, εγκαταστήστε το με την παρακάτω εντολή σε ένα τερματικό

sudo apt-get install -y gparted

Πρώτα κάνουμε αποπροσάρτηση το USB

tutorial2

Και έπειτα επιλέγουμε «Μορφοποίηση σε» και ntfs ως σύστημα αρχείων.

tutorial3

Αφού ολοκληρωθεί η διαδικασία, πατάμε στις πληροφορίες ώστε να πάρουμε το UUID το οποίο δημιουργήθηκε διότι θα μας χρειαστεί παρακάτω. Αντιγράψτε το σε έναν κειμενογράφο, πχ τον gedit.

tutorial4

 

Αντιγραφή αρχείων Windows

Πίσω στα περιεχόμενα →
Η επόμενη ενέργεια είναι η αντιγραφή όλων των αρχείων από το ISO των Windows στο USB stick. Εδώ θα εκτελέσουμε μια σειρά από εντολές, μιας και την δουλειά θα την κάνουμε μέσω τερματικού.

tutorial5

1. mkdir WINDOWS (δημιουργία καταλόγου με το όνομα WINDOWS, μέσα στον προσωπικό μας κατάλογο)
2. ls (Βλέπουμε τα περιεχόμενα του προσωπικού μας καταλόγου, έτσι για να πιστοποιήσουμε ότι ο κατάλογος WINDOWS δημιουργήθηκε)
3. cd /media/USERNAME/LABEL/PATH/TO/WINDOWS/ (Εδώ συνδεόμαστε μέσα στον κατάλογο ο οποίος περιέχει το Windows ISO. Φυσικά και αντικαθιστούμε ανάλογα τα USERNAME , LABEL, PATH/TO/WINDOWS.)
4. ls (Πάλι με την ls πιστοποιούμε ότι βρισκόμαστε στον σωστό κατάλογο. Βλέπουμε στο συγκεκριμένο παράδειγμα το αρχείο ονόματι Windows_8.1.ISO)
5. sudo mount -o loop Windows_8.1.ISO ~/WINDOWS (Με αυτή την εντολή κάνουμε προσάρτηση το ISO ως τόμο, μέσα στον WINDOWS κατάλογο που δημιουργήσαμε. Το σύμβολο ~ συμβολίζει τον προσωπικό μας κατάλογο. Το αποτέλεσμα αυτής της εντολής θα είναι η δημιουργία μιας εισαγωγής στον Nautilus(Files) με όνομα UDF Volume)
6. cd (Με την εντολή cd χωρίς παραμέτρους γυρνάμε στον προσωπικό μας κατάλογο).
7. ls WINDOWS/ (Βλέπουμε τα περιεχόμενα του καταλόγου WINDOWS. Να δούμε δηλαδή αν έχει όντως γίνει η προσάρτηση σωστά. Θα πρέπει να δούμε τα αρχεία του ISO εκεί.)
8. rsync -aAXv WINDOWS/* /media/USERNAME/LABEL (αντιγράφουμε ΟΛΑ τα αρχεία του καταλόγου WINDOWS (του ISO δηλαδή) στο USB. Φυσικά θα κάνετε αντικατάσταση των USERNAME και LABEL με τα δικά σας).

Μόλις τελειώσει η διαδικασία μπορούμε να πιστοποιήσουμε ότι τα αρχεία βρίσκονται πλέον μέσα στο USB stick, ανοίγοντας την τοποθεσία του USB στον File Manager (Nautilus).
tutorial6

 

Μετατροπή του USB σε εκκινήσιμο (bootable)

Πίσω στα περιεχόμενα →
Αν και αυτό το βήμα θα μπορούσαμε να το κάνουμε και προηγουμένως, όταν είχαμε το Gparted ανοιχτό, επέλεξα να το γράψω ως ξεχωριστό μιας και μαζί με το επόμενο βήμα (της εγκατάστασης του GRUB) εξυπηρετούν τον ίδιο σκοπό.

Ανοίγουμε το Gparted και το μόνο που κάνουμε εκεί είναι ένα δεξί κλικ στο USB και μέσω της «Διαχείρισης Σημαιών» τοποθετούμε την σημαία boot.

tutorial7

Θα πρέπει να δούμε πλέον την σημαία boot.

tutorial8

Η εγκατάσταση του GRUB στο USB stick θα εξασφαλίσει την εκκίνηση του Windows Installer.
Με την παρακάτω εντολή, εγκαθιστούμε τον GRUB στο USB stick δίνοντάς του το σωστό boot directory.

sudo grub-install --target=i386-pc --boot-directory=/media/USERNAME/LABEL/boot /dev/sd?

Αντικαθιστούμε τα USERNAME, LABEL και sd? με τα δικά μας.

tutorial9

Αφού τελειώσει η διαδικασία το τελευταίο βήμα είναι η δημιουργία ενός αρχείου ονόματι grub.cfg μέσα στον κατάλογο boot/grub στο USB stick μας.

Εδώ χρησιμοποιώ τον gedit απευθείας από το τερματικό. Θυμηθείτε ότι στον gedit (ή όποιον άλλο κειμενογράφο χρησιμοποιούμε) έχουμε ήδη ανοίξει εκείνο το αρχείο με το UUID. Σε εμένα το παρουσιάζει ως «Ανώνυμο Έγγραφο». Δείτε παρακάτω.

tutorial10

Μέσα στο κενό αρχείο grub.cfg γράφουμε τα παρακάτω:

echo "Boot from Windows USB Drive"
insmod ntfs
insmod search_fs_uuid  
insmod chain 
search --no-floppy --fs-uuid <UUID> --set root 
chainloader +1 
boot

Αντικαθιστούμε το UUID με το σωστό.
Αποθηκεύουμε το αρχείο και κάνουμε μια αποπροσάρτηση (ή ασφαλή κατάργηση) του USB.
Πλέον είμαστε έτοιμοι να εκκινήσουμε από αυτό.

Επισήμανση
Θα επισημάνω εδώ ότι την διαδικασία εγκατάστασης των Windows δεν την ολοκλήρωσα. Δοκίμασα τον οδηγό και λειτουργεί μέχρι το σημείο όπου φορτώνουν τα αρχεία των Windows και εμφανίζει την αρχική οθόνη εγκατάστασης.


 

Για UEFI/GPT σύστημα

Πίσω στα περιεχόμενα →
Κάνω για δεύτερη φορά αυτή την επισήμανση.

Την διαδικασία δημιουργίας εκκινήσιμου USB για UEFI/GPT σύστημα δεν την έχω δοκιμάσει καθόλου, μιας και δεν διαθέτω τέτοιο σύστημα. Δεν γνωρίζω 100% αν η παρακάτω διαδικασία θα λειτουργήσει σωστά.

Μιας και θα χρησιμοποιήσουμε τα ίδια εργαλεία, θα γράψω την διαδικασία συνοπτικά επισημαίνοντας τις αλλαγές (τι το διαφορετικό έχει) σε σχέση με την BIOS/MBR.

1. Αφού κάνουμε αποπροσάρτηση το USB μέσω Gparted, κάνουμε κλικ στο «Συσκευή» → «Δημιουργία πίνακα κατατμήσεων» και επιλέγουμε GPT.

2. Αντί για NTFS, δημιουργούμε FAT32 σύστημα αρχείων στο USB stick, όταν κάνουμε Format μέσω του Gparted.

3. Ακολουθούμε την ίδια διαδικασία για να αντιγράψουμε όλα τα αρχεία του Windows ISO στο USB stick.

4. Κοιτάμε στο USB stick μέσα στον κατάλογο boot/efi να πιστοποιήσουμε ότι υπάρχει ένα αρχείο ονόματι bootx64.efi

5. Σε περίπτωση που δεν υπάρχει το αρχείο, ανοίγουμε το αρχείο sources/install.wim (εδώ θα χρειαστούμε το 7z), πλοηγούμαστε στο ./1/Windows/Boot/EFI και κάνουμε εξαγωγή(extract) το αρχείο bootmgfw.efi και έπειτα το μετονομάζουμε σε bootx64.efi. Τέλος, το μεταφέρουμε στον κατάλογο efi/boot (μέσα στο USB stick).

6. Αν θέλουμε να δημιουργήσουμε ένα αντίγραφο των Windows 7, τότε θα αντιγράψουμε όλο τον κατάλογο boot/ από το efi/microsoft στον κατάλογο efi/.

7. Κάνουμε μια ασφαλή κατάργηση του USB stick και δοκιμάζουμε να κάνουμε εκκίνηση από αυτό μέσω του UEFI.


 

Σημειώσεις:

Πίσω στα περιεχόμενα →

  1. Όπως βλέπετε στην παραπάνω διαδικασία (UEFI/GPT), παραλείπεται το βήμα εγκατάστασης του GRUB στο USB stick. Πιθανών δεν χρειάζεται καν, μιας και ο UEFI boot manager του υπολογιστή μας μάλλον θα κάνει αυτή τη δουλειά.
  2. Ο οδηγός είναι βασισμένος σε αυτή την απάντηση από το AskUbuntu.

  3.  

  4. Υπάρχει ένα πρόγραμμα του οποίου στόχος είναι η διευκόλυνση/αυτοματοποίηση της παραπάνω διαδικασίας. Λέγεται WinUSB και το αποθετήριο που το φιλοξενεί βρίσκεται εδώ. Δεν το έχω δοκιμάσει, καθώς από τα σχόλια σε αυτή την απάντηση στο AskUbuntu είδα ότι δεν λειτουργεί σωστά. Επίσης είδα πως αναβαθμίστηκε πρόσφατα (ενώ ήταν ανενεργό για 87 εβδομάδες, σύμφωνα με τα στατιστικά του Launchpad). Είναι μια εναλλακτική του παραπάνω οδηγού και αν λειτουργεί σωστά είναι σίγουρα ευκολότερο στην χρήση.
    Για να το δοκιμάσετε-εγκαταστήσετε απλά εκτελείτε τις παρακάτω εντολές σε ένα τερματικό
  5. sudo add-apt-repository ppa:colingille/freshlight
    sudo apt-get update
    sudo apt-get install winusb
    
  6. Τον συγκεκριμένο οδηγό τον έχω δοκιμάσει και λειτουργεί σε ότι αφορά την διαδικασία BIOS/MBR.
    Σε ότι αφορά UEFI/GPT δεν γνωρίζω αν λειτουργεί όπως πρέπει(τρίτη φορά το λέω).
    Μένει να δοκιμάσετε.

Συμβάλετε κι εσείς με ένα σχόλιο

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση / Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση / Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση / Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση / Αλλαγή )

Σύνδεση με %s