Il Diario di Tinton

Zeroshell web interface screenshot Русский: Ск...

I really like zeroshell, and i have faith in it, but it just keeps giving me headaches. I will have to spend lots of hours to make it work the way i like it to, which is simply zero maintenance. Right now it works, sure, if i keep the web admin interface on all day, and keep fixing when it gets stuck.

I am running the latest zeroshell version on an ALIX2 with no RTC battery, a satellite connection on ETH01 as Active primary Net Balancer connection and an EDGE connection on USB via UMTS modem as Spare Net Balancer connection, and here are the problems i regularly run into:

  1. Net Balancer behaves like Load Balancing, even when in Failover mode. This happens sometimes when one of the two connections fail, then when they come back up, both connections stay active, and are so in routing table as well. To fix this, i have to switch to Load Balancing, Save, then switch to Failover, then save.
  2. Machine doesn’t respond for about 30-40 minutes after it has initially started. The load avg is around 30. This seems to be linked to the fact that i don’t have an RTC battery, so the clock resets to jan 1 2000, and bandwithd.
  3. Satellite DHCP connection sometimes goes down. In these situations, i have to go in Setup ->Network and refresh the DHCP lease, and all works again.
  4. Satellite DHCP connection sometimes fail to activate. This morning, for example, i woke up and turned on the satellite modem (i had left the ALIX on all night to avoid the 30-40 minute hi load situation described above). After having breakfast, zeroshell had still not recognized ETH01 as being active, even though all the LEDs on the ALIX where OK. A simple de-activating/reactivating of the interface fixed the problem.

{2012-01-17}   Zeroshell and OpenDNS

If you are using Zeroshell and OpenDNS (a great combination), don’t use a password with spaces in it! It will NOT work. ddns2 is a shell script and not properly escaped in order to handle spaces in passwords.

{2011-07-16}   Alix 2c10 + Zeroshell

Abosultely love it! zeroshell is a great Linux distribution. Thank you frenchfaso, for introducing me to it!

{2010-05-24}   mdbtools

I’m trying to get mdbtools to work on OS X 10.6 and/or amd64 linux. It’s so strange how its distributed by debian and macports, compiles fine, however gives obnoxious runtime errors.

The errors i get are the following:

$ mdb-ver file.mdb
$ mdb-tables -1 file.mdb
Segmentation fault
$ mdb-export file.mdb table
Segmentation fault

At the beginning i thought it had to do with OS X, however, when i ran into the same symptoms on Linux 2.6.18-6-amd64, i started thinking it could have been a 64bit issue. When Brian Bruns first wrote it, he probably didn’t prepare the code for 64bit architecture, making common assumptions such as an int is as big as a long or pointer.

I found some help here:


Splint is a utility that will check code for specific issues. In this case, i could use it to make sure that the size of long integers and pointers is 64 bits and the size of plain integers is 32 bits. When using splint, i found these flags to work (i put them in the .splintrc, since that was really the only thing i was using splint for):

-I /opt/local/include/glib-1.2/
-I /opt/local/lib/glib/include/
-I ~/tmp/mdbtools_debug_attempt/mdbtools-0.6pre1/include


I played with gdb and libgmalloc, but not sure if i logged the work i did. When i run it now on linux, i get:

(gdb) run -1 OMS.MDB
Starting program: /usr/bin/mdb-tables -1 OMS.MDB
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
[Thread debugging using libthread_db enabled]
[New Thread 47589690023856 (LWP 14731)]
(no debugging symbols found)
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 47589690023856 (LWP 14731)]
0x00002b48564e1fa4 in __gconv_get_alias_db () from /lib/
(gdb) cont
Cannot find user-level thread for LWP 14731: generic error
(gdb) cont
Cannot fetch general-purpose registers for thread 47589690023856: generic error
(gdb) cont
Cannot fetch general-purpose registers for thread 47589690023856: generic error

Always use the extended version of the regular expressions. In find:

find -E ./ -iregex ".*((zip)|(gz))$"

is equivalent to

find .| grep  -iE ".*((zip)|(gz))$"

Use this to search for this pattern or that pattern. The parenthesis to group expressions this way only work in extended (as grep(1) calls them) or modern (as re_format(7) calls them).

In grep use -i to ignore case. In find, use -iregex to ignore case.

Splitting files / Multiple archives

If you would like to create a multiple archive zip, tar or whatever, the easiest thing is to use split. Split any file into whatever size you wish like this:

split -b <number_of_megs>m <file_to_split>

which will create a sequence of files named <file_to_split>{aa,ab,ac,…}. You can add to pipes, define output filename, and more. See man page.

Rebuilding the split archive

To rebuild, use cat:

cat <file_to_split>?? > <file_to_split>

or feed the pipe directly to unzip or tar.


et cetera
%d bloggers like this: