Objectif
Quand vous automatisez la création d’une image master avec par exemple Packer et que vous voulez le faire en UEFI, vous êtes tout de suite confronté au problème de la touche à appuyer pour démarrer l’installation au boot. Heureusement il existe une technique pour pouvoir éliminer ce problème. Dans cet article je vais vous faire voir comment reconstruire une image ISO Windows sans avoir cette touche à appuyer lors du boot.
Source
- Nous devons récupéré l’iso source chez Microsoft
- lI faut l’outil oscdimg fournit dans l’adk Microsoft mais j’ai mis a dispo juste l’exe nécessaire sur mon github.
- Et bien sur le script PowerShell fournie dans la suite de l’article.
Script
$SourcePath = "f:\SW_DVD9_Win_Pro_10_2004_64BIT_French_Pro_Ent_EDU_N_MLF_-2_X22-29755.ISO" $DestinationPath = "c:\iso" # Construct param $oscdimg_param = '-m -o -u2 -udfver102 -bootdata:2#p0,e,b"' + $DestinationPath + '\source\boot\etfsboot.com"#pEF,e,b"' + $DestinationPath + '\source\efi\microsoft\boot\efisys.bin"' + ' "' + $DestinationPath + '\source"' + ' "' + $DestinationPath + '\windows_noprompt.iso"' $robocopy_param = $driveletter + ":\ " + $DestinationPath + "\source\ /MIR" # Remove any previously-existing c:\iso directory Remove-Item -Recurse -Force $DestinationPath -ErrorAction Ignore # Create destination directory New-Item -ItemType Directory -Force -Path $DestinationPath"\source" # Mount iso Mount-DiskImage -ImagePath $SourcePath $driveletter = (Get-DiskImage $SourcePath | Get-Volume).DriveLetter # Copy exact contents of Windows ISO mounted on drive E:\ recurisvely Start-Process robocopy -ArgumentList $robocopy_param -Wait -ErrorAction Stop # Rename of files Rename-Item -Path "$DestinationPath\source\efi\microsoft\boot\cdboot.efi" -NewName cdboot-prompt.efi -ErrorAction Stop Rename-Item -Path "$DestinationPath\source\efi\microsoft\boot\cdboot_noprompt.efi" -NewName cdboot.efi -ErrorAction Stop Rename-Item -Path "$DestinationPath\source\efi\microsoft\boot\efisys.bin" -NewName efisys_prompt.bin -ErrorAction Stop Rename-Item -Path "$DestinationPath\source\efi\microsoft\boot\efisys_noprompt.bin" -NewName efisys.bin -ErrorAction Stop # Packaging ISO Start-Process "c:\windows\system32\oscdimg.exe" -ArgumentList $oscdimg_param -Wait #Unmounting ISO Dismount-DiskImage -ImagePath $SourcePath
Dans la première partie on défini les chemins d’utilisation avec la source et la destination
Ici je défini les paramètres à passer à oscdimg et robocopy
On supprime l’ancien répertoire s’il existe puis on recréer l’arborescence
On monte l’image iso en tant que cd virtuel, et on récupère la lettre du lecteur assigné
Lancement du robocopy pour copier les sources dans le répertoire précédemment créer
on effectue le changement des noms de fichier pour obtenir le résultat souhaité
Enfin on lance la création de la nouvelle image iso exploitable
Démontage de l’iso source pour faire propre 🙂
Conclusion
Je suis maintenant capable d’automatiser la création d’un master en uefi sans intervention humaine.