dockur / windows

Windows inside a Docker container.
MIT License
16.76k stars 1.41k forks source link

Can this container boot Windows 11 (with virtio drivers installed) installed on a physical disk (e.g. /dev/mmcblk1)? #517

Open christyler80 opened 3 months ago

christyler80 commented 3 months ago

Is there no existing issue for this?

Machine specifications

Intel N100 16GB

Operating system

Debian Bullseye 6.1.69-1~bpo11+1 (2024-01-05)

Docker version

Docker version 26.0.0, build 2ae903e

Description

Can this container boot Windows 11 (with virtio drivers installed) installed on a physical disk (e.g. /dev/mmcblk1)?

'sudo lsblk' reports as follows and the machine is booting from /dev/mmcblk1 via partition mmcblk1p1. rEFIind boot menu default is set to boot into Windows 11.

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT mmcblk1 179:0 0 230.5G 0 disk ├─mmcblk1p1 179:1 0 100M 0 part ├─mmcblk1p2 179:2 0 16M 0 part ├─mmcblk1p3 179:3 0 229.5G 0 part └─mmcblk1p4 179:4 0 900M 0 part nvme0n1 259:0 0 465.8G 0 disk ├─nvme0n1p1 259:1 0 512M 0 part /boot/efi ├─nvme0n1p2 259:2 0 89.4G 0 part / ├─nvme0n1p3 259:3 0 976M 0 part [SWAP] └─nvme0n1p4 259:4 0 374.9G 0 part /srv/dev-disk-by-uuid-23c0e229-cc5f-40b3-bc0b-3623bb469bd7 mmcblk1boot0 179:256 0 4M 1 disk mmcblk1boot1 179:512 0 4M 1 disk

Docker compose

version: "3" services: windows: image: dockurr/windows container_name: windows environment: VERSION: "win11" DEVICE: "/dev/mmcblk1" BOOT_MODE: "windows_plain" MANUAL: "Y" devices:

Docker log

The container appears to be stuck in a boot loop with the following message repeating in the Docker logs:-

3h3h3hBdsDxe: loading Boot0002 "UEFI QEMU QEMU HARDDISK " from PciRoot(0x0)/Pci(0xA,0x0)/Scsi(0x0,0x0) BdsDxe: starting Boot0002 "UEFI QEMU QEMU HARDDISK " from PciRoot(0x0)/Pci(0xA,0x0)/Scsi(0x0,0x0) 3h3h3hBdsDxe: loading Boot0002 "UEFI QEMU QEMU HARDDISK " from PciRoot(0x0)/Pci(0xA,0x0)/Scsi(0x0,0x0) BdsDxe: starting Boot0002 "UEFI QEMU QEMU HARDDISK " from PciRoot(0x0)/Pci(0xA,0x0)/Scsi(0x0,0x0) 3h3h3hBdsDxe: loading Boot0002 "UEFI QEMU QEMU HARDDISK " from PciRoot(0x0)/Pci(0xA,0x0)/Scsi(0x0,0x0) BdsDxe: starting Boot0002 "UEFI QEMU QEMU HARDDISK " from PciRoot(0x0)/Pci(0xA,0x0)/Scsi(0x0,0x0) 3h3h3hBdsDxe: loading Boot0002 "UEFI QEMU QEMU HARDDISK " from PciRoot(0x0)/Pci(0xA,0x0)/Scsi(0x0,0x0) BdsDxe: starting Boot0002 "UEFI QEMU QEMU HARDDISK " from PciRoot(0x0)/Pci(0xA,0x0)/Scsi(0x0,0x0) 3h3h3hBdsDxe: loading Boot0002 "UEFI QEMU QEMU HARDDISK " from PciRoot(0x0)/Pci(0xA,0x0)/Scsi(0x0,0x0) BdsDxe: starting Boot0002 "UEFI QEMU QEMU HARDDISK " from PciRoot(0x0)/Pci(0xA,0x0)/Scsi(0x0,0x0)

Screenshots (optional)

No response

kroese commented 3 months ago

In theory that should work.. What version of Windows is installed on /dev/mmcblk1?

BTW: The windows_plain mode does not exist anymore. The only ones are windows and windows_secure (for Secure Boot) now.

christyler80 commented 3 months ago

Hi,

Thank you for replying so quickly.

The version of Windows 11 Pro 23H2 and fully up to date. VirtIO drivers are installed.

I can boot into Windows 11 installed on disk ‘/dev/mmcblk1’, via the rEFInd boot menu option.

However, if I boot into my Debian system on the same Computer, I cannot get the container to launch Windows 11 installed ‘/dev/mmcblk1’.

The container does work fine with a copy of Windows 11 installed in an image file (date/data.img).

Great project and well done for getting so far with it.

I do appreciate what I am trying to do is probably a bit unusual and maybe a step too far!!

Best Regards

Chris

www.christyler.uk http://www.christyler.uk

From: Kroese @.> Sent: Saturday, May 18, 2024 9:35 PM To: dockur/windows @.> Cc: christyler80 @.>; Author @.> Subject: Re: [dockur/windows] Can this container boot Windows 11 (with virtio drivers installed) installed on a physical disk (e.g. /dev/mmcblk1)? (Issue #517)

In theory that should work.. What version of Windows is installed on /dev/mmcblk1?

BTW: The windows_plain mode does not exist anymore. The only ones are windows and windows_secure (for Secure Boot) now.

— Reply to this email directly, view it on GitHub https://github.com/dockur/windows/issues/517#issuecomment-2118997064 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AF27CRQQPWZBBCPXCJPUSGTZC63QTAVCNFSM6AAAAABH5WHFOWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMJYHE4TOMBWGQ . You are receiving this because you authored the thread. https://github.com/notifications/beacon/AF27CRVRQKG7SUQOE5EO2GTZC63QTA5CNFSM6AAAAABH5WHFOWWGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTT6JVKEQ.gif Message ID: @. @.> >

kroese commented 3 months ago

If you start a working container (with a data.img) and you add this line to that compose file:

devices:
  - /dev/mmcblk1:/disk2

After you start Windows and go to Disk Management from the Adminstrative Tools, do you see the second drive? Can you assign a drive letter to the partitions and browse them?

christyler80 commented 3 months ago

Thank you.

I am away for a couple of days, but will try this when I get back and share the result.

Many Thanks

Chris

From: Kroese @.> Sent: Sunday, May 19, 2024 8:00 PM To: dockur/windows @.> Cc: christyler80 @.>; Author @.> Subject: Re: [dockur/windows] Can this container boot Windows 11 (with virtio drivers installed) installed on a physical disk (e.g. /dev/mmcblk1)? (Issue #517)

If you start a working container (with a data.img) and you add this line to that compose file:

devices:

After you start Windows and go to Disk Management from the Adminstrative Tools, do you see the second drive? Can you assign a drive letter to the partitions and browse them?

— Reply to this email directly, view it on GitHub https://github.com/dockur/windows/issues/517#issuecomment-2119329641 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AF27CRTS5PAAILJQ75XXWZTZDDZELAVCNFSM6AAAAABH5WHFOWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMJZGMZDSNRUGE . You are receiving this because you authored the thread. https://github.com/notifications/beacon/AF27CRU3K4IMKKNROWN7ODLZDDZELA5CNFSM6AAAAABH5WHFOWWGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTT6KJTWS.gif Message ID: @. @.> >

christyler80 commented 3 months ago

Hi,

Yes, I can see and browse the physical partition (drive F:)

Thanks

Chris

From: Kroese @.> Sent: Sunday, May 19, 2024 8:00 PM To: dockur/windows @.> Cc: christyler80 @.>; Author @.> Subject: Re: [dockur/windows] Can this container boot Windows 11 (with virtio drivers installed) installed on a physical disk (e.g. /dev/mmcblk1)? (Issue #517)

If you start a working container (with a data.img) and you add this line to that compose file:

devices:

After you start Windows and go to Disk Management from the Adminstrative Tools, do you see the second drive? Can you assign a drive letter to the partitions and browse them?

— Reply to this email directly, view it on GitHub https://github.com/dockur/windows/issues/517#issuecomment-2119329641 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AF27CRTS5PAAILJQ75XXWZTZDDZELAVCNFSM6AAAAABH5WHFOWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMJZGMZDSNRUGE . You are receiving this because you authored the thread. https://github.com/notifications/beacon/AF27CRU3K4IMKKNROWN7ODLZDDZELA5CNFSM6AAAAABH5WHFOWWGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTT6KJTWS.gif Message ID: @. @.> >

kroese commented 3 months ago

Okay, if it can be read then I have not really a clue why QEMU doesnt want to boot it.

There might be a workaround. If you download a tool like EasyBCD (or bcdedit that comes with Windows), you should be able to add that secondary drive as a multi-boot entry.

In that case it will not be the QEMU bios that boots the drive directly, but a dummy Windows install on the first drive that boots the secondary (physical) drive entry via its own bootloader.

I think there is a good chance it will work that way. And if you make the secondary drive the default entry, the end-result will be undistinguishable from directly booting it.

christyler80 commented 3 months ago

Hi,

Thank you for your suggestion and I will try some things out over the next week or so.

Best Regards

Chris

From: Kroese @.> Sent: Wednesday, May 22, 2024 9:49 PM To: dockur/windows @.> Cc: christyler80 @.>; Author @.> Subject: Re: [dockur/windows] Can this container boot Windows 11 (with virtio drivers installed) installed on a physical disk (e.g. /dev/mmcblk1)? (Issue #517)

Okay, if it can be read then I have not really a clue why QEMU doesnt want to boot it.

There might be a workaround. If you download a tool like EasyBCD (or bcdedit that comes with Windows), you should be able to add that secondary drive as a multi-boot entry.

In that case it will not be the QEMU bios that boots the drive directly, but a dummy Windows install on the first drive that boots the secondary (physical) drive entry via its own bootloader.

I think there is a good chance it will work that way. And if you make the secondary drive the default entry, the end-result will be undistinguishable from directly booting it.

— Reply to this email directly, view it on GitHub https://github.com/dockur/windows/issues/517#issuecomment-2125719425 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AF27CRTJKAZZQF6DKBVWKRTZDUACTAVCNFSM6AAAAABH5WHFOWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMRVG4YTSNBSGU . You are receiving this because you authored the thread. https://github.com/notifications/beacon/AF27CRVCPBDLCI6UP3CZ3F3ZDUACTA5CNFSM6AAAAABH5WHFOWWGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTT6WPTYC.gif Message ID: @. @.> >