-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How to diskless boot on a real machine? #24
Comments
Hi 593749519, Thank you for trying this. It is actually long ago since I touched this piece of code. Thanks again for using WinDRBD, Best regards,
|
Hi 593749519, We are making progress. It looks like UEFI is a requirement, are you able |
Hi Johannes, this is Yannis the person who commented on #22. After testing all scenarios, my conclusion is the following... Using Windows installer to deploy Windows on a WinDRBD disk (both in BIOS and UEFI boot mode) does not make much sense. Main reason is that, even if you manage to get past of the first stage of the installation (disk partitioning/installing Windows), then second stage of the installation would fail for 2 reasons: a) In BIOS boot mode, ipxe-windrbd.pxe would load Windows kernel successfully, but eventually it would fail proceeding further due to the fact that there is no static ip address defined on Windows side, and due to the necessary boot services (drivers) not being set to auto start on boot. WinDRBD expects these to be set in order to establish a scucessfull diskless connection with the linux server. Hence, Windows installation cannot proceed any further. b) In UEFI boot mode, ipxe-windrbd.pxe would fail to load Windows kernel as it's currently not designed to load an UEFI VFAT partition, Windows kernel etc. What currently works (both on a VM and a physical system) is to prepare the Windows image first either on a VM or a physical system as per instructions described in windrbd-boot.pdf tech guide. Then load the image on the linux server as per instructions on same guide, finally boot the system in BIOS boot mode. This method would not work in UEFI mode. I believe that having a way to boot Windows via diskless WinDRBD in UEFI mode would make sense, considering that most physical clients (laptops) are currently set to boot in UEFI/Secure Boot mode. BIOS boot mode is slowly becoming obsolete on these systems. |
Hi Yannis, of course we know each other :) I am just now experimenting with stage 2 of the Windows installer booting Regarding static IP address, one has to set up a fixed IP address for I will check the UEFI support of iPXE for the Windows kernel now. I agree that efforts to make Windows boot via PC BIOS and WinDRBD Best regards,
|
Hi I managed to boot stage2 until the WinDRBD driver (which appears |
Yannis, you need a EFI enabled ipxe image: I am attaching it. The iPXE you have works only with PC BIOS. |
You can build your own with: make bin-x86_64-efi/ipxe.efi in my branch of iPXE: https://github.com/johannesthoma/ipxe-windrbd/tree/windrbd Happy hacking :) |
Exactly. WinDRBD does not find the DRBD URL for the resource and does not create a boot disk. PC BIOS stores it in the first 640K so currently WinDRBD just scans the first 640K but EFI does this somehow different. I am working on it :) Thanks again for your contribution :) |
Hi Yannis, I am one step further it looks like the Virtual SCSI Bus Object is not |
Thanks Johannes. Quick question, what would be the way to "hardcode" the WinDRBD URL? I understand that this is an alternative method to dynamically provide the URL via the DHCP server? |
I hardcoded the URL in the Source Code and rebuild the project (just to see if it would work when it has the URL). This is something I would not recommend since setting up a build environment is unfortunately still not easy and straight forward. If you can wait a few days I hope to find a solution until then (currently working on the missing bus object which in turn causes the INACCESSIBLE_BOOT_DEVICE BSOD). |
Sure, no rush on this, I was just curious :) |
Hi everybody, made some progress WinDRBD Virtual Bus Device is Currently the installing VM (or real machine) has no network need Best wishes and happy new year!
|
Hi Johannes, This is indeed good news, however I believe that we should not give much effort in making windrbd work with the standard Windows installer, since this can be easily workarounded by having pre-created, syspreped windrbd+windows image which one could use as a base image for any number of physical or VM clients. Syspreped (generalized) Windows images are machine hardware independed, so they can be booted up by any system, no matter their hardware specs. This would also reduce Windows deployment time, as there is no need to repeat Windows installation for each individual deployment.One example would be using for example zfs+clones as Windows image provider. Any progress with the diskless EFI boot ? Best wishes for the new year!
|
Hi Yannis, It looks like the NIC driver doesn't get installed and Windows waits forever for the root device (no BSOD it just loops). I then experimented with Windows preinstall environment (WinPE) and created an ISO image and installed Windows manually (with dism /applyImage and the like) Unfortunately same result. It loos like the driver is in the driver store (E1G something) but does not get loaded. You mentioned syspreped Windows Images. Could you point me into a direction how to set up a Windows image that contains and loads the necessary drivers? (PnP doesn't work with the NIC driver since it requires access to the root device). How is this done with iSCSI targets? Thanks a lot and best wishes,
|
Hi Johannes, Thanks for your continued efforts with this. I'm not an expert in the area, but I managed to find the following articles which may shed some light, if you haven't seen them already... http://mistyprojects.co.uk/documents/iscsi-targets/files/intro.htm All the best,
|
Hi Johannes, Managed to find some time to do some further testing on this. I configured an iscsi target (tgt) on same linux VM where DRBD serves the Windows image. I was able to SANBOOT the image via iscsi without any issues, no modification were needed on the image either. I even managed to install WIndows from scratch directly via iscsi (by following the WinPE method in the link I provided on my last post). Still WinDRBD fails with "inaccessible_boot_device" BSOD. My understanding is that something needs to be changed in the "drbd.cgi" script for this to work, but again I'm not an expert :-) Regards,
|
Hi Yannis, Thank you for testing this. To solve the INACCESSIBLE_BOOT_DEVICE BSOD
Alternatively, if you have a WinPE command line you can also However one has to install Windows (and WinDRBD) manually when the ISO Attached you find the Windows registry files: they should be readable by Thanks again for trying this, Best regards, |
Hi Johannes, Many thanks for sharing the .reg files. I was able to import them in the registry as per your instructions, however I'm still receiving the INACCESSIBLE_BOOT_DEVICE BSOD. Could it be because my WinDRBD is not the one with the hardcoded DRBD URL ? Did you manage to find a solution for that ? Thanks again,
|
Hi Yannis, Yes, I think you are right. Default WinDRBD driver behavior is to only create a root disk I will implement that tomorrow and send you a windrbd.sys to be replaced in the file system Thanks for pointing that out. I will write when I have the WinDRBD.sys ready.
|
Hi Johannes, Understood and many thanks again.
|
Hi Yannis, As promised a version that allows to configure the WinDRBD root device URL with a registry value. The key is: HKLM\SYSTEM\ControlSet001\Services\WinDRBD (where also syslog_ip is located) inside that key create a REG_SZ value called BootDeviceURL and assign it the WinDRBD resource URL (the long string starting with drbd:). To use the driver make the resource primary, kpartx -a and mount it (partition 3 or 4) and copy the Then using reged -e create the BootDeviceURL registry value. There should be no BSOD when booting the windrbd-boot-url-for-yannis.sys.zip Best regards and happy hacking :)
|
Thanks Johannes, will test and report back.
|
Hi Johannes, Good news, I managed to boot within a VM, a pre-created Win10 image via WinDRBD in EFI mode by using the modified version of windrbd.sys you provided to me (had to disable driver signature enforcement first). I had also already done all required modifications in the Windows registry beforehand (as they are mentioned in the WinDRBD diskless boot pdf guide). Moreover, I had disabled the Windows pagefile as well, as that was causing issues. So far, so good. However, when I try to boot the same image from a physical machine (Dell Latitude E7270), it's stuck in the boot process waiting for the network as you mentioned. So clearly, related to the network card drivers not being loaded during the early boot stage. So far, I have not tried to do a clean Win10 installation directly on a WinDRBD device, but will try that at some point too. Will continue the tests... :-) Thanks,
|
Hi Yannis, I just tried to install a Windows 7 on top of a BIOS VM with WinDRBD, right now there But thank you for trying this I think when we solve the no network problem, one would be
Best regards, -- Johannes |
Hi Johannes, I've seen IRQL_NOT_LESS_OR_EQUAL BSOD in the past, when I attempted to install Win10 over WinDRBD. The solution for me was to disable Windows PageFile via registry. Not sure if this is the same case though. Just wanted to report that I had success booting a Dell laptop over WinDRBD (Win10 image). It has been stable for a couple of days now, even when running disk intensive tasks (I'm running a rw fio job in a loop). Only "issues" I see so far (when comparing it to iscsi boot) are the following...
Regards, |
With windrbd-boot.pdf I can surely deploy a diskless client boot on virtual-box, is there any guidance for diskless boot on a real machine, what should be considered to succeed?
The text was updated successfully, but these errors were encountered: