Main menu:

About this blog

I am Eric Hameleers, and this is where I think out loud.
More about me.

Site search

Links:

Categories

RSS Alien’s Slackware packages

Visitor map

Meta

Sponsoring

Blog maintenance

I took the opportunity to upgrade my blog software to the latest release of Wordpress. As usual, the upgrade was a careful but straight-forward process with no hidden traps.

I use a special plugin, “Maintenance Mode” which shows a maintenance notice during the upgrade so that I could work without feeling the pressure.

alien_maintenance

No idea if you can spot the difference, but the admin backend sure changed!

Eric

initramfs unpacking failed: junk in compressed archive

Lilo, the 2.6.30.x kernel and Slackware on x86_64

Although Slackware -current still has a 2.6.29.x kernel, I am sure that people are experimenting with 2.6.30 kernels. In some cases, and only on Slackware for the x86_64 architecture so far, this may lead to boot problems. There is a problem that manifests itself when you are using an initial ramdisk with your kernel. The error message that you may see (unless it scrolls off your screen too fast) is this:

“initramfs unpacking failed: junk in compressed archive

As a result, your computer will fail to boot.

Now, what is happening here?

By default, LILO loads your initial ramdisk (/boot/initrd.img) into the first 15MB of memory. This circumvents a BIOS limitation for older systems (typically, computers produced before 2001).

However, the linux kernel has been growing in size, and there are combinations of kernel and initrd that will no longer fit into the first 15MB of memory. This leads to boot failure. Because of the fact that the kernel and initrd files are compressed archives, the rule of thumb is that these issues appear when the combined size of your kernel and initrd files is larger than 8 MB. The kernel will then overwrite part of the initrd in memory, leading to the above error message.

For computers with a x86_64 capable CPU, it is safe to assume that the computer has a BIOS without the 15MB limitation. In this case, you can add the following parameter to your “/etc/lilo.conf” file:

large-memory

This option instructs LILO to use a larger memory window when loading the initial ramdisk (do not forget to run the “lilo” command after making this change). It will cure the issue.

I think this should be added as a default option in the lilo.conf file generated by the liloconfig utility of slackware64.

Eric

slackware64 – yay!

[tap tap tap]… Is this thing on? ;-)

Ready or not, Slackware has now gone 64-bit with an official x86_64 port being maintained in-sync with the regular x86 -current branch. DVDs will be available for purchase from the Slackware store when Slackware 13.0 is released. Many thanks go out to the Slackware team for their help with this branch and a special thank you to Eric Hameleers who did the real heavy lifting re-compiling everything for this architecture, testing, re-testing, and staying in-sync with -current.

We’ve been developing and testing Slackware64 for quite a while. Most of the team is already using Slackware64 on their personal machines, and things are working well enough that it is time to let the community check our work.

We’d like to thank the unofficial 64 bit projects for taking up the slack for us for so long so that we could take our time getting everything just right. Without those alternatives, we would have been pressured to get things out before they were really ready.

As always — have fun!

Pat and the Slackware crew

There you have it – the official 64bit version of Slackware :-) Eight months in the making, running stable and fast on the developers’computers for over four months now. Time to allow more people to enjoy it.

Eric

Local Slackware mirror

You will not be surprised if I tell you that I install Slackware a lot.  Inbetween the public updates to slackware-current which you can read in the ChangeLog.txt there is usually a lot of private testing.

For that purpose I keep a local mirror of the slackware-current tree.  I have written a script that keeps this local copy synchronized, and also creates the ISO images which I use for the installs.  The script is widely used by other people as well, because there are no official “slackware-current” ISO images available for download.  It is much more economical to create your own ISO images when you already have a local mirror of all the packages.

The script is appropriately called “mirror-slackware-current.sh“. If you want to know what it can do, just run it with the “-h” parameter:

$ /usr/bin/mirror-slackware-current.sh -h
-----------------------------------------------------------------
$Id: mirror-slackware-current.sh,v 1.70 2009/04/14 10:24:48 root Exp root $
-----------------------------------------------------------------
Usage:
  /usr/bin/mirror-slackware-current.sh [OPTION] ...
or:
  SLACKROOTDIR=/your/repository/dir /usr/local/sbin/mirror-slackware-current.sh [OPTION] ...

The SLACKROOTDIR is the directory that contains the directories
  slackware-<RELEASE> and slackware-<RELEASE>-iso
Current value of SLACKROOTDIR : /mirrors

You can change the script defaults in a file 'mirror-slackware-current.conf'

The script's parameters are:
  -h            This help.
  -b <number>   Limit bandwidth usage to <number> KBytes/sec.
  -c            Check for newer version of this script.
  -e            Use 'boot-load-size=32' instead of the value 4.
                 (32 is a more standard value, but a value of 4
                 will let the ISO boot with old 'broken' BIOSes).
  -f            Force sync and the creation of new ISO image(s)
                even if no update of the ChangeLog.txt was found.
                This is how you resume after an aborted attempt.
                Note: this will also create any missing local
                      directories needed for the mirror.
  -i            Only generate ISO images from our local copy;
                do not attempt to contact the remote server.
  -l <localdir> The root directory where you keep your local
                Slackware mirror; this directory contains
                slackware-<RELEASE> and slackware-<RELEASE>-iso
  -m <uri>      The rsync URI that you want to use instead of
                the script default. Example:
                -m mirrors.tuxq.com::slackware/slackware-current
                (no trailing slash!)
  -n            Only show the changes in the ChangeLog.txt
                but don't sync anything and don't generate ISOs.
  -o <iso_type> The type of ISO that you want to generate.
                iso_type can be one of:
                CDROM: produce 3 CDROM images (KDE on CD3);
                DVD  : produce a single DVD image;
                ALL  : produce CDROM and DVD images;
                NONE : produce no images at all (just sync).
                The default iso_type is CDROM.
  -p            Remove old ISO's before building the new ones
                (in case you're suffering from low free space).
  -r <release>  The release ('current' by default); use '-r 12.2'
                if you want to mirror and image slackware 12.2
  -q            Non-verbose output (for cron jobs).
  -s            Additional ssh options, in case rsync needs to
                login to the remote server using ssh. Example:
                -s "-l alien -o IdentityFile=/home/alien/.ssh/id_rsa"
  -v            Verbose progress indications.
  -w            Write a .conf file containing script defaults.
                It will be created in the script's directory,
                as 'mirror-slackware-current.conf'
  -X <xfile>    File 'xfile' contains a list of exclude patterns
                for directories that you do not want mirrored.
                Note: this will override the default exclusion of
                the 'pasture' directory so if you still want that
                excluded, add it explicitly to the file 'xfile'.
                If your intention is *not* to exclude '/pasture'
                from the mirror, use '-X none'.

An example: I have defined a cronjob which checks a Slackware mirror server once a day, and if the script detects a change in the ChangeLog.txt it will bring my local mirror back in sync, and creates a bootable DVD ISO image for me. If no changes are found, the script does not produce any output, but in case of an update it will show it’s actions on standard output. The cron daemon will mail the output of any job to the user account which runs the script, so in the morning I will find a comforting message in my inbox:

Date: Sat, 28 Mar 2009 15:44:37 +0100
From: root@darkstar
To: root@darkstar
Subject: cron: /usr/bin/mirror-slackware-current.sh -q -X none -o DVD

0a1,17
> Fri Mar 27 20:30:48 CDT 2009
> a/module-init-tools-3.6-i486-2.tgz:  Patched modprobe to not complain if
/sys
>   is not mounted.  This is none of modprobe's business.  ;-)
> l/glib2-2.18.4-i486-1.tgz:  Upgraded to glib-2.18.4 and patched.
>   This library has been patched to fix overflows that are
>   possible security holes.
>   For more information, see:
>     http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-4316
>   (* Security fix *)
> l/libxml2-2.7.3-i486-1.tgz:  Upgraded to libxml2-2.7.3.
> xap/mozilla-firefox-3.0.8-i686-1.tgz:
>   Upgraded to firefox-3.0.8.
>   This fixes some security issues.
>   For more information, see:
>     http://www.mozilla.org/security/known-vulnerabilities/firefox30.html
>   (* Security fix *)
> +--------------------------+
Sat Mar 28 15:22:06 CET 2009 [17616]: ChangeLog.txt has been updated,
starting mirror of slackware-current.
*** Using rsync.osuosl.org::slackware/slackware-current ***
Sat Mar 28 15:24:09 CET 2009 [17616]: Done mirroring slackware-current
 (exit code 0).
Sat Mar 28 15:28:04 CET 2009 [17616]: Creating DVD ISO image for
 slackware-current...
Sat Mar 28 15:38:27 CET 2009 [17616]: DVD ISO created (exit code 0) ...
Sat Mar 28 15:38:37 CET 2009 [17616]: Computing MD5 checksums of the ISO's
 (time consuming).
Sat Mar 28 15:44:31 CET 2009 [17616]: Resulting ISO files:
-rw-r--r--  1 root root 4479451136 Mar 28 15:38
/mirrors/slackware-current-iso/slackware-current-install-dvd.iso
Sat Mar 28 15:44:31 CET 2009 [17616]: Done!

This is the command line which I added to my crontab:

# Keep the Slackware -current tree in sync:
22 5 * * * /usr/bin/mirror-slackware-current.sh -q -X none -o DVD

The script used to create 2 CDROM ISO images if you wanted those (leaving out the kdei/ series, as well as the packages in extra/), but lately, the size of Slackware has increased so much that the packages no longer fit on two CDROMs. I have modified the script so that it will now produce 3 CDROM ISO images (with the kde/ series on the third CDROM) if you want to burn CD’s.

TIP: If you want to change the default values of the script, do not edit the script itself.  Instead run “mirror-slackware-current.sh -w” which will create the file “mirror-slackware-current.conf” in the same directory as “mirror-slackware-current.sh”. If you edit the variable values in “mirror-slackware-current.conf” the script will use those.

Have fun with this script,

Eric

Leaps and bounds

Updates to Slackware’s development tree

Today, a lot of changes found their way into slackware-current.  Slackware’s development speed shows leaps and bounds :-)  The newest set of updates is nearly as long as last month when Slackware added KDE4 to mainstream. The kernel packages have now arrived at 2.6.29.1 which is the most recent kernel available to date.  The KDE series is now at 4.2.2, which is a bug fix release to the previous 4.2.1. We also updated a lot of the KDE dependencies.

New packages which were added: jasper (provides jpeg2000 support in Okular), crda and iw (user-space support for wireless drivers in the new kernel, useful for people in non-US countries).  M2Crypt, libnl and libmcrypt are other newcomers (and the php package has now been compiled with mcrypt support, this was a much asked-for feature).  An interesting addition is xz.  This compression tool based on Lasse Collin’s LZMA offers better compression than bzip2 and much faster de-compression than bzip2.

The curl package was recompiled with support for a set of CA root certificates. This provides a fix for the errors people would get if they used curl to download stuff from secure (aka https://) web sites.  The mkinitrd package was enhanced with the mkinitrd_command_generator.sh script (written by PiterPUNK and me) which makes it very easy to build an initrd.gz image for your kernel. It can also write an update for your /etc/lilo.conf file. Just run:

sh /usr/share/mkinitrd/mkinitrd_command_generator.sh -h

to see what it can do.

Again, there were changes which did not make their way into the official ChangeLog.txt announcement…

I will not give full disclosure and let you find out for yourself. The changes are in the Slackware installer. One will be quite obvious from the start (just look at the messages during the final stage of the boot), the second will only become apparent for those of you who perform NFS installs and the third is not even visible – consider it an easter egg (tested only by me thusfar I believe). It adds yet another possible package source when installing Slackware.

Have fun with this new installment of slackware-current! And don’t get scared when you boot your updated computer and see the new kernel logo: a small animal (Tuz) which replaces the familiar penguin (Tux) for the duration of the 2.6.29.x kernel releases…

Eric

Alien Tip: protected apache URL

I run a apache webserver at home which is accessible on the local LAN as well as on the internet, In order to make an internal server visible on the Internet, I use port-forwarding on my cable router: incoming http requests are forwarded to my web server.

The issue is that I want to shield some private pages from public access. Outside the local LAN, I want these pages to be password protected. At the same time, I want these pages to have no restrictions when I access them from another computer on the LAN at home.

This is how I did that:

In apache’s configuration file (/etc/httpd/httpd.conf) you can limit page access by based on the validity of one of multiple options. In my case:

  • you are allowed direct access based on a hostmask/IP address, or if that condition is not satisfied,
  • you have to enter a valid username/password.

You achieve this by adding  something like this inside a <Directory></Directory> or <Location></Location> block where you define the behaviour of a web page:

require valid-user
Allow from .myhome.lan
Satisfy any

What I assumed here was that your home computers all have hostnames which end on “.myhome.lan“. If the apache webserver receives a page request from one of your computers, you will automatically get access to your protected URL. If your computer hostname does not end on “.myhome.lan” (for instance when you access the webserver from a computer on the internet), the second pre-condition will be checked by the apache webserver. A login form will be presented to you and you will have to enter your credentials. If apache decides that your credentials are that of a “valid user” then you will get access to the page.

If your network at home does not use domain names for the computers (the “.myhome.lan” is the domain name used in the above example) then the above line “Allow from .myhome.lan” will not work. Fortunately, you can use (partial) IP address as well, so that the example would become:

require valid-user
Allow from 192.168
Satisfy any

which would give full access to any computer with an IP address in the range 192.168.0.0/16 .

For more information about protecting your web pages:

More tips will probably follow. I have a lot of these useful snippets for which a whole Wiki page is just too much.

Cheers, Eric

Calculating PI

The Internet is full of “one-liners” and if you search a bit, you can find many. A one-liner typically means (a chain of) commands that produce useful results quickly.

I came across a nice one-liner just now. The “binary calculator” or bc is a powerful UNIX tool. Calculating the value of PI with an arbitrary number of decimals (the number of decimals only restricted by the power of your OS, available RAM or internal limitations of the program) goes like this:

echo “scale=XXXX;4*a(1)” | bc -l

Where “XXXX” is the number of digits you want to calculate. Calling bc with the “-l” parameter causes bc to load it’s mathematical library. The function “a()” is the arctangent function.

Let’s say you need the value of PI with an accuracy of a thousand decimals.

$ echo "scale=1000;4*a(1)" | bc -l
3.141592653589793238462643383279502884197169399375105820974944592307\
81640628620899862803482534211706798214808651328230664709384460955058\
22317253594081284811174502841027019385211055596446229489549303819644\
28810975665933446128475648233786783165271201909145648566923460348610\
45432664821339360726024914127372458700660631558817488152092096282925\
40917153643678925903600113305305488204665213841469519415116094330572\
70365759591953092186117381932611793105118548074462379962749567351885\
75272489122793818301194912983367336244065664308602139494639522473719\
07021798609437027705392171762931767523846748184676694051320005681271\
45263560827785771342757789609173637178721468440901224953430146549585\
37105079227968925892354201995611212902196086403441815981362977477130\
99605187072113499999983729780499510597317328160963185950244594553469\
08302642522308253344685035261931188171010003137838752886587533208381\
42061717766914730359825349042875546873115956286388235378759375195778\
18577805321712268066130019278766111959092164201988

Isn’t this fun? And on my old dual P2/233MHz server, this took roughly eight seconds.

Now, to compare the usefulness of the Linux platform to good old Solaris, this is what you get on Solaris 8:

$ echo "scale=1000;4*a(1)" | bc -l
scale factor is too large
3.14159265358979323844

Cheers, Eric

Punk Poet

Tonight I saw an interview with John Cooper Clarke on television. Once called “the punk poet”, his star rose in the late seventies and early eighties with energetic performances – reciting his poetry on stage almost like firing bullets at you. Dressed up all in black he would look like a skinny scarecrow. John Cooper Clarke often opened punk gigs, warming up the audience with a near unintelligible stream of witty texts. I very much liked JCC’s vinyl albums where his recitals were enhanced with a musical backing by the Invisible Girls (lead by Martin Hannet, the producer of Joy Division and many other bands to follow).

Those initial years of fame were followed by decades of silence, and the interview explains why – he “just did not care” anymore. Now, he is back, performing live… looking older and frailer because of a past heroin habit, but still the energy and wit is there!

Here is a youtube video of an old performance – “Health Fanatic”. I love it!

Unfortunately Youtube “beeps” away lots of the rougher text parts, otherwise I would have linked you to the superb “Twat”. Also recommendable is “Beasly Street” which in the 1980s was regarded by many as a sign of the time. It is a pamphlet against Margeret Thatcher – the Prime Minister whose politics caused massive unemployment in the UK at the time.

OK let’s add it anyway. This one backed by the band.

I hope you will have a good time John. Rattle those sticks a bit.

Eric

Icons disappear in XFCE 4.6.0

Ouch…

You just upgraded your Slackware computer to the latest slackware-current and you are using XFCE as a desktop manager. Perhaps you wondered why all of a sudden most of your panel icons are missing, and several of the icons that should display in menus and dialogs are gone as well.

The issue you are experiencing is caused by the removal of the Rodent icon theme from XFCE 4.6.0. This icon theme was the default in past versions, and your configuration in ~/.config/xfce4/ will have references to that Rodent theme especially if you selected custom icons in some places. Now you upgraded to 4.6.0 and the Rodent is gone, XFCE will not be able to display the associated icons.

The remedy is fairly simple (thanks Robby for informing me). Running (all of) the following three steps should work:

  1. Run the command “/usr/bin/gtk-update-icon-cache usr/share/icons/hicolor”
  2. Use the XFCE Settings Manager to change the theme to Tango or Gnome
  3. Re-install the “hicolor-icon-theme” package

When that is done, you may still have icons for launchers on the panel that are missing. In that case there is no other solution than to edit that particular launcher’s properties and select a new icon for it. See our bug report about this issue at http://bugzilla.xfce.org/show_bug.cgi?id=5067 which was opened by Robby Workman.

Note that you will not experience this “missing icons” behaviour if you install XFCE 4.6.0 without ever having used older versions of XFCE before on that computer. It is purely upgrade-related.

Cheers, Eric

Massive updates in slackware-current

Today, Pat Volkerding published a massive amount of package updates to the slackware-current tree. The entry in the Slackware ChangeLog.txt measures more than 200 lines, and is probably the largest update to the development tree ever.

Many of the core packages have received an version upgrade, but those changes may not be immediately visible to the average end user. Some of the absolute highlights mentioned in the ChangeLog are indication of a big step forward for Slackware: a new kernel (2.6.28.7), new gcc (4.3.3), new glibc (still called 2.9 but the snapshot we use is more like 2.10), a new XFCE (4.6.0) and most importantly: KDE 3.5.10 is gone, replaced by KDE 4.2.1 (which had been living in the /testing directory for a long time).

I have been working with KDE4 releases for nearly a year now, running it as my default desktop, and 4.2.1 is stable, fast and beautiful. People who heard or read that the new KDE is bloated and slow, should try it out and decide for themselves; I think it performs better than KDE3. I also ran the new XFCE for a while and it looks sweet. Note that when you upgrade from XFCE 4.4 you may experience missing icons in the panel. This happens because the Rodent icon theme was removed from XFCE in the new release. The file CHANGES_AND_HINTS.TXT (located in the toplevel directory of slackware-current) explains this issue and what you can do about it.

One neat feature addition which did not make the ChangeLog, but is definitely worth mentioning: the initrd.img and usbboot.img files which contain the Slackware installer,  have also been updated for the new 2.6.28.7 kernel. As a result, you can now install Slackware to an ext4 filesystem!

If anyone out there with a Netbook (one of those Intel Atom powered, 9 or 10 inch sized laptops with long battery life) is going to install Slackware-current on it, I would like to hear your impressions. Leave a comment to this blog post.

Have fun, Eric