Testing Network Daemons| Joachim Wiberg
# # smcroute.conf example # # The configuration file supports joining multicast groups, to use # Layer-2 signaling so that switches and routers open up multicast # traffic to your interfaces. Leave is not supported, remove the # mgroup and SIGHUP your daemon, or send a specific leave command. # # NOTE: Use of the mgroup command should be avoided if possible. # Instead configure "router ports" or similar on the switches # or bridges on your LAN.| Joachim Wiberg
I still use my awesome little ThinkPad X200, in fact I now have more of them and even a few X201’s. They are truly the best machines I’ve ever used! :-) One annoying thing though, when going back to these traditional ThinkPad keyboards is the prev/next keys next to the arrow keys. On modern ones they are PgUp/PgDn and I recently learned how to elegantly remap them in X. Note the difference, below, to the original at ThinkWiki.| Joachim Wiberg
The logger(1) tool in your system, /usr/bin/logger, standardized in IEEE Std 1003.2 (“POSIX.2”), has many different implementations. For Linux users the most common one is part of the util-linux package. I’ve always considered this one of those weird Linux:isms. The logger tool is closely tied to the system log daemon, so in the sysklogd project we ship our own implementation of logger. Our implementation is derived from the Finit project’s logit tool.| Joachim Wiberg
This post shows how you can create your own operating system based on Buildroot. Add your own packages, patches, and your very own flavor to the experience. My own take on this is myLinux, which started out as a TroglOS, and before that as miniroot, by Henrik Nordström. Please feel free to dig around myLinux for more inspiration and tips on how to solve common use-cases. The manual, section 9, describes the basic process of setting up a our customizations as a BR2_EXTERNAL tree.| Joachim Wiberg
Because I always tend to forget steps, and haven’t half replaced myself with a shell script (yet), here’s a reminder to myself on how to post a patch to the Linux netdev mailing list.| Joachim Wiberg
This is a mini-HowTo on running Finit in an LXC system container. We will be using a variant (external) of Buildroot, called NetBox to create a squashfs (read-only) image for the root filesystem. Then we will give the container a single writable directory from which it then uses bind mount to emulate a full-blown system. It is expected you have LXC installed and all the relevant build tools needed to create the image. How to set that up is not covered by this tutorial.| Joachim Wiberg
I’m very pleased to announce Finit v4.2! It comes seven months after the last release, v4.1, with a bunch of fixes and some new features. See the release notes for details.| Joachim Wiberg
Micro Tetris — one of the smallest Tetris implementations in the world! Utilizing only ANSI escape sequences to draw the board, no external library dependencys other than a standard C-library, like uClibc or musl libc. Hence, it is very suitable for small embedded devices in need of an easter egg ;-) The game is based on a 1989 International Obfuscated C Code Contest (IOCCC) entry made by John Tromp.| Joachim Wiberg
This post details how to set up cgit with Merecat httpd. It began as a GitHub issue report by Mr Alok G. Singh, who had run into problems setting it up, and ended up as a HowTo.| Joachim Wiberg
This is a HowTo for setting up ikiwiki with Merecat httpd. First install ikiwiki $ sudo apt install ikiwiki libcgi-session-perl libcgi-formbuilder-perl Follow the steps to setup a new Wiki or Blog. In this example we set up a wiki in our ~/public_html: $ ikiwiki --setup /etc/ikiwiki/auto.setup ... Successfully set up wiki: url: http://localhost/~jocke/wiki srcdir: ~/wiki destdir: ~/public_html/wiki repository: ~/wiki.git To modify settings, edit ~/home.setup and then run: $ ikiwiki --setup ~/...| Joachim Wiberg
mrouted is an implementation of the IPv4 multicast routing protocol DVMRP, RFC 1075. It is capable of turning a UNIX workstation, or Linux device, into a multicast router with tunneling support. Tunneling may be required to cross non-multicast-aware routers. The Distantance Vector Multicast Routing Protocol (DVMRP), derived from RIP, is suitable for smaller/dense networks. It employs the “flood and prune” method, where multicast is flooded until neighboring routers opt out from unwanted m...| Joachim Wiberg
Ever so often someone new to Open Source show up on GitHub or in my inbox. It usually starts something like this: “Hey, I just downloaded your software, what’s next?” “Your software doesn’t work on my system!!!!” “How can I do that weird-thing that fits my odd use-case?” “I have zero documented experience but I think you should fix your build system!” This HowTo is for you. 0. Short Version Download a versioned archive from the project’s Releases page Extract archive for...| Joachim Wiberg
This is a very short blog post, mostly intended as a reminder to myself. Basically, there are two methods of adding multicast routing support to the FreeBSD kernel: Rebuild the kernel with options MROUTING Load the kernel module: kldload ip_mroute The kernel rebuild assumes the src.txz set was installed previously. cd /usr/src cd sys/amd64/conf cat GENERIC | sed 's/GENERIC$/MULTICAST/' > MULTICAST echo 'options MROUTING # Multicast routing' >> MULTICAST echo 'options PIM # Enable for pimd' >>...| Joachim Wiberg
Nemesis is a command-line network packet crafting and injection utility for UNIX-like and Windows systems. Well suited for testing Network Intrusion Detection Systems, firewalls, IP stacks and a variety of other tasks. As a command-line driven utility, it is perfect for automation and scripting. Nemesis can natively craft and inject ARP, DNS, ETHERNET, ICMP, IGMP, IP, OSPF, RIP, TCP and UDP packets. Using the IP and the Ethernet injection modes, almost any custom packet can be crafted and inj...| Joachim Wiberg
With lots of help from the tireless Tobias Waldekranz, I think I’ve finally found the perfect “magit like” email setup. With Emacs, of course. This is the story of how I did it. First install notmuch, mbsync (from the isync package), and afew: sudo apt install notmuch isync afew Do initial setup of notmuch for your user. I’ve opted to store my mail in ~/mail, this is used throughout the text below, ymmv.| Joachim Wiberg
This is a blog post about Finit. Each post is concluded with a video summarizing the topic. The impatient reader can scroll down to the video. Most non-trivial systems require dependency tracking between services. Not only does it help ensure correct operation, it is also an enabler for starting services in parallel. Less known, but just as important, is handling dependencies at system reconfiguration.| Joachim Wiberg
watchdogd(8) is an advanced system and process supervisor primarily intended for embedded Linux and server systems. It supports “kicking” multiple watchdog timer (WDT) devices and can also monitor critical system resources, supervise the heartbeat of processes1 and record process deadline transgressions. Read more about Built-in Monitors in the extended documentation. The configuration determines how the daemon acts on monitored resources and supervised processes. See watchdogd.conf(5) fo...| Joachim Wiberg
Finit v4 was finally released the other day! \o/ It represents the culmination of many years of hard work and careful thought put in by many people. There’s so much to tell, hardly know where to begin … the plan anyway is to use this blog for a series of posts detailing different aspects and important features. The impatient reader can either scroll down to the video below, or move on to the project home page: https://troglobit.com/finit.html| Joachim Wiberg
I blogged earlier about the awesome little ThinkPad X200 I found and its blinking WiFi LED. Briefly I mentioned an odd issue with X/Wayland on LMDE 4. This turned out to be a HW bug that can only be worked around by disabling hardware acceleration for virtualization: https://forums.lenovo.com/t5/Windows-8-1-8-7-Vista-and-XP-Discussions/Bizarre-screen-artifacts-on-R400-Integrated-Graphics-running-Win-7-RTM/m-p/153980?page=1#199768 The post says it should be sufficient to “Disable Virtualizat...| Joachim Wiberg
Reminder to self: you need to set up the PKG_PATH to the correct FTP URI. Also, use the correct ARCH, otherwise the installer complains. Do not use amd64, but rather x86_64. Here it is, you’d think this be something the installer could set up a default for … PKG_PATH=http://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/amd64/6.1.5/All/ or if you use the latest on an old ThinkPad T42: PKG_PATH=http://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/9.0/All/ The simply pkg_add -v git Or so you mi...| Joachim Wiberg
This is a HowTo for setting up Merecat httpd with Let’s Encrypt HTTPS certificates. The upcoming v2.32 release of Merecat supports HTTPS as well as serving more than one Internet port. This is highly useful for those who want to serve both HTTPS and HTTP content. Update: now with support for --webroot and HTTP-01 renewal!| Joachim Wiberg
Mounting my ReadyNAS from Nautilus stopped working after upgrading to Ubuntu 20.04. Turns out there was a change in behavior in Sambva v4.11 that disabled SMB1 protocol by default. It’ll be interesting to see how this pans out in the rest of the Linux community … fortunately there’s a workaround! Update: same on Debian 11 (bullseye) and Linux Mint 20 (Ulyana)| Joachim Wiberg
This is a line editing library for UNIX. It can be linked into almost any program to provide command line editing and history. It is call compatible with the FSF readline library, but is a fraction of the size (and offers fewer features). The small size (<30k), lack of dependencies (no ncurses needed!) and the free license should make this library interesting to many embedded developers seeking a replacement for the GNU readline library.| Joachim Wiberg
Every now and then people ask me for pre-built packages of software I maintain. Up until today I’ve had to refer them to the cold hard build instructions for each of my programs.| Joachim Wiberg
This is an SNMP server for small and embedded systems, currently Linux and FreeBSD are supported. It is easily portable to other UNIX systems since it’s written in C. The daemon is very small (~40 kiB) and does not have nowhere near the feature set of Net-SNMP, therefore it has a very low impact on system resources. See my mini HowTo: Playing with SNMP for a quick introduction to setting up the SNMP tools and MIBs to avoid having to use numerical OIDs.| Joachim Wiberg
Had an interesting conversation with a buddy last night. It started out as a shift-reduce problem with Bison and ended up a ping-pong of useful UNIX API:s. We concluded that despite having worked professionally with UNIX for over two decades, it is still very satisfying finding gems like these. Most people are completely unaware they exist and end up rolling their own (buggy) implementations. For instance, string manipulation and various forms of linked lists. Which is why I many years ago ex...| Joachim Wiberg
In-a-dyn is a small and simple Dynamic DNS, DDNS, client with HTTPS support. It is commonly available in many GNU/Linux distributions, used in off-the-shelf routers and Internet gateways to automate the task of keeping your DNS record up to date with any IP address changes from your ISP. It can also be used in installations with redundant (backup) connections to the Internet. Presentation here. Example The configuration file on most systems is in /etc/inadyn.| Joachim Wiberg
Some time ago now I was in a meeting with a customer where I first learned of the new syslog standard, RFC5424. I say “new” because, despite it being ten years old, it was new to me. Three weeks ago I started updating my fork of sysklogd to be RFC5424 compliant. I ended up ripping out most of the old code and replacing it with fresh DNA strands from FreeBSD and NetBSD. The result is a fully RFC compliant syslogd, and a libsyslog with a replacement syslog.h header for sending RFC5424 event...| Joachim Wiberg
This post is a writeup of how to use basic CGI programs in Merecat httpd v2.32.| Joachim Wiberg
Tired of confusing configuration files and security features you don’t need? Try uftpd! Supports FTP and TFTP No configuration file Defaults to port ftp/tcp and tftp/udp found in /etc/services, or custom port(s) Serves files from the ftp user’s $HOME, as specified in /etc/passwd, or custom path Can run from inetd(8) or as a standalone daemon Can be built and installed as a .deb file, with debconf support Can run as root, with chroot and privsep, or as a regular user Supports TFTP blocksiz...| Joachim Wiberg
Merecat started out as a pun at Mongoose, but is now useful for actual web serving purposes. It is however not a real Meerkat, merely yet another copycat, forked from the great thttpd created by Jef Poskanzer. Merecat expands on the features originally offered by thttpd, but still has a limited feature set: Virtual hosts Basic .htpassd and .htaccess support URL-traffic-based throttling CGI/1.1 HTTP/1.1 Keep-alive Built-in gzip deflate using zlib HTTPS support using OpenSSL/LibreSSL, works wi...| Joachim Wiberg
I run Awesome on Ubuntu 19.04 with XScreenSaver. This post is a brief writeup of what I did to fix the ugly default fonts.| Joachim Wiberg
Protocol Independent Multicast, PIM, allows existing networks to route IP multicast, regardless of what unicast routing protocol is in use. It is designed to use existing routing tables to make its multicast routing decisions. PIM-SM is suitable for sparsely located multicast subscribers, for dense mode operation mrouted is recommended, and for static multicast routing smcroute may be used. pimd is a lightweight standalone PIM-SM/SSM v2 multicast routing daemon. It is the original USC (netweb...| Joachim Wiberg
This post is an update of what’s happened since last I posted about my many pet projects. As usual nothing fancy. If you want to know more I suggest you find one on GitHub you’re interested in. File an issue, or better yet, post a pull request to scratch that itch you have deep down: 👉 https://github.com/troglobit| Joachim Wiberg
Reminder to self: How to fix Firefox about:config when using a Dark Theme in Gnome or Awesome. I use System76 amazing Gtk+ theme from Pop!_OS. It’s quite simple to set up on top of Ubuntu and use in Awesome: sudo add-apt-repository ppa:system76/pop sudo apt update sudo apt install pop-theme I then use gnome-tweaks to select the Pop-dark-slim theme. Now, the problem is that certain text box inputs in Firefox is either completely dark or white and the text cannot be seen until you mark it. Th...| Joachim Wiberg
Having just received a new (used) ThinkPad X250 I felt somewhat lost when I realized the display brightness keys didn’t do anything in my Awesome WM setup.| Joachim Wiberg
Summer is almost upon us. The weather in Sweden has been amazing the last couple of weeks, sunny and warm. This has of course not prevented me from pursuing my favorite indoor activity; coding! This time around I’ve spent some time to resurrect the packet injection tool Nemesis.| Joachim Wiberg
I still get asked this, from time to time. Maybe it’s because I only use event loops, maybe it’s because I’ve written libuEv, or maybe people still don’t understand: Why an event loop, why not use threads? So here’s my response, once more.| Joachim Wiberg
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...| Joachim Wiberg
Today the new logo for Finit3 was added to the GitHub repo and the homepage Gorgeous, isn’t it?! :sunglasses: 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 :smiley:| Joachim Wiberg
This is not a proper HowTo, more of a “note to self” after having created a setup to test pimd issue #57. For these notes the following virtual topology, running on Ubuntu 15.10 with Linux 4.2 and Qemu 2.3.0, is used: .--------. net1 .----. net2 .----. net3 .----------. | Sender |------| R2 |------| R3 |------| Receiver | '--------' '----' '----' '----------' The networks between the boxes are actually Linux bridge devices (br), on which you may have to disable IGMP/MLD snooping to get pi...| Joachim Wiberg
This is an introduction to HowTo run pimd on OpenBSD. I keep it around mostly as a reminder to myself when testing new pimd releases, maybe someone else can make use of it as well. First of all, my sincere thanks to the OpenBSD team for, not just an awesome UNIX distribution, but also for their good taste in shipping a MULTICAST enabled kernel in the base distribution! On both NetBSD and FreeBSD there is a bit of work to get multicast support, which is one of the reasons for my not writing a ...| Joachim Wiberg
As a follow-up to my previous Buildroot mailing-list post about the git format-patch and git send-email commands, this post covers how to set up the latter.| troglobit.com
Alpine Linux is an amazing little operating system. It’s small, boots quick, and easy to use. The size alone makes it very attractive to container builders. This blog post details how to set Alpine up with the Finit init system, replacing the default OpenRC.| Posts on The Last Outpost
With lots of help from the tireless Tobias Waldekranz, I think I’ve finally found the perfect “magit like” email setup. With Emacs, of course. This is the story of how I did it. First install notmuch, mbsync (from the isync package), and afew: sudo apt install notmuch isync afew Do initial setup of notmuch for your user. I’ve opted to store my mail in ~/mail, this is used throughout the text below, ymmv.| Posts on The Last Outpost
Reminder to self: remember CFLAGS=-g -Og -rdynamic to allow backtrace_symbols() to actually pretty print function names in stack traces.| Posts on The Last Outpost
I blogged earlier about the awesome little ThinkPad X200 I found and its blinking WiFi LED. Briefly I mentioned an odd issue with X/Wayland on LMDE 4. This turned out to be a HW bug that can only be worked around by disabling hardware acceleration for virtualization: https://forums.lenovo.com/t5/Windows-8-1-8-7-Vista-and-XP-Discussions/Bizarre-screen-artifacts-on-R400-Integrated-Graphics-running-Win-7-RTM/m-p/153980?page=1#199768 The post says it should be sufficient to “Disable Virtualizat...| Posts on The Last Outpost
For a while now my Wireguard VPN provider has been handing out a bad DNS server. So whenever I do a DNS lookup it takes five (5!) seconds timing out, which is quite annoying. This blog post is about how you can fix this with openresolv in Ubuntu.| Posts on The Last Outpost
This is a HowTo for setting up Merecat httpd with Let’s Encrypt HTTPS certificates. The upcoming v2.32 release of Merecat supports HTTPS as well as serving more than one Internet port. This is highly useful for those who want to serve both HTTPS and HTTP content. Update: now with support for --webroot and HTTP-01 renewal!| Posts on The Last Outpost
Mounting my ReadyNAS from Nautilus stopped working after upgrading to Ubuntu 20.04. Turns out there was a change in behavior in Sambva v4.11 that disabled SMB1 protocol by default. It’ll be interesting to see how this pans out in the rest of the Linux community … fortunately there’s a workaround! Update: same on Debian 11 (bullseye) and Linux Mint 20 (Ulyana)| Posts on The Last Outpost
The last couple of months have been crazy. The downturn in the economy due to Covid-19, mass layoffs, social distancing and quarantine. Not to mention the unrest in US and Europe in the wake of George Floyd’s uneccessary death.| Posts on The Last Outpost
“My name is Joachim and I’m a sudo su - user.” Before you read any further, please read A life without sudo.| Posts on The Last Outpost
Recently got my hands on a ThinkPad X200, the last model without the useless touchpad and with the awesome classic keyboard. A fine little machine that can easily be upgraded with an SSD disk and 8 GiB RAM! I set it up with Linx Mint (LMDE 4), which worked great to begin with, but there was some odd issue with X/Wayland that sometimes caused the screen (only the screen) to freeze up and show random color patterns. Only way to workaround it was to suspend, wait, and resume again. So now I’m ...| Posts on The Last Outpost
Every now and then people ask me for pre-built packages of software I maintain. Up until today I’ve had to refer them to the cold hard build instructions for each of my programs.| Posts on The Last Outpost
How to set up a Debian/Ubuntu APT repository with GPG signing. At first I tried to use Bas Wijnen’s mini-dinstall howto, but never managed to get it working. Probably due to problems with GPG. Then I went down the tried and true path of using reprepro. I’ve tried to document my steps here, but I’ve very likely missed a few steps that a beginner admin may run into. YMMV B-)| Posts on The Last Outpost
Had an interesting conversation with a buddy last night. It started out as a shift-reduce problem with Bison and ended up a ping-pong of useful UNIX API:s. We concluded that despite having worked professionally with UNIX for over two decades, it is still very satisfying finding gems like these. Most people are completely unaware they exist and end up rolling their own (buggy) implementations. For instance, string manipulation and various forms of linked lists. Which is why I many years ago ex...| Posts on The Last Outpost
Some time ago now I was in a meeting with a customer where I first learned of the new syslog standard, RFC5424. I say “new” because, despite it being ten years old, it was new to me. Three weeks ago I started updating my fork of sysklogd to be RFC5424 compliant. I ended up ripping out most of the old code and replacing it with fresh DNA strands from FreeBSD and NetBSD. The result is a fully RFC compliant syslogd, and a libsyslog with a replacement syslog.h header for sending RFC5424 event...| Posts on The Last Outpost
This post is a writeup of how to use basic CGI programs in Merecat httpd v2.32.| Posts on The Last Outpost
About a year ago I wrote about a way to control the brightness on my x250. I found a lot of tools, and at the time I saw a lot of potential in light, which I even contributed to a lot. However, I ended up not using the evolved versions myself, and it took me a while to digest why. I think the project just outgrew me and what I wanted in such a tool.| Posts on The Last Outpost
I run Awesome on Ubuntu 19.04 with XScreenSaver. This post is a brief writeup of what I did to fix the ugly default fonts.| Posts on The Last Outpost
The last six months at work have been really stressful, so to finally get a week off for Swedish Midsummer celebrations was really what the doctor ordered! I’ve managed to wind down and relax, spend time with my kids and my family, and even put in some time on my personal software projects! Three years ago I forked thttpd and began merging patches I’d found scattered around the net. I’ve also added a few features of my own, and to avoid any confusion with the original (bug free!| Posts on The Last Outpost
This post is an update of what’s happened since last I posted about my many pet projects. As usual nothing fancy. If you want to know more I suggest you find one on GitHub you’re interested in. File an issue, or better yet, post a pull request to scratch that itch you have deep down: 👉 https://github.com/troglobit| Posts on The Last Outpost
A lot has happened since my last post; I had my bike stolen, stumbled upon the guys who’d stolen it, got mugged by same guys, decided I’d had enough and then bought a house and moved to another city. That’s the long and short of it. I’m OK, sort of.| Posts on The Last Outpost
Reminder to self: How to fix Firefox about:config when using a Dark Theme in Gnome or Awesome. I use System76 amazing Gtk+ theme from Pop!_OS. It’s quite simple to set up on top of Ubuntu and use in Awesome: sudo add-apt-repository ppa:system76/pop sudo apt update sudo apt install pop-theme I then use gnome-tweaks to select the Pop-dark-slim theme. Now, the problem is that certain text box inputs in Firefox is either completely dark or white and the text cannot be seen until you mark it. Th...| Posts on The Last Outpost
Having just received a new (used) ThinkPad X250 I felt somewhat lost when I realized the display brightness keys didn’t do anything in my Awesome WM setup.| Posts on The Last Outpost
Last three months have been hectic, lots of exciting things going on at work, with my kids, and also with some of my pet projects.| Posts on The Last Outpost
Summer is almost upon us. The weather in Sweden has been amazing the last couple of weeks, sunny and warm. This has of course not prevented me from pursuing my favorite indoor activity; coding! This time around I’ve spent some time to resurrect the packet injection tool Nemesis.| Posts on The Last Outpost
This post details how to set up cgit with Merecat httpd. It begins as a GitHub issue report by Mr Alok G. Singh, who had run into problems setting it up. I’m posting it here for others to see.| Posts on The Last Outpost
Anyone who knows me knows I’m quite stubborn. Whenever I set my sights on something I finish it. The last couple of years I’ve been quite busy on GitHub, making at least one commit per day. I’ve had a lot of things I’ve wanted to do and complete, and this commit regimen has kept me on track to do just that. However, nothing comes for free, and although I’ve achieved my goals, I’ve also had to make a lot of sacrifices.| Posts on The Last Outpost
GRE tunnels are useful in many ways. This blog post shows how to set up multicast routing with pimd over a GRE tunnel. To achieve this we will also set up OSPF over GRE with Quagga, because PIM, unlike DVMRP (mrouted), require unicast routing rules to be established. .----{ Intranet }----. / 192.168.1.0/24 \ / \ .10 / \.20 .--'---. .1 GRE Tunnel .2 .---`--. | |====================| | | R1 | 172.16.16.0/30 | R2 | | | | | '--.---' '------' | .1 | .1 | 10.0.1.0/24 | 10.0.2.0/24 | .2 | .2 .--'---...| Posts on The Last Outpost
I still get asked this, from time to time. Maybe it’s because I only use event loops, maybe it’s because I’ve written libuEv, or maybe people still don’t understand: Why an event loop, why not use threads? So here’s my response, once more.| Posts on The Last Outpost
This post details how to package and deploy software with Docker. The example uses Merecat httpd on Alpine Linux. Try it out with: docker pull troglobit/merecat See https://hub.docker.com/r/troglobit/merecat/ for details on how to run Merecat httpd in production.| Posts on The Last Outpost
How to install LXDM + XFCE4 in Alpine Linux 3.6 when testing with Finit.| Posts on The Last Outpost
It’s fairly easy to replace the slightly unfriendly syslinux with grub (grub2) in Alpine Linux. I use v3.6 but YMMV.| Posts on The Last Outpost
Reminder to self: echo "https://ftp.eu.openbsd.org/pub/OpenBSD/" >/etc/installurl pkg_add git autoconf automake libtool Select the latest versions, then add the following to ~/.profile: AUTOCONF_VERSION=2.69 AUTOMAKE_VERSION=1.15 export AUTOCONF_VERSION AUTOMAKE_VERSION With your selected versions, of course.| Posts on The Last Outpost
This is a HTTPS proxy HowTo for Merecat httpd using pound and OpenSSL. Pound is a reverse proxy, load balancer, and HTTPS front-end for Web servers. It is available in Debian/Ubuntu and is very simple to set up: First install the package, including OpenSSL, or LibreSSL: sudo apt install pound openssl Use OpenSSL to create a self-signed certificate: mkdir ~/certs cd ~/certs openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.| Posts on The Last Outpost
This is a HowTo for setting up ikiwiki with Merecat httpd. First install ikiwiki $ sudo apt install ikiwiki libcgi-session-perl libcgi-formbuilder-perl Follow the steps to setup a new Wiki or Blog. In this example we set up a wiki in our ~/public_html: $ ikiwiki --setup /etc/ikiwiki/auto.setup ... Successfully set up wiki: url: http://localhost/~jocke/wiki srcdir: ~/wiki destdir: ~/public_html/wiki repository: ~/wiki.git To modify settings, edit ~/home.setup and then run: $ ikiwiki --setup ~/...| Posts on The Last Outpost
Having worked with Linux for the last 20 years, and embedded for more than ten of them, I’ve become quite a fan of virtualization in general and Qemu in particular. Qemu is a fantastic little tool, created by the Open Source superhero Fabrice Bellard. It can be used to verify an embedded system without having to deal with the problems of actual HW until you really have to. Don’t get me wrong, HW excites me like any other nerd, but if the HW is new and shaky it can be quite a pain to devel...| Posts on The Last Outpost
The last game I ever played was Castle Wolfenstein 3D, released in 1992 for MS-DOS, made by the now legendary id Software. OK, admittedly I’ve played other games since then, but I’ve never again been so manic about a game since Wolfenstein. This post is about how to build, install and set up Wolfenstein 3D on a Raspberry Pi running RetroPie … on a Picade :-)| Posts on The Last Outpost
This is a quick writeup of how to get the Trust Bluetooth 4.0 adapter (dongle) working in Linux, Ubuntu 16.04.| Posts on The Last Outpost
Ever since my first stumbling steps with Linux back in ‘96, I’ve been learning about UNIX. The first obvious lesson was to not use the root account. Since then I’ve been using a combination of sudo command and suid root binaries to get the job done. For the last ten years, however, I’ve been meaning to learn about Linux capabilities(7) and thanks to a colleague of mine I now have :)| Posts on The Last Outpost
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 (!| Posts on The Last Outpost
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...| Posts on The Last Outpost
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...| Posts on The Last Outpost
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 TroglO...| Posts on The Last Outpost
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 😃| Posts on The Last Outpost
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!| Posts on The Last Outpost
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 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 Ubu...| Posts on The Last Outpost
The other day I got my geeky hands on two old SuperMicro X8STI-F 1U servers. I plan to use them as build and embedded target emulation servers for my open source projects as well as Minecraft server for my kids :)| Posts on The Last Outpost
This is a very brief writeup of how to upgrade the BIOS on a X1 Carbon (G1) from Linux. For more information on this topic there is always the excellent ThinkWiki. OK, this post is more about creating the bootable USB stick needed, was too much of a chicken to try Flashrom …| Posts on The Last Outpost
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, wh...| Posts on The Last Outpost
So you’re having a problem with the Internet daemon you wrote. You’re convinced the firewall, or some other magic, in your modern Linux distribution is eating your packets. No. First, make sure your daemon is actually running and has successfully bound to the address and port in question: sudo netstat -atnup If your application is not listed there you have a problem with it binding its server socket. Check the return values from bind().| Posts on The Last Outpost
How do you know when your UNIX service (daemon) is ready? Simple, it has created a PID file, signalling to you how to reach it. Usually this file is created as /var/run/daemon.pid, or /run/daemon.pid, and has the PID of daemon as the first and only data in the file. This data may or may not have a UNIX line ending. Only trouble is: most UNIX daemons do not re-assert that PID file properly on SIGHUP (if they support SIGHUP that is). When I send SIGHUP to a daemon I expect it to re-read its /et...| Posts on The Last Outpost
After the rm -rf /* disaster that hit me a couple of weeks ago I’ve been rebuilding my setup, restoring the few files I’ve had backed up, and collecting advice from the elders. Turns out there are a few tricks that can save your home directory from accidents like mine. The first one is rather obvious, but I’m writing it down anyway: Keep separate accounts. If possible, use separate accounts (with different permissions obviously) for different projects.| Posts on The Last Outpost
Days like these inconspicuously start out just like any other day, except on days like these you accidentally manage to erase $HOME and have no real backup to rely on … Maundy Thursday will forever be Black Thursday for me, from now on. Best thing your can do, after cursing at yourself constantly for a couple of hours, is to: Come up with a useful backup and restore strategy Read up on undeletion tools for Ext4 Blog about it, naturally BUT FIRST – QUICK – UNMOUNT OR POWER-OFF YOUR COMPU...| Posts on The Last Outpost
Recently issue #70 was reported to pimd. That number of issues reported is cool in itself, but this was a question about Docker and pimd. Up until that point I had only read about this new fad, and played around with it a bit at work for use as a stable build environment for cross-compiling. I had no idea people would want to use a Docker container as a multicast sink. Basically I was baffled. The reporter used a Java based tool but simply couldn’t get things to work properly with pimd runn...| Posts on The Last Outpost
For the better part of the last ten years I have been working with multicast in one way or another. I’ve used many different tools for testing, but on most systems I usually resort to ping(1) and tcpdump(1), which are quite sufficient. However, you often need to tell bridges (switches) to open up multicast in your general direction for your pings to get through, so you need to send an IGMP “join” first. Way back in 2006 I stumbled upon a neat tool called mcjoin, written by David Stevens...| Posts on The Last Outpost
I vanlig ordning bashar vi DNS på jobbet, pga ofungerar hårt över VPN för de flesta. (Ja vi kör alla Linux, utom cheferna som envisas med att använda något ur gamla testamentet.) Här följer ett utdrag från vår IRC: 14:32 <n00b> Success! Äntligen fick jag ordning på DNS via guest wifi -> vpn -> office network. Firar med att skapa lite irc noise. :D 14:32 < rooth>n00b: Du har väl fått den distribuerade /etc/hosts filen?| Posts on The Last Outpost
Back to using the Awesome WM in Ubuntu. This time I’m setting up everything from scratch and first up is fixing keybindings to control my main music player: Spotify! Edit your ~/.config/awesome/rc.lua with Emacs (obviously). If you do not have an rc file, simply copy the system /etc/xdb/awesome/rc.lua: globalkeys = awful.util.table.join(globalkeys, awful.key({}, "XF86AudioRaiseVolume", function () awful.util.spawn("amixer -D pulse sset Master 5%+", false) end), awful.key({}, "XF86AudioLower...| Posts on The Last Outpost