in ,

How-To: Εγκατασταση Windows via USB. The hard way…

Δεν είναι λίγες οι φορές που έχουμε αναφερθεί στη συνεχώς αυξανόμενη κίνηση της αγοράς των netbooks και στο πως αυτά τα μικρά έχουν καταφέρει να μπουν στα σπίτια όλων αποτελώντας πλέον το trend gadget της εποχής!  Συνήθως τα βλέπουμε να έρχονται με προεγκατεστημένα Windows Xp και σε μερικές περιπτώσεις μαζί με μια διανομή Linux σε λειτουργία dual boot.

Τι γίνεται όμως στην περίπτωση που θέλουμε να αντικαταστήσουμε το default λειτουργικό με κάποια άλλη έκδοση  ή όταν φτάσει πλέον αυτή η κακιά η στιγμή  που το αναμενόμενο format του συστήματος αποδειχθεί μονόδρομος; Μην ξεχνάμε ότι εδώ δεν έχουμε την “πολυτέλεια” της διαδικασίας boot from cd καθότι δεν υπάρχει optical drive!

Με αφορμή λοιπόν μια τέτοια κατάσταση και συγκεκριμένα το “χτύπημα” του λειτουργικού σε ένα Acer Aspire One με συνεχόμενες εκνευριστικές BSOD (οι γνωστές σε όλους “Μπλε Οθόνες” που σίγουρα έχει συναντήσει κάθε windows user στη καριέρα του) βρέθηκα να ψάχνω στο google λύσεις εγκατάστασης των windows μέσω usb flash disk (η τεχνολογική εξέλιξη  σε όλο της μεγαλείο). Αυτό που παρατήρησα είναι ότι υπάρχει πληθώρα έτοιμων λύσεων μέσα από προγράμματα τα οποία με αυτοματοποιημένες διαδικασίες έχουν ως αποτέλεσμα την παραμετροποίηση ενός usb flash σε window’s bootable  disk με την λογική plug n’  play.

Μέχρι να καταλήξω σε μια από τις προτεινόμενες λύσεις και επειδή είμαι από αυτούς που τους αρέσει να πειραματίζονται σε κάθε επίπεδο, έψαξα και βρήκα αρκετές πληροφορίες για το πως “δουλεύει η όλη διαδικασία” και κατέληξα στο παρακάτω how-to το οποίο στην ουσία αναλύει κάθε βήμα που πρέπει να γίνει ακολουθώντας το “δύσκολο δρόμο” της manual παραμετροποίησης των αρχείων του συστήματος, με αποτέλεσμα ακριβώς το ίδιο με αυτό των έτοιμων λύσεων! Μια αρκετά advanced διαδικασία θα έλεγα η οποία δοκιμάστηκε και δουλεύει άψογα… Οι συμβιβαζόμενοι σε quick & easy λύσεις κάπου εδώ μας αφήνουν, καθώς περνάμε στο καθαυτού αντικείμενο της εξέτασης! Οι λάτρεις του πειραματισμού, οι τύποι με geeky χαρακτήρα και κάθε άλλος “καμένος” (με την καλή έννοια πάντα) ας αρχίσει να κρατάει σημειώσεις.

Αρχικά για την όλη υλοποίηση  θα χρειαστούμε:

  • Ένα USB Flash disk χωρητικότητας 2GB ή μεγαλύτερο.
  • CD με την έκδοση των Windows που θέλουμε να εγκαταστήσουμε.
  • Πρόγραμμα δημιουργίας και εγγραφής .iso (π.χ WinISO, PowerISO κ.α)
  • To Cabinet Software Development Kit (Cab SDK) της Microsoft.
  • Ένα υπολογιστή με optical drive (cd/dvd rom) και θύρα USB.
  • Ένα netbook με επιλογή boot option στα Bios για USB HDD ή USB Flash Drive.

Αφού όλα τα παραπάνω είναι διαθέσιμα, συνεχίζουμε στη διαδικασία της υλοποίησης ως εξής:

  • Δημιουργούμε ένα νέο κατάλογο σε κάποιο μέρος του σκληρού δίσκου στον οποίο θα δουλεύουμε όλες τις αλλαγές και τροποποιήσεις στα αρχεία του συστήματος, δίνοντας του ένα σχετικό όνομα (π.χ win_to_usb).
  • Περνάμε το cd των windows σε εικόνα, με την βοήθεια  ενός εργαλείου διαχείρισης αρχείων .iso (στην περίπτωση μας το PowerISO).
  • Πηγαίνοντας στην καρτέλα “Εργαλεία” -> “Δημιουργία Αρχείου Εικόνας CD/DVD” και επιλέγοντας τη διαδρομή του cdrom drive που βρίσκεται το cd των Windows, διαλέγουμε τέλος,  ένα όνομα για το αρχείο .iso και τον κατάλογο που θέλουμε να αποθηκευτεί αυτό.

Εξαγωγή Αρχείων

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

Επιλέγοντας “Αρχείο” -> “Άνοιγμα” από το PowerISO ανοίγουμε την εικόνα .iso που δημιουργήσαμε και βρίσκουμε τον κατάλογο “i386” μέσα στο οποίο αναζητούμε τα παρακάτω αρχεία:

  • TXTSETUP.SIF
  • DOSNET.INF
  • USB.IN_
  • USBPORT.IN_
  • USBSTOR.IN_

Αφού βρούμε όλα τα αρχεία, τα μαρκάρουμε και με “δεξί κλικ ->Εξαγωγή (ή  “Ενέργεια” -> ‘Εξαγωγή” από την βασική μπάρα εργαλείων) αντιγράφουμε τα αρχεία στον κατάλογο που έχουμε δημιουργήσει. (στο παράδειγμα μας win_to_usb).

Εν συνεχεία, αποσυμπιέζουμε με τη βοήθεια εργαλείου αποσυμπίεσης (winrar, winzip, 7zip κ.α) το Microsoft Cab SDK  και αντιγράφουμε το φάκελο του, στον ίδιο κατάλογο που τοποθετήσαμε τα αρχεία στην προηγούμενη ενέργεια. Αν δεν έχουμε κατεβάσει το Cab SDK το κατεβάζουμε από το αντίστοιχο link και προχωράμε στη συνέχεια της διαδικασίας όπως αναφέρεται παραπάνω.

Αποσυμπίεση Αρχείων IN_

Ήρθε η ώρα του command line. Ανοίγουμε την γραμμή εντολών των windows (γνωστή ως Command Prompt) Από την “Έναρξη” ->”Εκτέλεση” και γράφοντας “cmd” (χωρίς τα “) ή από “Προγράμματα”-> “Βοηθήματα”. Στο παράθυρο εντολών που ανοίγει, ανατρέχουμε στο directory που βρίσκεται ο κατάλογος που έχουμε δημιουργήσει για να δουλεύουμε:

C:\Users\your_username>_ cd/ (εντολή με την οποία επιστρέφουμε στο root directory (C:\))

C:\cd  name_of_your_working_folder  (π.χ cd  win_to_usb)

Αφού βεβαιωθούμε ότι βρισκόμαστε μέσα στο φάκελο που έχουμε εξάγει τα αρχεία παραπάνω (μπορούμε να δούμε όλα τα περιεχόμενα του φακέλου πληκτρολογώντας απλά την εντολή  “dir” δίπλα στο φάκελο (C:\win_to_usb> dir), εκτελούμε για κάθε ένα από τα αρχεία με την κατάληξη .IN_  χωριστά, την εντολή CABARC X (για παράδειγμα C:\win_to_usb>CABARC X USB.IN_ ) Αυτή η ενέργεια θα αποσυμπιέσει τα αρχεία IN_ ώστε να μπορέσουμε στο επόμενο βήμα, να τα επεξεργαστούμε με τη βοήθεια του notepad  και να κάνουμε τις αλλαγές που χρειάζεται! Με την ολοκλήρωση της διαδικασίας, μπορείτε αν θέλετε να σβήσετε μετά τα αρχεία με κατάληξη .IN_.

Τροποποίηση Αρχείων

Σε αυτό το σημείο, χρησιμοποιώντας το “notepad” των Windows για να ανοίγουμε τα αρχεία, θα πραγματοποιήσουμε κάποιες διορθώσεις και αλλαγές πάνω σε αυτά ώστε τα Windows να βλέπουν τις usb συσκευές όχι μόνο ως μέσα αποθήκευσης, αλλά σαν Σκληρούς Δίσκους! (ωραίο ακούγεται ε; για να δούμε…)

Ανοίγουμε το αρχείο TXTSETUP.SIF, βρίσκουμε τις παρακάτω καταχωρήσεις (θα χρειαστεί ο μαγικός συνδυασμός Ctrl+F) και αλλάζουμε κάποια στοιχεία από το [InputDevicesSupport.Load] στο [BootBusExtenders.Load] όπως φαίνεται παρακάτω (κάθε καταχώρηση που είναι με μπλε χρώμα θα πρέπει να διαγραφεί).

[BootBusExtenders.Load]
pci = pci.sys
acpi = acpi.sys
isapnp = isapnp.sys
acpiec = acpiec.sys
ohci1394 = ohci1394.sys
usbehci = usbehci.sys
usbohci = usbohci.sys
usbuhci = usbuhci.sys
usbhub = usbhub.sys
usbstor = usbstor.sys

[InputDevicesSupport.Load]
usbehci = usbehci.sys
usbohci = usbohci.sys
usbuhci = usbuhci.sys
usbhub = usbhub.sys

usbccgp = usbccgp.sys
hidusb = hidusb.sys
serial = serial.sys
serenum = serenum.sys
usbstor = usbstor.sys

Στη συνέχεια κάνουμε αντίστοιχα το ίδιο από [BootBusExtenders] στο [InputDevicesSupport]

[BootBusExtenders]
pci = “PCI-Bustreiber”,files.pci,pci
acpi = “ACPI Plug & Play-Bustreiber”,files.acpi,acpi
isapnp = “ISA Plug & Play-Bustreiber”,files.isapnp,isapnp
acpiec = “Integrierter ACPI-Controllertreiber”,files.none,acpiec
ohci1394 = “IEEE-1394-Bus-OHCI-konformer Anschlusstreiber”,files.ohci1394,ohci1394
usbehci = “Erweiterter Hostcontroller”,files.usbehci,usbehci
usbohci = “Open Hostcontroller”,files.usbohci,usbohci
usbuhci = “Universeller Hostcontroller”,files.usbuhci,usbuhci
usbhub = “Standard-USB-Hubtreiber”,files.usbhub,usbhub
usbstor = “USB-Speicherklassentreiber”,files.usbstor,usbstor


[InputDevicesSupport]

usbehci = “Erweiterter Hostcontroller”,files.usbehci,usbehci
usbohci = “Open Hostcontroller”,files.usbohci,usbohci
usbuhci = “Universeller Hostcontroller”,files.usbuhci,usbuhci
usbhub = “Standard-USB-Hubtreiber”,files.usbhub,usbhub

hidusb = “HID-Parser”,files.hidusb,hidusb
serial = “Treiber fοr seriellen Anschluss”,files.none,serial
serenum = “Enumerator fοr seriellen Anschluss”,files.none,serenum
usbstor = “USB-Speicherklassentreiber”,files.usbstor,usbstor
usbccgp = “USB Generic Parent Driver”,files.usbccgp,usbccgp

Μετά βρίσκουμε το [HiveInfs.Fresh] και του προσθέτουμε τις καταχωρήσεις που είναι με πράσινο χρώμα.

[HiveInfs.Fresh]

ΑddReg = hivedef.inf,AddReg
AddReg = hivesys.inf,AddReg
AddReg = hivesft.inf,AddReg
AddReg = hivecls.inf,AddReg
AddReg = hiveusd.inf,AddReg
AddReg = dmreg.inf,DM.AddReg
AddReg = usbboot.inf,usbservices

Το ίδιο κάνουμε και για το [SourceDisksFiles]

[SourceDisksFiles]
usbboot.inf = 1,,,,,,_x,3,,3
bootvid.dll = 1,,,,,,3_,2,0,0,,1,2
kdcom.dll = 1,,,,,,3_,2,0,0,,1,2

Σώζουμε όσες αλλαγές κάναμε στο TXTSETUP.SIF και το κλείνουμε.

Ανοίγουμε τώρα το αρχέιο DOSNET.INF και αλλάζουμε το [Files] όπως φαίνεται παρακάτω:

[Files]

d1,usbboot.inf
d1,_default.pif
d1,12520437.cpx
d1,12520850.cpx

Σώζουμε και κλείνουμε το αρχείο DOSNET.INF.

Τώρα πάμε στο USB.INF και αλλάζουμε με το γνωστό πλέον τρόπο τις καταχωρήσεις όπως φαίνεται παρακάτω:

[StandardHub.AddService]
DisplayName = %StandardHub.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\usbhub.sys
LoadOrderGroup = Boot Bus Extender

[CommonClassParent.AddService]
DisplayName = %GenericParent.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\usbccgp.sys
LoadOrderGroup = Boot Bus Extender

Η διαδικασία παραμένει ίδια και για το USBPORT.INF ως εξής:

[EHCI.AddService]
DisplayName = %EHCIMP.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\usbehci.sys
LoadOrderGroup = Boot Bus Extender
[OHCI.AddService]
DisplayName = %OHCIMP.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\usbohci.sys
LoadOrderGroup = Boot Bus Extender
[UHCI.AddService]
DisplayName = %UHCIMP.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\usbuhci.sys
LoadOrderGroup = Boot Bus Extender
[ROOTHUB.AddService]
DisplayName = %ROOTHUB.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\usbhub.sys
LoadOrderGroup = Boot Bus Extender

Αντίστοιχα για το USBSTOR.INF:

[USBSTOR.AddService]
DisplayName = %USBSTOR.SvcDesc%
ServiceType = 1
StartType = 0
Tag = 3

ErrorControl = 1
ServiceBinary = %12%\USBSTOR.SYS
LoadOrderGroup = Boot Bus Extender

Τώρα θα πάμε να δημιουργήσουμε ένα αρχείο με όνομα USBBOOT.INF. Κάνοντας μέσα στο φάκελο μας, δεξί κλικ-> “Νέο Αρχείο Κειμένου” και στη συνέχεια θα αλλάξουμε την κατάληξη του αρχείου από .ΤΧΤ σε .INF. Ανοίγουμε το νέο αρχείο και πάλι με “Notepad” και αντιγράφουμε μέσα όλα τα παρακάτω.

[usbservices]
HKLM,”SYSTEM\CurrentControlSet\Services\USBSTOR”,”DisplayName”,0×00000000,”USB Mass Storage Driver”
HKLM,”SYSTEM\CurrentControlSet\Services\USBSTOR”,”ErrorControl”,0×00010001,1
HKLM,”SYSTEM\CurrentControlSet\Services\USBSTOR”,”Group”,0×00000000,”System Reserved”
HKLM,”SYSTEM\CurrentControlSet\Services\USBSTOR”,”ImagePath”,0×00020000,”system3 2\DRIVERS\USBSTOR.SYS”
HKLM,”SYSTEM\CurrentControlSet\Services\USBSTOR”,”Start”,0×00010001,0
HKLM,”SYSTEM\CurrentControlSet\Services\USBSTOR”,”Type”,0×00010001,1

HKLM,”SYSTEM\CurrentControlSet\Services\usbehci”,”DisplayName”,0×00000000,”USB 2.0 Enhanced Host Controller Miniport Driver”
HKLM,”SYSTEM\CurrentControlSet\Services\usbehci”,”ErrorControl”,0×00010001,1
HKLM,”SYSTEM\CurrentControlSet\Services\usbehci”,”Group”,0×00000000,”System Reserved”
HKLM,”SYSTEM\CurrentControlSet\Services\usbehci”,”ImagePath”,0×00020000,”system3 2\DRIVERS\usbehci.sys”
HKLM,”SYSTEM\CurrentControlSet\Services\usbehci”,”Start”,0×00010001,0
HKLM,”SYSTEM\CurrentControlSet\Services\usbehci”,”Type”,0×00010001,1

HKLM,”SYSTEM\CurrentControlSet\Services\usbhub”,”DisplayName”,0×00000000,”USB2 Enabled Hub”
HKLM,”SYSTEM\CurrentControlSet\Services\usbhub”,”ErrorControl”,0×00010001,1
HKLM,”SYSTEM\CurrentControlSet\Services\usbhub”,”Group”,0×00000000,”System Reserved”
HKLM,”SYSTEM\CurrentControlSet\Services\usbhub”,”ImagePath”,0×00020000,”system32 \DRIVERS\usbhub.sys”
HKLM,”SYSTEM\CurrentControlSet\Services\usbhub”,”Start”,0×00010001,0
HKLM,”SYSTEM\CurrentControlSet\Services\usbhub”,”Type”,0×00010001,1

HKLM,”SYSTEM\CurrentControlSet\Services\usbuhci”,”DisplayName”,0×00000000,”Micro soft USB Universal Host Controller Miniport Driver”
HKLM,”SYSTEM\CurrentControlSet\Services\usbuhci”,”ErrorControl”,0×00010001,1
HKLM,”SYSTEM\CurrentControlSet\Services\usbuhci”,”Group”,0×00000000,”System Reserved”
HKLM,”SYSTEM\CurrentControlSet\Services\usbuhci”,”ImagePath”,0×00020000,”system3 2\DRIVERS\usbuhci.sys”
HKLM,”SYSTEM\CurrentControlSet\Services\usbuhci”,”Start”,0×00010001,0
HKLM,”SYSTEM\CurrentControlSet\Services\usbuhci”,”Type”,0×00010001,1

HKLM,”SYSTEM\CurrentControlSet\Services\usbohci”,”DisplayName”,0×00000000,”Micro soft USB Open Host Controller Miniport Driver”
HKLM,”SYSTEM\CurrentControlSet\Services\usbohci”,”ErrorControl”,0×00010001,1
HKLM,”SYSTEM\CurrentControlSet\Services\usbohci”,”Group”,0×00000000,”System Reserved”
HKLM,”SYSTEM\CurrentControlSet\Services\usbohci”,”ImagePath”,0×00020000,”system3 2\DRIVERS\usbohci.sys”
HKLM,”SYSTEM\CurrentControlSet\Services\usbohci”,”Start”,0×00010001,0
HKLM,”SYSTEM\CurrentControlSet\Services\usbohci”,”Type”,0×00010001,1

Η διαδικασία της τροποποίησης των αρχείων του συστήματος, κάπου εδώ φτάνει στο τέλος της!

Συμπίεση των αρχείων .inf σε ΙΝ.

Αν δεν έχετε σβήσει τα αρχεία .IN από πριν, ήρθε πλέον η ώρα να το κάνετε! Στη συνέχεια πάμε πάλι στη γραμμή εντολών (cmd) στον κατάλογο που δουλεύαμε ως τώρα, και εκτελούμε την εντολή CABARC N για καθένα από τα αρχεία ώς εξής:

CABARC N USB.IN_ usb.inf
CABARC N USBPORT.IN_ usbport.inf
CABARC N USBSTOR.IN_ usbstor.inf

Το μόνο που χρειάζεται για την ολοκλήρωση του project, είναι να ξανά-εισάγουμε τα τροποποιημένα πλέον αρχεία στο .iso των windows.

Ανοίγουμε με το PowerISO (ή όποιο πρόγραμμα χρησιμοποιήσατε), το .iso. Βρίσκουμε τα αρχεία TXTSETUP.SIF, USB.IN_, USB.IN_.USBPORT.IN_USBSTOR.IN_ από τον κατάλογο “i386” και τα διαγράφουμε! Στη συνέχεια σώνουμε το .iso το κλείνουμε και το ξανά-ανοίγουμε. Αντιγράφουμε τα τροποποιημένα μας αρχεία τα οποία θα πρέπει να είναι αυτά:

• DOSNET.INF
• TXTSETUP.SIF
• USB.IN_
• USBPORT.IN_
• USBSTOR.IN_
• USBBOOT.INF

Μέσα στο κατάλογο “i386” του .iso, το σώνουμε και το κλείνουμε!

Αφού “κάψουμε” το .iso σε ένα συνηθισμένο cd, στη συνέχεια τοποθετούμε το USB flash disk μας σε μιά θύρα usb του υπολογιστή (ΠΡΟΣΟΧΗ! Πάνω σε hub δεν λειτουργεί) και αφού κάνουμε επάνεκκίνηση, επιλέγουμε boot από cd και κάνουμε την εγκατάσταση των windows μέσα στο USB μας, με τη γνωστή διαδικασία που θα ακολουθούσαμε σαν να ήταν ένας απλός σκληρός δίσκος.

Παρατηρήσεις:

-Οι οδηγοί USB θα βγάλουν ένα μήνυμα ειδοποίησης ότι δεν είναι πιστοποιημένοι! Μην σας ανησυχήσει αυτό, είναι φυσιολογικό να συμβεί.

-Με το πέρας της εγκατάστασης θα βγει ένα μήνυμα λάθους, ότι δεν υπάρχει το pagefile. Δεδομένου ότι τα windows λειτουργούν χωρίς pagefile αγνοείτε αυτό το μήνυμα!

-Η Εγκατάσταση ίσως διαρκέσει αρκετή ώρα πέραν της κανονικής συνηθισμένης. (σε μένα χρειάστηκε περίπου 3 ώρες).

Σίγουρα όλο το παραπάνω δεν αποτελεί την ευκολότερη διαδικασία για εγκατάσταση windows μέσω usb αλλά αποτελεί μια προχωρημένη, customized εμπειρία που εκτός της γνώσης που προσφέρει λόγω του επιπέδου δυσκολίας της, δίνει και την ευχαρίστηση του σημαντικού επιτεύγματος!  Εγώ πάντως το ευχαριστήθηκα… περιμένω τα σχόλια σας, καθώς και παρατηρήσεις (ή διορθώσεις αν χρειαστούν)!

Καλές δοκιμές λοιπόν και μην ξεχνάτε… να πειραματίζεστε σε όλους τους τομείς!

My geeky greets 😉

Written by wise

Comments

Leave a Reply

Αφήστε μια απάντηση

Η ηλ. διεύθυνση σας δεν δημοσιεύεται. Τα υποχρεωτικά πεδία σημειώνονται με *

Loading…

0

Νεα δυνατα καλουδια απο την Apple!

Πως να στήσετε ένα lan στο σπίτι σας χωρίς router/switch/hub!