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?
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: /help.ubuntu. com/community/ Kernel/ Compile ubuntu. com/ubuntu/ ubuntu- gutsy.git ubuntu-gutsy 2.6.22- 11-generic .config to-version= -test kernel-image kernel-headers blah-blah- blah.deb ubuntu- gutsy protector to CFLAGS in top-level build Makefile 2.6.22- 11-generic .config ubuntu- gutsy/arch/ x86_64/ boot/bzImage vmlinuz-2.6.15 ubuntu- gutsy protector to CFLAGS in top-level Makefile 2.6.22- 11-generic .config ubuntu- gutsy/arch/ x86_64/ boot/bzImage vmlinuz-2.6.17
https:/
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.
ln -s linux ubuntu-gutsy
cd ubuntu-gutsy
cp /boot/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-
cd ..
sudo dpkg -i linux-image-
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/
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-
cp /boot/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/
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/
git checkout v2.6.17
added -fno-stack-
cp /boot/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/
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?