-
Notifications
You must be signed in to change notification settings - Fork 854
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
Block devices, (i.e. /dev/sda) ? #689
Comments
Thanks for the feedback. @russalex or @bitcrazed might be able to comment on any ETA's (or the lack of it). Also, please also make any feature requests on our User Voice Page and help us prioritize. |
Unfortunately I can't give an ETA on this one. We know there is a desire to be able to access block devices from WSL but it is not terribly high on our priority list at the moment. As @sunilmut points out, the best thing to do here would be to add something to our User Voice page. Little secret, one thing that always helps the requests there is explaining the actual scenario you're looking to enable. |
@russalex Is there really a point to this kind of thing? It's in the nature of the thing that it is going to be served a pre-assembled abstracted filesystem. Loading up something like dd while Windows mounts the disk (in non-raw mode) seems like it could be a problem, and this kind of thing seems to require effectively writing hardware drivers that negotiate hardware access between WSL and WSWin32 |
@fpqc, While we know there is some desire for this feature, it's not been enough of a priority for us to discuss planning or implementation. What is interesting to me is to hear what people want to do with these types of features. The users of this forum often surprise me with their creativity and the more information we get the better. I have found that it never hurts to at least hear someone out. If something is compelling enough, and enough people want it, then we should at least look into feasibility and see where we may be able to fit it into plans. |
I would love to have access to block devices from WSL but it would require strict restrictions (like disallow write from devices mounted from windows/wsl). There is a high risk of corruption if a peripheral is already mounted :( |
Well actually, raw disk access would make it possible to leverage device-mapper, mdraid and LVM to access any existing linux disks/logical volumes in/on your system. |
@finkelamein idk about that, I think the LVM driver is baked into the Linux Kernel. |
It's device-mapper driver that's in the kernel, but yeah, that would be needed.
But there would be need of something similar anyway to support access to disks like in the original question by OP. |
I would love to have access to partition types that don´t have native support on Windows.( e.g. mount a ext4 partition) |
@jdevora This would necessarily be beyond the scope of WSL. The first thing would be the extension of WSL's ability to mount different partition types in general, maybe with a way to query the NT kernel about "FS capabilities" (which I suspect already exists, but probably does not exist with information about Linux FS feature support). Then you would also need to write a kernel-mode driver (or maybe somehow use FUSE?) supporting ext4. The first thing might be within the scope of WSL. The second probably isn't. |
At least fuse will be great. With fuse we will be able to implement\emulate somehow everything other linux specific filesystems. |
On Cygwin I can use This allows me to manages the fileystems of embedded devices runing linux directly (for example I can run something like Would it be possible to have the same feature on Windows subsystem for Linux ? Otherwise, wsl isn’t a good platform for building and loading firmwares on the ꜱᴅ card. |
Am I understanding properly that even if MS found a way to allow the subsystem direct device access, standard linux filesystem kernel modules would not be usable with the subsystem's customized kernel? I was hoping we could mount the foreign filesystems which windows does not support otherwise and then export them with smbd - like it was possible to do with the old colinux project - but I guess this is too far off into the future for now. If fuse support in LXSS is easier to implement, being a single thing as opposed to the various possible linux kernel filesystem drivers, it could be pretty great - even though core linux filesystems that have kernel modules don't seem to have fuse drivers yet because there was never any need for them, they can probably be developed once there is a use-case for them in LXSS. |
Yes, as it's not a real kernel, filesystems included from linux kernel will not be usable (or MS have to rewrite them). But if they implement fuse, I think we will see ext2/3/4 comming to fuse :) |
@georgir That's my general understanding. LXSS does not have a kernel and integrating linux kernel modules with the Windows security-model would be really difficult. |
If folks here would like FUSE support (I would), you can up-vote its UserVoice: |
One use would be to mount micropython devices so that you can copy .py files from the local filesystem to the on-board memory without having to have another linux machine lying around. |
Pretty cool use case eevans - I haven't thought of anything like that. FUSE in userspace is also great in general. |
@eeevans Can't you do that using the new support for removable drives? |
@sundhaug92 probably not. That is specifically in the case of fat32 and ntfs removable media. |
My use for such devices is to be able to use tools like |
@res0nat0r - as a matter of interest, if you're running on Windows, why not just use one of the multitude of audio free and/or open-source tools for Windows? |
@bitcrazed Honestly it was just so that I could re-use my EAC + Picard on Windows though will also do the trick. |
Understood. Supporting USB CD/DVD drives isn't high on our backlog - I recommend you look to other tools; there are plenty for Windows too ;) |
No problem, thanks for the feedback! |
wsl --mount is now available in the latest insider preview build (see blog post). @lmcdougald : Making the device readable and writable in WSL1 wouldn't really be useful unless WSL1 could also parse partitions (GPT / MBR) and read filesystems. That's the reason why wsl --mount is only available in WSL2. |
Enabling the former scenario will allow the latter. The file system aspect for example could be covered by: https://github.com/billziss-gh/winfuse/releases
|
My use cases
So at the end of the day WSL adds nothing for me that I can't get quickly from a secondary OS or from Docker for Desktop containers at this point. The differentiator for me is to be able to eliminate at least one or both of the aforementioned options. |
@cephas0 : You can do both of these things with wsl --mount.
|
@OneBlue except this don t allows partitions thus preventing it to work with one drive slot computers, whereas a Linux native system maintains full access to acl of ntfs partitions. |
There is a workaround with StarWind VSAN. It supports whole device passthrough or partition/virtual disk block access over iSCSI. Configuration guide here - https://www.starwindsoftware.com/blog/enable-block-storage-devices-in-wsl2 |
Every version of WSL I try to like but keep going back to cygwin because stuff like this... |
It would appear that the WSL2 not having passthrough for Serial Ports is also bundled under this issue. Please advise, as it would be nice to run WSL2 for MicroPython on my ESP32's. As it is, I will have to restart my machine in full Linux mode. Is there any plan for passthrough for COM ports in WSL2? If not, why not? It worked fine on WSL1. |
That sounds like a separate issue, if so you should probably create one as such |
I've just installed WSL 2 on Windows 11, and the |
What distro did you install? Ik have that missing file error in WSL2 on Windows 10 in Debian 11, but it works in Ubuntu 18. |
The default Ubuntu distro.
~~ Robert.
Science tells us we are merely beasts, but we don't feel like that. We feel
like angels trapped inside the bodies of beasts, forever craving
transcendence.
(VS Ramachandran, cognitive neuroscientist)
|
For me, I just want to use dd without having to go to Linux. I can't use a livecd easily because I don't have a flash drive, and my usb drive isn't recognizing on windows tools (though I can see G/: in the explorer, though it freezes). So this was hopefully my last attempt to get it to work. (Not sure it'll necessarily work, but there are similar use-cases to this) For others, it's also useful for formatting a drive using linux, (without having to go through the trouble of a dual boot / livecd) |
Maybe Cygwin will be able to help you with that. I vaguely remember dd working there, but it has been a long time. |
Can confirm that it works fine, I've been using it for half a decade. I tried my best to move to WSL2 but it has too many failings compared to Cygwin, so I'll probably stay on Cygwin for at least another 5 years. |
Just wanted to say - I've been tethered to a virtual machine at work for years, needing a working Linux dev environment for an embedded product. Decided to migrate to WSL2 earlier this year when I'd seen how far it had come. Somehow, I never ran into this issue before now, and man it is very disappointing to have to fire that VM up again. |
same here. wsl got everything done in the petalinux toolchain, only to be punted back to a vm to format the sd card :( |
While usbipd helps immensely for mounted file systems shared with the host (Win11 OS) it does not help with physical device (as in /dev/mmblk0p1) access as much. Tools that embedded devs use are Windows commands to get the physical device name (like \.\PHYSICALDRIVE2 ) - don't really translate well to handles WSL 2 clients use c:> GET-CimInstance -query "SELECT * from Win32_DiskDrive" DeviceID Caption Partitions Size Model \.\PHYSICALDRIVE2 TS-RDF8 SD Transcend USB Device 1 30935278080 TS-RDF8 SD Transcend USB Device c:> Get-WmiObject Win32_diskdrive | Select Caption,DeviceID,InterfaceType,Size | Where-Object {$_.InterfaceType -eq "USB"} Caption DeviceID InterfaceType Size TS-RDF8 SD Transcend USB Device \.\PHYSICALDRIVE2 USB 30935278080 Resorting to creating a local image file and then mounting (each filesystem needed in the boot disk) it, formatting, and placing images in the image file (that is partitions for different file system) rather than to the direct physical drive is an option. Then copying it to windows and using an image writer tool like rufus or others seems the only workaround. Man, computers make things easier, Microsoft could wrap (https://en.wikipedia.org/wiki/Amoeba consume?) Linux systems when they get this right. Yes, I realize they have Linux source code - but this would give them instant access to all of what free software foundation folks have been working on forever. |
@RGulde I'm not sure I follow. The way I use
Sometimes, for reasons I have not yet been able to discover, you need
Which will necessitate a reboot, and prevent Windows from accessing that device at all. At the end, though, it just shows up as a block device in WSL:
In order to get this working, I did need to custom compile the WSL kernel. If I recall correctly, Microsoft has made the irritating decision to support this out of the box on Win11, but not backport the kernel config to Win10 WSL. The |
In case of disks that e.g. have a linux install and have no drive letter, use |
I'm on Windows 11 and it does not show in part of my
|
@crackwitz If you're not seeing any block devices in |
I follow this for disks such as hard drives, SSDs, etc, but I'm trying to mount a DVD drive as a block device. I tried using the physical path of \\.\CdRom0\ and either get an "Access is denied" or a "Incorrect Function", I even removed the drive letter from Windows just in case. Is there something different or are optical drives not available via "wsl --mount" ? |
Is there any ETA on when we can see block devices such as sda, for tools like hdparm ?
Thanks
The text was updated successfully, but these errors were encountered: