Hey guys!
Using iPXE I'm able to boot to WinPE, mount my network drive and install Windows just fine.
However, I wanted to automount my network share, and start setup.exe automatically.
This is how my boot.ipxe looks like:
Code:
#!ipxe
kernel wimboot
initrd install.bat install.bat
initrd winpeshl.ini winpeshl.ini
initrd bootmgr bootmgr
initrd boot/BCD BCD
initrd boot/boot.sdi boot.sdi
initrd sources/boot.wim boot.wim
boot
And this is the install.bat:
Code:
wpeinit
net use \\192.168.1.99\SZERVER /user:myuser mypwd
\\192.168.1.99\SZERVER\iso\setup.exe
And finally the winpeshl.ini:
Code:
[LaunchApps]
"install.bat"
Using this, WinPE boots up, then right after wpeinit, it reboots the computer.
What am I doing wrong here? Any help is much appreciated.
1. don't add bootmgr via initrd - let wimboot extract it from the .wim file
2. Have you modified boot.wim in any way, especially, have you added any drivers to it? - if yes my first suspect would be broken drivers, retry with a clean boot.wim
3. In valid format, have you tried without adding winpeshl.ini and see what happens?
(2019-01-22 08:41)NiKiZe Wrote: [ -> ]1. don't add bootmgr via initrd - let wimboot extract it from the .wim file
2. Have you modified boot.wim in any way, especially, have you added any drivers to it? - if yes my first suspect would be broken drivers, retry with a clean boot.wim
3. In valid format, have you tried without adding winpeshl.ini and see what happens?
1. If I don't add bootmgr, I get a bad CPIO magic error.
2. Nope, fresh download, no modifications.
3. Without winpeshl it doesn't reboot, but of course my commands are not being executed.
So if you run your commands manually, does it work? what if you run the cmd file?
does your .cmd file have proper lineendings?
You should probably investigate your CPIO issue, but hopefully not related to this.
(2019-01-22 10:59)NiKiZe Wrote: [ -> ]So if you run your commands manually, does it work? what if you run the cmd file?
does your .cmd file have proper lineendings?
You should probably investigate your CPIO issue, but hopefully not related to this.
If I run it manually, it works perfectly fine.
I tried a Windows 10 installer boot.wim before, that booted up without bootmgr, but PE refuses...
Check your batch file, most likely the network stack hasn't loaded. Try
this instead. Once scripts finish executing from winpeshl.ini, Windows PE automatically reboots. Overwrite startnet.cmd instead if you want to leave the command prompt open.
I had the same problem, my solution:
Add powershell cab to boot.wim:
https://docs.microsoft.com/nl-nl/windows...windows-pe
winpeshl.ini
Code:
[LaunchApps]
wpeinit
powershell, -NoLogo -NoExit -ExecutionPolicy Bypass -File .\startup.ps1
and
startup.ps1
Code:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$ProgressPreference = 'SilentlyContinue'
Start-Sleep -s 15
CMD /C VER
net use s: \\192.168.2.13\boot password /user:boot
Write-Output (Get-Date)
Start-Sleep -s 15
Start-Process -FilePath "S:\iso\windows10\setup.exe" -Wait
boot.wim = new created with powershell!
boot.ipxe
Code:
:winpe_win10
cpuid --ext 29 && set arch amd64 || set arch x86
kernel http://${ipxe_server_ip}/ipxe/wimboot
initrd http://${ipxe_server_ip}/boot/win10/winpeshl.ini winpeshl.ini
initrd http://${ipxe_server_ip}/boot/win10/startup.ps1 startup.ps1
initrd http://${ipxe_server_ip}/iso/extracted/clean/winpe/${arch}/media/Boot/BCD BCD
initrd http://${ipxe_server_ip}/iso/extracted/clean/winpe/${arch}/media/Boot/boot.sdi boot.sdi
initrd http://${ipxe_server_ip}/iso/extracted/clean/winpe/${arch}/media/sources/boot.wim boot.wim
I had the same problem, my solution:
Add powershell cab to boot.wim:
https://docs.microsoft.com/nl-nl/windows...windows-pe
winpeshl.ini
Code:
[LaunchApps]
wpeinit
powershell, -NoLogo -NoExit -ExecutionPolicy Bypass -File .\startup.ps1
and
startup.ps1
Code:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$ProgressPreference = 'SilentlyContinue'
Start-Sleep -s 15
CMD /C VER
net use s: \\192.168.2.13\boot password /user:boot
Write-Output (Get-Date)
Start-Sleep -s 15
Start-Process -FilePath "S:\iso\windows10\setup.exe" -Wait
boot.wim = new created with powershell!
boot.ipxe
Code:
:winpe_win10
cpuid --ext 29 && set arch amd64 || set arch x86
kernel http://${ipxe_server_ip}/ipxe/wimboot
initrd http://${ipxe_server_ip}/boot/win10/winpeshl.ini winpeshl.ini
initrd http://${ipxe_server_ip}/boot/win10/startup.ps1 startup.ps1
initrd http://${ipxe_server_ip}/iso/extracted/clean/winpe/${arch}/media/Boot/BCD BCD
initrd http://${ipxe_server_ip}/iso/extracted/clean/winpe/${arch}/media/Boot/boot.sdi boot.sdi
initrd http://${ipxe_server_ip}/iso/extracted/clean/winpe/${arch}/media/sources/boot.wim boot.wim
I had the same problem, my solution:
Add powershell cab to boot.wim:
https://docs.microsoft.com/nl-nl/windows...windows-pe
winpeshl.ini
Code:
[LaunchApps]
wpeinit
powershell, -NoLogo -NoExit -ExecutionPolicy Bypass -File .\startup.ps1
and
startup.ps1
Code:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$ProgressPreference = 'SilentlyContinue'
Start-Sleep -s 15
CMD /C VER
net use s: \\192.168.2.13\boot password /user:boot
Write-Output (Get-Date)
Start-Sleep -s 15
Start-Process -FilePath "S:\iso\windows10\setup.exe" -Wait
boot.wim = new created with powershell!
boot.ipxe
Code:
:winpe_win10
cpuid --ext 29 && set arch amd64 || set arch x86
kernel http://${ipxe_server_ip}/ipxe/wimboot
initrd http://${ipxe_server_ip}/boot/win10/winpeshl.ini winpeshl.ini
initrd http://${ipxe_server_ip}/boot/win10/startup.ps1 startup.ps1
initrd http://${ipxe_server_ip}/iso/extracted/clean/winpe/${arch}/media/Boot/BCD BCD
initrd http://${ipxe_server_ip}/iso/extracted/clean/winpe/${arch}/media/Boot/boot.sdi boot.sdi
initrd http://${ipxe_server_ip}/iso/extracted/clean/winpe/${arch}/media/sources/boot.wim boot.wim
I had the same problem, my solution:
Add powershell cab to boot.wim:
https://docs.microsoft.com/nl-nl/windows...windows-pe
winpeshl.ini
Code:
[LaunchApps]
wpeinit
powershell, -NoLogo -NoExit -ExecutionPolicy Bypass -File .\startup.ps1
and
startup.ps1
Code:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$ProgressPreference = 'SilentlyContinue'
Start-Sleep -s 15
CMD /C VER
net use s: \\192.168.2.13\boot password /user:boot
Write-Output (Get-Date)
Start-Sleep -s 15
Start-Process -FilePath "S:\iso\windows10\setup.exe" -Wait
boot.wim = new created with powershell!
boot.ipxe
Code:
:winpe_win10
cpuid --ext 29 && set arch amd64 || set arch x86
kernel http://${ipxe_server_ip}/ipxe/wimboot
initrd http://${ipxe_server_ip}/boot/win10/winpeshl.ini winpeshl.ini
initrd http://${ipxe_server_ip}/boot/win10/startup.ps1 startup.ps1
initrd http://${ipxe_server_ip}/iso/extracted/clean/winpe/${arch}/media/Boot/BCD BCD
initrd http://${ipxe_server_ip}/iso/extracted/clean/winpe/${arch}/media/Boot/boot.sdi boot.sdi
initrd http://${ipxe_server_ip}/iso/extracted/clean/winpe/${arch}/media/sources/boot.wim boot.wim