A quick guide for repairing your kernel from a live CD

GNU/Linux, and all other operating systems, are based around a kernel which controls hardware access and maximizes CPU and RAM efficiency by controlling when and how much programs get to use. The difference between Linux and most other operating systems (closed source ones at least BSD and other open source OS’s you can do this with) is that you can compile the kernel to meet your needs.Step 1. Basics of the kernel.


I will most likely never have to use an old serial modem or something, so i would not
compile in the drivers for it. Also, Linux supports modules, which
are drivers that don’t load until you tell them to. Modules can be
useful for things that you don’t use much, like I don’t use ReiserFS
personally but if my friend who does needs me to retrieve data from a
hard drive, I don’t want to have to recompile my kernel to help,
instead i just type modprobe reiserfs . Compiling a kernel in
Linux is fairly easy, if you know basically what you are doing, that
is what this article hopes to explain.

If
you have a working system and just want a kernel to improve
performance, get you up to date, or for bragging rights, go down to
Step 3

If
you f00barred your system and need to install a new kernel from a
live cd, keep on reading.

Step 2. Chrooting from
Knoppix

Okay,
this step is very easy it involves opening a konsole and typing as
root

mount /dev/ -rw /mnt/linux

mount /dev/ -rw /mnt/linux/

chroot /mnt/linux

Well,
that basically concludes that step. Basically you just mount all
your required linux partitions. (Yes you have to know what those are,
if you feel like you are going to b0rk your install soon and still
have normal access to the computer just print out your /etc/fstab)
Then, you simply chroot into it.

Step 3. Configuring and
Compiling the Kernel

Configuring
the kernel is the hardest part of this. Before going into this know
your hardware. That said download the sources for the latest kernel
version from www.kernel.org or
if you are using Gentoo (if you are you should have read the manual
but anyway…) emerge the version of kernel sources you want (such as
gentoo-dev-sources gentoo-gaming-sources or whatever). Once they are
downloaded decompress and untar them to /usr/source and then create a
linux symlink.

tar -xvjf .bz2 -C /usr/src

cd /usr/src

rm linux

ln -s linux

cd linux

Now
you are in your kernel source directory, and now its time for the
magic to happen type

make menuconfig

This
will launch a rather nice interface for configuring the kernel. I
will tell you what every system *needs* to function. First
off you are going to want to go under file systems and select all the
ones you use and under psuedo-filesystems select all of them (NOTE:
DO NOT set any of the ones that you use constantly to modules, this
will make it so that the computer cannot boot). Now go into
processor type and features and select the applicable options. Now
its time to explore the device drivers, these are rather important,
go crazy here, make sure you include support for your network cards,
block devices, sound cards, whatever. Now for the most part it
should be done, look through the other categories though to make sure
everything is happy. Once you are satisfied with your config, save
and exit. Now it is time to actually compile the beast, depending on
your system this could take a while, call the pizza guy if you must.
Type

make && make
modules_install

Now
wait for it. While you are waiting lets go over the next step,
actually installing the kernel. What you have to do is copy the
bzImage into your /boot directory, but you do not have to call it
bzImage, you can call it Bob or John or Alice or whatever, I usually
just call it gentoo. Okay, the code to install is

cp
arch/i386/boot/bzImage /boot/

cp System.map
/boot/System.map

cp .config
/boot/.config

Once
that is done, all you have left to do is edit /etc/lilo.conf (or
grub.conf but i don’t know much about grub, there is some good
information online about it) For LILO simply update lilo.conf (Mine
looks like this because I do some fancy things with it)

boot=/dev/sda #
Install LILO in the MBR

prompt # Give the
user the chance to select another section

timeout=500 # Wait 5
(five) seconds before booting the

default=gentoo # When
the timeout has passed, boot the “gentoo” section

install=/boot/boot-bmp.b
# means you will use grafical version

bitmap=/boot/handy_128.bmp
# background path

bmp-colors=38,68,53,112,38,25
# text color

bmp-table=114p,347p,2,7
# label position on the screen p=pixel

bmp-timer=470p,336p,25,0,11
# timer position on the screen p=pixel

#This is where you
put
kernel information for linux

image=/boot/gentoo
#image name (what you named the bzImage)

label=gentoo # Name
we give to this section

read-only # Start
with a read-only root. Do not alter!

root=/dev/sda7 #
Location of the root filesystem

# The next two lines
are only if you dualboot with a Windows system.

# In this case,
Windows is hosted on /dev/hda6.

other=/dev/sda1

label=windows

Once that is edited to include the latest information. Simply run as
root

lilo

then everything should be happy if you did everything right. Now boot
into your normal system and see if it works, if it kernel panics try
again. This takes a bit of practice but once you understand it, it
becomes easy.

About the Author
I am SchleyFox and I use Gentoo GNU/Linux. I go to www.usalug.org to get
linux help and so should you.


If you would like to see your thoughts or experiences with technology published, please consider writing an article for OSNews.

31 Comments

  1. 2004-10-05 7:52 pm
  2. 2004-10-05 8:00 pm
  3. 2004-10-05 8:20 pm
  4. 2004-10-05 8:33 pm
  5. 2004-10-05 8:33 pm
  6. 2004-10-05 8:42 pm
  7. 2004-10-05 8:48 pm
  8. 2004-10-05 9:09 pm
  9. 2004-10-05 9:14 pm
  10. 2004-10-05 9:18 pm
  11. 2004-10-05 9:29 pm
  12. 2004-10-05 9:36 pm
  13. 2004-10-05 10:08 pm
  14. 2004-10-05 10:21 pm
  15. 2004-10-05 10:28 pm
  16. 2004-10-05 10:48 pm
  17. 2004-10-05 11:25 pm
  18. 2004-10-06 12:24 am
  19. 2004-10-06 1:06 am
  20. 2004-10-06 1:11 am
  21. 2004-10-06 1:22 am
  22. 2004-10-06 1:36 am
  23. 2004-10-06 6:00 am
  24. 2004-10-06 9:05 am
  25. 2004-10-06 9:44 am
  26. 2004-10-06 2:16 pm
  27. 2004-10-06 3:56 pm
  28. 2004-10-06 6:12 pm
  29. 2004-10-06 7:25 pm
  30. 2004-10-07 10:21 am
  31. 2004-10-08 12:11 am