Thursday, August 25, 2011

All the bugs I've hit trying to Ubuntu Linux working on a Hewlett Packard BL460c G7

I tried to install Ubuntu Lucid on an HP BL460c G7, but the network wouldn't come up due to this bug: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/717388

And I found some guy who seems really smart on HP's website, so I tried his solution but various versions of HP's source RPM didn't work, at all: http://h30499.www3.hp.com/t5/Networking/BL465c-G7-w-Flex-10-Debian-squeeze-networking-fails/m-p/4771049/highlight/true#M8122

So I tried various OSes (CentOS 6.0, Natty, Maverick).  Maverick works.  So does CentOS.

I heard that you can use the Maverick kernel when installing Lucid, so I tried it.

But supposedly the "use maverick kernel" option doesn't exist because of some bug and you can't use a Maverick initrd on a Lucid install: https://answers.launchpad.net/ubuntu/+source/ubiquity/+question/164536

So I gave up and just installed Maverick.

Then I tried bonding interfaces for active/passive failover.  There are new instructions for bonding interfaces as of 10.04: https://help.ubuntu.com/community/UbuntuBonding

But they don't work because of this bug: http://ubuntuforums.org/showthread.php?t=1595177 https://bugs.launchpad.net/ubuntu/+source/ifenslave-2.6/+bug/714904

And none of the workarounds that I tried worked, so I said to hell with Maverick and made my own initrd to install Lucid using the Maverick kernel: http://www.thegeekstuff.com/2009/07/how-to-view-modify-and-recreate-initrd-img/

Basically I just extracted both initrds and then rm -rf /lib/module in the lucid initrd, copied the /lib/module directory from the maverick tree over, then re-packaged.

And wow, Lucid installed over the network!  But then, after a reboot I had the 2.6.32-xx kernel.  Boooooooo.  So I tried to install the "linux-image-server-lts-backport-maverick" package it failed because Ubuntu, by default, will create a 40MB /boot partition and my advanced partman-auto recipe never worked: http://gregswallow.blogspot.com/2010/09/my-two-day-battle-with-debian-installer.html

So I fixed it by changing my recipe to not include more than one whitespace, ever: https://help.ubuntu.com/11.04/installation-guide/i386/preseed-creating.html.

And voila.  128mb /boot partition.  But then I tried to include the "linux-image-server-lts-backport-maverick" image on the "pkgsel/include" line in preseed.txt, which installed the kernel image, but apparently dumped the initrd file into the temporary ramdisk, instead of /target, which is the mountpoint of the finished product that you will reboot into, and when it ran grub-update (??) there was no ramdisk.  The result was a kernel panic on first boot, at 1:00 AM.  Thank god for Old Style beer.  This was fun: mounting VMDK images on other VMs to compare grub.cfg files.

So I moved the "install linux-image-server-lts-backport-maverick" portion to the postinstall script:

if [ "$distro" = "Ubuntu" ]; then
  # zap sources in apt/sources.list file because d-i's apt-setup doesn't support it.
  #try cp /etc/apt/sources.list /etc/apt/sources.list.$NOW
  try sed -i.$NOW -e 's/^deb-src/#deb-src/' /etc/apt/sources.list
   
  # Bring us up to date preemptively.
  try apt-get update
   
  # Install maverick kernel.
  try apt-get -y install linux-image-server-lts-backport-maverick
fi

because this script runs "in-target":

d-i preseed/late_command string in-target /usr/bin/wget -q -O /root/postinstall.sh http://172.16.12.12/ubuntu/lucid/x86_64/supplements/postinstall.sh ; in-target /bin/bash /root/postinstall.sh

and I finally have a working Lucid install with a Maverick kernel.  As far as I know this is the only way to get Ubuntu Lucid working on HP machines with Flex-10 adapters.

0 comments: