Oct 262016
 

Today I was upgrading Dell PERC 6/i Integrated controller firmware on, rather old to put it mildly, PowerEdge 2950 server running Centos 7. Sadly update was failing with following message when I tried firing dup (dell update package for Red Hat Linux SAS-RAID_Firmware_3P52K_LN_6.3.3-0002_X00.BIN):

Oct 26 13:51:15 mielnet-web-dev03 kernel: sasdupie[11976]: segfault at 20 ip 00007fe7b2f3000d sp 00007ffe7d58bb00 error 4 in sasdupie[7fe7b2f0b000+110000]

What is going on? What’s causing segfault? After fiddling and googling I end up doing this:

chmod +x /tmp/SAS-RAID_Firmware_3P52K_LN_6.3.3-0002_X00.BIN 
/tmp/SAS-RAID_Firmware_3P52K_LN_6.3.3-0002_X00.BIN --extract /tmp/dup_extract_dir
cd /tmp/dup_extract_dir
./sasdupie -i -o inv.xml -debug

and after examining /tmp/dup_extract_dir/debug.log it turned out that sasdupie is segfaulting when trying to use libstorelibir.so.5 – so I figured version on system might be just too new. Lets try using a bit older version of this static object located under /opt/dell/srvadmin/lib64/ – it’s part of srvadmin-storelib RPM package by the way, RPM that can be installed from Dell repo.

cd /opt/dell/srvadmin/lib64
rm libstorelibir.so.5
ln -s libstorelibir-3.so libstorelibir.so.5

Keeping my fingers crossed and touching wood I typed using my nose:

/tmp/SAS-RAID_Firmware_3P52K_LN_6.3.3-0002_X00.BIN

Running validation...

PERC 6/i Integrated Controller 0

The version of this Update Package is newer than the currently installed version.
Software application name: PERC 6/i Integrated Controller 0 Firmware
Package version: 6.3.3-0002
Installed version: 6.0.2-0002

................................................
Device: PERC 6/i Integrated Controller 0
  Application: PERC 6/i Integrated Controller 0 Firmware
  The operation was successful.


Nice. No segfaults. Shout-out to Luiz Angelo Daros de Luca.

Jul 072016
 

A simple cron job removing old kernels.

You may find yourself in situation where linux kernels accumulated under/boot are starting to fill up disk space. Especially painful on older systems with small /boot partition. No automated solution out of the box on Debian/Ubuntu. Here is a workaround, removing all but two newest kernels:

crontab -l

10 23 * * 1 /root/bin/kernel-cleanup.sh

 

vim /root/bin/kernel-cleanup.sh

#!/bin/bash
echo "---------- Starting autoremove, we get rid of the old kernels eating /boot space"|logger
OLD=$(ls -tr /boot/vmlinuz-* | head -n -2 | cut -d- -f2- | awk '{print "linux-image-" $0}')
if [ -n "$OLD" ]; then
 apt-get -qy remove --purge $OLD
fi

 

Bonus hint – same thing for Centos machines

# we need yum-utils
yum install yum-utils

# add cronjob
crontab -e
0 2 * * Sat root /usr/bin/package-cleanup -y --oldkernels --count=2 |logger

On Centos you can also use *installonly_limit* in /etc/yum.conf

 

installonly_limit Number of packages listed in installonlypkgs to keep installed at the same time. Setting
to 0 disables this feature. Default is '3'. Note that this functionality used to be in the "installonlyn"
plugin, where this option was altered via tokeep. Note that as of version 3.2.24, yum will now look in the
yumdb for a installonly attribute on installed packages. If that attribute is "keep", then they will never
be removed.