-
- Veeam ProPartner
- Posts: 119
- Liked: 24 times
- Joined: Apr 01, 2011 10:36 am
- Full Name: Dean Colpitts
- Location: Atlantic coast of Canada
- Contact:
Use Recovery Agent with my own build of WinPE
We have built our own customized Microsoft Diagnostics and Recovery Toolset (DaRT) 10 environment and would like to integrate Veeam Agent for Windows recovery into it. Do you have any documentation detailing how to to slipstream the Veeam.Endpoint.Recovery.exe into our prebuilt, already customized WinPE images?
-
- Veeam ProPartner
- Posts: 119
- Liked: 24 times
- Joined: Apr 01, 2011 10:36 am
- Full Name: Dean Colpitts
- Location: Atlantic coast of Canada
- Contact:
Re: Use Recovery Agent with my own build of WinPE
Actually, I figured it out on my own and so far, it appears to work as I'm restoring the System Volume right now for a machine that isn't booting
- Run the Veeam Endpoint Recovery Media wizard and create an ISO image.
- Create a temp folder called C:\VEEAMPE
- Inside the C:\VEEAMPE temp folder, create this folder structure:
- \Windows\System32 (so you end up with C:\VEEAMPE\Windows\System32)
- \Program Files\Common Files (so you end up with C:\VEEAMPE\Program Files\Common Files)
- Open the Recovery Media ISO with 7-Zip and navigate to \Sources
- Highlight (select) boot.wim and from the File drop-down menu, select Open Inside (7-Zip will now show you the contents of boot.wim)
- Extract the folder \VeeamRecovery to your temp folder (i.e. C:\VEEAMPE so that you end up with C:\VEEAMPE\VeeamRecovery)
- Extract the folder \Program Files\Common Files\Veeam to TempFolder\Program Files\Common Files (so that you end up with C:\VEEAMPE\Program Files\Common Files\Veeam)
- Navigate to \Windows\System32 and extract DIFxAPI.dll to TempFolder\Windows\System32 (so that you end up with C:\VEEAMPE\Windows\System32\DIFxAPI.dll)
- Extract \Windows\System32\msi.dll to TempFolder\Windows\System32 (so that you end up with C:\VEEAMPE\Windows\System32\msi.dll)
- At this point, you can mount your WinPE image and copy C:\VEEAMPE to the root of your image (i.e. robocopy C:\VEEAMPE C:\MOUNT /S) and then dismount your WinPE image.
-
- Product Manager
- Posts: 14726
- Liked: 1706 times
- Joined: Feb 04, 2013 2:07 pm
- Full Name: Dmitry Popov
- Location: Prague
- Contact:
Re: Use Recovery Agent with my own build of WinPE
Hello Dean,
Very interesting - thanks a lot for sharing!
Very interesting - thanks a lot for sharing!
Can you share the idea of such integration? You want to create some sort of ‘swiss knife’ media? Thank you!dcolpitts wrote:We have built our own customized Microsoft Diagnostics and Recovery Toolset (DaRT) 10 environment and would like to integrate Veeam Agent for Windows recovery into it
-
- Veeam ProPartner
- Posts: 119
- Liked: 24 times
- Joined: Apr 01, 2011 10:36 am
- Full Name: Dean Colpitts
- Location: Atlantic coast of Canada
- Contact:
Re: Use Recovery Agent with my own build of WinPE
Essentially, yes. All of our customers have Microsoft Volume Licensing agreements with Software Assurance for all of their Microsoft software (servers, apps, & desktop OS), which entitles them to Microsoft Diagnostics and Recovery Toolset (DaRT) 10 which is basically WinPE with some nice MS tools added in. From there, we've customized DaRT with the tools my support team need on a daily basis such as:
- Symantec Encryption (PGP Whole Disk Encryption) support - we use whole disk encryption on all notebooks, tablets, and unsecured desktops, so this way we can access or decrypt encrypted disks within DaRT, or do partition image restores from Ghost
- Symantec Ghost64 so we can image / reimage disks and partitions, Gdisk64 so we can secure wipe disks, and GhostExp64 (so we can extract files from Ghost images)
- Dameware Mini Remote Control Client so we can remotely connect to DaRT / WinPE after talking a user through booting DaRT in the event their machine fails to start Windows (assuming the machine doesn't have vPro AMT)
- 7-Zip so we can extract drivers, etc, to inject into the offline Windows image via DISM (in the event we've reimaged with a generic sysprepped image, or changed controllers, etc)
- Notepad++ because Notepad just sucks
- wget64 because sometimes mapping a drive to a network share just isn't possible and their is no browser in WinPE
- Sysinternals Suite (specifically AutoRuns64 for analyzing an offline Windows image and BGINFO to show the machine's IP on the WinPE desktop at startup)
- Sha & MD5 sum generators (for determining if a file is really what it is supposed to be when compared to a live system)
- The WinPE driver packs for HPE servers, HP EliteDesks and HP Elitebooks, which are the machines our clients are standardized so all nics, etc, are seen by DaRT.
- and a bunch of other insignificant things
Oh - and I also adjusted DaRT / WinPE so that it doesn't matter which keyboard type you pick when prompted, you always get US 409 (I got tired of accidentally hitting the wrong keyboard type and having to reboot).
And because DaRT is just a standard .wim file based on Windows 10 1709, we can PXE boot it via DaRT, boot it from a USB key, or save a copy to C:\Windows\DaRT and create a startup boot menu entry for it via BCDEDIT. And we can also break out to a command prompt, map a drive to a network share and run setup.exe to install a new version of Windows. And it doesn't matter if the machine is BIOS or UEFI - the same image works.
Just yesterday I used DaRT to PXE boot a HPE Proliant DL380 Gen9 (which happens to be a VBR server and AD controller) and created a ghost image of it's boot drive on the SAN via FC. Then using the same DaRT image, I PXE booted a HPE Proliant DL380 Gen10 and restored the ghost image off the SAN (again via FC) to it, then injected the 2012R2 drivers and rebooted it in Windows... The entire process took me 2 hours (including firmware updates on the Gen10 which was brand new in the box from the factory yesterday morning). And because I did it completely offline, I didn't have to worry about AD consistency issues like I would if I did it online. Then once I knew the Gen10 was fully function, I booted the Gen9 via PXE into DaRT again and ran a secure disk wipe. The Gen9 is now packed up in it's box for lease return.
My current boot.wim for DaRT is 640MB in size without the VAW recovery agent integrated in yet, which was about 72MB if memory serves me right. On a switched 1GbE network, it takes roughly 15 seconds to PXE boot from the time the BIOS / UEFI ends and the PXE attempt starts.
So hopefully that gives you an idea of what we are doing with it and why I was looking to add VAW support.
dcc
- Symantec Encryption (PGP Whole Disk Encryption) support - we use whole disk encryption on all notebooks, tablets, and unsecured desktops, so this way we can access or decrypt encrypted disks within DaRT, or do partition image restores from Ghost
- Symantec Ghost64 so we can image / reimage disks and partitions, Gdisk64 so we can secure wipe disks, and GhostExp64 (so we can extract files from Ghost images)
- Dameware Mini Remote Control Client so we can remotely connect to DaRT / WinPE after talking a user through booting DaRT in the event their machine fails to start Windows (assuming the machine doesn't have vPro AMT)
- 7-Zip so we can extract drivers, etc, to inject into the offline Windows image via DISM (in the event we've reimaged with a generic sysprepped image, or changed controllers, etc)
- Notepad++ because Notepad just sucks
- wget64 because sometimes mapping a drive to a network share just isn't possible and their is no browser in WinPE
- Sysinternals Suite (specifically AutoRuns64 for analyzing an offline Windows image and BGINFO to show the machine's IP on the WinPE desktop at startup)
- Sha & MD5 sum generators (for determining if a file is really what it is supposed to be when compared to a live system)
- The WinPE driver packs for HPE servers, HP EliteDesks and HP Elitebooks, which are the machines our clients are standardized so all nics, etc, are seen by DaRT.
- and a bunch of other insignificant things
Oh - and I also adjusted DaRT / WinPE so that it doesn't matter which keyboard type you pick when prompted, you always get US 409 (I got tired of accidentally hitting the wrong keyboard type and having to reboot).
And because DaRT is just a standard .wim file based on Windows 10 1709, we can PXE boot it via DaRT, boot it from a USB key, or save a copy to C:\Windows\DaRT and create a startup boot menu entry for it via BCDEDIT. And we can also break out to a command prompt, map a drive to a network share and run setup.exe to install a new version of Windows. And it doesn't matter if the machine is BIOS or UEFI - the same image works.
Just yesterday I used DaRT to PXE boot a HPE Proliant DL380 Gen9 (which happens to be a VBR server and AD controller) and created a ghost image of it's boot drive on the SAN via FC. Then using the same DaRT image, I PXE booted a HPE Proliant DL380 Gen10 and restored the ghost image off the SAN (again via FC) to it, then injected the 2012R2 drivers and rebooted it in Windows... The entire process took me 2 hours (including firmware updates on the Gen10 which was brand new in the box from the factory yesterday morning). And because I did it completely offline, I didn't have to worry about AD consistency issues like I would if I did it online. Then once I knew the Gen10 was fully function, I booted the Gen9 via PXE into DaRT again and ran a secure disk wipe. The Gen9 is now packed up in it's box for lease return.
My current boot.wim for DaRT is 640MB in size without the VAW recovery agent integrated in yet, which was about 72MB if memory serves me right. On a switched 1GbE network, it takes roughly 15 seconds to PXE boot from the time the BIOS / UEFI ends and the PXE attempt starts.
So hopefully that gives you an idea of what we are doing with it and why I was looking to add VAW support.
dcc
-
- Expert
- Posts: 149
- Liked: 34 times
- Joined: May 01, 2012 11:56 am
- Full Name: Stuart Green
- Contact:
Re: Use Recovery Agent with my own build of WinPE
@dcolpitts Great insight to your method for replacing your server hardware. I am going to go through the same process with exact similar hardware at end of lease.Just yesterday I used DaRT to PXE boot a HPE Proliant DL380 Gen9 (which happens to be a VBR server and AD controller) and created a ghost image of it's boot drive on the SAN via FC. Then using the same DaRT image, I PXE booted a HPE Proliant DL380 Gen10 and restored the ghost image off the SAN (again via FC) to it, then injected the 2012R2 drivers and rebooted it in Windows... The entire process took me 2 hours (including firmware updates on the Gen10 which was brand new in the box from the factory yesterday morning). And because I did it completely offline, I didn't have to worry about AD consistency issues like I would if I did it online. Then once I knew the Gen10 was fully function, I booted the Gen9 via PXE into DaRT again and ran a secure disk wipe. The Gen9 is now packed up in it's box for lease return.
My intention was to use the Veeam Agent for Windows Veeam RE media to boot from and restore the server from its Veeam Agent backups at same time injecting the HPE gen10 RAID controller and network drivers required via the Veeam recovery UI. This would get me from old lease hardware to new lease hardware
However, I am interested in your method and in particular how do you inject the 2012R2 drivers immediately after the ghost image restore.
And can you expand on what the AD consistency issues are you refer to?
Thanks
-
- Veeam ProPartner
- Posts: 119
- Liked: 24 times
- Joined: Apr 01, 2011 10:36 am
- Full Name: Dean Colpitts
- Location: Atlantic coast of Canada
- Contact:
Re: Use Recovery Agent with my own build of WinPE
Stuart - give me 12 hrs or so and I will detail the injection process for you once I get to my PC instead of my iPad.
-
- Veeam ProPartner
- Posts: 119
- Liked: 24 times
- Joined: Apr 01, 2011 10:36 am
- Full Name: Dean Colpitts
- Location: Atlantic coast of Canada
- Contact:
Re: Use Recovery Agent with my own build of WinPE
So this is a long, long post and not specific to Veeam... Dima, if this is not suitable here, let me know and I will put on my blog instead and link to it there.
My instructions below are assuming you have access to the 2012 R2 Volume Licensing Media ISO image (MS# X19-82891). I’m sure it will work with other disk images, but the instructions **may** be different. You’ll also need a copy of the current Service Pack for Proliant (P01456_001_spp-2017.10.1-SPP2017101.2017_1027.10.iso), which you need to have a qualifying server with support to obtain. And you should run the current SPP against the Gen9 before beginning.
1.)Copy the boot.wim from the 2012R2 \Sources folder to a temp folder on your machine (C:\Temp)
2.)Open the SPP iso image with 7-Zip and extract \WIN_DRV\win-driverpack-11.05.zip to C:\Temp\HPE_DRV
3.)Create an empty folder to mount the boot.wim in (C:\Mount)
4.)Use DISM to mount the boot.wim
dism /mount-wim /wimfile:c:\temp\boot.wim /index:1 /mountdir:c:\mount
5.)Inject the Windows driver pack
dism /image:c:\mount /add-driver /driver:c:\temp\win_drv /recurse
6.)Copy anything else you may need to c:\Mount (in my case it was the Ghost Standard Tools folder).
7.)Copy the Windows driver pack files into the image as well
robocopy C:\Temp\HPE_DRV C:\Mount\HPE_DRV /s
8.)Unmount and commit index 1 of the wim
dism /unmount-wim /mountdir:c:\mount /commit
**note – sometimes this fails because Windows Explorer or AV has files opened in the directory structure – I typically kill Classic Start Menu and Windows Explorer via command line (pskill classicstartmenu / pskill explorer) before unmounting, then restart Explorer via command prompt by typing Explorer afterwards, which hasn’t failed me yet.
9.)Now inject the drivers into index 2
dism /mount-wim /wimfile:c:\temp\boot.wim /index:2 /mountdir:c:\mount
10.)Repeat steps 5, 6, 7, & 8.
11.)You now have a Windows 2012 R2 Setup boot.wim that has all the HPE drivers in it.
12.)If you are looking to install Windows fresh, then you need repeat the above steps with the Install.wim and it’s various indexes (then when you boot from the image, Windows Setup will see all the devices in the server such as the Smart Array controller, fibre channel cards, etc) and install with all the drivers necessary (but still run the SPP after Windows is installed to installed the system tools, etc).
Now, how you boot with this boot.wim depends on your environment.
•If you have Windows Deployment Services setup, you could just import C:\Temp\boot.wim and PXE boot the Gen9 and Gen10 servers from it.
•If you want to boot from USB key, download Rufus (https://rufus.akeo.ie/) and make a bootable USB key from the 2012R2 ISO image, the copy the updated boot.wim (and install.wim if you customized it too) to the proper folders on the USB (\Sources) and boot away
•If you want to boot from ISO via the ILO, you need to inject the updated boot.wim (and install.wim if you customized it too) to the proper folders in the ISO image (\Sources) with something such as UltraISO.
Once you are booted and at the Welcome to Setup prompt, hit Shift+F10 to open a command prompt.
If you run DiskPart, you should see all the attached drives in the system, and if you use Fibre Channel attached storage (such as a 3Par or MSA), any volumes that are exported to that server will be present, but without MPIO support, and will likely appear offline. Be very careful with these volumes – it would really suck to wipe your VM datastores or something.
In my case, I had a NTFS volume on the 3Par that was exported to the server I was cloning from (Gen9), so it appeared in this list and I was able to mount it via diskpart (list disk, select disk #, online disk, att disk clear readonly, list vol, select vol #, assign letter Z).
Then I simply ran Ghost64, and did a partition to image (the C: NTFS partition that is) and put the image on the 3Par volume I previously mounted.
Once the Ghost image was completed, I verified I could open it using Ghost Explorer 64, I checked the time and date from the command prompt, then I shutdown the Gen9 server.
At this point, do NOT power the Gen9 back on – especially if it is an active directory server. Once the Gen10 is booted with it's NICs plugged in, you are the point of no return to the Gen9.
I booted the Gen10 server off my image and jumped to command prompt. Because Gen10 is UEFI (and my Gen9 was UEFI), I needed to manually create my disk structure (I’m assuming you’ve already created your logical boot drive on the Smart Array controller before you got to this point):
•Diskpart
•Rescan
•List disk
•Select disk # (where this is your logical array that will be your boot drive)
•Cre par efi size=512
•Format fs=fat32 quick label=system
•Assign letter s
•Cre par msr size=128
•Cre par pri align=1024
•Format fs=ntfs quick label=”Restore Here”
•Assign letter c
•Exit
In SSMC for 3Par I changed the WWN ids for my host from those of the Gen9 to the ones of the Gen10, and did a rescan in Diskpart, then mounted my NTFS volume and assigned it a drive letter.
I started Ghost64 from the command prompt, and restored image to partition, picking the ghost image I had previously created on the Gen9.
I verified the date and time from the command prompt to make sure it was correct (very important if this is an Active Directory server).
Next we need to inject the Gen10 drivers into the restored Windows image with:
•dism /image:c:\ /add-driver /driver:X:\win_drv /recurse
Now you need to populate the critical boot files on the system’s EFI partition and create a new BCD store:
•Bcdboot C:\Windows /s s: /v
Finally, verify that the BCD store was created successfully:
•Bcdedit
What you want to look for is the “device” location. For Windows Boot Manager it should be pointing at S: and for Windows Boot Loader it should be C:
Shutdown the Gen10 with: wpeutil shutdown
Before continuing, unplug everything from the Gen10 except power, video, keyboard and mouse. This means unplug your network cables, your fibre cables, your SAS cables for tape drives, usb keys, everything… (ILO is ok though).
Power on your Gen10 and it should now boot Windows and go through PNP device installation. Login on the desktop as the Administrator and check it looks ok.
If you were using NIC teaming, you’ll need to add the new NICs to the team and remove the old NICs. The GUI for NIC Teaming (lbfoadmin.exe) pukes when you attempt to do anything to a team that has “missing” adapters in it, so you need to do it from PowerShell.
Open an Administrative PowerShell session and run:
•Get-NetLbfoTeam (take note of your team names and the members)
•Get-NetAdapter (take note of your NIC names – ie “HPE FlexFabric 10Gb 4-port 536FLR-t 1”)
Personally, I like to rename my NICs before adding them to the team so it easier to deal with. To do that, run:
•Rename-NetAdapter -Name "HPE FlexFabric 10Gb 4-port 536FLR-T 1" -NewName "536FLR-T_PORT01" -confirm:$false
Now comes the fun part – you need to add the new NICs to the teams.
•Add-NetLBFOTeamMember -Name “536FLR-T_PORT01”-Team “NIC-TEAM01”
•Add-NetLBFOTeamMember -Name “536FLR-T_PORT02”-Team “NIC-TEAM01”
Now you can remove the old NICs from the team
•Remove-NetLbfoTeamMember -Name “old nic name you got from get-netlbfoteam above” -Team NIC-TEAM01
Repeat Remove-NetLbfoTeamMember for each old NIC.
Run the SPP against the Gen10 and update it as required.
You should now be able to shutdown the Gen10, plug in your cables and boot up again.
I also like to clean up the removed hardware from Device Manager. To do that, click Start, Run, sysdm.cpl, go to the Advanced tab, and click Environment Variables. Click the New button under System Variables and add a new variable called “devmgr_show_nonpresent_devices” with a value of 1, then OK, OK.
Click Start, Run, compmgmt.msc,. Right click Device Manager, select View, then Show Hidden Devices.
Now when you expand the devices lists, anything that is “greyed” out can be removed.
You should now have a functioning system, transferred from Gen9 to Gen10.
My instructions below are assuming you have access to the 2012 R2 Volume Licensing Media ISO image (MS# X19-82891). I’m sure it will work with other disk images, but the instructions **may** be different. You’ll also need a copy of the current Service Pack for Proliant (P01456_001_spp-2017.10.1-SPP2017101.2017_1027.10.iso), which you need to have a qualifying server with support to obtain. And you should run the current SPP against the Gen9 before beginning.
1.)Copy the boot.wim from the 2012R2 \Sources folder to a temp folder on your machine (C:\Temp)
2.)Open the SPP iso image with 7-Zip and extract \WIN_DRV\win-driverpack-11.05.zip to C:\Temp\HPE_DRV
3.)Create an empty folder to mount the boot.wim in (C:\Mount)
4.)Use DISM to mount the boot.wim
dism /mount-wim /wimfile:c:\temp\boot.wim /index:1 /mountdir:c:\mount
5.)Inject the Windows driver pack
dism /image:c:\mount /add-driver /driver:c:\temp\win_drv /recurse
6.)Copy anything else you may need to c:\Mount (in my case it was the Ghost Standard Tools folder).
7.)Copy the Windows driver pack files into the image as well
robocopy C:\Temp\HPE_DRV C:\Mount\HPE_DRV /s
8.)Unmount and commit index 1 of the wim
dism /unmount-wim /mountdir:c:\mount /commit
**note – sometimes this fails because Windows Explorer or AV has files opened in the directory structure – I typically kill Classic Start Menu and Windows Explorer via command line (pskill classicstartmenu / pskill explorer) before unmounting, then restart Explorer via command prompt by typing Explorer afterwards, which hasn’t failed me yet.
9.)Now inject the drivers into index 2
dism /mount-wim /wimfile:c:\temp\boot.wim /index:2 /mountdir:c:\mount
10.)Repeat steps 5, 6, 7, & 8.
11.)You now have a Windows 2012 R2 Setup boot.wim that has all the HPE drivers in it.
12.)If you are looking to install Windows fresh, then you need repeat the above steps with the Install.wim and it’s various indexes (then when you boot from the image, Windows Setup will see all the devices in the server such as the Smart Array controller, fibre channel cards, etc) and install with all the drivers necessary (but still run the SPP after Windows is installed to installed the system tools, etc).
Now, how you boot with this boot.wim depends on your environment.
•If you have Windows Deployment Services setup, you could just import C:\Temp\boot.wim and PXE boot the Gen9 and Gen10 servers from it.
•If you want to boot from USB key, download Rufus (https://rufus.akeo.ie/) and make a bootable USB key from the 2012R2 ISO image, the copy the updated boot.wim (and install.wim if you customized it too) to the proper folders on the USB (\Sources) and boot away
•If you want to boot from ISO via the ILO, you need to inject the updated boot.wim (and install.wim if you customized it too) to the proper folders in the ISO image (\Sources) with something such as UltraISO.
Once you are booted and at the Welcome to Setup prompt, hit Shift+F10 to open a command prompt.
If you run DiskPart, you should see all the attached drives in the system, and if you use Fibre Channel attached storage (such as a 3Par or MSA), any volumes that are exported to that server will be present, but without MPIO support, and will likely appear offline. Be very careful with these volumes – it would really suck to wipe your VM datastores or something.
In my case, I had a NTFS volume on the 3Par that was exported to the server I was cloning from (Gen9), so it appeared in this list and I was able to mount it via diskpart (list disk, select disk #, online disk, att disk clear readonly, list vol, select vol #, assign letter Z).
Then I simply ran Ghost64, and did a partition to image (the C: NTFS partition that is) and put the image on the 3Par volume I previously mounted.
Once the Ghost image was completed, I verified I could open it using Ghost Explorer 64, I checked the time and date from the command prompt, then I shutdown the Gen9 server.
At this point, do NOT power the Gen9 back on – especially if it is an active directory server. Once the Gen10 is booted with it's NICs plugged in, you are the point of no return to the Gen9.
I booted the Gen10 server off my image and jumped to command prompt. Because Gen10 is UEFI (and my Gen9 was UEFI), I needed to manually create my disk structure (I’m assuming you’ve already created your logical boot drive on the Smart Array controller before you got to this point):
•Diskpart
•Rescan
•List disk
•Select disk # (where this is your logical array that will be your boot drive)
•Cre par efi size=512
•Format fs=fat32 quick label=system
•Assign letter s
•Cre par msr size=128
•Cre par pri align=1024
•Format fs=ntfs quick label=”Restore Here”
•Assign letter c
•Exit
In SSMC for 3Par I changed the WWN ids for my host from those of the Gen9 to the ones of the Gen10, and did a rescan in Diskpart, then mounted my NTFS volume and assigned it a drive letter.
I started Ghost64 from the command prompt, and restored image to partition, picking the ghost image I had previously created on the Gen9.
I verified the date and time from the command prompt to make sure it was correct (very important if this is an Active Directory server).
Next we need to inject the Gen10 drivers into the restored Windows image with:
•dism /image:c:\ /add-driver /driver:X:\win_drv /recurse
Now you need to populate the critical boot files on the system’s EFI partition and create a new BCD store:
•Bcdboot C:\Windows /s s: /v
Finally, verify that the BCD store was created successfully:
•Bcdedit
What you want to look for is the “device” location. For Windows Boot Manager it should be pointing at S: and for Windows Boot Loader it should be C:
Shutdown the Gen10 with: wpeutil shutdown
Before continuing, unplug everything from the Gen10 except power, video, keyboard and mouse. This means unplug your network cables, your fibre cables, your SAS cables for tape drives, usb keys, everything… (ILO is ok though).
Power on your Gen10 and it should now boot Windows and go through PNP device installation. Login on the desktop as the Administrator and check it looks ok.
If you were using NIC teaming, you’ll need to add the new NICs to the team and remove the old NICs. The GUI for NIC Teaming (lbfoadmin.exe) pukes when you attempt to do anything to a team that has “missing” adapters in it, so you need to do it from PowerShell.
Open an Administrative PowerShell session and run:
•Get-NetLbfoTeam (take note of your team names and the members)
•Get-NetAdapter (take note of your NIC names – ie “HPE FlexFabric 10Gb 4-port 536FLR-t 1”)
Personally, I like to rename my NICs before adding them to the team so it easier to deal with. To do that, run:
•Rename-NetAdapter -Name "HPE FlexFabric 10Gb 4-port 536FLR-T 1" -NewName "536FLR-T_PORT01" -confirm:$false
Now comes the fun part – you need to add the new NICs to the teams.
•Add-NetLBFOTeamMember -Name “536FLR-T_PORT01”-Team “NIC-TEAM01”
•Add-NetLBFOTeamMember -Name “536FLR-T_PORT02”-Team “NIC-TEAM01”
Now you can remove the old NICs from the team
•Remove-NetLbfoTeamMember -Name “old nic name you got from get-netlbfoteam above” -Team NIC-TEAM01
Repeat Remove-NetLbfoTeamMember for each old NIC.
Run the SPP against the Gen10 and update it as required.
You should now be able to shutdown the Gen10, plug in your cables and boot up again.
I also like to clean up the removed hardware from Device Manager. To do that, click Start, Run, sysdm.cpl, go to the Advanced tab, and click Environment Variables. Click the New button under System Variables and add a new variable called “devmgr_show_nonpresent_devices” with a value of 1, then OK, OK.
Click Start, Run, compmgmt.msc,. Right click Device Manager, select View, then Show Hidden Devices.
Now when you expand the devices lists, anything that is “greyed” out can be removed.
You should now have a functioning system, transferred from Gen9 to Gen10.
-
- Expert
- Posts: 221
- Liked: 16 times
- Joined: May 28, 2010 10:25 am
- Full Name: Seb
- Contact:
Re: Use Recovery Agent with my own build of WinPE
And why not to use a nice WinPE image created with ie Win10PE SE but with PEBakery
Makes life easier with GUI/browser etc
Makes life easier with GUI/browser etc
-
- Product Manager
- Posts: 14726
- Liked: 1706 times
- Joined: Feb 04, 2013 2:07 pm
- Full Name: Dmitry Popov
- Location: Prague
- Contact:
Re: Use Recovery Agent with my own build of WinPE
Hi Dean.
Thanks a lot for sharing the detailed solution! Cheers!
Thanks a lot for sharing the detailed solution! Cheers!
-
- Novice
- Posts: 4
- Liked: 1 time
- Joined: Feb 19, 2018 2:26 pm
- Full Name: NR
- Location: Germany
- Contact:
Re: Use Recovery Agent with my own build of WinPE
Since dcolpitts post is missing some features, I updated this tutorial.
=====
Tools
=====
Tools you need to create a fully working copy of WinPE with Veeam Recovery
Steps to create WinPE-Image
===========================
=====
Tools
=====
Tools you need to create a fully working copy of WinPE with Veeam Recovery
- SxSExpand fully patched (Script sxsextract.vbs included)
This tool is needed to extract the WinPE-SRT.cab package from WinRE.wim
WinPe-SRT.cab was withdrawn from the Windows ADK for an unknown reason.
But Microsoft still includes the corresponding language packages for WinPE-SRT.cab
I have uploaded the complete package to:
https://www.file-upload.net/download-12 ... nd.7z.html - 7-Zip
This tool is needed to extract necessary files from Windows ISO-files, wim-files, etc.
Download the latest version from here:
https://sourceforge.net/projects/sevenzip/files/7-Zip/ - Windows ADK
Set of Tools to create the WinPE package and inject additional files into the boot.wim
Link to the latest Windows 10 ADK Build 1709
https://go.microsoft.com/fwlink/p/?linkid=859206 - Windows 10 Build 1709 Installation Image as ISO-files
You can download a full copy using the Media Creation Tool from Microsoft
Download:
https://go.microsoft.com/fwlink/?LinkId=691209 - Drivers for all the Hardware you are using
If you don't want to download and extract all the driver files for yourself, I have uploaded a package with the drivers I need at our company to
https://www.file-upload.net/download-12 ... er.7z.html
This archive includes the latest drivers for Intel 1000 and XG network adapters, as well as the latest drivers for Realtek network adapters.
Futher more all drivers for Intel Chipsets and Intel Storage are included, too. - Lessmsi
A tool to extract msi-files
Download:
https://github.com/activescott/lessmsi/ ... v1.6.1.zip
Steps to create WinPE-Image
===========================
- Install 7-Zip (see Tools section 2)
- Download and install Windows ADK (see Tools section 3)
Choose C:\ADK\1709 as the installation path - Download the Media Creation Tool (see Tools section 4) and let this tool create an ISO-file for Windows 10 Build 1709 with the following settings:
Language: English (United States)
Edition: Windows 10
Architecture: 32-bit (x86) - Create the following directory structures
If you downloaded my drivers package (see Tools Section 5), you can simply extract the archive to the root of drive C:, so that the directory structure for C:\WinPE1709_driver will be created automatically.
Code: Select all
C:\WinPE1709_SRT C:\WinPE1709_SRT\Image C:\WinPE1709_SRT\mount C:\WinPE1709_VEEAM C:\WinPE1709_VEEAM\Program Files C:\WinPE1709_VEEAM\Program Files\Common Files C:\WinPE1709_VEEAM\Program Files\Common Files\Veeam C:\WinPE1709_VEEAM\Program Files\Common Files\Veeam\Backup And Replication C:\WinPE1709_VEEAM\VeeamRecovery C:\WinPE1709_VEEAM\VeeamRecovery\x64 C:\WinPE1709_VEEAM\VeeamRecovery\x86 C:\WinPE1709_VEEAM\Windows C:\WinPE1709_VEEAM\Windows\System32 C:\WinPE1709_driver
Otherwise manually download and extract all drivers that you want to include to C:\WinPE1709_driver - Open the ISO-file you created in step 3 using 7-Zip and navigate to \sources
look for the file install.esd, right click this file and choose to open it internally in 7-Zip
Navigate to \1\Windows\System32\Recovery
In this directory you will find the needed Winre.wim, from which we will extract the missing WinPE-SRT.cab later on.
Drag and drop Winre.wim to C:\WinPE1709_SRT\Image
Navigate back to \1\Windows\System32 and drag and drop the following three files to C:\WinPE1709_VEEAM\Windows\System32Code: Select all
difxapi.dll msi.dll shfolder.dll
- Download the SxSExpand utility (see tools section 1) and unpack all files contained in this archive to C:\WinPE1709_SRT
- Download the latest VeeamAgent for Windows (at the time writing this will be version 2.1.0.423) and save the install file to any location
- Download Lessmsi (see tools section 6) and unpack the downloaded archive to a folder of your choice.
- Open the downloaded VeeamAgentWindows_2.1.0.423.exe file from step 7 using 7-Zip and navigate to \Endpoint\Endpoint
Drag and Drop the file Veeam_B&R_Endpoint_x86.msi to the folder in which you unpacked Lessmsi in step 8. - Run lessmsi-gui.exe (see step and choose to open Veeam_B&R_Endpoint_x86.msi
Unpack all files contained in this msi to a folder of your choice. - Navigate to the folder where you unpacked Veeam_B&R_Endpoint_x86.msi in the step before
Copy the following files from "SourceDir\RealProgramFiles\Veeam\Endpoint Backup" to "C:\WinPE1709_VEEAM\Windows\System32":Copy the following files from "SourceDir\RealProgramFiles\Veeam\Endpoint Backup" to C:\WinPE1709_VEEAM\VeeamRecoveryCode: Select all
msvcp120.dll msvcr120.dll
Copy the whole directory "SourceDir\RealProgramFiles\Veeam\Endpoint Backup\x64" to "C:\WinPE1709_VEEAM\VeeamRecovery\x64"Code: Select all
boost_chrono-vc120-mt-1_57.dll boost_system-vc120-mt-1_57.dll boost_thread-vc120-mt-1_57.dll CInterop.VeeamCrypto.dll CInterop.VeeamProxyClient.dll Interop.VeeamGuestHelper.dll Interop.VeeamTransport.dll Ionic.Zip.dll vblkid vccorlib120.dll Veeam.Backup.AgentProvider.dll Veeam.Backup.Common.dll Veeam.Backup.Configuration.dll Veeam.Backup.Core.Common.dll Veeam.Backup.Core.dll Veeam.Backup.Crypto.dll Veeam.Backup.DBAccessor.dll Veeam.Backup.DBCreator.dll Veeam.Backup.DBManager.dll Veeam.Backup.Interaction.Management.dll Veeam.Backup.LicenseLib.dll Veeam.Backup.Model.dll Veeam.Backup.ProxyProvider.dll Veeam.Backup.Serialization.dll Veeam.Backup.UI.Common.dll Veeam.Backup.VssProvider.dll Veeam.Backup.Win32API.dll Veeam.Common.Remoting.dll Veeam.EndPoint.Common.dll Veeam.EndPoint.Core.dll Veeam.EndPoint.Recovery.exe Veeam.EndPoint.Recovery.exe.config Veeam.EndPoint.System.dll Veeam.EndPoint.Transport.dll VeeamDeploymentDll.dll VeeamEndpointSysUtils.dll VeeamFSR.sys VeeamTransportDll.dll
Copy the whole directory "SourceDir\RealProgramFiles\Veeam\Endpoint Backup\x86" to "C:\WinPE1709_VEEAM\VeeamRecovery\x86"
Copy the following file from "SourceDir\Veeam\Backup and Replication" to "C:\WinPE1709_VEEAM\Program Files\Common Files\Veeam\Backup And Replication"I'm not sure if it's really needed for some things to work correctly, but to be safe simply unpack the zip-file "SourceDir\RealProgramFiles\Veeam\Endpoint Backup\WebBrowser.zip" to "C:\WinPE1709_VEEAM\VeeamRecovery\WebBrowser"Code: Select all
VeeamFlrDrvInstaller.dll
Hint: For future versions the list of files to copy to the Veeam Recovery Media might change. You can lookup all files that have to be included in "SourceDir\RealProgramFiles\Veeam\Endpoint Backup\Files\recovery_media_files.xml" - Make sure the directory C:\WinPE1709_x86 doesn't exist. Otherwise delete the whole directory.
- Run the script
Code: Select all
C:\ADK\1709\Assessment and Deployment Kit\Deployment Tools\DandISetEnv.bat
- In the command prompt that opens, issue the following command:
Code: Select all
dism /Mount-Image /ImageFile:"C:\WinPE1709_SRT\Image\Winre.wim" /index:1 /MountDir:"C:\WinPE1709_SRT\mount"
- Open a second command prompt under "C:\WinPE1709_SRT" and type the following command to extract the WinPE-SRT.cab from the Winre.wim mounted in the step before:
After that you will find the file "WinPE-SRT_x86_10.0.16299.15.cab" under "C:\WinPE1709_SRT".
Code: Select all
cscript.exe sxsextract.vbs /INCLUDERES /IMAGE:"C:\WinPE1709_SRT\mount\Windows" "C:\WinPE1709_SRT\mount\Windows\servicing\Packages\WinPE-SRT-Package~31bf3856ad364e35~x86~~10.0.16299.15.mum" WinPE-SRT_x86_10.0.16299.15.cab
Copy this file to "C:\ADK\1709\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs" and rename it to "WinPE-SRT.cab"
Now you can close the second command prompt. - Next step is to unmount the Winre.wim by issueing the following command:
If error 0xc1420117 is thrown, type the following command:
Code: Select all
Dism /Unmount-Image /MountDir:"C:\WinPE1709_SRT\mount" /discard
Open regedit and delete all subkeys under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WIMMount\Mounted ImagesCode: Select all
dism /Cleanup-Mountpoints
- Now you have to create a clean WinPE under C:\WinPE1709_x86
Code: Select all
copype x86 C:\WinPE1709_x86
- Issue the following commands one after the other to inject the necessary files into your WinPE Media:
Code: Select all
dism /Mount-Image /ImageFile:"C:\WinPE1709_x86\media\sources\boot.wim" /index:1 /MountDir:"C:\WinPE1709_x86\mount" dism /Add-Driver /Image:"C:\WinPE1709_x86\mount" /Driver:"C:\WinPE1709_driver" /Recurse dism /Add-Package /Image:"C:\WinPE1709_x86\mount" /PackagePath:"C:\ADK\1709\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\WinPE-HTA.cab" dism /Add-Package /Image:"C:\WinPE1709_x86\mount" /PackagePath:"C:\ADK\1709\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\WinPE-WMI.cab" dism /Add-Package /Image:"C:\WinPE1709_x86\mount" /PackagePath:"C:\ADK\1709\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\WinPE-NetFx.cab" dism /Add-Package /Image:"C:\WinPE1709_x86\mount" /PackagePath:"C:\ADK\1709\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\WinPE-SRT.cab" robocopy C:\WinPE1709_VEEAM C:\WinPE1709_x86\mount /S
- Create an new file winpeshl.ini under C:\WinPE1709_x86\media\sources\boot.wim\Windows\System32 and paste the following content in it:
Code: Select all
[LaunchApps] %SYSTEMROOT%\System32\wpeinit.exe %SYSTEMDRIVE%\VeeamRecovery\Veeam.EndPoint.Recovery.exe cmd.exe
- If you would like to have your WinPE-Image in another language instead of the standard English (US), just type the following commands:
This example installes the language pack files for german.
Code: Select all
dism /Add-Package /Image:"C:\WinPE1709_x86\mount" /PackagePath:"C:\ADK\1709\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\de-de\lp.cab" dism /Add-Package /Image:"C:\WinPE1709_x86\mount" /PackagePath:"C:\ADK\1709\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\de-de\WinPE-HTA_de-de.cab" dism /Add-Package /Image:"C:\WinPE1709_x86\mount" /PackagePath:"C:\ADK\1709\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\de-de\WinPE-WMI_de-de.cab" dism /Add-Package /Image:"C:\WinPE1709_x86\mount" /PackagePath:"C:\ADK\1709\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\de-de\WinPE-NetFx_de-de.cab" dism /Add-Package /Image:"C:\WinPE1709_x86\mount" /PackagePath:"C:\ADK\1709\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\de-de\WinPE-SRT_de-de.cab" dism /Set-AllIntl:de-DE /Image:"C:\WinPE1709_x86\mount"
If you need a different language simply adjust the commands above to fit your needs. - To unmount the wim-file and save the changes made, use the following command:
If error 0xc1420117 is thrown, have a look at step 16 for a workaround.
Code: Select all
dism /Unmount-Image /MountDir:"C:\WinPE1709_x86\mount" /commit
- To finish your work, create a bootable usb stick, using the following command:
Code: Select all
MakeWinPEMedia /UFD C:\WinPE1709_x86 <USB_drive_letter>
-
- Novice
- Posts: 4
- Liked: 1 time
- Joined: Feb 19, 2018 2:26 pm
- Full Name: NR
- Location: Germany
- Contact:
Re: Use Recovery Agent with my own build of WinPE
There are some things that would be really useful for me to get a universal WinPE-Image for Veeam.
Perhaps someone can help me with this.
In 99% of all cases I do not need a BareMetal Recovery.
Most of the times a hdd stops working, an update did go wrong, etc.
In theses cases it would be useful, to just take an universal recovery media to offline recover the windows system to an earlier state.
Unfortunately Veeams standard settings are injecting the drivers included in the Recovery Media and you have to manually switch off this settings under Tools -> Load Driver as shown in the picture below.
According to my previous posting in section 'Steps to create WinPE-Image' step 19, would it be possible to call Veeam.EndPoint.Recovery.exe with e.g. a command line switch, to switch off the shown setting directly at boot time?
Or perhaps by inserting an entry into the Veeam.Endpoint.Recovery.exe.config?
Perhaps someone can help me with this.
In 99% of all cases I do not need a BareMetal Recovery.
Most of the times a hdd stops working, an update did go wrong, etc.
In theses cases it would be useful, to just take an universal recovery media to offline recover the windows system to an earlier state.
Unfortunately Veeams standard settings are injecting the drivers included in the Recovery Media and you have to manually switch off this settings under Tools -> Load Driver as shown in the picture below.
According to my previous posting in section 'Steps to create WinPE-Image' step 19, would it be possible to call Veeam.EndPoint.Recovery.exe with e.g. a command line switch, to switch off the shown setting directly at boot time?
Or perhaps by inserting an entry into the Veeam.Endpoint.Recovery.exe.config?
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
</startup>
</configuration>
-
- Novice
- Posts: 4
- Liked: 1 time
- Joined: Feb 19, 2018 2:26 pm
- Full Name: NR
- Location: Germany
- Contact:
Re: Use Recovery Agent with my own build of WinPE
Another thing I am facing is the fact that you cannot use a mapped network drive as a local source for recovering.
I don't know if this is an error by design, but since Paragon and Acronis for example make use of a mapped network drive as a source for backup files, I don't think that would be very difficult to implement in Veeam.
Steps to reproduce this issue:
Change the winpeshl.ini to
Drive V: is automatically mounted during startup of WinPE to the given share using the credentials provided.
If you try to use V: as a local storage for your backup files, Veeam will replace V: with the real network path and throw the error in the last picture.
So you have to always select the option "Network storage" for the Backup Location and type the value for the shared folder and the logon credentials manually.
It would be much more convenient, to use the mapped drive letter.
Perhaps the developers can change this behaviour stated above?
I don't know if this is an error by design, but since Paragon and Acronis for example make use of a mapped network drive as a source for backup files, I don't think that would be very difficult to implement in Veeam.
Steps to reproduce this issue:
Change the winpeshl.ini to
Code: Select all
[LaunchApps]
%SYSTEMROOT%\System32\wpeinit.exe
%SYSTEMROOT%\System32\net.exe use V: \\<Server>\<Share>\<Folder> <password> /USER:<user> /PERSISTENT:NO
%SYSTEMDRIVE%\VeeamRecovery\Veeam.EndPoint.Recovery.exe
cmd.exe
If you try to use V: as a local storage for your backup files, Veeam will replace V: with the real network path and throw the error in the last picture.
So you have to always select the option "Network storage" for the Backup Location and type the value for the shared folder and the logon credentials manually.
It would be much more convenient, to use the mapped drive letter.
Perhaps the developers can change this behaviour stated above?
-
- Novice
- Posts: 3
- Liked: never
- Joined: May 10, 2019 10:19 am
- Full Name: Jean-luc
- Location: France
- Contact:
Re: Use Recovery Agent with my own build of WinPE
Hello everyone,
I am trying to make a Swiss army knife with different tools on a WINPE and I would like to integrate VEEAN RECOVERY. I managed to pass several technical problems but I remain stuck on a SQL server error during the restoration (see image file https://ibb.co/mzZMvXn).
I tried with VeeamAgentWindows_2.2.0.589 and VeeamAgentWindows_3.0.1.1039, I get the same problem.
Do you have a suggestion to solve this problem?
Have managed to make a WIPE with a version 3.0 ...?
Thank you for your answers
Regards,
Jean-Luc
I am trying to make a Swiss army knife with different tools on a WINPE and I would like to integrate VEEAN RECOVERY. I managed to pass several technical problems but I remain stuck on a SQL server error during the restoration (see image file https://ibb.co/mzZMvXn).
I tried with VeeamAgentWindows_2.2.0.589 and VeeamAgentWindows_3.0.1.1039, I get the same problem.
Do you have a suggestion to solve this problem?
Have managed to make a WIPE with a version 3.0 ...?
Thank you for your answers
Regards,
Jean-Luc
-
- Product Manager
- Posts: 14726
- Liked: 1706 times
- Joined: Feb 04, 2013 2:07 pm
- Full Name: Dmitry Popov
- Location: Prague
- Contact:
Re: Use Recovery Agent with my own build of WinPE
Hello Jean-Luc,
Veeam Recovery Media does not support volume level recovery (this functionality is available only via installed agent). Recovery Media supports only Bare Metal Recovery. Cheers!
Veeam Recovery Media does not support volume level recovery (this functionality is available only via installed agent). Recovery Media supports only Bare Metal Recovery. Cheers!
-
- Novice
- Posts: 3
- Liked: never
- Joined: May 10, 2019 10:19 am
- Full Name: Jean-luc
- Location: France
- Contact:
Re: Use Recovery Agent with my own build of WinPE
Hello everyone,
Thank you Dima P. for your answer
I use on my WINPE the same program (VOLUME LEVEL RESTORE) on the CD recovery generated by the VEEAM AGENT.
I tried to do the same procedures as described on this post. I copied the folders and files as well as the registry keys, the program starts normally, (see image file https://ibb.co/WPmJ7M1 )
I can select the volume but in the end I have this error on SQL. (see image file https://ibb.co/mzZMvXn).
Do you have a suggestion to solve this problem?
Have managed to make a WIPE with a version 3.0 ...?
Thank you for your answers
Regards,
Jean-Luc
Thank you Dima P. for your answer
I use on my WINPE the same program (VOLUME LEVEL RESTORE) on the CD recovery generated by the VEEAM AGENT.
I tried to do the same procedures as described on this post. I copied the folders and files as well as the registry keys, the program starts normally, (see image file https://ibb.co/WPmJ7M1 )
I can select the volume but in the end I have this error on SQL. (see image file https://ibb.co/mzZMvXn).
Do you have a suggestion to solve this problem?
Have managed to make a WIPE with a version 3.0 ...?
Thank you for your answers
Regards,
Jean-Luc
-
- Product Manager
- Posts: 14726
- Liked: 1706 times
- Joined: Feb 04, 2013 2:07 pm
- Full Name: Dmitry Popov
- Location: Prague
- Contact:
Re: Use Recovery Agent with my own build of WinPE
Jean-Luc,
Unfortunately there is no workaround. Mind me asking why you want to run volume level recovery instead of regular Bare Metal Recovery while booted the Recovery Media? Thank you!
Unfortunately there is no workaround. Mind me asking why you want to run volume level recovery instead of regular Bare Metal Recovery while booted the Recovery Media? Thank you!
-
- Novice
- Posts: 3
- Liked: never
- Joined: May 10, 2019 10:19 am
- Full Name: Jean-luc
- Location: France
- Contact:
Re: Use Recovery Agent with my own build of WinPE
Hello,
Thank you Dima P. for your answer
I describe the context, I have a windows 2016 physical server with Veeam agent v3 free version. when I boot with the cd recovery generate by the agent. I click on Bare metal.
The program that is launched is "Volume Level Restore" and the whole processor is working properly.
I copied the folders and files as well as the registry keys, the program starts normally on my WINPE CD but I have this error on SQL at the end.
I wanted to make a bootable Swiss Army knife cd with the ability to restore Veeam Agent.
Thank you for your answers
Regards,
Jean-Luc
Thank you Dima P. for your answer
I describe the context, I have a windows 2016 physical server with Veeam agent v3 free version. when I boot with the cd recovery generate by the agent. I click on Bare metal.
The program that is launched is "Volume Level Restore" and the whole processor is working properly.
I copied the folders and files as well as the registry keys, the program starts normally on my WINPE CD but I have this error on SQL at the end.
I wanted to make a bootable Swiss Army knife cd with the ability to restore Veeam Agent.
Thank you for your answers
Regards,
Jean-Luc
-
- Lurker
- Posts: 1
- Liked: 3 times
- Joined: Apr 25, 2014 7:00 am
- Full Name: Walter Lieb
- Contact:
Re: Use Recovery Agent with my own build of WinPE
Found the solution: Veeam Agent 4.0 requires .NetFx4...
Who is online
Users browsing this forum: No registered users and 41 guests