QUESTION: Where is my wine’s C: drive?
SHORT ANSWER: /home/$USER/.wine/drive_c
As you probably know Linux and Windows have quite a different approach to maintaining and presenting files-systems, files and folders.
Linux is using the “virtual tree” approach whereby the system has knowledge of all of its paths, arranged in one global tree hierarchy, with the the various storage devices (hard disk, tape drives, flash drives, CD-ROMs, network drives) attached or as the linux jargon has it “mounted”, to this virtual tree.
Windows has used the “hardware-based” approach, where each physical drive (or logical drive, a.k.a. “partition”) is assigned a drive letter followed by a colon (A:, B:, C: … etc). Under each drive there is a hierarchical tree system very much like in linux but there is no one global absolute hierarchical tree of paths and files – you have as many trees as there are drives (drive letters) known to your system.
Historically, the first two drive letters A and B were reserved for floppy drives. Thus, the first hard drive was, designated as C:. Not that you could not re-arrange your drives and have A: as your hard-drive, Q: as your CD-ROM and Z: as your floppy but 99% of programs (and humans!) would base a lot of their assumptions on C: being the first hard drive in the system and so most developers would design their applications with that in mind. On the C: drive, it is common to have such well-known paths as “C:\Windows”, “C:\Documents and Settings” and “C:\Program Files”. Note that “C:\Documents and Settings” is now renamed to “C:\Users” in Windows 7.
Most program installers would typically offer the user to install themselves somewhere underneath “C:\Program Files” and store program config settings in the user’s folder under “C:\Documents and Settings”.
Since most Windows applications will rely on the system having at least one drive (which is typically named C:, as explained above), wine also needs to mimic this behaviour and maintain at least one virtual hard-disk (C:) so that the windows programs you want to use could run normally.
The question is – where is it? Where is wine’s C drive? You can’t have /C: as the colon character “:” is not a legal path character in Linux. Perhaps if could be named /C, then? Yes that could be a possible solution (in theory), however there’s some problems with that as well. Most users would not have permissions to create folders under the root directory. And, yet another problem with this setup would be that different users could overwrite their apps and data if all of their wine instances all wrote and read from one global location.
So, how can we find out where is our wine’s C: drive?
Well we could run the winecfg utility and see what it has to say about this?
Looking in the Drives tab of winecfg, however, we can see that the C: drive is mapped to ../drive_c, which is obviously not very useful (as this is a relative path and could be anywhere). Well, at least we know that it is called drive_c… How can we use this information to find the C: drive used by wine? Well for one thing we could run “locate drive_c” and see if it finds any folders named drive_c in our system!
Type “locate drive_c” in your terminal program. This gives a long list of files and folders containing the string drive_c which is not too useful so we’ll use grep to show us just the dirve_c folders and filter out all the other noise, since it is this folder we are looking for:
# locate drive_c | grep “drive_c$”
This gives a nice short list of only the folders named “drive_c”, which on my system looks like this:
/opt/google/picasa/3.0/wine/drive_c
/home/encho/.google/picasa/3.0/drive_c
/home/encho/.wine/drive_c
As the first two are obviously specific to a picasa installation, we are left with the .wine/drive_c folder under my home directory is the only possible location of wine’s C: drive for my user. It will hold true for most systems out there that the C: drive as known to wine will be under /home/$USER/.wine/drive_c, but even if it is not there you can use the above procedure to locate your wine’s C: drive.
At this point one might ask: “Ok, great, now I know where my C: drive is (under wine) and so what? What do I need this for? Wine will handle it for me anyway – whenever a program asks for the C drive wine will direct it to that folder, so why do I need to bother knowing where it actually lives?”
Fair question, and the answer is: “In most cases you do not need to know where you wine’s C drive is, however you must ensure that the disk (and here I mean the physical disk as known to your Linux system) where your wine’s C: drive is located has enough space on it or you will start getting errors like “Not enough space on C: drive”. And to ensure that your disk has enough spacde on it you, must of course, know where your wine is installed and ensure there is enough room on it. As mentioned above this is usually under your home folder so it all boils down to knowing where your home directory is mounted. As matter of fact
To find out how much free space you have on that disk go to your .wine folder and issue a df command there. It will report free disk space on that device which is exactly what you need:
#cd ~/.wine
# df -h .
Filesystem Size Used Avail Use% Mounted on
/dev/sdb6 20G 16G 3.4G 83% /home
As you can see in my case I have 3.5 GB available on my /home filesystem which is not too much so I need to watch it, especialy if installing disk-space-hungry windows apps!
Cheers folks, hope that was useful 😉
Thank you, this was clear and very useful and answered my question immediately.
One thing you may want to correct: “Well we could run the wincfg utility and see what it has to say” I think you meant winecfg, not wincfg 🙂
Yup, thx 🙂 … It is winecfg of course. Corrected.
Also, a HUGE reason to know where “virtual c” is located, is what I am running into. I have a 2nd ‘phyisical drive’ that has Windoze on it, and so now I need to make Wine know that my ‘c’ needs to be on that 2nd drive – so, how do i do that? I did not want to do a ‘side-by-side,’ so I dedicated a ‘main hd’ to Wine, and left Windoze on the 2nd HD – it sees it just fine, like 250GB whatever, but how do it get the info in Wine, in order to tell Wine, “Hey, look on this other HD for any Windoze programs?” Thanks in advance!
correction: i dedicated an entire HD to “linux,” not to Wine. But, if I write a book, maybe i will dedicate it to Wine.
This answers most basic questions and a very detailed troubleshooting lesson as well, however I need to get access to the C: drive without having to use Wine executing a file because I need to move a set of files into the C: drive, not the Program Files in the C: drive, let alone the files not being executable in the first place. The reason for this is I will be executing a file that will need those files in the appropriate file location (Windows wise), to function. The setup I am trying to achieve is Jeutie’s Blizzlike Repack 3.3.5. Of course, it is PC only, however with Wine this should be achieveable. I just have not been able to locate the appropriate information to complete this task. Thank you again for any and all help. Happy Thanksgiving.
I just learned that Ctrl+H shows hidden files. Thank you again for all your help.
Hi all and thank you for the kind words and… yeah, Happy Thanksgiving… which is more like Merry Christmas now lol. Sorry it took me so long to go through all the comments.. it was a pretty busy time for me 🙂
Thanks for this post. Very clear.