Fscking Precautions: Snapshots and the undo file

If you have a badly corrupted filesystem, e.g. because you had back blocks on the hard drive, you have want to take some precautions to make sure fsck doesn't destroy your files. This goes especially for large raids.

Something you can always do is test the fsck operation on a dmsetup snapshot. For this to work you must boot from a different partition and it must have a sparse file enabled filesystem.

# The path to your snapshot storage file.

Terabytes should be enough for your partition, otherwise increase this number
truncate -s
000G $COW 
#setup a loop for dmsetup snapshots to the COW file.
loop="$(losetup -f)"
losetup $loop $COW
#setup the snapshot device
echo 0 `blockdev --getsz $INPUT` snapshot $INPUT $loop p 8 | dmsetup create top
# let you know where the snapshot device is.
echo loop: $loop top: /dev/mapper/top
dmsetup status

After this you should be able to fsck /dev/mapper/top. You can see how much space the COW file actually occupies with du -h $COW. You may also want to get the newest fsck version (e.g. with a newer fsck-static package). If you end up with many multiply-claimed blocks, this e2fsck version may help: http://git.hpdd.intel.com/tools/e2fsprogs.git/ (checkout a -wc branch).

Good luck, you might need it!

Linux Raid: ignoring /dev/sdX as it reports /dev/sdY as failed

The fix for this problem may be extremely easy. What happened is that some disks of the raid failed. They were ejected. This happens. But the raid won't be assembled anymore if the failed disks are first on the mdadm assemble command line. Because for some reason, mdadm does not check what most disks say, but what the first disks say. So if you have a raid with 10 disks and the first two on the command line are failed, it will reject the remaining 8, because the are not compatible. All you need to do now is to list those two failed disks at the end with --force to activate the raid again:

Instead of 
mdadm /dev/md1 --assemble /dev/sdX,Y /dev/sd[a-f]
mdadm /dev/md1 --assemble /dev/sd[a-f] /dev/sdX,Y

Note that there's probably still a good reason for those disks to have been marked as failed...

Windows 7 Detects only Some of the CPUs added in KVM [Fix]

If Windows XP, Windows 7, maybe even Windows 8 or later don't detect all your CPUs in KVM, you may need to change the settings. Windows often doesn't like if you have too many cpu sockets. Try a configuration with 1 or 2 sockets and several cores.

How to Dynamically Switch Between Uniprocessor and SMP during Windows XP boot

If you're running Windows XP inside a Virtual Machine such as VirtualBox, Vmware or KVM, you may want to sometimes boot with only one active CPU, other times with several CPUs. If you don't set up windows correctly, it will neither boot normally, nor in safe mode (where it will stop with a blank screen and a blinking cursor).

But you can edit your boot.ini to look like this in order to dynamically switch between one and several processors in Windows XP:
[boot loader]
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Pro" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Pro one processor" /noexecute=optin /fastdetect /kernel=ntoskrnl.exe /HAL=Halaacpi.dll
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Pro SMP" /noexecute=optin /fastdetect /kernel=ntkrnlmp.exe /hal=halmacpi.dll

The Ultimate Setup Guide for ownCloud on Small Systems such as the Raspberry Pi

It took me about a year to collect this information. There are many guides, but all I found are incomplete. Here's the one guide to rule them all - hopefully. The guide works on Ubuntu and Debian without changes. It's optimized for resources, speed, security and ease of use. While this runs well on my old phone (ARMv7; 512 MB; ~1000 BogoMIPS), it should run even better on a Raspberry Pi.

Accessing Public ownCloud shares via WebDAV

Since ownCloud supports server to server sharing you can access public shares via webdav clients. You simply use the access token (t=...) as user name. If there is a password, use that as password, otherwise leave it blank. As URL you use the owncloud address with /public.php/webdav at the end:

-> webdavs://12345@myserver.com/owncloud/public.php/webdav

Speeding up your ownCloud on small systems such as the Raspberry Pi with Sqlite

I had seriously considered to use a raspberry pi system for setting up my ownCloud server. But the old pi had pretty much the same capabilities as my old mobile phone with cyanogen. And the phone has Wifi and some flash space already included. So I opted for the phone. As with most pi installations, the performance was not great. But I found some easy tweaks I haven't seen anywhere else to significantly improve the performance. I'm assuming you're already using the usual tweaks such as opcache(this will usually help more than the following tweaks!) and using cron.php. Please backup your owncloud.db before you start! You will need the sqlite3 tool (sudo apt-get install sqlite3).

Two ways to download your pictures from Picasaweb with Linux

There is a nerdy and a simple way. The simple way is to use the google data export ("takeout") pages. You select your photos, create an archive and download it. You may have to upgrade from Picasaweb to Google+ in order for this to work properly.

The nerdy way is via googlecl. Unfortunately this option does not currently work properly due to googlecl still using oauth version 1. But once that's fixed - or if you're still signed into googecl - you can use these two commands:

google picasa list-albums > albums.txt
parallel -a "albums.txt" -j 3 --eta google picasa get "{,}" .

Beware of weird folder names including / or other special symbols. Now you can e.g. move your pictures to your ownCloud server. No picasa needed.

How to change the volume with an active lock screen in android lollipop

This works at least from my Samsung galaxy S4: you press the power button for a few seconds until you see the pop-up to turn off the device, or to go into offline mode. Now you can use the volume buttons to change the ring tone volume.

Fixing Netflix Error Code: M7361-1254 on a Linux System

If you get this error code there is an issue with the sound output. If you use pulse, kill the pulseaudio process. Then close the browser, open it again.

Otherwise remove the kernel driver module for your sound card and insert it again. Then close and open the browser.

How to Fix a common VirtualBox Segfault

If you have a segmentation fault during the start of a VirtualBox machine, you are likely using an old, incompatible version of the VirtualBox Extensions. Simply update or uninstall them and things should work again.

An example from the dmesg kernel log:
EMT-1 [7265]: segfault at 618 ip 00007f0eaacbef31 sp 00007f0ed2afbc70 error 4 in VBoxDD.so [7f0eaac00000+26f000].

Checking S.M.A.R.T. status for USB drive

Usually smartctl -a works out of the box. But sometimes it doesn't. In that case, try using the option -d sat, e.g. smartctl -d sat -a /dev/sdb. That may solve if a modern external USB drive reports that SMART support is "unavailable" and that the "device lacks SMART capability". Because that a drive actually lacks the capability is extremely unlikely these days. If that doesn't work, you can try -d auto or consult an extensive list of options of different devices.

Recording with tape-a-talk to external sd card in KitKat

You can enter a manual storage path. It must be setup like the following path. This path can be adjusted to work with other apps and different devices:


If you use the wrong path the app won't be able to write anything. This path works on most Samsung devices.

How to Fix a Broken Sector of Your Hard Drive

First you should really backup the whole drive. Because unreadable sectors mean that the drive will fail soon:
("Add. Sense: Unrecovered read error - auto reallocate failed
sd 0:0:0:0: [sda] CDB:  ... end_request: I/O error, dev sda, sector 3459933711 ...").

You may be able to solve the issue temporarily but you should expect the drive to fail completely at any moment. So ddrescue to another disk of the same size. First, only rescue good parts:
ddrescue -n olddew newdev ~/logfile

Then try to rescue the rest:
ddrescue olddew newdev ~/logfile

Then try to manually read the sector with hdparm. In your example, the marked sector above. This probably won't work.
hdparm --read-sector 3459933711
Then you can overwrite the sector with zeros so it won't cause repeated hangs:
hdparm --write-sector 3459933711

And now you order a replacement drive and wait for the drive to fail entirely.

How to Efficiently Replace a Broken Disk from a Linux Software RAID 5

1. ddrescue the broken disk to a new, completely empty disc. At least zero the former raid superblock... (ddrescue -n faileddev newdev logfile; ddrescue faileddev newdev logfile)
If successful (if you have bad blocks that couldn't be rescued, you should preferably rebuild the raid.)
2. add the disc to the raid and remove the failed disc from the raid
3. go to the sysfs folder of the raid device, e.g. cd /sys/block/md0/md/.
4. put the new disc into the slot of the failed old disc:, e.g.  echo 2 > dev-sdc1/slot.
5. check the raid to be sure if all worked out well: echo check > /sys/block/md0/md/sync_action.

TVHeadend with Transcode Support in Ubuntu 14.04

Unfortunately the packages from the repository no longer support transcoding recently. You have to build your own package.

sudo apt-get install build-essential pkg-config libssl-dev git libavahi-client-dev libavcodec-dev libavfilter-dev libavformat-dev libavutil-dev libswscale-dev libavcodec-extra-53 liburiparser1 liburiparser-dev debhelper libcurl4-gnutls-dev a52dec

AUTOBUILD_CONFIGURE_EXTRA=--enable-libffmpeg_static ./Autobuild.sh -t trusty-i386


AUTOBUILD_CONFIGURE_EXTRA=--enable-libffmpeg_static ./Autobuild.sh -t trusty-amd64

Finally, the transcode setting is no longer in the general tab. Rather, you can now enable transcoding by selecting special profiles you can set up under Coniguration, Stream, Stream Profiles. Unfortunately, most the Android apps don't support this at the moment. You may want to try to checkout the version before committ c4089cc7a378abc2d8912d86d6440aab6230967a.

HTSP Plugin for Ubuntu 14.04

After trying to find a package for a long time I ended up compiling it myself. This is a link to my library file: libhtsp_plugin.so (AMD64). You can check with ldd libhtsp_plugin.so. If there are missing libraries, it won't work for you.

OpenVPN on Android only supports 4096 bits private key

If you run into the error
"OpenVPN core error : PolarSSL: error parsing config private key : PK - Bad input parameters to function."
with OpenVPN on Android you'll have to change your private key. It has to be supported by PolarSSL / ARM mbed. In my case, reducing the private key size to 2048 bits solved the issue.

Panbox missed an important library: no unix-java in java.library.path

The solution is simple. You need to install the libraries listed in the readme.txt file.

E.g. for Ubuntu or Debian:
sudo apt-get install dbus-java-bin python-appindicator python-nautilus libbluetooth-dev python-notify python-gtk2 python-dbus

Using GMail with IMAP Clients - especially when using the priority inbox

If you wish to use Gmail via IMAP, it's important to keep in mind some specialties in how Gmail handles IMAP. This is especially important if you use the priority inbox to filter important emails for you.

What you would do in Gmail | What you do in the mail client
  • Archive email | Delete the email (but do not move it into the trash folder)
  • Mark the email not important | Move the email from impotant to all mails or the inbox
  • Add a label | Copy the email to the folder
  • Remove a label | Delete an email from a folder (but do not move it to the trash folder)
  • Delete an email | Move it to the trash folder (you may also delete it from the current folder).

If you want to search your emails via IMAP, you will usually want to search inside the folder all mails. Note that unless you use special extensions the search in my tests only works for exact matches in the subject line. It does not find anything else, e.g. email addresses or content.

I hope that helps!