Comment 46 for bug 89746

Revision history for this message
Robert W. Brewer (rwb123) wrote : first attempt at bisection

I checked out the ubuntu-gutsy kernel tree using git. I compiled a kernel using the make-kpkg method, installed the resulting .deb, and verified that it required noapic to boot correctly. This was done by roughly following the instructions here for a git build:
  https://help.ubuntu.com/community/Kernel/Compile
After getting the tools installed, this was roughly:
  add my user to the "src" group
  logout/login again for this change to take effect
  cd /usr/src
  git clone git://kernel.ubuntu.com/ubuntu/ubuntu-gutsy.git ubuntu-gutsy
  ln -s linux ubuntu-gutsy
  cd ubuntu-gutsy
  cp /boot/config-2.6.22-11-generic .config
  make menuconfig
  remove kernel debugging from options (in kernel hacking)
  save new .config (by exiting menuconfig)
  # the build command procedure using AUTOBUILD=1 didn't seem to work for me.
  export CONCURRENCY_LEVEL=4
  make-kpkg --rootcmd fakeroot --initrd --append-to-version=-test kernel-image kernel-headers
  cd ..
  sudo dpkg -i linux-image-blah-blah-blah.deb
attempt to boot new kernel without noapic
  Since I am able to verify whether the kernel boots correctly without using all the restricted modules, I didn't bother trying to compile them. My plan is that when I get a kernel to boot without noapic, I will also run powertop to verify that the ehci interrupts are under control. After rebooting back into my stock gutsy kernel, I did this:
  cd /usr/src/ubuntu-gutsy
  git bisect start
  git bisect bad
Then I tried to build 2.6.15, since that kernel seemed to boot ok without noapic from the SimplyMEPIS liveCD:
  git checkout v2.6.15
  # git complained about some file being modified or something, so I did this...
  git checkout -f v2.6.15
  added -fno-stack-protector to CFLAGS in top-level build Makefile
  cp /boot/config-2.6.22-11-generic .config
  make menuconfig
  removed kernel debug symbols and saved .config again
  # Unfortunately, trying to build with make-kpkg immediately failed. The only way I could build was like this:
  make clean
  make
  sudo make modules_install
  cd /boot
  sudo cp /usr/src/ubuntu-gutsy/arch/x86_64/boot/bzImage vmlinuz-2.6.15
  sudo update-initramfs -c -k 2.6.15
  # Unfortunately, update-initramfs complained that udev hooks needs kernel 2.6.17.
  # So I was unable to try booting 2.6.15. I decided to see if 2.6.17 would work.
  cd /usr/src/ubuntu-gutsy
  git checkout v2.6.17
  added -fno-stack-protector to CFLAGS in top-level Makefile
  cp /boot/config-2.6.22-11-generic .config
  make menuconfig
  removed kernel debug symbols from build
  # make-kpkg still failed immediately, so reverted to old-school style:
  make clean
  make
  sudo make modules_install
  cd /boot
  sudo cp /usr/src/ubuntu-gutsy/arch/x86_64/boot/bzImage vmlinuz-2.6.17
  sudo update-initramfs -c -k 2.6.17
  sudo vi grub/menu.lst
  added lines for 2.6.17 above "BEGIN AUTOMAGIC KERNELS LIST"
  rebooted into 2.6.17 kernel without "quiet splash noapic noirqdebug" boot flags

Unfortunately, the 2.6.17 boot consistently just hung shortly after initializing USB, although the keyboard was still responsive. Sometimes the last message was about "Uniform CD-ROM driver" and other times it was from the USB subsystem. I tried booting with "noapic noirqdebug" and this did not work either. I was hoping that by this procedure I could boot an old kernel without "noapic" and then begin bisecting the kernel changesets (with the help of git bisect) to find what change made "noapic" necessary on my system. Then some low-level guru might be able to get it fixed once that "smoking gun" change was found.

When I get some time again I will try to replicate this procedure with some other kernel versions to see if I can find one that boots without noapic, and thus initiate my bisection process.

Can anyone else try to reproduce my findings so far? Was my build procedure for 2.6.17 valid?