Moved to Nikola

I've just moved the blog from blosxom (no longer developed or supported, it seems) to Nikola. Importing the old data proved to be easy, I used import_feed I've also fixed the mailer form, it must have broken when the HTTP "referer" (sic) header was lost. A lot simpler, no need for "BareBonesMailer" (which has disappeared totally from the Internet), just use the "mail" facility in PHP.

How to check that you are running the latest version of microcode (processor firmware) for AMD.

Have a look at your CPU info

$ grep -E "^(model|microcode|cpu family)" /proc/cpuinfo  | sort -u
cpu family	: 21
microcode	: 0x6000852
model		: 2
model name	: AMD FX(tm)-8350 Eight-Core Processor

The "cpu family" is shown in decimal, convert to hex, i.e. 21 becomes 15h

Clone these repos

git clone https://github.com/AMDESE/amd_ucode_info
git clone --depth=1 git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git

Get the info about the latest version of the microcode for the appropriate family.

$ cd linux-firmware
$ ../amd_ucode_info/amd_ucode_info.py amd-ucode/microcode_amd_fam15h.bin
Microcode patches in amd-ucode/microcode_amd_fam15h.bin:
  Family=0x15 Model=0x01 Stepping=0x02: Patch=0x0600063e Length=2592 bytes
  Family=0x15 Model=0x02 Stepping=0x00: Patch=0x06000852 Length=2592 bytes
  Family=0x15 Model=0x10 Stepping=0x01: Patch=0x06001119 Length=2592 bytes

Check the version from "cpuinfo" matches the line for your Family/Model

Contact Me

Please note that sending unsolicited marketing e-mail to an individual in the UK is an offence under Section 22 of the Privacy and Electronic Communications (EC Directive) Regulations 2003 https://www.legislation.gov.uk/uksi/2003/2426/regulation/22/made

If you are having difficulty e-mailing me, perhaps because of my anti-spam defenses, use this form (See also Hints on running a well-configured outgoing mail server and this guide )

Please enter the text "spammers are scum" in this field:



Your Name:


Your Email:


Your Message:


How to load the co-ordinates of caves into OsmAnd

Updated Dec 2018, May 2019 and Nov 2022

Since the death of Professor Charles Read, his website at Leeds University has disappeared, however parts of it, but not the .gpx/.gpi files are available at archive.org, as well as at https://solocavediver.com/

(As an aside, I note that he has an Erdős number of 4)

OsmAnd is a free map app for Android, available from the Google Play Store: OsmAnd — Maps & GPS Offline.

Download and install, then add a couple of maps: "UK England Yorkshire" and "UK England NW". You might want to add contour lines, too. You can download a few maps free of charge and it's not a lot for a yearly subscription for unlimited downloads. The maps are stored on your phone, so good for places where connectivity is poor or expensive (I've used it in the Canary Islands).

To overlay the co-ordinates of caves:

* Use the Chrome browser
* visit https://cavemaps.org/data/
* accept the "connection not secure" warning
* long click on each of the three links to an nc .gpx file.
* save to the Downloads directory

* In OsmAnd, tap on the three bars at the bottom left to open the menu
* "My places", "My Tracks", "Import"
* Tap on the icon for a file, it changes to a tick, then "Open"
* for subsequent imports, click on the "+" at the bottom left.

* Finally, on the "My tracks" page, tap on the three dots to the right of a file and "show on map".

Creating an encrypted backup on a USB stick

USB sticks are 1) slow to write and 2) wear out. I've previously ruined a stick by creating a LUKS encrypted filesystem on one and then rsync'ing my home directory to it.

My work-around has been to create the filesystem in a Logical Volume on my hard disc and then dd it

However, this doesn't work (anymore?). cryptsetup luksOpen of the USB stick fails:

Jul 26 14:40:57 frodo kernel: device-mapper: table: 254:29: crypt: Device size is not multiple of sector_size feature (-EINVAL)
Jul 26 14:40:57 frodo kernel: device-mapper: ioctl: error adding target to table
This can be further worked around by mapping a loop filesystem of the correct size onto the LV:
losetup --show --sizelimit 123730388992 -f /dev/vg1/templv

Example commands

## what is the size of the USB stick?
lsblk -b /dev/sdd
# NAME MAJ:MIN RM         SIZE RO TYPE MOUNTPOINTS
# sdd    8:48   1 123730388992  0 disk

## create LV of that size
lvcreate -n temp -L123730388992b vg1

## but it's too big
lsblk -b /dev/sdd /dev/mapper/vg1-temp
# NAME     MAJ:MIN RM         SIZE RO TYPE MOUNTPOINTS
# sdd        8:48   1 123730388992  0 disk
# vg1-temp 254:15   0 123731968000  0 lvm

## so set up a loop device
losetup --show --sizelimit 123730388992 -f /dev/vg1/temp

cryptsetup luksFormat /dev/loop0

cryptsetup --verbose --debug luksDump /dev/loop0  | grep "Device size"
# Device size 123730388992, offset 16777216.

cryptsetup luksOpen /dev/loop0 enc-usb

mkfs.f2fs /dev/mapper/enc-usb
mount /dev/mapper/enc-usb /mnt/usb

# now rsync the files to /mnt/usb

umount /mnt/usb/
cryptsetup luksClose enc-usb
losetup -d /dev/loop0

# copy to USB
dd if=/dev/vg1/temp of=/dev/sdd bs=4M status=progress

Confusing error message:

$ ping -6 frodo
ping: frodo: Address family for hostname not supported
Is trying to say that there is an entry in /etc/hosts for frodo's IPv4 address, but not one for its IPv6 address.

Apache, PHP and "EROFS"

Trying to install Nextcloud, I had failures with PHP not being able to write into the config directory.

"message":"Cannot write into \\"config\\" directory! This can usually be fixed by giving the webserver write access to the config directory.. Or, if you prefer to keep config.php file read only, set the option \\"config_is_read_only\\" to true in it

access("/usr/share/webapps/nextcloud/20.0.4/htdocs/config/config.php", W_OK) = -1 EROFS (Read-only file system)

I finally tracked down the meaning of the "EROFS" error - it was because I had this systemd config for the apache2 service:

ProtectSystem=full

See "man systemd.exec":

If true, mounts the /usr directory ... read-only for processes invoked by this unit

I solved it by setting "config_is_read_only" as suggested, but also needed to make sure that the "data" directory was under "/var/www". I also had to set "'writable' => false," in the "apps_paths" setting of "config.php".

I started seeing repeated delivery failure messages from the Linux Kernel Mailing list:


postfix/cleanup[20414]: 2819B22313: info: header Subject: Do You Need A Hand? from vger.kernel.org[209.132.180.67];
opendkim[7694]: too much header data
A quick Google suggested that this was because the header size was greater than the default of 65536 that OpenDKIM accepts. I tried increasing this to 262144, but this didn't help. I then set
On-Security            accept
in opendkim.conf. This caused the mail to be accepted. I then had a look inside the mail:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sego.es; s=default;
<snip>

$ grep DKIM-Signature msg.5SAz | wc -l
1000

$ sed -n '1,/^$/p' msg.6SAz | wc -c
396117
What on earth are sego.es playing at?