It’s been a while since I last had to run Windows on my laptop; back then I used Ext2 Installable File System For Windows to access data on my Linux-formated partitions.

In the meantime a few things have changed: Windows 7 and Ubuntu formating ext3 with a inode size of 256 – none of these are supported by ext3 ifs.

Ext2read supports Windows 7 (as well as ext4 and LVM2) but it’s more like a file browser and does not support assigning drive letters to Linux filesystems and since my /home is formatted with XFS it does not help me anyway.

Instead of going through reformatting the filesystems I wanted to access from Windows, I decided to build a virtual file server instead; that way I can access any filesystem type supported by Linux.

Software used: Windows 7, Virtualbox and Ubuntu (server edition)

This guide will work with other versions of Windows (and other OS’es as well), there are no ties to Virtualbox and the Linux version used can be anyone you like.


Installing Virtualbox

VirtualBox installer
Installing Virtualbox is a straight forward deal, accept the defaults and you are good to go. Once installed, it’s a good idea to record the IP of the host-only network adaptor, because you are going to use it later.

Start Virtualbox (if you have used the default installer settings, it should be started already), go to “File” and then “Preferences”, select “Network” and double-click the “Virtual Host-Only Ethernet Adapter” – The IP address of the adapter is right there.

Configure the virtual machine

Simply press “New” and walk through the wizard. Select Linux as operating system and either 32 or 64 bit Ubuntu depending on what you plan to install – The defaults should be fine.

This is where it becomes a bit tricky. We need to access a raw disk and this is a bit tricky. Apparently only administrator can access disks directly and Virtualbox has no way of asking UAC for privilege escalation.

To possible solutions: 1) is to run Virtualbox and needed commands as administrator 2) Disable UAC. Personally I went for option 2.

Mapping the raw disk

In order to access the raw disk (or disk partition) from inside the virtual machine, we need to map it to a virtual disk file (VDI).

Open a command prompt (remember to use “run as administrator” if you have not disabled UAC) and run these commands

First, let’s figure out which partition(s) you wish to access

> c:
> cd "\Program Files\Oracle\VirtualBox"
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe internalcommands listpartitions -rawdisk \\.\PhysicalDrive0
Number  Type   StartCHS       EndCHS      Size (MiB)  Start (Sect)
1       0x07  0   /32 /33  1023/254/63         35000         2048
2       0x83  1023/254/63  1023/254/63         25000     71682048
5       0x82  1023/254/63  1023/254/63          4800    122884096
6       0x83  1023/254/63  1023/254/63        412137    132716544

In my example, I only wish to access partition 6 (normally mounted as /home in Linux); now let’s map it

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe internalcommands createrawvmdk -filename "c:\path\to\filename.vdi" -rawdisk \\.\PhysicalDrive0 -partitions 6
RAW host disk access VMDK file \path\to\filename.vdi created successfully.

Open VirtualBox again (if you have UAC enabled, open VirtualBox as administrator; for some reason this screws up the USB stuff in VirtualBox) – click the virtual machine, and then “storage”, select the SATA device and click “add harddisk”, click “Use existing disk” and then browse to your VDI that you create before.

Adding a second network interface

To ease administration, we’ll add a second, host-only network interface card to the VM

  1. Select the virtual machine
  2. Scroll the right window down, and click network
  3. Click tab “Adapter 2″, enable it and select “Attached to: Host-only Adapter”

Installing Ubuntu

After downloading Ubuntu, use the downloaded ISO in VirtualBox and boot the Ubuntu installer. Choose your language and keymap in the boot loader and then select “Install Ubuntu Server”.

Go through language and country selection selection, pick a host name, timezone. When asked to partition disks, select manual
Manual partitioning

Select “Guided partitioning”

Guided partitioning

Select “Guided – use entire disk”

Guided partitioning - use entire disk

Select the disk to use; in this case it’s sda (since it’s only ~8 GB)

Select root disk

Now select the mapped partition

Select mapped raw disk

Select same filesystem as the disk is already formated with; select to keep data and select a mount point

Set up partition

Finally, choose “Finish partitioning and write changes to disk”, review the changes and go on. It’s important to check that nothing is changed on the mapped disk

Review and go on

The installation will now be on it’s merry way.

Final steps

  1. Add a user for you
  2. Enter proxy details
  3. Configure updates (since this is a “background server” I recommend automatic)
  4. Software selection: Select at least “Samba server” and “OpenSSH server”
  5. Configure grub-pc: Enter /dev/sda as destination
  6. Configure system clock (normally not UTC)

Done.

Finishing setting up the virtual machine

When the machine has first booted, log in as the user you created during installation.

Configure host-only network

Edit the file /etc/network/interfaces and add

auto eth1
iface eth1 inet static
   address 192.168.56.10 # substitute this with one matching your network settings, recorded earlier
   netmask 255.255.255.0

and then run the command sudo ifup eth1 – You are now able to ssh into you virtual machine, using the IP address entered.

Configure Samba

Samba is the standard Windows interoperability suite of programs for Linux and Unix.

Why use it to have the Linux server act as a fileserver for the Windows host, allowing us to access files on the disks attached to the VM and, since it’s using standard Windows protocols, we will be able to map the shares on the VM to drive letters on the Windows host.

Luckily Samba just works, out of the box. The only things I changed, in /etc/samba/smb.conf was

[homes]
  read only = no
  valid users = %S

the rest of the parameters for [homes] was left as is.

Auto-starting the virtual machine

Start scheduled tasks and create a new basic task

Enter task name

Select the trigger

Event trigger: When the computer starts

Select action

Action: Run program

Program details

Program details

Program/script: “C:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe”
Arguments: -s VMName -v
Start in: “C:\Program Files\Oracle\VirtualBox

Finish up

Finish

That should be it. You could install Vbox Additions, but unless you plan on accessing data on the Windows host from the VM, there is no need.

Access your Linux disks (ext4, xfs, ReiserFS, btrfs etc) from Windows
Tagged on:                             

2 thoughts on “Access your Linux disks (ext4, xfs, ReiserFS, btrfs etc) from Windows

  • July 17, 2011 at 13:32
    Permalink

    Hey,

    Just thought you may be interested in coLinux.
    You can use a stripped down version of any linux distro and then just add in samba and auto-mount the network drives in windows!

    Reply
    • October 22, 2011 at 22:19
      Permalink

      It’s worth noting that coLinux does not run on x64 Windows.

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Page optimized by WP Minify WordPress Plugin

Allan Willems Joergensen – OnDemand is Stephen Fry proof thanks to caching by WP Super Cache