Anyone who may be looking to upgrade, or install a new server and require Zend Optimizer to run Zend Encoder / Zend Guard encoded programs:

Zend Optimizer 3.3.0 is broken. It has a broken SHM setup calls in it, which cause it to execute sometimes, but abort early. This breaks ‘interactive’ mode, as well as pipes.

I have confirmed this behavior on Linux (32 bit) and Linux x86_64 bit platforms.

mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b5dfbf94000
lseek(0, 0, SEEK_CUR)                   = -1 ESPIPE (Illegal seek)
close(0)                                = 0
munmap(0x2b5dfbf94000, 4096)            = 0
ioctl(-1, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fffaeb6b7a0) = -1 EBADF (Bad file descriptor)
mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b5e0189c000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b5e0199d000
read(4294967295, 0xd75cb0, 8192)        = -1 EBADF (Bad file descriptor)

Revert, or stick to Zend Encoder 3.2.8 until this is resolved.

As this new MySQL bug shows, there is a difference between supported, and cutting edge.

Many Linux administrators treat their system as though having the latest version of a program is always the best. This is not always – and is usually never true for production environments.

Yes. I am advocating “If it ain’t broke, don’t fix it.”:

The whole concept of production is for stability; that’s why you never want to run your testing-grade code on a production system. If you have security issues, release, and test this in your testing environment BEFORE you use it live.

Today, they have finally rolled out a patch into MySQL 5.0.50, InnoDB was broken for sorting in descending order in 5.0.48. I can only imagine the chaos if all administrators utilized the same ‘Linux Upgrade Path.’

I find that sometimes I revert to the older, simpler tools, despite the fact that there are many newer ones available. Why? They’re standardized. They’ll be everywhere. This means you can almost guarantee they’ll be available for you. This, as they say, is a good thing.

Such is the case of ‘xmore.’ xmore is a simple program that provides a scrolling window you can read text in on an X11 display. It’s tiny, and considered to be a core part of X.

I was a bit shocked when I discovered that the default xmore package in Ubuntu dropped core. It was having issues with the Xaw library. So, I looked around, and found a patch for Debian, and modified, then applied it to Ubuntu’s source package.

If you want to install my prebuilt (unofficial) package, it’s available, here’s how to get, and make sure it’s good:

I’ve signed my build with dpkg-sig:

%wget http://www.holwegner.com/files/xmore_1.0.1-0ubuntu2_i386.deb

You will want to get my key and add it to your keyring:

%gpg --keyserver wwwkeys.eu.pgp.net --recv-keys F8C314E3
gpg: requesting key F8C314E3 from hkp server wwwkeys.eu.pgp.net
gpg: key F8C314E3: public key "Shawn Holwegner (GPG Signing Key) <me@mydomain.com>" imported (edited to thwart spambots)
%gpg --armor --export F8C314E3 | sudo apt-key add -
OK

Now, you can check my signature; I’ve tagged this release as ‘feisty’ (Note that I have left the response of GPG here so you can ensure the values match):

%dpkg-sig -c xmore_1.0.1-0ubuntu2_i386.deb
Processing xmore_1.0.1-0ubuntu2_i386.deb...
GOODSIG _gpgfeisty 743D4D271144FB13C788D9F3B4B33515F8C314E3 1184151679

Now, install it:

%sudo dpkg -i xmore_1.0.1-0ubuntu2_i386.deb

Enjoy having a functional ‘xmore’!

However, if you want to install your own rebuild, here’s how.

#Make sure we have all of our required utilities
%sudo apt-get install build-essential wget patchutils fakeroot
#Make sure we have the headers and libraries required
%sudo apt-get build-dep xmore
#Get the source.
%sudo apt-get source xmore
Now, get my patch at https://bugs.launchpad.net/ubuntu/+source/xmore/+bug/72560/comments/6.
# Apply patch:
%cd xmore-1.0.1; sudo patch -p1 < ../path/to/saved/patch.diff
# Build xmore
%fakeroot debian/rules binary
# (Re) Install xmore
%sudo dpkg -i ../xmore_1.0.1-0ubuntu1_i386.deb
# Clean up.
# cd ..; sudo rm -rf xmore*

Remember that this will be divergent, so you’ll want to add it to a ‘hold’ so it doesn’t get overwritten next time you do an update, this can be done with:

%echo xmore hold | dpkg --set-selections

Hopefully this entry will help others plagued by the same problem I was facing.

Since I’ve opted to give up Windows entirely, I’ve lost quite a few of the ‘not-quite-necessities’ I once had. One of those things was the ability to update the microcode within my computer to support updates and fixes. Well, no more! Thank you, Dell.

Below is a small tutorial on how to use prebuilt packages in Ubuntu Feisty Fawn, but should work 100% with Debian Etch, my laptop’s former OS.

Note that when I prepend a line with a ‘%’, that means you open a terinal and do it at the prompt; yours may look different. That’s fine. Everything should just work. This MAY NOT WORK IF YOU KILLED YOUR DELL BIOS SUPPORT PARTITION; YOU HAVE BEEN WARNED! :)

First of all, you’ll need to install the smbios support libraries; these are available within the Ubuntu repositories:

%sudo apt-get install libsmbiosxml1 libsmbios-bin libsmbios1

Next, you’re going to need the firmware-tools and firmware-addon-dell packages. I’ve built my own from Dell’s etch build sources. These are for IA32, if you need x64, that’s a directory up, and sorry, I can’t offer those, I do not have an x64 installation to test with.

You may use my i386 builds if you wish, I’ve signed my debs, you can check them with dpkg-sig:

%wget http://www.holwegner.com/files/firmware-addon-dell_1.2.13-1_i386.deb
%wget http://www.holwegner.com/files/firmware-tools_1.2.6-1_all.deb

You can get my key and add it to your keyring:

%gpg --keyserver wwwkeys.eu.pgp.net --recv-keys F8C314E3
gpg: requesting key F8C314E3 from hkp server wwwkeys.eu.pgp.net
gpg: key F8C314E3: public key "Shawn Holwegner (GPG Signing Key) <me@mydomain.com>" imported (edited to thwart spambots)
%gpg --armor --export F8C314E3 | sudo apt-key add -
OK

Now, you can check my signature; I’ve tagged both as ‘feisty’ (Note that I have left the response of GPG here so you can ensure they match):

%dpkg-sig -c firmware-addon-dell_1.2.13-1_i386.deb
Processing firmware-addon-dell_1.2.13-1_i386.deb...
GOODSIG _gpgfeisty 743D4D271144FB13C788D9F3B4B33515F8C314E3 1181453286
%dpkg-sig -c firmware-tools_1.2.6-1_all.deb
Processing firmware-tools_1.2.6-1_all.deb...
GOODSIG _gpgfeisty 743D4D271144FB13C788D9F3B4B33515F8C314E3 1181453298

Now, if you trust me, install them:

%sudo dpkg -i firmware-tools_1.2.6-1_all.deb firmware-addon-dell_1.2.13-1_i386.deb

Find out your system ID. Note that this is the area in bold:

%sudo getSystemId
Libsmbios:    0.12.1
System ID:  0x01BD
Service Tag:  6H5GMB1
Express Service Code: 14097792493
Product Name: MM061
BIOS Version: A11
Vendor:       Dell Inc.
Is Dell:      1

Go to http://linux.dell.com/repo/software/bios-hdrs/ and find your system, the directory will be something awfully messy, like system_bios_ven_0×1028_dev_SYSTEM_ID_version_THE_BIOS_VERSION. In the case of my Inspiron 6400, mine was: system_bios_ven_0×1028_dev_0×01bd_version_a15 for my System ID of 0×01BD and BIOS version A15.

Download the “bios.hdr” file from that directory.

%wget http://where/your/bios/is/bios.hdr

Load the “dell_rbu” support module into the kernel:

%sudo modprobe dell_rbu

Finally, flash the BIOS:

%sudo dellBiosUpdate -u -f ./bios.hdr
Supported RBU type for this system: (MONOLITHIC)
Using RBU v2 driver. Initializing Driver. 
Setting RBU type in v2 driver to: MONOLITHIC
Prep driver for data load.
Writing RBU data (4096bytes/dot): ............................
..............................................................
.......................
Notify driver data is finished.
Activate CMOS bit to notify BIOS that update is ready on next boot.
Update staged sucessfully. BIOS update will occur on next reboot.

Now, when you reboot, the system will flash to the BIOS you’ve downloaded, and reboot. Enjoy your new BIOS, I’m enjoying the microcode updates in A15 as I type this! ;)