Instruktaż/Tutorial PXE+TFTP - czyli instalacja Windows przez sieć

avis

Systems Admin...
Q's Expert
4 Grudzień 2010
364
119
43
52°17'21.9"N 21°02'45.2"E
QNAP
TVS-x71U
Ethernet
1 GbE
Na początek jakby ktoś miał jakieś ale co do tematu to najpierw dam w ryj a potem zmienię jeżeli sugestia będzie słuszna i do przyjęcia :p

No więc ostatnio zainspirowany usługą Windows Deployment Services oferowaną przez serwerowe wersje systemu Windows, przysiadłem i postanowiłem zrobić Qnap Deployment Services :p i niestety ale udało się, dlatego poniżej zamieszczam poradnik jak to cudo ogarnąć :)

Co będzie nam potrzebne:

NAS firmy QNAP
Nośnik instalacyjny Windows Vista, 7, 8 lub 8.1
Obraz Windows Preboot Environement (WinPE) jak go utworzyć przy użyciu Automated Installation Kit znajdziecie tutaj:WinPE: Create a Boot CD, DVD, ISO, or VHD lub pobierzecie stąd dla wersji x86 lub stąd dla wersji x64

Na potrzeby tego poradnika wykorzystałem wersje x86 WinPE



Zaczynamy

Na początek stwórzmy na dysku C:\ dwa katalogi: "image" i "mount"
Nastepnie z nośnika z WinPE do katalogu mount kopiujemy plik boot.wim. Plik ten znajdziemy w katalogu "sources".
Otwieramy wiersz poleceń jako administrator i montujemy nasz plik boot.wim poleceniem:

W systemie Windows 8, 8.1
Kod:
Dism /Mount-Image /ImageFile:"C:\Image\boot.wim" /Index:1 /MountDir:C:\mount
W systemie Windows 7
Kod:
DISM /Mount-Wim /WimFile:C:\Image\boot.wim /Index:1 /MountDir:C:\mount

CMD4.PNG

Kiedy już zamontujemy obraz musimy zatroszczyć się o katalog dla serwera tftp. W tym celu otwieramy interfejs WEB naszego NAS-a i w panelu sterowania przechodzimy do zakładki: "ustawienia uprawnień" a następnie wybieramy opcję "Foldery współdzielone". Tam tworzymy nowy folder udostępniony. W moim przypadku wygląda to tak:

CMD5.PNG


CMD19.PNG

Gdy mamy już utworzony udział sieciowy przechodzimy do katalogu w którym zamontowaliśmy nasz obraz (C:\mount) a tam dalej do: Windows\Boot\PXE i kopiujemy z niego wszystkie pliki (nie katalogi) do naszego udziału tftproot.

CMD8.PNG

Piki do skopiowania​

Po tej operacji odmontowujemy plik boot.wim poleceniem:

W Windows 8, 8.1
Kod:
Dism /Unmount-Image /MountDir:C:\mount /Discard
W Windows 7
Kod:
DISM /Unmount-Wim  /MountDir:C:\mount /Discard

CMD10.PNG

(UWAGA!!! aby plik został odmontowany poprawnie należy zamknąć okna explorera odwołujące się do katalogów w folderze mount).


Następnie kopiujemy do udziału sieciowego zawartość całego nośnika instalacyjnego (UWAGA!!! jeżeli zaznaczyliśmy tak jak ja że folder ma być ukryty dostać sie do niego możemy wpisując w Start->uruchom polecenie: \\<adres ip NAS>\<nazwa folderu> np: \\10.0.0.2\tftproot).

CMD9.PNG

zawartość udziału sieciowego​

Gdy skończymy kopiować pliki z nośnika instalacyjnego kopiujemy nasz plik boot.wim z folderu image do folderu "sources" znajdującego się w naszym udziale sieciowym zamieniając tym samym oryginalny plik.

Na tym etapie mamy już przygotowany system plików, przechodzimy więc do ustawienia naszego serwera NAS.
Na początek wchodzimy w panel sterowania -> serwery aplikacji -> serwer TFTP. Tu włączamy nasz serwer TFTP a jako katalog główny ustawiamy nasz udział sieciowy.

CMD11.PNG

Ostatnim krokiem mającym na celu uruchomienie naszego serwera instalacji zdalnej jest włączenie serwera DHCP na QNAP-ie i ustawienie pliku który pozwoli na bootowanie przez sieć. W tym calu panelu sterowania przechodzimy do zakładki ustawienia sieciowe -> sieć i tu klikamy na ikonkę edycji przy interfejsie sieciowym

CMD12.PNG

W oknie które nam się pojawi w zakładce serwer DHCP włączamy serwer DHCP na QNAP-ie i w pole plik startowy wpisujemy: "wdsnbp.com" (UWAGA!!! przed włączeniem serwera DHCP należy wyłączyć inne serwery DHCP pracujące w sieci. Nie wyłączenie innego serwera DHCP może spowodować konflikty oraz problemy w funkcjonowaniu sieci)

CMD13.PNG

No i to byłoby na tyle w kwesti ustawień, możemy przejść do testów. Do tego celu potrzebny będzie komputer wyposażony w karte sieciową z opcją botowania przez sieć (czasem tą opcję należy włączyć w biosie ale to już musicie znaleźć sami) i próbujemy uruchomić komputer. Jeżeli wszystko pójdzie ok powinniśmy ujrzeć taki ekran:

CMD14.PNG

i tu należy klepnąć klawisz F12 aby procedura bootowania przeszła do kolejnego etapu

CMD15.PNG

Po uruchomieniu komputera zobaczymy ekran z wierszem poleceń. W wierszu poleceń mapujemy nasz dysk poleceniem: net use y: \\<adres ip serwera NAS>\<udział sieciowy> np:

Kod:
net use y: \\10.0.0.2\tftproot

CMD16.PNG

Po zamontowaniu dysku sieciowego przechodzimy na niego (wpisując jego literę np: y:) i uruchamiamy instalatora wydając polecenie: setup.exe. Od tego momentu cała instalacja wygląda jak ta przeprowadzana z dysku DVD lub USB.

CMD17.PNG


CMD18.PNG

I to by było na tyle ot cała filozofia. Podejrzewam że ci bardziej dociekliwi zauważą listę ze screenu na której jest sporo więcej edycji Windowsa 8.1 niż na normalnym nośniku i spytają jak to to tak? i że oni też tak chcą. Odrazu odpowiem, powiem jak to zrobić ale dziś mi się skończyła wena. Dla bardziej dociekliwych podpowiem że chodzi o plik install.wim i dodawanie do niego obrazów instalacyjnych.

Edit:

Usiadłem cichutko w kąciku, pomyślałem i naszła mnie wena. Więc wracając do wyżej wspomnianych wersji, to żeby mieć taką ładną listę trzeba je upakować w jeden plik install wim. No więc jak to zrobić? Nic prostszego bierzemy nośniki z różnymi OS-ami np Windows vista, 7, 8 i co tam jeszcze sobie wymarzycie (oczywiście tylko i wyłącznie dotyczy to windowsów od Visty w górę) i kopiujemy z tychże nośników pliki install.wim do oddzielnych katalogów (jakby jakiś geniusz wpadł na pomysł że skopiuje je wszystkie do jednego katalogu to niech się nie zdziwi że każdy następny kopiowany plik nadpisze mu poprzedni :p no chyba że wcześniej pozmienia nazwy). OK no więc powiedzmy że chcemy mieć win7 i win8 w wersjach x86 i x64 w jednym pliku install wim. Tworzymy na dysku c:\ np strukturę katalogów:

install1.PNG
Do każdego z nich kopiujemy odpowiednio plik install.wim (chyba nie muszę tłumaczyć że z nośnika z win 7 x86 plik install.wim kopiujemy do katalogu win7x86 itd)
Teraz warto by było dowiedzieć się jakie wersje zawiera każdy z pilików, aby to zrobić wydajemy w wierszu poleceń (uruchamiamy go jako administrator) następujące polecenia:

Kod:
dism /get-wiminfo /wimfile:"c:\win7x86\install.wim" >> c:\win7x86\info.txt
dism /get-wiminfo /wimfile:"c:\win7x64\install.wim" >> c:\win7x64\info.txt
dism /get-wiminfo /wimfile:"c:\win8x86\install.wim" >> c:\win8x86\info.txt
dism /get-wiminfo /wimfile:"c:\win8x64\install.wim" >> c:\win8x64\info.txt

Dzięki temu w każdym z katalogów pojawi się plik zawierający informacje o tym jakie wersje systemów znajdują się w danym pliku install.wim

Przykładowy plik:

install2.PNG
Jak widać każda wersja systemu ma swój własny numer indexu i to jest właśnie kluczem do sukcesu. Tak więc aby dodawanie kolejnych wersji do nowego pliku install.wim. W tym celu wydajemy w CMD polecenia:

Kod:
Dism /Export-Image /SourceImageFile:c:\win8x86\install.wim /SourceIndex:1 /DestinationImageFile:c:\install.wim /DestinationName:"Windows 8.1 Professional x86
Dism /Export-Image /SourceImageFile:c:\win8x86\install.wim /SourceIndex:2 /DestinationImageFile:c:\install.wim /DestinationName:"Windows 8.1 Core x86"

Teraz szybki opis tych poleceń:
DISM -> poczytajcie na Technecie co to jest a jak was to nie interesuje to przyjmijcie że tak ma być i już
/Export-Image -> przełącznik powodujący eksportowanie obrazu do nowego pliku
/SourceImageFile -> plik źródłowy
/SourceIndex: -> index obrazu w pliku źródłowym (to o czym pisałem że jest kluczem w całej zabawie)
/DestinationImageFile: -> plik docelowy (czyli ten gdzie będą wszystkie wyeksportowane obrazy)
/DestinationName: -> Przyjazna nazwa możecie wpisać co chcecie (UWAGA!!! jeżeli nazwa zawiera spacje to używacie " ") :p

No więc koniec pierdoł i do rzeczy macie tu schemat, nie chce mi się pisać poleceń dla każdego pliku install wim dlatego zostawiam to waszej inwencji. Na koniec dodam że nie musicie eksportować plików po kolei tak jak są one w oryginalnym obrazie możecie wachlować ich ustawieniem do woli np:

Kod:
Dism /Export-Image /SourceImageFile:c:\win8x86\install.wim /SourceIndex:1 /DestinationImageFile:c:\install.wim /DestinationName:"Windows 8.1 Professional x86"
Dism /Export-Image /SourceImageFile:c:\win8x64\install.wim /SourceIndex:1 /DestinationImageFile:c:\install.wim /DestinationName:"Windows 8.1 Professional x64"
Dism /Export-Image /SourceImageFile:c:\win8x86\install.wim /SourceIndex:2 /DestinationImageFile:c:\install.wim /DestinationName:"Windows 8.1 Core x86"
Dism /Export-Image /SourceImageFile:c:\win8x64\install.wim /SourceIndex:2 /DestinationImageFile:c:\install.wim /DestinationName:"Windows 8.1 Core x64"

W wyniku wykonania tego polecenia dostaniecie plik install.wim zawierający 4 obrazy instalacyjne ustawione kolejno:

Windows 8.1 Professional x86
Windows 8.1 Professional x64
Windows 8.1 Core x86
Windows 8.1 Core x64

I to już cała filozofia

PS.
Każdy wyeksportowany obraz do nowego pliku install.wim dostaje w nim kolejny numer indeksu które nijak się nie maja do oryginalnych plików.

Następny PS.
Polecam w katalogu sources na waszym udziale serwera tftp utworzyć plik ei.cfg z zawartością:

[Channel]
Retail
[VL]
0

Dzięki temu będziecie mieli możliwość wyboru systemu który chcecie zainstalować a dodatkowo podczas instalacji nie będzie wymagany klucz produktu. Szczególnie przydatne przy Win 8 :p
 
Witam, bardzo dziękuje autorowi za poradnik, kawał dobrej roboty :), mam tylko pytanie, po zmianie protokołu na SMB3 dostaje error 58 przy próbie zmapowania dysku (net use ), na SMB2 wszystko śmiga.
 
Nie włączyłem na Qnap serwera DHCP bo mam go włączonego na Mikrotiku i chciałbym aby tak pozostało.
I niestety instalacja nie startuje.
Komputer pobiera IP z DHCP, ale nie odnajduje miejsca skąd miałbym rozpocząć instalację.
Jak to skonfigurować?
Włączyłem na Mikrotiku tftp wskazałem tam IP Qnap i podałem tam "wdsnbp.com" jednak i tak komputery się nie bootują.
Bardzo proszę o pomoc.
Plik jaki utworzyłem 1fichier.com: Cloud Storage jeżeli ktoś może go zweryfikować na działającym serwerze tftp to będę wdzięczny. Przynajmniej coś będzie sprawdzone :)

Proces tworzenia WinPE fajnie jest pokazany tu:
Link: https://www.youtube.com/watch?v=1zDFhSuBWaM

Co prawda ja musiałem zainstalować 2 pakiety pod Win 10 zarówno ADK jak i PE
Oba linki copyPE.cmd not working w odpowiedzi
W opcjach serwera DHCP wartość 66 powinna być ustawiona na adres IP serwera TFTP (QNAPa).
Możliwe że opcje 150 też trzeba będzie tak samo ustawić.
Wartość 66
Opcja 150 ??
a tak dokładniej?


Ok Czytanie nie boli :) znalazłem odpowiedź na moje pytanie w pierwszym poście :)
trzeba ręcznie dopisać komendy net use y: \\X.X.X.X\tftproot oraz setup.exe
Ale czy może się jakoś da zrobić jakiś skrypt lub coś aby to ustawienie się zaczytywało samo i od razu pojawiał się instalator?
 
a co dalej - wiadomo sa aktualizacje itd. chciałbym móc mieć na qnapie najnowszy obraz do instalacji - co z tym mogę zrobić ?
ten temat jest za gruby dla nas - popatrz na dedykowane fora do tego : WinClub czy My Digital Life Forums

aha - jeszcze jedno - nie wiem jak z wsparciem dla UEFI w qnapowym TFTP - zwyczajnie się przerzuciłem na dockerowe https://hub.docker.com/r/linuxserver/netbootxyz - a windowsa z PXE nie instaluje , nie mam takiej potrzeby - całe 10 minut z ISO/USB.
 
a co dalej - wiadomo sa aktualizacje itd. chciałbym móc mieć na qnapie najnowszy obraz do instalacji - co z tym mogę zrobić ?
Jaki system wgrasz taki będziesz mieć. wszystko to co da się ściągnąć jako wersja instalacyjna z Microsoft. Faktycznie za pierwszym razem trzeba z tym chwilę powalczyć i się wczytać ale potem jest już to proste :)
 

Użytkownicy znaleźli tą stronę używając tych słów:

  1. tftp
  2. NetBootXYZ
  3. poradnik