Mount EXT3 in Windows 7 x64

3 minute read

* There have been plenty of updates and input to this article. I've added them all to the bottom so be sure to read them too.

I've recently installed Windows 7 RC x64, but being primarily a Linux user I want to be able to use EXT3/EXT4 with Windows. Here are a few simple steps and requirements to get it working.

Preparation

I'm using Windows 7 x64 so have two options of either with using EXT2IFS (which I generally prefer as it's a bit more subtle) or EXT2FSD. I'll start by going over EXT2IFS.

EXT2IFS

  1. Using EXT2IFS means I am limited to an inode size of 128. This means I have to ensure my partition is formatted in this way. Ubuntu live CD's, as of 8.10 (Jaunty) will format EXT3 with an inode size of 256 (for future proofing). Therefore you will need to manually format the partition. This can be done with the following commands:
sudo fdisk -l
sudo tune2fs -l /dev/sda7 | grep Inode
sudo mke2fs -I 128 -j -t ext3 /dev/sda7

Installation

Ok, so you should have Windows 7 x64 installed, and an EXT3 partition with an inode size of 128.

  1. Download and install EXT2IFS
  2. Run it once installed, you should be able to assign a drive letter to your EXT3 drive, and once done, be able to browse your files.

Remembering After Reboot

There is a problem with Windows 7 that doesn't occur in Windows XP. After a reboot it won't re-mount your EXT3 partition. This is due to UAC, something that you need to turn off. * There is a way around this, see at the bottom of the post.

  1. Open up a command prompt and type "mountvol"
  2. This will list all of your volumes including the EXT3 volumes. You need to figure out whic volume is the one you want. It will generally map against the partition table. So for example, if the last partition on the hard drive is the one you want, it'll be the last one listed in mountvol.
  3. Once you've found the one you want, note down the output generated for it from "mountvol". It'll look something like:
    \\?\Volume{792de021-9e3e-11de-80cf-001d094608bc}\
    *** NO MOUNT POINTS ***
  4. The full command to mount it is below, but if running this on your standard account you'll probably get an "Access Denied" error due to UAC.
    mountvol R:\ \\?\Volume{792de021-9e3e-11de-80cf-001d094608bc}\

So having figured out the command to use to mount the volume, we now need to get around UAC. Here's how to:

  1. In C:\%User%\.. create a file called mount.cmd
  2. Open the newly created file, and paste in the command from above.
  3. Disable UAC by going to Control Panel > System Security > Change User Access Control settings.
  4. I set mine right to the bottom to "Not notify" otherwise I found the command wouldn't work.

Disabling UAC is far from ideal, but was needed to make the partition mount upon reboot. I'll keep looking for a way to have UAC enabled and the mounting still working, and update the post if I find a solution.

EXT2FSD

I did originally have problems running EXT2FSD. But after a few people posted comments, I tried it again. It works! I had to set it to run in Compatibility Mode for Windows Vista SP2. Unfortunately my machine was already setup with EXT2IFS so I don't know if UAC needs to be disabled (I'll find out when I get a bit of time). It's worth trying though if you have an EXT3 drive with an inode size of 256 (and hence can't use EXT2IFS).

Running .exe's

One problem I did have prior to the .cmd file (ie when it wouldn't remember to re-mount upon reboot), was that I couldn't run .exe files from my EXT3 partition. I think this was due to UAC too, and the fact that I had mounted the drive under my user account (rather than as an admin). However, since using the .cmd file and disabling UAC I can run .exe files without a problem.

UAC Fix

'adic_tech' in the comments below has found a solution on how to keep UAC enabled, but have EXT2IFS running. Here are the steps taken, you'll need to open a command prompt:

  1. |Enable the Administrator account| net user administrator /active:yes
  2. |Set the Administrator's password| net user administrator *
  3. Create a task in Task Scheduler to run as Administrator at startup, to run the moutvol command

I've not tried the above, but from looking at it, it looks fairly obvious that it should work.

PowerShell Script

@generic has a comment below regarding using powershell to mount the EXT3 volume during startup using a scheduled task, which is worth a look as another way of getting EXT3 to work.

Updated: