## One ping only

For some odd reason, today was the day when I woke up and continued working on libICMP. It’s now almost seven years since I first adopted Tim Lawless’ public domain version, and today I picked up where I left off and started refactoring and cleaning up. Example: #include "icmp/icmp.h" int main(int argc, char *argv[]) { char *host = "localhost"; struct libicmp *obj; if (argc >= 2) host = argv[1]; if (! [Read More]

## Merecat - another stray kitten?

This post is about my adoption, refactor, and rebranding of thttpd as Merecat.

I code for recreation as well as work. Most of the time I tinker around with my various projects simply to learn and sometimes these little projects turn into something useful for other people as well, which is great!

Recently I discovered my method to get started: refactoring, or just simple code cleanup. You see I've got this crazy idea that all simple things are correct. Although things usually tend to require a certain balance — not all things can be simplified, and not all simple things are correct.

When I recently had to migrate my personal blog, FTP, and GIT server, I set out to run everything from an old RasPi2. This put my private life in just about the same niche as my work life, embedded. On a resource constrained platform like that running Apache is not the best idea. So I set out to (re-)discover the web servers of my past, the late 90’s, I had almost forgotten:

Come to think of it, they are probably one of the many reasons that I started my career in embedded in the first place!

## New Toolchains

Finally, fresh from the oven, here are the remaining two toolchains I’ve promised, based on GCC 6.1 and GLIBC 2.23. Download from the FTP: arm-unknown-linux-gnueabi-6.1.0-2.tar.xz powerpc-unknown-linux-gnu-6.1.0-2.tar.xz x86_64-unknown-linux-gnu-6.1.0-2.tar.xz Unpack into /usr/local, and add to your $PATH, e.g. export PATH=/usr/local/arm-unknown-linux-gnueabi-6.1.0-2/bin:$PATH The toolchains are built using crosstool-NG on Ubuntu 16.04 64-bit, and are primarily intended for myself and users of TroglOS, but are generic enough to be useful for other purposes as well. [Read More]

## ARM Toolchain r1

First GCC 6.1 based ARM (32-bit) toolchain released on my FTP. Built using crosstool-NG for Ubuntu 16.04 (x86_64) with GLIBC 2.23. arm-unknown-linux-gnueabi-6.1.0-1.tar.xz Download, unpack into /usr/local, and add to your $PATH export PATH=/usr/local/arm-unknown-linux-gnueabi-6.1.0-1/bin:$PATH There’s lots of neat stuff included, both a sysroot and a debug-root with GDB and gdbserver for target. For details on using it, see the excellent docs. The main purpose for my building this is TroglOS, but it is useful for other purposes as well of course. [Read More]

## Finit3: Almost there ...

Today the new logo for Finit3 was added to the GitHub repo and the homepage

Gorgeous, isn’t it?! 😎

This fancy artwork means we’re nearing the end of a long and agonizing release cycle where a lot of the internals of Finit have been rewritten and new exciting features have been added! More on this in an upcoming post 😃

## The General Idea

OK, so here’s the general idea: take one teaspoon of a well equipped SBC with Marvell chips you know well, add an awesome WiFi hotspot with USB connection, stir feverishly for several weekends in a row, then sprinkle some AlpineLinux and a custom kernel on top. Enjoy! I have no clue if this will actually work, may even try porting my own little thing called TroglOS to the ClearFog first, I don’t know, but it will definitely be awesome! [Read More]

## Live KVM migration with virt-manager

With the new servers and my server room shaping up, I’ve been working on setting up ALL THE THINGS! I just managed to set up live migration of the KVM virtual machines I use for testing my FLOSS projects. Here is a short writeup of that, just as a reminder for myself.

## Checklist

1. Make sure the libvirt versions are the same. I tried setting up migration between CentOS 7.2 and and Ubuntu LTS 16.04 which turned out to be a mess of insurmountable incompatibilities. I’ve now gone back to run Ubuntu on everything and it all works fine.
2. Set up NFS for the backend store of /var/lib/libvirt/images. Make sure to export the share properly, I tried first with my ReadyNAS, but couldn’t set up root access (defaulted to nobody).
3. Set up VM disk caching=none
4. Set up VM processor model=default
5. Profit

Good Luck! :)

Recently I needed a simple TCP/UDP port redirector and stumbled upon this Stackoverflow post. As usual I wasn’t first wanting to this without using iptables.
There were several alternatives, but since my target was embedded with limited amount of RAM and flash I wanted something really small. So the best fit turned out to be redir, which unfortunately only could handle TCP connections. This is what led me to write uredir to complement redir. Eventually I ended up adoptiing redir as well, which meant giving it a bit of a facelift and to give them both the same look and feel.
Currently they are two separate applications, which in some use-cases can be beneficial (small size), but I may in the future transplant the UDP functionality of uredir into redir. We’ll see, right now though I have several other projects to attend to :-)