When the Linux kernel boots, it is passed command-line arguments, just like any other program, by the bootloader, which for most distros is GRUB.
The configuration file for grub, sometimes /boot/grub/grub.conf and sometimes /boot/grub/menu.lst, can be used to specify the arguments to pass to the kernel at boot-time. For example, the entry for the default kernel on my system is:
Code:
title Ubuntu 9.10, kernel 2.6.32-rc3 Default
uuid 58ebee0e-a1df-4ba0-9d6b-2989fd3677ad
kernel /boot/vmlinuz root=UUID=58ebee0e-a1df-4ba0-9d6b-2989fd3677ad ro quiet vga=0x318 crashkernel=384M-2G:64M,2G-:128M
initrd /boot/initrd.img
quiet
The line that starts with "kernel" specifies the location of the kernel to load (i.e. /boot/vmlinuz) and then the arguments to pass (i.e. root=UUID=58..., ro, quiet, vga=0x318 and crashkernel=384M...).
What you want to do is pass the argument "noapic" to the kernel by simply adding it to the appropriate line in the file.
(Edit: the next sentence is completely wrong - see post #4)
Note: make sure you pass fewer than 32 arguments on the command-line, or the kernel will panic.
You can also change the command-line at boot-time by pressing 'e' at the appropriate entry, and you'll then get the option to edit them to your heart's content.
It's always good to have a known-safe entry in your grub config you can use! Your best bet is probably to copy your first entry and modify that instead, so you can always choose the first one if things go awry!