PDF editing on Linux

A quick shout out to a new-to-me Linux PDF editing program I have started using: Master PDF. While free on Linux, spring $50 for a purchase and get optical character recognition (OCR) and Bates Stamping (aka page numbering). I still use Xsane Scanning, pdftk (the convenience of the command line), and OCRFeeder (see this previous post as well).

But, Master PDF has let me edit PDF files and start consolidating tasks and files that I have been putting off because of all the intricate steps involved. So far, wonderful.

More on kernels and /boot problems


WebUP8 has great advice on the problem of too many old kernels (via Dustin Kirkland) filling up the /boot volume that I discussed previously. Here is that advice:

There are various commands out there for mass removing old Linux kernels, but they complicated (and hard to remember), and not all are safe. So what’s the safest way of mass purging old Linux kernels in Ubuntu? Well, according to Dustin Kirkland, it’s the “purge-old-kernels” command.

The purge-old-kernels man page mentions that the command will never remove the currently running kernel. Also, by default, it will keep at least the latest 2 kernels, but you can override this using the “–keep” parameter (for instance “–keep 1” to only keep 1 Linux kernel).

In Ubuntu 16.04 and newer, the purge-old-kernels command is part of the byobu package. For older Ubuntu versions, it’s available with the bikeshed package. To install these packages, use the following command:

– for Ubuntu 16.04 and newer, Linux Mint 18 and derivatives:

sudo apt install byobu

– for Ubuntu versions older than 16.04, Linux Mint 17.x and derivatives:

sudo apt install bikeshed
Once installed, you can remove old Linux kernels on Ubuntu (or Linux Mint) desktops or servers, using the following command:
sudo purge-old-kernels

Setting up a personal cloud


, , , , , , ,

My reliable cloud service — AeroFS — is switching from a hybrid system (what was available when I first signed up) in which relay servers are run by Aero to a system in which each company/user has to run its own server. While setup is pretty straightforward and is usually done via a virtual appliance run in VirtualBox, the hardware requirements are too steep for this guest/host system without my purchase of a relatively new computer. I want something to run on an older computer and preferably on an Raspberry Pi to cut down on energy usage.

Around two years ago, I tried re-purposing an old 933 Mhz Pentium III with 512 MB of RAM into a NAS4FREE RAID device (two drives mirrored so backups would be unnecessary) and an OwnCloud server. Everything started fine, but the OwnCloud server kept running out of memory and crashing. Back to the drawing board.

Two years later, I tried setting up an OwnCloud server on my Raspberry Pi B+. I first tried installing OwnCloud from the Raspbian repositories. The version listed on the Rasperian repositories was at 4 — akin to something out of the Middle Ages — and was dead on arrival.

After removing the OwnCloud installed from the repositories, I tried a script for automating the setup — OwnCloudPie — which seemed to get things going. But, the server it was setting up was version 8.0.1, still pretty old in computer lifespans, and I could not get any clients for this older server version apparently. Plus, it used SQLite rather than MySQL. Given that I wanted the Pi to sync ~80 GB of files with itself and two other computers, I’m not sure that SQLite would have sufficed.

Luckily, manual instructions are available from techjawab. I downloaded the latest version of OwnCloud server — 8.2.1 — copied it over to the pi via sftp, and then did all the setup via ssh. That worked fine for getting the server up and running, though I did have to correct a php5-fpm path error by un-commenting the env[PATH] setting in http://www.conf inside /etc/php5/fpm/pool.d per these instructions for correcting this path error.

But, I then had problems on getting a current OwnCloud client set up. No Mac clients were apparently available to me since I’m still running 10.6/Snow Leopard on my Mac laptop. On the desktop running Xubuntu 15.10, I installed the client and files synced with the Pi. But, there was no GUI for the client in the Notification area on the desktop. On my 14.04 virtual machines, I could only get an older client installed, and it apparently would not connect to the server running on the Pi — the error being returned was that status.php was not available.

NOTE: Per my setup, it’s ridiculous that I can run cutting edge software on a desktop from 2006 under Xubuntu but not a 2010 Mac OS X 10.6 computer that can run circles around the desktop.

So, without running clients or clients without a gui, the OwnCloud server was not doing me much good.

My next option was BitTorrent Sync — a client to client file sync service. As with OwnCloud, there is no Mac client for 10.6/Snow Leopard (see note above). But, Linux clients are available (including Raspbian on the Pi) and easy to install. There is no official GUI for linux computers, but the web-interface should work for my purposes. Plus, there are directions specific for the Pi for installing btsync. So, I installed btsync on my desktop, the Pi, and the VirtualBox 14.04 guest on my laptop and files are now syncing across all three computers along with my iPhone.

Viva la France


, , , ,

The tragedy and trauma of Paris is difficult to grasp. Two articles from the New Yorker shed some light on this darkness and the difficult times ahead. George Packer, The Other France, describes how racial and religious tensions in France are longstanding and hardening of late. Philip Gourevitch, Aftermath and Prelude, describes how this kind of an attack arises from a battle between feudal and modernist notions of society.

A few verses from the Sunday lessons, however, give hope.

Let us hold fast to the confession of our hope without wavering, for he who has promised is faithful. And let us consider how to provoke one another to love and good deeds, not neglecting to meet together, as is the habit of some, but encouraging one another, and all the more as you see the Day approaching.

Hebrews 10:23-5.

I know legislators today are exclaiming how all Syrian refugees should be banned from various states. This discrimination based on national origin — probably not actionable because the states passing these resolutions have no actual authority to institute such bans — smacks of the kind of fear that we should be turning our backs on.

Upgrade problems: kernels filling up /boot


, ,

A common problem among Ubuntu distributions is a kernel upgrade that stops because there is insufficient space on something called /boot.

Linux at its core is a kernel being actively developed by Linus Torvalds and others. Because of security concerns and new features being added, these kernels are updated more or less once a month.

These upgrade are generally important and should be followed. But, problems arise because older kernels are never removed from the operating system (“OS”) until a new, major release of Xubuntu or Ubuntu happens. And, the way Xubuntu is set up to boot when the computer is turned on means that there is only limited space on the computer for all of these kernels until a new release of Ubuntu or Xubuntu replaces them all with a fresh version.

Back when Linux started, the space set aside for these kernels was plenty. But, now the kernels are much bigger and cannot all remain on the same computer until a new, major OS release.

So, it happens now — especially if you are using a long-term support release (currently 14.04 for Xubuntu) — that an update fails because sufficient space on /boot is unavailable. What this error means is that space on /boot needs to be made available by clearing out older kernels that are no longer being used.

With every kernel upgrade, at least two versions of the kernel are needed: the existing kernel and the new kernel being installed. And, four files are associated with each kernel version. For example, if kernel was going to be added/installed on my computer, the four files being installed would be:

  • linux-headers-2.6.28-15
  • linux-headers-2.6.28-15-generic
  • linux-image-2.6.28-15-generic
  • linux-restricted-modules-2.6.28-15-generic

And, these files get put into various places in the OS that are difficult to keep track of if kernel management is not your thing. Since I use Linux primarily for my work as an attorney, I do not feel the urge to learn about kernel management (for those that want to explore these issues, see this post and this other post).

One option I have found for managing this kernel problem is Ubuntu Tweak. There is a PPA and a website for Tweak as well.

Tweak offers a lot of customization options that really don’t apply to Xubuntu, and I ignore these options. But, the janitor button allows you to clean up old software AND old kernels. Give it a go if you get the “/boot volume does not have enough space” error when upgrading kernels. Tweak allows you to remove safely all but the current kernel version. To be extra safe, keep one more prior version around when cleaning out olinxi -nder kernel versions. And, then every few months, run Tweak again to clean out older kernels that have cropped up through various updates. So far, Tweak has worked well for me.

UPDATE (27 May 2015): Ralf Mardorf on the xubuntu-users@lists.ubuntu.com describes the following options for removing old kernels.

At a terminal, type:

ls -hA1 /boot

to see a list of current installed kernels on the computer. The lines to focus on begin with vmlinux, such as:


There will be other files listed here, but the version numbers should all match up to the ones associated with the vmlinux files. Type the following command to see which kernel is currently being used by the computer to run the OS:

uname -r

You will see something like:


Notice the point difference between the two kernels, .52 and .53. So, the 3.13.0-52 kernel is the old one no longer being used. To remove this older kernel, type:

sudo apt-get purge linux-image-3.13.0-52-generic

Enter your password when prompted. As with everything kernel-related, make sure the commands are typed corrected before pressing ENTER. Deleting the current kernel in your OS will leave the computer inoperable.

For the adventurous, Ralf also found a one-line command for removing older kernels:

dpkg -l linux-* | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e [0-9] | grep -E "(image|headers)" | xargs sudo apt-get --dry-run remove


the grep -v uname excludes the running kernel. Be careful with the other one line thingies. The above does use the “–dry-run” option, that’s very good, but others use the “-y” option and this is irresponsibly.

“-y, –yes, –assume-yes
Automatic yes to prompts; assume “yes” as answer to all prompts and run non-interactively.”

“-s, –simulate, –just-print, –dry-run, –recon, –no-act
No action; perform a simulation of events that would occur but do not actually change the system.”


Finally, since 14.10 a great command-line tool called inxi can provide a wealth of information about your computer. Type inxi --help to see all the options or just inxi to get basic info, inxi -S for system info, inxi -D for disk info, inxi -G for graphics card info, and inxi -n for networking info.

Update (21 June 2015): Another command is available for removing old kernels:

sudo apt-get autoremove

It appears that this command only removes old kernels from previous versions, such as the kernels from a 14.04 installation still around after upgrading to 15.04 or 15.10. It does not remove old kernels connected to the current xubuntu version. In another words, run this command every now and then (you will get notice about running it if you run sudo apt-get update from a terminal) but do not expect to avoid this “kernels filling up boot” error without doing any of the above and relying only on this autoremove option.

Adobe Reader on 64 bit linux/xubuntu


, , ,

Ubuntu Handbook has a useful post on getting Adobe Reader installed on 64 bit linux. Version 9.5.5 of the Reader app is available for linux, but only as a 32 bit application. Most modern hardware is 64 bit, however. Normally, 32 bit software will run fine on a 64 bit OS, but dependencies have to be changed from specific 32 bit versions to universal versions. Adobe Reader still depends on specific 32 bit libraries (aka i386 versions) in order to run. This post identifies those specific i386 versions you need to install when running a 64 bit linux OS in order to get Reader to actually work. Well done and much thanks.