Archive for July, 2007

Hello Edgy, goodbye Feisty!

Tuesday, July 3rd, 2007

I had a rough experience upgrading Edgy to Feisy.

Hardware listing, for generations to come: Motherboard Abit IB9, including on-board IDE controller IT8211 with firmware 1.3.1.67 and no BIOS upgrade in the near future.

Nvidia 7700 with 256MB RAM on PCIe

Problems:

1. With IDE controller enabled in BIOS system hangs during startup. This is correct for the livecd as well.

2. XGL requires the flag “–use-copy” or it will show only the “white cube of death”. Performance is far from being optimal.

3. I was unable to use Xorg AIGLX, but only the generic NVIDIA interface.

4. With NVIDIA movement is slow and jittery. System is not stable, beryl tends to consume around 100% CPU, and the black-windows problem (which usually has to do with lack of video memory) is quite common.

I have downgraded to Edgy yesterday. Besides a (bug?) weird behavior with my existing software raid (the installer hung while trying to reconfigure the md device with a black box flashing fast in the left lower corner of the screen. I was able to use console but not to continue the install) which required me to backup everything and create the raid from console before the installer got to it, installation went as expected. The interesting thing is that I can say that my hardware works better, and I don’t think it has to do only with the kernel version.

I followed my past post about the post configuration required for Edgy, and it saved me some searches. However, there are several updated which I will show here:

1. Skype has a new version – 1.4 beta, which, for now, seems not to be affected by the “open sound device” hanging. This seems great. I have installed it from the dynamic package, which had dependencies. To satisfy dependencies, I used a tool I can recommend called getlibs. It installed Feisy packages on my system but it was quite OK.

2. Mplayer requires using the multiverse repository. While I thought I have opened it, it appears I was required to state it in addition manually… Added the following line to my /etc/apt/sources.list:
deb http://us.archive.ubuntu.com/ubuntu/ edgy multiverse

3. Beryl packages for Edgy become quire rare nowadays. I had to dig some to find it. I have used the repository:
deb http://ubuntu.beryl-project.org edgy main
following beryl’s guide which was posted by me before, but this repository works one minute, and doesn’t on the next. When it does, though, it has what you need. I’m using the same NVidia driver as before, with XGL alright, and it’s working fast and stable. Can’t complain.

4. I have created a package for Pidgin for Edgy, version 2.0.2. This was the original reason I have upgraded to Feisty… It can be downloaded from here. Notice – this is a crude package, just for my purpose. You can use it, and you can use the “getlibs” util from above to satisfy the binary’s requirements, as I didn’t add them in. pidgin_2.0.2-1_amd64.deb

I’m a happy camper.

Quick and dirty – modifying Boel initrd files manually

Monday, July 2nd, 2007

Boel initrd files are actually compressed cramfs files. This is a menuscript for authoring and modifying these files, if needed. Assume the file in question is /tftpboot/install-initrd-i386.img:

cp /tftpboot/install-initrd-i386.img /tmp/
cd /tmp/
gzip -S .img -d install-initrd-i386.img
mount -o loop install-initrd-i386 /mnt
mkdir initrd
cd /mnt/
tar cf – . | (cd /tmp/initrd/ ; tar vxf -) # expect errors about time. It’s OK.

cd /tmp/
umount /mnt

Here you can modify the contents of /tmp/initrd for your needs. When done, continue.

mkcramfs initrd initrd.cramfs
cat initrd.cramfs | gzip -9 > initrd.modified.img

Now you can copy the file /tmp/initrd.modified.img to your /tftpboot directory.

Warning – Never delete your original initrd, in case you made a mistake and need to go back in time.

Enjoy.

RedHat / Centos Kickstart tweaks

Sunday, July 1st, 2007

Kickstart is a great method of hands-free installation of RHEL/Centos (and other derived systems). Its power is in its easy interface and rather powerful %post scripting directives. Its weakness is in its lack of flexibility where it comes to package selection and various custom actions.

On some cases, companies use web interface (usually home-made) which builds kickstart config files on-demand. On some cases, the administrator is required to build several kickstart config files for pre-anticipated setups.

I was looking for something which will give me the power to maintain a fixed configuration on one hand, and will allow me some tweaks and variants, when I want them. I could have used the %post scripting sections, but this gets quite complicated, especially when you want to add only one package (but with its dependencies), or you want to force full update of the system before it goes online, or even select its hostname, assuming it is not yet defined in the DNS.

I base my system on a simple DHCP/BootP + tftp server which answers to all bootp requests and offers a simple menu (just type a number and press on Enter). The original schema was quite simple: type 4 for Centos4.3, and then add -min if you wanted it to use a kickstart file with a minimum configuration. Then I wanted to add the option to update the system in an early stage, so I have added -update, which would have looked in the menu like “4-min-update” option. Quite readable, however, it generated lots of work when maintaining the pxelinux.cfg/default file and the ks themselves. Too many variations tend to require lots of care.

Adding parameters to the boot menu is possible, and would result in them existing in /proc/cmdline for later parsing.

I have decided to parse a set of predefined parameters supplied during boot time, and to change the kickstart config file according to them. It actually works quite well. This is a less-sophisticated and more of a stand-alone system compared to this system. Also, it doesn’t require me to alter the system’s boot process.

This is my ks.cfg file, which includes the flexibility additions:

# Kickstart file generated by Ez-Aton

install
nfs –server=install-server –dir=/mnt/samba/Centos
lang en_US.UTF-8
langsupport –default=en_US.UTF-8 en_US.UTF-8
keyboard us
skipx
network –device eth0 –bootproto dhcp
rootpw –iscrypted RpUKzjDc9k2gU
firewall –disabled
selinux –disabled
authconfig –enableshadow –enablemd5
timezone Asia/Jerusalem
bootloader –location=mbr

%packages
e2fsprogs
grub
lvm2
kernel
net-snmp
net-snmp-utils
kernel-devel
kernel-smp-devel
gcc

%pre
# By Ez-Aton http://www.tournament.org.il/run
for i in `cat /proc/cmdline`; do
echo $i >> /tmp/vars.tmp
done
grep “=” /tmp/vars.tmp > /tmp/vars
KS=/tmp/ks.cfg
update=”"
name=”"
pkg=”"
. /tmp/vars
if [ ! -z "$update" ]; then
echo “yum update -y” >> $KS
fi
if [ ! -z "$name" ]; then
value=”dhcp –hostname $name”
cat $KS | sed s/dhcp/”$value”/ > $KS.tmp
cat $KS.tmp > $KS
fi
if [ ! -z "$pkg" ]; then
pkg_line=`grep -n ^%packages $KS | cut -f 1 -d \:`
max_line=`wc -l $KS | awk ‘{print $1}’`
head -n $pkg_line $KS > $KS.tmp
for i in `echo $pkg | sed s/,/\ /g`; do
echo $i >> $KS.tmp
done
let tail_line=$max_line-$pkg_line
tail -n $tail_line $KS >> $KS.tmp
cat $KS.tmp > $KS
fi

%post

So, as you can see, I take the following parameters:

update=yes (it can be update=anything)

name=hostname (in case it cannot be retrieved from the DHCP server)

pkg=pkg1,pkg2,{pkg3,…} (To add specific packages to the installation)

It was tested to work on Centos4.3 system, and will probably work on RHEL and Centos versions 4.x all along. I didn’t test it on RHEL5/Centos5 yet.

If you use the script, please leave my name and blog URL in it. Also, if you modify it for your needs, I would be glad to get back the modifications you have made, to include them.

Enjoy.