Présentation de Windows Nano Server

Ludovic QUENEC'HDU
Ludovic QUENEC'HDU 1 commentaire 13e lecture en min

Sortie en même temps que Windows server 2016 technical preview 2, Windows Nano Server est un système d’exploitation optimisé pour l’hébergement dans le cloud privé. Il est très proche de la version Core Server mais en version encore plus allégée.

Sur Nano Server nous n’avons pas la possibilité d’ouvrir une session locale, ni par Teminal Services. Il se gère par PowerShell, WMI, WinRM et services de gestion d’urgence (EMS). La partie 32 bits de l’os ne sera pas comprise, elle ne comprendra que 64 bit.

*source MS conférence Microsoft Ignite 2015

Comme on le voit sur le graphique ci-dessus Microsoft annonce les performances suivantes:

  • réduction de la taille du disque VHD de 93 %
  • 92 % de bulletins critique en moins
  • les redémarrages sont 80% plus rapides (pour la partie système)

Windows Nano server est destiné aux utilisés suivants:

  • serveur HyperV
  • serveur de stockage
  • serveur pour des applicatifs dans le cloud
  • mise en cluster

De plus Windows Nano server peut être en cluster

Nous allons voir ici comment préparer une image virtuelle de Windows Nano Server

 

Préparation de l'image

Dans un premier vous aurez besoin d’un script disponible sur Script Center :

Convert-WindowsImage.ps1 — WIM2VHD for Windows 8 and Windows 8.1

Puis de l’image de windows server 2016 technical preview:

https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-technical-preview

une fois que vous avez tout ça, vous pouvez monter l’iso sur votre système:

Nous allons utiliser une image WIM pour créer un  VHD. Mais attention, nous n’utiliserons pas l’image du système par défaut mais une image qui se trouve dans un sous-répertoire qui se nomme NanoServer dans le media d’installation

 

Puis préparer un répertoire dans travail sur votre disque de cette forme: .\nano_server puis un sous-répertoire .\nanos_erver\mountdir Ensuite copié le script téléchargé précédemment à la racine du répertoire .\nano_server

Nous allons utiliser PowerIse pour plus de facilité de lisibilité. Ouvrir Powershell Ise en mode administrateur

puis exécuté le script télécharger avec les paramétrés suivant:

Convert-WindowsImage.ps1 -Sourcepath fichier_source.wim -VHD fichier_destination.vhd –VHDformat VHD -Edition 1

Si on regarde la taille de notre VHD on voit qu’on est 480 Mo, mais attention nous avons une image sans fonctionnalités ajoutées: HyperV, Stockage ou bien encore driver.

 

Ajout des fonctionnalités

Les fonctionnalités de Nano server sont présents dans le répertoire .\NanoServer\Packages dans le media d’installation :

voici le descriptif:

  • Microsoft-NanoServer-Compute-Package.cab: role HyperV
  • Microsoft-NanoServer-FailoverCluster-Package.cab: role cluster
  • Microsoft-NanoServer-Guest-Package.cab: Pilote utilisé Nano Server entant que machine virtuel
  • Microsoft-NanoServer-OEM-Drivers-Package.cab: pilote de base pour les contrôleurs réseau et de stockage
  • Microsoft-NanoServer-Storage-Package.cab:  rôle de server de fichier et composant de stockage

 

Pour ajouter une fonctionnalité voici la procédure à suivre :

Dans un premier temps, vous devez copier les sources des packages en local puis retirer la lecture seule. Je l’ai copié dans le sous-répertoire .\nano_server créé précédemment:

Faite de même pour le sous-répertoire en-us
Puis vous devez vous placer dans le répertoire source sur le media d’installation avec une invite de commande en administrateur. Cela évitera d’ajouter Dism à votre système

Puis monter l’image disque avec dism avec la commande suivante:

				
					dism.exe /Mount-Image /ImageFile:"image.vhd" /Index:1 /MountDir:".\mountdir"
				
			

ensuite il faut ajouter le package que vous souhaitez avec la commande

				
					Dism.exe /Add-Package /PackagePath:.\Packages\Microsoft-NanoServer-Compute-Package.cab /Image:.\mountdir
				
			

puis démonter l’image du répertoire mountdir

				
					Dism.exe /Unmount-Image /MountDir:".\mountdir" /Commit
				
			

voici un exemple de bath pour ajouter toutes les fonctionnalités:

				
					cd F:\sources
dism.exe /Mount-Image /ImageFile:"I:\nano_server\NanoServer.vhd" /Index:1 /MountDir:"I:\nano_server\mountdir"

Dism.exe /Add-Package /PackagePath:"i:\nano_server\Packages\Microsoft-NanoServer-Compute-Package.cab" /Image:I:\nano_server\mountdir

Dism.exe /Add-Package /PackagePath:"i:\nano_server\Packages\en-us\Microsoft-NanoServer-Compute-Package.cab" /Image:I:\nano_server\mountdir

Dism.exe /Add-Package /PackagePath:i:\nano_server\Packages\Microsoft-NanoServer-FailoverCluster-Package.cab /Image:I:\nano_server\mountdir
Dism.exe /Add-Package /PackagePath:i:\nano_server\Packages\en-us\Microsoft-NanoServer-FailoverCluster-Package.cab /Image:I:\nano_server\mountdir

Dism.exe /Add-Package /PackagePath:i:\nano_server\Packages\Microsoft-NanoServer-Guest-Package.cab /Image:I:\nano_server\mountdir

Dism.exe /Add-Package /PackagePath:i:\nano_server\Packages\en-us\Microsoft-NanoServer-Guest-Package.cab /Image:I:\nano_server\mountdir

Dism.exe /Add-Package /PackagePath:i:\nano_server\Packages\Microsoft-NanoServer-OEM-Drivers-Package.cab /Image:I:\nano_server\mountdir

Dism.exe /Add-Package /PackagePath:i:\nano_server\Packages\en-us\Microsoft-NanoServer-OEM-Drivers-Package.cab /Image:I:\nano_server\mountdir

Dism.exe /Add-Package /PackagePath:i:\nano_server\Packages\Microsoft-NanoServer-Storage-Package.cab /Image:I:\nano_server\mountdir

Dism.exe /Add-Package /PackagePath:i:\nano_server\Packages\en-us\Microsoft-NanoServer-Storage-Package.cab /Image:I:\nano_server\mountdir

Dism.exe /Add-Package /PackagePath:i:\nano_server\Packages\Microsoft-OneCore-ReverseForwarders-Package.cab /Image:I:\nano_server\mountdir

Dism.exe /Add-Package /PackagePath:i:\nano_server\Packages\en-us\Microsoft-OneCore-ReverseForwarders-Package.cab /Image:I:\nano_server\mountdir

Dism.exe /Unmount-Image /MountDir:I:\nano_server\mountdir /Commit
				
			
voici le résultat attendu :

Une fois l’ajout des fonctionnalités fait, notre VHD va prendre 160 Mo de plus : 

Ajout d’un driver

Dans cette partie nous allons voir comment ajouter un driver, maintenant si vous utilisez nano server uniquement sur hyperV pour vous pouvez passer cette partie. Nous allons ajouter les drivers VmWare présents dans les VmWare tools. Biensur si vous faites cela n’installe pas le package Microsoft-NanoServer-Guest-Package.cab cela ne  vous servira rien. Je vous montrerai après la conversion du VHD en VMDK. Je vais les prendre depuis un Vm de Windows 10 dans le répertoire C:\Program Files\Common Files\VMware\Drivers 

Nous allons copier ce répertoire dans notre dossier .\nano_server seul les drivers suivants qui vont nous intéresser:

  • pvscsi -> pilote de la carte iscsi
  • vmci -> pilote d’interface de communication de la VM
  • vmxnet3 -> pilote réseau

après le système est à peut prêt le même que pour ajouter un package: Puis vous devez vous placer dans le répertoire source  du média d’installation avec une invite de commande en administrateur: 

Puis monter l’image disque avec dism avec la commande suivante:

				
					dism.exe /Mount-Image /ImageFile: »image.vhd » /Index:1 /MountDir: ».\mountdir »
				
			
				
					dism\dism /Add-Driver /image:.\mountdir /driver: ».\chemin_du_driver »
				
			

puis démonté l’image du répertoire mountdir

				
					Dism.exe /Unmount-Image /MountDir:« .\mountdir » /Commit
				
			

Voila le bath que j’ai utilisé

				
					cd F:\sources dism.exe /Mount-Image /ImageFile: »I:\nano_server\NanoServer.vhd » /Index:1 /MountDir: »I:\nano_server\mountdir » Dism.exe  /Add-Driver /image:I:\nano_server\mountdir /driver: »I:\nano_server\Drivers\vmxnet3″ Dism.exe  /Add-Driver /image:I:\nano_server\mountdir /driver: »I:\nano_server\Drivers\pvscsi » Dism.exe  /Add-Driver /image:I:\nano_server\mountdir /driver: »I:\nano_server\Drivers\vmci\device » Dism.exe /Unmount-Image /MountDir:I:\nano_server\mountdir /Commit 
				
			
Vous devriez avoir ce résultat: 

  vous aurez un warning : WARNING: DISM has skipped driver signature check because the version of running OS and that of target OS do not match. cela n’est pas trop grave le système vous informe juste qu’il va ignorer la signature du pilote, vous pouvez vérifier que le pilote est bien présent en parcourent le VHD dans .\mountdir\Windows\System32\drivers vous constaterez que le driver est bien présent:

Configuration de Nano Server

La façon la plus simple pour configurer Nano Server est d’utiliser un fichier Unattend.xml .  Là nous allons configurer le compte administrateur et le nom du serveur voici la partie à utiliserdu fichier

				
					Unattend.xml : <UserAccounts> <AdministratorPassword> <Value>yourBApasswordhere</Value> <PlainText>true</PlainText> </AdministratorPassword> </UserAccounts>
				
			

 Entre les balises AdministratorPassword les informations du compte administrateur Entre  les balises Value on retrouve le mot de passe

				
					<Value>yourBApasswordhere</Value>
				
			

Entre les balises Plaintext la valeur true indiquée qu’on laisse le mot de passe en clair dans le fichier réponse. Puis pour le nom du serveur:

				
					<ComputerName>ServerName</ComputerName>
				
			

 Entre les balises ComputerName la valeur true indique qu’on laisse le mot de passe en clair dans le fichier réponse. voilà le fichier au complet: 

				
					<!–?xml version=’1.0′ encoding=’utf-8′?> xmlns= »urn:schemas-microsoft-com:unattend » xmlns:wcm= »http://schemas.microsoft.com/WMIConfig/2002/State » xmlns:xsi= »http://www.w3.org/2001/XMLSchema-instance »>   pass= »offlineServicing »>     name= »Microsoft-Windows-Shell-Setup » processorArchitecture= »amd64″ publicKeyToken= »31bf3856ad364e35″ language= »neutral » versionScope= »nonSxS »>       <ComputerName>SRVNANO01</ComputerName>     </component>   </settings>   pass= »oobeSystem »>     name= »Microsoft-Windows-Shell-Setup » processorArchitecture= »amd64″ publicKeyToken= »31bf3856ad364e35″ language= »neutral » versionScope= »nonSxS »>       <UserAccounts>         <AdministratorPassword>            <Value>P@ssw0rd</Value>           

<PlainText>true</PlainText>         </AdministratorPassword>       </UserAccounts>       <TimeZone>Pacific Standard Time</TimeZone>     </component>   </settings>   pass= »specialize »>     name= »Microsoft-Windows-Shell-Setup » processorArchitecture= »amd64″ publicKeyToken= »31bf3856ad364e35″ language= »neutral » versionScope= »nonSxS »>       <RegisteredOwner>TazmenTeam</RegisteredOwner>       <RegisteredOrganization>TazmenWorld</RegisteredOrganization>     </component>   </settings> </unattend> 
				
			

  Puis enregistrer votre fichier Unattend.xml Maintenant pour l’appliquer à notre VHD on utilisera le encore DISM de la façon suivante: Puis vous devez vous placer dans le répertoire source  du média d’installation avec une invite de commande en administrateur: 

Puis monter l’image disque avec dism avec la commande suivante:

				
					dism.exe /Mount-Image /ImageFile: »image.vhd » /Index:1 /MountDir: ».\mountdir » ensuite il faut ajouter le fichier Unattend.xml que vous souhaitez avec la commande

dism\dism /image:.\mountdir /Apply-Unattend:.\unattend.xml
				
			

puis démonter l’image du répertoire mountdir

				
					Dism.exe /Unmount-Image /MountDir:« .\mountdir » /Commit
				
			
Nous devons aussi créer un sous-répertoire \windows\panther dans le VHD, qui sera utilisé par le système pendant l’installation
 
Voici le bath utilisé:
				
					cd F:\sources Dism.exe /Mount-Image /ImageFile: »I:\nano_server\NanoServer.vhd » /Index:1 /MountDir: »I:\nano_server\mountdir » Dism.exe /Image:I:\nano_server\mountdir /Apply-Unattend:I:\nano_server\unattend.xml


Dism.exe /Unmount-Image /MountDir:I:\nano_server\mountdir /Commit
				
			

Configuration du script du premier démarrage

Au premier démarrage de Nano Server il va exécuter un script qui va se trouver dans %WINDIR%\Setup\Scripts\ qui se nomme SetupComplete.cmd
 
voici la méthode que j’ai utilisée :
				
					Au premier démarrage de Nano Server il va exécuter un script qui va se trouver dans %WINDIR%\Setup\Scripts\ qui se nomme SetupComplete.cmd



				
			

voici la méthode que j’ai utilisée :

				
					cd F:\sources dism.exe /Mount-Image /ImageFile: »I:\nano_server\NanoServer.vhd » /Index:1 /MountDir: »I:\nano_server\mountdir » md I:\nano_server\mountdir\Windows\Setup md I:\nano_server\mountdir\Windows\Setup\Scripts copy I:\nano_server\SetupComplete.cmd I:\nano_server\mountdir\Windows\Setup\Scripts Dism.exe /Unmount-Image /MountDir:I:\nano_server\mountdir /Commit
				
			

et voilà le résultat au premier démarrage:

Vous pouvez aussi par exemple configurer votre adresse ip avec NETSH voila un autre exemple si je veux vérifier l’état de la carte réseau, et ensuite lui attribuer une ip fix:

				
					ping 127.0.0.1
netsh interface ip set address « Ethernet0 » static 192.168.40.40 255.255.255.0 192.168.40.2 hostname
				
			

Si vous utilisez Vmware je vous conseille fortement d’utiliser cette dernière méthode, en effet au premier démarrage dans une machine Vmware , la VM aura un peu de mal à trouver son ip par le DHCP

Conversion du VHD en VMDK

Comme vous avez lu plus haut je vais utiliser l’image de Nano serveur dans Vmware, la ça sera Vmware Workstation. Pour convertir l’image je vais utiliser WinImage
La conversion est très simple dans le menu Disk:

sélectionner votre disque VHD

sélectionner une extension dynamique

la conversion se fait

une fois fini cliquer sur ok

nous allons importer le disque dans Vmware
 
Maintenant il faut changer le type de carte utilisé. En effet par défaut ça sera la carte intel mais elle n’est pas reconnue. Vous devrez changer la carte une fois que vous aurez créé votre machine virtuelle en éditant le fichier vmx présent dans le répertoire de la VM:
 
 

puis vous devrait remplacer le paramètre:

ethernet0.virtualDev = « e1000e »
par
ethernet0.virtualDev = « vmxnet3 »
 
 
Ensuite nous avons déjà importé le driver de la carte, le système se chargera du reste:
 

Connexion à nano server

Une fois terminé il ne vous reste plus qu’à ouvrir une session distance. pour piloter nano server vous pouvez utiliser wmi par exemple ici si je veux avoir la liste des processus en cours: 

				
					Get-WmiObject -Class Win32_Process -ComputerName 192.168.40.40 -Credential administrator |select name 
				
			

 Un autre exemple, vous pouvez utiliser PSSession en PowerShell

De même que vous pouvez piloter nano server depuis PowerShell ISE:

Pour le moment il semble qu’il a le même bug que windows server 2016 au démarrage. Quand vous démarrez le serveur, il vous donnera l’illusion que le système est en toujours en train de changer alors qu’il a fini depuis longtemps son initialisation
 

En Résumé :

  1. Concept de Windows Nano Server : Introduction à Windows Nano Server, un système d’exploitation minimaliste de Microsoft.
  2. Caractéristiques Clés : Description des principales fonctionnalités et avantages de Windows Nano Server.
  3. Utilisation et Applications : Aperçu des cas d’utilisation et des scénarios typiques pour Windows Nano Server.
  4. Optimisation et Performance : Mise en lumière de l’efficacité et de la légèreté de Nano Server en termes de performance.
  5. Comparaison avec d’Autres Systèmes : Analyse comparative de Nano Server par rapport à d’autres versions de Windows Server.
Partager cet article
Par Ludovic QUENEC'HDU Expert en Virtualisation et Sécurité Informatique au Service de Grands Comptes et du Logiciel Libre
Ludovic QUENECHDU est un véritable virtuose de la virtualisation et de la sécurité informatique. Depuis son indépendance professionnelle en 2000, il a apporté son expertise à de prestigieux clients tels que Cameroun Telecom, Merryl Lynch, Ernst & Young, AXA, et bien d'autres. En parallèle, Ludovic s'engage régulièrement dans le démarrage de petites entreprises, notamment dans le domaine du logiciel libre, une passion qu'il chérit pour ses valeurs de partage et d'échange. Son parcours professionnel et sa passion pour la technologie en font un acteur incontournable de l'industrie informatique.
1 commentaire