Successfully mounting Drobo shares from a Chromebook with Crouton/Ubuntu 14.04 installed

The last couple weeks I've switched my working environment from a MacBook Pro to a Chromebook that has Ubuntu installed under Crouton. A lot of my work is developing Node.js software, and writing website content, and my habits are to live at the command line typing commands. But it also means accessing the large amount of content I have stashed on the MacBook Pro, and a Drobo 5N. MacOSX can easily mount shares on the Drobo, letting me access those files as if they were on the local machine. By default Chromebooks cannot do this, meaning the Chrome browser side of my Chromebook cannot (at this time) access anything stored on the Drobo. Because Ubuntu is installed (via Crouton), that side of the Chromebook theoretically can mount shares on the Drobo, but I ran into problems trying to directly mount the SMB share using Ubuntu 14.04 tools. Fortunately I've developed an alternate method that's nearly as good and quite easy to implement.

Technical background -- Drobo uses SMB and AFS -- but didn't work w/ Ubuntu 14.04 on Crouton/Chromebook

The Drobo exports itself using the SMB protocol, and also supports Apple's AFP protocol. In theory a Linux machine can easily mount a Drobo using SMB or CIFS client tools. Indeed, the Drobo support library suggests using those tools:

On Ubuntu one can open a file manager window, and enter SMB://###.###.###.###/VolumeName to connect by the IP address, and sure enough a window opens letting you browse the Drobo file system. Unfortunately that method doesn't make the Drobo filesystem visible to command-line tools - I think that's a Gnome Virtual File System instead.

Another was to use smbclient to explore the available shares, then to use specifically crafted mount commands to use the smbfs or cifs file system protocols. You'll find instructions at the above link.

Unfortunately in this case the suggestions linked above didn't work too well.

Assigning fixed IP address & name to Drobo

First issue is they recommended using the "name" of the Drobo in the commands. That didn't work using the Ubuntu/Crouton setup on my Chromebook. But when I used the IP address instead of the "name" then the commands worked a little better.

That would develop problem down the line, the next time the Drobo reboots it's likely to get a different IP address. Hence, it's best to assign a fixed IP address, and then to assign a name to that fixed IP address.

Assigning a fixed IP address is accomplished by going to your WiFi router, and in the admin screens finding the DHCP configuration area. It's going to be different for each WiFi router. But there's going to be a screen showing MAC Addresses of known devices, and the IP address assigned by the DHCP server built into the router. There will also be a method for pre-assigning an IP address to certain MAC addresses. I assigned a fixed IP address to my Drobo, and also to the MacBook Pro.

Next step is to assign a name to the Drobo so you don't have to remember the IP address. The only tool available to me was the /etc/hosts file on the Ubuntu/Crouton side of the Chromebook. Adding entries like this takes care of assigning a name to the IP addresses of these devices:   drobo.local   tippy.local

First success - smbclient works - but mount command fails

With this set up, the smbclient command was able to return information about the Drobo shares

$ smbclient -L drobo.local
Enter david's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.7]

Sharename       Type      Comment
---------       ----      -------
Public          Disk     
David           Disk     
DroboApps       Disk     

But, trying to mount one of those using the smbfs mount commands failed. It turned out that smbfs has been deprecated, and is simply not available for Ubuntu 14.04. I was unable to get the cifs support to work, and I gave up on trying to access the Drobo using this method.

sshfs to the rescue

I gave up for a week or so after that, and then took a different tactic by using sshfs.

First I set up sshfs mounts between the Chromebook and my MacBookPro and then with accounts on the VPS's I rent from my web hosting provider, Dreamhost. Those work fine, they're easy to set up, easy to shut down, and perform reasonably well.

$ cat ~/sshfs.txt
sshfs -o idmap=user ~/userID
sshfs -o idmap=user ~/userID1
sshfs -o idmap=user ~/userID2

fusermount -u ~/userID
fusermount -u ~/userID1
fusermount -u ~/userID2

I keep this file on my Chromebook, and any time I need to set up an sshfs mount I look in the file then copy/paste the command and it's good to go. It also should work to add an entry to /etc/fstab, but I haven't made the time to work that out.

Once the mount is set up the remote file system shows up as a regular file system mount, that's recognized by every last tool on the Ubuntu/Crouton side of the Chromebook. The ChromeOS side doesn't know about the file system mount, and sshfs is not available in the ChromeOS image.

I was even able to mount the Drobo file system using the MacBook Pro as an intermediary:

sshfs -o idmap=user userOnMacBook@tippy.local:/Volumes/Drobo5N ~/drobo

That worked, but I wanted a direct connection to the Drobo.

Jailbreaking the Drobo w/ DroboPorts

Fortunately the Drobo5N allows you to install "applications" that run inside the Drobo. The capabilities are limited, but it's fairly straightforward. They have some file sharing related applications which appear on the Drobo dashboard, and it's fairly easy to add additional apps.

The DroboPorts team make additional apps available, one of which gives you command line access to the Drobo innards. It is, after all, just a Linux box with discs ...

First step is, on the MacBook Pro, to mount the Drobo with a user ID that has access to the DroboApps share. By default that's the Admin user.

Go to the DroboPorts website, and find the OpenSSH application. Download that, and then drop the tarball into the DroboApps share. Then reboot the Drobo. Automagically when the Drobo reboots, the openssh tarball will have been replaced with an openssh directory. The openssh package will have been installed for you.

At that point it's possible to:

$ ssh -l Admin drobo.local

And after entering your Admin password, you have a command line prompt inside the Drobo.

It's useful to also install the bash, coreutils, sudo and wget tools off the DroboPorts website. That gives you some of the typical command line tools you might be familiar with from other systems.

Make sure and look at the recommended setup for each package.

For instance, I edited /etc/password so the login shell on all accounts is /bin/bash.

In any case, back to the issue of mounting the Drobo. Turns out that sshfs works great to mount a Drobo, once you've installed the OpenSSH package. It did not work under the Dropbear package that is recommended on the Drobo website.

sshfs -o idmap=user Admin@drobo.local:/mnt/DroboFS/Shares/David ~/drobo

It's also necessary to set up SSH keys so this works w/o password.

In the Admin home directory on the Drobo, create a .ssh directory, in which you create a file named authorized_keys. This is just like any other Unix/Linux box. Then, just like any other Unix/Linux box, copy the text of an SSH key from your client key (the Chromebook in my case) into the authorized_keys file on the Drobo.