Nano-Server este o opțiune de instalare a Windows Server, cam cum era Core-Server încă din versiuni precedente. Este însă mult mai „rău” decât Core installation. E mic și rău. E headless; adică nu doar că nu mai are interfață grafică – nu are nici măcar consolă de login. Se accesează și se administrează doar remote: de exemplu, prin PowerShell Remoting. Deci trebuie să învăț PowerShell…
Dar iată și veștile bune. O instalare curată avea cca 600-700 MB, cu rolul de Hyper-V în el și ceva drivere; am reușit să-l instalez într-o mașină virtuală pe vremea versiunii beta Windows Server 2016 Technology Preview 2. E cam de 10 ori mai mic decât o instalare de Windows Server „clasică”. Bineînțeles că necesită mult mai puține patch-uri, mult mai puțin RAM și are o suprafață de atac mult mai mică. Se pare că Azure se va baza din greu pe Nano-Server.
Nano-Server nu se instalează așa cum ne-am obișnuit. Se generează o imagine în care injectăm rolurile, driverele… și cu acea imagine dăm drumul mașinii. Neavând consolă, n-ai cum să dai next-next-next. Nu poți nici măcar să pui tastatură la mașina respectivă, așa de „cheală” instalarea. Așa că se apucă Pingu – iarăși – să construiască o imagine de Nano-Server…
The specified module 'NanoServerImageGenerator.psm1' was not loaded because no valid module file was found in any module directory
Nici n-am apucat bine să parcurg pașii din pagina TechNet cu instrucțiuni, c-am și dat de duda de mai sus la rularea comenzii…
Import-Module NanoServerImageGenerator.psm1 -Verbose
Numele fișierului cu modulul PowerShell trebuie prefixat cu calea relativă spre el:
Import-Module .\NanoServerImageGenerator.psm1 -Verbose
Nano Server ca mașină virtuală
Lucrurile au mers ușor cu generarea (și rularea) unei imagini de Nano Server în mașină virtuală. Am generat mai întâi imaginea VHDX, conform instrucțiunilor din pagina TechNet. Acolo ei zic c-ar fi nevoie de VHDX în loc de VHD pentru boot UEFI:
New-NanoServerImage -MediaPath "E:\Temp\Windows Server 2016 Beta 4\" -BasePath .\Base -TargetPath .\Virtual-Machine\NanoServer-IIS.vhdx -ComputerName Pingu-VM2 -DomainName Contoso.com -GuestDrivers –EnableRemoteManagementPort –ReverseForwarders -Packages Microsoft-NanoServer-IIS-Package
Notă: Un pic de atenție la acel –EnableRemoteManagementPort. Fără el, se pare că nu te poți conecta cu PowerShell Remoting la mașina virtuală, deși consola de recovery afișează că ar fi reguli în firewall setate bine-merci și activate pentru portul de WinRM.
Odată pornită mașina virtuală direct cu VHD-ul generat ca disk C:, am putut vedea ce IP și-a tras din DHCP. Apoi m-am putut conecta cu PowerShell la ea:
Set-Item WSMan:\LocalHost\Client\TrustedHosts Pingu-VM2
Get-Item WSMan:\LocalHost\Client\TrustedHosts
Enter-PsSession -ComputerName Pingu-VM2 -Credential "Pingu-VM2\Administrator"
Exit-PsSession
Prima din comenzile de mai sus înțeleg că este opțională pentru mașini aflate în același domeniu. Dar e de reținut că se rulează ca Administrator. A doua comandă e doar de verificare. Asta pentru că setarea TrustedHosts pare să țină minte o singură stație la un moment dat; dacă treci pe sesiune PowerShell Remoting către altă mașină, trebuie să schimbi TrustedHosts.
Nano Server pe o mașină fizică
Noroc cu colegii de la IT care mi-au dat un server mai vechi, retras la pensie, pentru a testa și instalarea asta. Recunosc că mi-am prins urechile la instalarea pe mașina fizică – pentru că nu ai un program de instalare iar instrucțiunile din pagina TechNet nu sunt foarte clare. Nu ți se spune cum să „copiezi” VHD-ul generat cu Nano Server pe un disc fizic ca să bootezi de pe el. Iată.
Pasul 1: Generare VHD cu Nano Server pentru mașina fizică
Comanda conform instrucțiunilor din pagina TechNet:
New-NanoServerImage -MediaPath "E:\Temp\Windows Server 2016 Beta 4\" -BasePath .\Base -TargetPath ".\Physical-Machine\NanoServer-HyperV.vhd" -DomainName Contoso.com -ComputerName NanoServerTests -ReuseDomainNode -OEMDrivers -Compute –EnableRemoteManagementPort
Notă: Am folosit un parametru nedocumentat pentru introducerea mașinii în domeniu –ReuseDomainNode. Pentru că nu mi-a ieșit din prima să fac mașina fizică cum voiam 🙂
Pasul 2: USB stick bootabil
Știam procedura de creare a unui stick USB bootabil, dar mie-mi trebuia un mediu spartan în linie de comandă cu care să aplic Nano Server pe mașina fizică, nu tot kitul de Windows. Așa că am apelat la Windows Recovery:
Pe stația mea Windows 10, Start, Recovery din Control Panel, apoi Create a recovery drive cu stick-ul meu USB de 2 GB.
Odată făcut stick-ul bootabil, tot pe el am pus și VHD-ul cu Nano Server – fișierul NanoServer-HyperV.vhd generat la pasul 1.
Pasul 3: Înfigem imaginea de Nano Server în mașina fizică
Configurai cu chiu cu vai RAID-ul pe server. Greu. Că nu mă pricep. Noroc cu colegii de la IT. Am bălmăjit eu ceva acolo… Cert e că odată pornită mașina fizică de pe stick-ul USB, ajuns în linia de comandă, știam că am 2 discuri „fizice” (adică atât dezvăluia controllerul RAID pentru nivelele de mai sus, că „feroneria” avea mult mai multe discuri fizice „pe bune”). Și tastează Pingu vajnic:
X:\Windows\System32> WpeInit
X:\Windows\System32> DiskPart
> list disk (să văd discurile "fizice")
> select disk 0 (sau discul fizic pe care voiam să pun discul C, de unde bootez Windows)
> clean (șterge partițiile de pe discul selectat, cu toate datele, normal; deci mare atenție)
> create partition primary size=512 (o partiție mică de 512 MB,o va folosi Windows-ul la boot, dar va fi pitită)
> list partition (doar de verificare, listez partițiile)
> select partition 1 (în condițiile date, asta ar fi partiția abia creată pentru boot)
> format quick fs=ntfs (formatez partiția proaspăt creată și selectată cu NTFS)
> active (de pe ea se va boota)
> create partition primary (pentru că nu am specificat size, tot restul discului fizic selectat e folosit; aici voi pune discul C:)
> format quick fs=ntfs (formatez rapid partiția ce va deveni discul meu C:)
> assign letter=C (e clar)
> list volume (ca să văd și io cum sunt mapate discurile fizice, ce literă are stick-ul USB)
> exit (ies din diskpart, c-am făcut partițiile necesare)
La acest moment, știu, de exemplu, că stick-ul meu USB e pe litera D. Cu DiskPart.exe, folosind list volume, select volume și assign letter=<x> pot asigna ce litere vreau eu partițiilor create sau existente. Mă ajută să nu încurc comenzile ulterioare.
Acum copiez VHD-ul cu imaginea Nano Server pe discul C ca să-l pot monta.
X:\Windows\System32> Copy D:\NanoServer.vhd C:\
X:\Windows\System32> DiskPart
> select vdisk file=C:\NanoServer.vhd (pun la cale disc virtual...)
> attach vdisk (îl montez...)
> list volume (și văd că la mine a căpătat litera E:)
> exit
Acum, ținând minte că imaginea mea cu Nano Server pentru mașina fizică e pe discul E:, cum determinai mai sus, aplic imaginea pe mașina fizică cu bcdboot:
X:\Windows\System32> E:
E:\> xcopy E:\ C:\ /h /k /o /r /e (copiez tăt ce e în VHD-ul cu Windows pe C, cu atribute, drepturi, structura de directoare...)
E:\> C:
C:\> cd Windows\System32
C:\Windows\System32> BcdBoot C:\Windows (recunosc că ăsta nu știu exact ce face, am doar o idee vagă c-ar seta să booteze Windows-ul de aici la startup)
C:\Windows\System32> diskpart
> select vdisk file=C:\NanoServer.vhd (focus pe VHD-ul montat mai sus)
> detach vdisk (nu mai am nevoie de VHD, îl de-montez)
> exit (ies din diskpart, c-am demontat VHD-ul, scot discul E:)
C:\Windows\System32> del NanoServer.vhd (nu mai am nevoie de el, ocupă spațiu degeaba)
C:\Windows\System32> exit
La acest moment, am ieșit iar în mediul de recovery al Windows 10. Și-am dat reboot mașinii fizice. Succes. Mi-a apărut consola Nano Server, afișând adresa IP a mașinii. Cu asta, mă pot conecta via PowerShell Remoting ca să continui…