Prawie dwa lata temu na moim blogu umieściłem wpis o możliwości instalacji Windows Vista i Windows Server 2008 na dysku USB. Rozwiązanie, które wtedy przedstawiłem nie było wygodne, z powodu konieczności posiadania komputera z Hyper-V lub VMware Server.
Nie udało mi się znaleźć nigdzie dobrej metody na instalację Windows 7 i Windows Server 2008 R2 na kluczu USB dlatego postanowiłem się zabrać samemu za napisanie tutoriala. Rozwiązanie to jest rozwojową modyfikacją mojego pomysłu z przed 2 lat, jest od niego też dużo prostsze. Należy pamiętać o tym, że nie jest wspierane przez Microsoft. Domyślnie podczas startu Windows 7 i Windows Server 2008 R2 magistrala USB jest resetowana (tak samo jak w Windows Vista i Windows Server 2008) co w wypadku instalacji na napędzie USB powoduje przerwanie startu i restart komputera, w moim opisie przeciwdziałam temu przez wpisy w rejestrze i edycję plików. Procedura opisywana poniżej wymaga nieco uwagi a nie tylko wklejania poszczególnych linii do CMD. Wszystkie skomplikowane operacje zostały dodatkowo opisane. Jej działanie testowałem na laptopie Dell D630, D430, D6400 oraz na stacji roboczej Dell Vostro 430, na każdym z nich działało poprawnie.
Jeśli mimo to się zdecydowałeś należy się zaopatrzyć w:
- Nośnik instalacyjny Windows 7 (może być na kluczu USB)
- Windows Automated Installation Kit (AIK) for Windows 7
- Napęd USB (dysk lub duży szybki flash) na którym zainstalujemy system. Dla Windows 7 minimalna zalecana wielkość dysku to 16GB, mi udało się jednak do testów zainstalować na flashu 8GB.
Wszystkie poniższe operacje wykonywałem na Windows 7 Ultimate x64 z zainstalowanym pakietem WAIK, gdzie:
- C: to dysk systemowy
- D: napęd DVD (może być to też klucz USB, można również się posłużyć rozpakowanym obrazem) z instalatorem Windows 7
- W porcie USB znajduje się klucz USB na którym zainstalowany zostanie system. UWAGA! Wszystkie dane z nośnika wymiennego zostaną skasowane, nie jest to koniecznością (z punktu 1 można zrezygnować jeśli jesteśmy pewni, że pierwsza partycja podstawowa na kluczu jest aktywna i jest sformatowana na NTFS, w takim wypadku należy zmienić tylko jej literę na Z:), zdecydowałem się na to z powodu przejrzystości opisu.
Ad rem!
- Uruchamiamy CMD z uprawnieniami Administratora, za jego pomocą czyścimy dysk USB, formatujemy jego zawartość i nadajemy oznaczenie Z:.
diskpart
list disk
select disk <numer napędu USB>
clean
create partition primary
select partition 1
active
format quick fs=ntfs
assign letter=Z
exit - Rozpakowanie pliku WIM, przechodzimy do folderu gdzie znajduje się ImageX, w moim przypadku wdrażam wersję X64 (dlatego AMD64 w pierwszej linii, przy wdrażaniu X86 ścieżka będzie miała oczywiście X86 na końcu ). W drugiej linii sprawdzamy jakie są wszystkie wersje systemu dostępne w pliku WIM, w moim przypadku Windows 7 Ultimate X64 był dostępny jako <IMAGE INDEX=”4″>, dlatego w następnym kroku pojawiła się cyfra 4.
cd /d “C:\Program Files\Windows AIK\Tools\amd64”
imagex /info d:\sources\install.wim
imagex /apply /check d:\sources\install.wim 4 Z:\ - Nadpisujemy MBR na napędzie USB (znów robię to dla wersji X64).
cd /d “c:\program files\Windows AIK\Tools\PETools\AMD64\”
bootsect /nt60 Z: /force /mbr - Zmiana parametrów bootowania.
bcdboot Z:\windows /s Z:
- Dodajemy wpisy do rejestru systemu na USB wymuszające wyłączenie pliku wymiany w celu ograniczenia zapisów na napęd USB (w razie chęci posiadania pliku wymiany z komend w linii 2 i 3 można zrezygnować jeśli chcemy zachować plik wymiany o domyślnych parametrach) oraz zmieniamy ustawienia startu usług związanych z magistralą USB.
REG LOAD HKLM\WindowsTemp z:\windows\system32\config\system
REG ADD “HKLM\WindowsTemp\ControlSet001\Control\Session Manager\Memory Management” /v PagingFiles /t REG_MULTI_SZ /d “” /f
REG DELETE “HKLM\WindowsTemp\ControlSet001\Control\Session Manager\Memory Management” /v ExistingPageFiles /f
REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBCCGP /v Start /t REG_DWORD /d 00000000 /f
REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBEHCI /v Start /t REG_DWORD /d 00000000 /f
REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBHUB /v Start /t REG_DWORD /d 00000000 /f
REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBSTOR /v Start /t REG_DWORD /d 00000000 /f
REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBUHCI /v Start /t REG_DWORD /d 00000000 /f
REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBCCGP /v Group /t REG_SZ /d “Boot bus extender” /f
REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBEHCI /v Group /t REG_SZ /d “Boot bus extender” /f
REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBHUB /v Group /t REG_SZ /d “Boot bus extender” /f
REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBSTOR /v Group /t REG_SZ /d “Boot bus extender” /f
REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBUHCI /v Group /t REG_SZ /d “Boot bus extender” /f
REG UNLOAD HKLM\WindowsTemp - Przechodzimy eksploratorem windows do Z:\windows\inf i edytujemy następujące pliki: usb.inf, usbport.inf, usbstor.inf; dodając na początku ich treści:
[*.AddService]
StartType = 0
LoadOrderGroup = boot bus extender - Klucz USB z Windows 7 jest już przygotowany, można się z niego spróbować zabootować. Klucz po przygotowaniu można użyć na innej konfiguracji sprzętowej (uruchomić go na innym komputerze).
- Po automatycznym restarcie najprawdopodobniej system się nie włączy poprawnie. Będzie się resetował kilka sekund po starcie. Jest to spowodowane przywracaniem ustawień domyślnych rejestrów usług magistrali USB przez instalator. Zanim system będzie gotowy do pracy taka sytuacja wydarzy się dwukrotnie. Należy wtedy wykonać po kolei kroki: 5 i 6, po czym zabootować się jeszcze raz. Te same kroki należy podjąć jeśli zmienią się ustawienia i system będzie się resetował podczas startu, zdarza się, że instalacja poprawek zmienia ustawienia rejestrów odpowiedzialnych za USB, co powoduje problemy ze startem.
Przedstawioną metodę można stosować dla Windows 7 i Windows Server 2008 R2 oraz Hyper-V Server 2008 R2 (dla Hyper-V Server 2008 R2 jest wspierane przez Microsoft do instalacji do dysku VHD na USB, opiszę to wkrótce). Warto też mieć na uwadze, że wydajne USB 3.0 niedługo trafi pod strzechy (w tej chwili nie mam możliwości prawdzenia rozwiązania w praktyce), może to spowodować, że rozruch systemu z USB stanie się o wiele bardziej popularny z powodu prędkości porównywalnej do interfejsu SATA 2.
Jeśli chodzi o legalność rozwiązania jestem w trakcie ustalania jakie zdanie na temat tej metody instalacji ma firma Microsoft. Przytoczę fragment licencji Windows 7, w oryginale:
“The software is licensed on a per copy per computer basis. A computer is a physical hardware system with an internal storage device capable of running the software. A hardware partition or blade is considered to be a separate computer.”
Po polsku brzmi to:
“Oprogramowanie jest licencjonowane w trybie kopii na komputer. Komputer to fizyczny system sprzętowy z wewnętrznym urządzeniem magazynującym dane służący do uruchomiania oprogramowania. Partycja sprzętowa lub dysk typu blade są uznawane za oddzielne komputery.”
Biorąc to dosłownie instalacja na kluczu USB znajdującym się wewnątrz sprzętu komputerowego (np. klucz podłączony wewnątrz komputera nie wystający poza obudowę) wydaje się dopuszczalna ale tak jak napisałem parę linijek wyżej jestem w trakcie sprawdzania u źródła.
[update 27.01.2010]
Zgodnie z informacją jaką w dniu dzisiejszym otrzymałem z Centrum Obsługi Klienta Microsoft taka instalacja jest dopuszczona przez licencję Windows 7 i Windows Server 2008 R2. Cytat z maila jaki w tej sprawie otrzymałem: “Instalacja systemu na nośniku danych jakim jest USB, jest możliwa i nie powoduje, że takie postępowanie stoi w sprzeczności z licencją. Należy zwrócić uwagę na fakt, że oprogramowanie załadowane z napędu USB – w przypadku licencji OEM, przypisze się do komputera i instalacja na innym urządzeniu z tego napędu nie jest możliwa“.
źródła, poza własnym doświadczeniem: