Tag Archives: ubuntu

Dropbox on Linux with encrypted home directory

Dropbox dropped support for all files systems except ext4 on Linux. This is a problem for everybody using an encrypted home directory since those are usually mounted via ecryptfs or similar. The following workaround makes use of an ext4 formatted file system image that is mounted via a loopback device upon login.

Step 1: create a mount point and make it read-only if not mounted

mkdir remote/Dropbox
sudo chattr +i remote/Dropbox

Change the “remote” part of the paths if you prefer to place your Dropbox folder at a different location.

Step 2: create an image file and format it

Change 10G to something that corresponds to the space that you need in order to sync your Dropbox files:

truncate -s 10G remote/.Dropbox.ext4

Alternative way of creating the image using dd:

dd if=/dev/zero of=remote/.Dropbox.ext4 count=10240 bs=1048576

Format the image with ext4:

mkfs.ext4 -F remote/.Dropbox.ext4

Step 3: create an entry in /etc/fstab

/home/<username>/remote/.Dropbox.ext4 /home/<username>/remote/Dropbox ext4 user,noauto,rw,loop,x-gvfs-hide 0 0

We use the parameter x-gvfs-hide to avoid showing the folder in sidebar of the file manager.

Step 4: use a systemd service to mount the Dropbox image upon user login

Create the file .config/systemd/user/mount@.service with the following content:

[Unit]
Description=Mounts a drive in the home directory of a user

[Service]
ExecStart=/bin/mount %h/%I
ExecStop=/bin/umount %h/%I
RemainAfterExit=yes

[Install]
WantedBy=default.target

Now lets enable and start the service. Slashes must be replaced by dashes if used as systemd parameters.

systemctl --user enable mount@remote-Dropbox
systemctl --user start mount@remote-Dropbox

After executing the commands above the service will be started (i.e., the Dropbox folder will be mounted) automatically upon user login.

We also make sure that we own the mounted folder:

sudo chown <username>:<username> remote/Dropbox

Step 5: tell Dropbox to move your files to the new location

You can use the Dropbox GUI to move the Dropbox folder location to the newly created one.

The way how Dropbox detects the file system in use is a bit awkward as it does not let you choose the mount point itself as Dropbox folder location, instead you need to sync to a subfolder. So if you mount point is remote/Dropbox you need to sync to remote/Dropbox/<username> or something like that as Dropbox does not believe that the mount point is an ext4 file system.

Optional: grow the Dropbox image if you need more space

On the command line run the following commands (change 15G to something appropriate for your needs, but never change it to a lower size than your existing image as this cuts of the image which may lead to data loss):

dropbox stop
systemctl --user stop mount@remote-Dropbox
truncate -s 15G remote/.Dropbox.ext4
fsck.ext4 -f remote/.Dropbox.ext4
resize2fs remote/.Dropbox.ext4
systemctl --user start mount@remote-Dropbox
dropbox start
Advertisements

Sun xVM Host Interface Networking on Ubuntu

I just struggled a bit with getting xVM’s host interface networking up and running on Ubuntu. It works now and maybe somebody else finds the following short how to useful.

Host Setup

Run “sudo aptitude install bridge-utils”.

Add the following lines to /etc/network/interfaces:

auto tap0
iface tap0 inet manual
  tunctl_user user # replace "user" with the user name running xVM
  uml_proxy_arp sativex-ub

auto br0
iface br0 inet static
  address 10.10.1.1
  netmask 255.255.255.0
  bridge_ports tap0
  bridge_maxwait 0

Run “service networking restart”. (or “/etc/init.d/networking restart” if your Ubuntu doesn’t have the service command yet)

Run “sudo VBoxAddIF vbox0 user br0”. (like above, change “user” to your xVM user)

In your VM settings choose “Attached to: Host Interface”, as “Interface Name” in the field below enter “vbox0”. If you want to have Internet access in your VM you should also configure a second network interface, pick “Attached to: NAT” there.

VM Setup

Start up your VM, and add the following lines to /etc/network/interfaces:

auto eth0
iface eth0 inet static
  address 10.10.1.2
  netmask 255.255.255.0

auto eth1
iface eth1 inet dhcp

Run “service networking restart”.

That’s it, your VM should now be accessible (from your host) via 10.10.1.2. Of course you can adjust the IP addresses/networks as you like.

Hardy, Java and crashing applications

Following up my problem description in my last post, I tried to get Eclipse (and other crashing Java applications) running with the Java 6 version that is shipped with Hardy.

The changelog of the packages sun-java-* (version 6.06) claims that the locking problems with XCB have been fixed upstream:

* New upstream bug fix release.
  - Release notes at http://java.sun.com/javase/6/webnotes/ReleaseNotes.html.
  - Fixes Xlib/XCB locking problems. LP: #86103. Closes: #414535.

But this is not the case, at least not for me.

Googling the problem showed a few potential workarounds, like

export LIBXCB_ALLOW_SLOPPY_LOCK=true

and

sed -i 's/XINERAMA/FAKEEXTN/g' /usr/lib/jvm/java-6-sun/jre/lib/i386/libawt.so

Neither of them worked. So I’m back with Java 6 from Gutsy, which just works fine on Hardy.

I wonder whether I am the only one with these problems… are they going to release Hardy with a broken Java/XCB combination?

Upgrade to Hardy

I updated to my Ubuntu system to version 8.04 “Hard Heron” RC. It’s a release candidate, so there won’t be many changes until the “real” release in a few days.

The upgrade process itself went through without any problems, but I had to fix a few things which did not work anymore after the upgrade. There was:

  • Applications using GL kept crashing themselves (like fgl_glxgears) or the whole X-server (like Google Earth).

Not good. It turned out that my fglrx installation was somehow broken, Ubuntu even told me that I’m not using any proprietary drivers. So I downloaded the new 8.4 release of fglrx, baked my own debs and installed them.

Nothing crashed, but the applications refused to start because of missing library: libGL.so.1. This might indicate a slightly broken fglrx package creation for Hardy. Anyway, a symbolic link solved the problem.

ln -s /usr/lib/libGL.so.1.2 /usr/lib/libGL.so.1
  • Eclipse kept crashing

Eclipse started, and during building the workspace, it always crashed. I tried without plugins, a fresh installation, etc, then I downgraded Java 6 to the version from Gutsy, and everything worked.

It was enough to pull the packages sun-java6-bin, sun-java6-jdk, sun-java6-jre, sun-java6-plugin and sun-java6-source out of the Ubuntu archives and install them. To make Ubuntu’s update notifier stop bugging me about the existing newer packges (which I just downgraded) I set them all on hold via

echo {$packagename} hold | dpkg --set-selections

The problem might be connected to libxcb and libmawt, because instead of a crashing VM I sometimes get the following messages:

Locking assertion failure.  Backtrace:
#0 /usr/lib/libxcb-xlib.so.0 [0xb7d00767]
#1 /usr/lib/libxcb-xlib.so.0(xcb_xlib_unlock+0x31) [0xb7d008b1]
#2 /usr/lib/libX11.so.6(_XReply+0xfd) [0x903d91bd]
#3 /usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/i386/xawt/libmawt.so
...

I remember having had some similar problems in Gutsy (or was it Feisty?). I will look into this when I’ve got some more time.

  • Firefox 3 does not support old add-ons

The default browser in Hardy is Firefox 3 (there is still packages will Firefox 2 if you want to). That’s good and bad. It’s good because it feels more lightweight and JavaScript-heavy sites feel much more responsive. It’s bad because it’s still a Beta (I already experienced a few crashes) and because some popular extensions like del.icio.us Bookmarks are still not compatible with the new version.

To keep it simple, I added the following boolean setting to the configuration (about:config):

extensions.checkCompatibility = false

This will give you a warning inside the Add-ons window, but most of the officially incompatible extensions will work after that.

No other problems with the new version so far. ūüėČ

Finally upgraded to Gutsy

I finally did it. Everything went fine, except for the proprietary ATI/AMD fglrx graphics driver and the related x.org setup. To get suspend to work I had to upgrade to the latest fglrx driver. After this the UI felt pretty slow, much slower than it was before the upgrade. OpenOffice.org Impress was almost unusable, it took about 5 seconds for a slide change.

The problem consisted of two parts, one was that cpufreqd was slowing down my CPU. I didn’t have it installed before, so I removed it. I’m relying on the ondemand governor anyway. Then I also added the following options to the device settings in my xorg.conf:

Option	"XAANoOffscreenPixmaps"
Option	"AccelMethod"	"XAA"

No my X is as fast as before, I even gained a bit of 3D performance with the new fglrx drivers.

Suspend and wake up works also after I set the following options in /etc/default/acpi-support:

SAVE_VBE_STATE=false
POST_VIDEO=false

No Gutsy for me – yet

Five days to go, a release candidate is out and I felt like upgrading – then I noticed that bug #121653 (“fglrx breaks over suspend/resume”) is still open. I have a ThinkPad T60 with an ATI X1400 and I’m using the closed-source fglrx driver, so my setup is clearly affected by this bug.

As a solution I could switch to the free ATI driver, without 3D support, and with somehow degraded 2D performance. I don’t want that. Or I could just stop using Suspend-to-RAM. I don’t want that either. So either I wait until AMD fixed the driver, or I compile my own kernel with the SLAB allocator which is known to work with fglrx. I’m not sure whether the latter really is an option, it probably breaks other modules from the Ubuntu repositories, and I’m not keen on compiling every single piece myself. I’m running Ubuntu, not Gentoo. And the slogan “It Just Works” made me switch from Debian to Ubuntu…

Anyway, this shows once again how important open-source drivers are, and according to reports AMD is working already towards this direction. I will gladly install the open drivers once they are released.