[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

RE: Rebuilding the Kernel Mini HOW TO



I found this document bery useful.

http://newbiedoc.sourceforge.net/system/kernel-pkg.en.html

I did not follow it to the letter, but I did manage to rebuild the kernel
first time with no problems.

Perhaps also a section on why someone might want to rebuild, I found the
pcmcia so much easier in 2.4.18.

Other reasons, for me were, enabling sound, video/frame buffering, and
removing stuff I just did not need, like scsi drivers.

Matthew Joyce



-----Original Message-----
From: Michael Olds [mailto:MikeOlds@pacbell.net] 
Sent: Tuesday, 15 October 2002 7:21 AM
To: Debian-User@Lists. Debian. Org
Subject: Rebuilding the Kernel Mini HOW TO


Hello,

This is still a draft. This is a request for advanced users to take a look
see and add comments or suggestions. The idea is a step by step instruction
for Fresh New to Linux/Debian users, with the hope that they will be
encouraged to attempt a rebuild of their kernel almost first thing after
initial install. I use a technique which is a blend of using a file manager
along with a terminal so I can see where I am at and yet do what I need to
do in the terminal. This is a good way to work into using the terminal.

<!--\*#---------REBUILD KERNEL------------#*\--!>

References:
read (NOTE: we need a source for these as they are not created on a new
install or by unpacking the kernel-source...and should they be in
/usr/src/linux/ anyway):
  /usr/src/linux/Documentation/initrd.txt
  /usr/src/linux/Documentation/modules.txt
  /usr/src/linux/README
  /usr/src/linux/README.Debian

http://qref.sourceforge.net/Debian/reference/ch-kernel.en.html
   This is good for using the make menuconfig method

http://infocom.cqu.edu.au/Units/aut99/85321/Resources/Print_Resources/Textbo
ok/chap13/

http://www.google.com/search?q=%22kernel+headers%22+linus+quote&hl=en&lr=&ie
=UTF-8&start=10&sa=N

http://www.linuxfromscratch.org/faq/#AEN334
http://www.uwsg.iu.edu/hypermail/linux/kernel/0007.3/0587.html

http://www.linuxorbit.com/modules.php?op=modload&name=Sections&file=index&re
q=viewarticle&artid=532
   This is good for using the make xconfig method

Bear in mind that debian does things a bit differently than other distros.
What is that difference? In essence, in stead of reconfiguring the kernel
and replacing it directly, the reconfigured kernel is made into a package
(.deb) primarily so that the rebuild will remain integrated into the debian
package system so that future updates of the kernel can be made using dpkg.
(I have stated this in these boldly confident terms not being sure that this
is the essence at all...hoping for confirmation or education...mo)

R: The way that kernel headers are handled on a debian system may be
different to other distros, so clarification would be worthwhile just to
avoid confusion.


<---Step-by-Step--->

[ ]A. Before 1: Download and create a recovery floppy from:
http://www.toms.net/rb/

[ ]1.a. Download the latest kernel source package (use a Debian source; or
make sure you have read all the documentation above) to /usr/src (this is
where it will be installed if you use dselect, a package manager, synaptic
or aptitude). Best practices seem to indicate that the package be built
outside of /usr/src so creating /usr/src/linux and creating a sym-link from
/linux to /usr/src/kernel~ as in step 1.d below seems to be the way to
handle this.)

[ ]1.b. if no /usr/src/linux dir exists, make it
      $ cd /usr/src
      $ mkdir linux
[ ]1.c. change directory to /usr/src and unpack the source package -- use
the unpacking tools with your file manager, or:
      $ su     #enter root password
      $ cd /usr/src
      $ tar --bzip2 -xvf kernel-source-2.4.18.tar.bz2 (or latest) [ ]1.d
create a symbolic link to /usr/src/linux
      $ ln -s /usr/src/kernel-source-2.4.18 /usr/src/linux

[ ]2. Just to be professional: go to "/etc/kernel.pkg.conf" and modify the
file by inserting your "Kernel Source Maintainer Name" and e-mail address.

[ ]3. Make sure
   [ ]"expectk" if you want to use the user friendly: make xconfig
   [ ]"debhelper"
   [ ]"modutils"
   [ ]"libncurses5-dev"
   [ ]"bin86"
   [ ]"libc6-dev"
   [ ]"debianutils"
   [ ]"make"
   [ ]"bzip2" and
   [ ]"kernel-package" are installed.

   R Notes: don't use gcc 3.x, but something like gcc 2.95. Which I do not
understand. Clarification?

[ ]4. (on 2nd and subsequent rebuilds) Copy old configuration file to
/usr/src/kernel-source-2.4.18
      $ cd /usr/src/kernel-source-2.4.18
      $ cp /boot/config-2.4.18-386 .config     # get current config as
default

[ ]5. # cd to /usr/src/linux

      $ make menuconfig or make xconfig

and make your selections

   To do this you need to have some familiarity with your hardware and what
you are intending to use the system for. This you need to work out yourself.
Once this is figured out, it might be helpful, on the first rebuild, to make
your updates with reference to the original configuration, (called
config-2.4.18bf24 (or your kernel version)) which you should find under
/root using the "M" (module) option where a module was used and building the
feature into the kernel (*) or [y] option where it was built into the
kernel. Use the HELP option for brief explanations. This at least until you
understand which can be safely changed under your setup.

  Note: If you're using --initrd, make sure "Compressed ROM file system
support" is built in, or you'll get a kernel panic (need CramFS).

  (Side note: I see that answers my question about how to get it in
there...sorry!)


[ ]6.a.  [ ]# make-kpkg clean
   6.b.  [ ]# make-kpkg -revision=<!--insert your own personal rebuild
   version number here: i.e.: -revision=0001) --initrd kernel_image (see
NOTES below: do not use --initrd if you do not use).
   OR: # make-kpkg -revision=mydomain.0001 kernel_image

         Note: If you don't want "--initrd" leave out that option, and make
sure /etc/lilo.conf doesn't have it either for that build. Conversely, if
you do want it, make sure to add an 'initrd=/initrd.img' line to the
image=/vmlinuz stanza of your /etc/lilo.conf and be sure to run # lilo -a
after.

[ ]6. A new kernel.version-0001_i386.deb will be placed in the /usr/src
directory

[ ]7. Install the new kernel using
   # dpkg -i kernel-image-2.4.18_mydomain.0001_i386.deb

[ ]8. Reboot

<---Notes--->

NOTES: make-kpkg kernel_image actually does make oldconfig and make dep. Do
not use --initrd if initrd is not used. The current Debian initrd boot
script requires a cramfs kernel patch, if you obtain kernel source from
non-Debian archives; see http://bugs.debian.org/149236. As I understand it,
initrd is used in situations where many computers use a highly modularized
kernel, or where an individual has his file system loaded as a module. This
requires the use of a virtual RAM disk in order to run smoothly, and that is
what initrd enables (Experts are requested to make this explanation more
lucid.)

On an SMP machine, set CONCURRENCY_LEVEL according to kernel-pkg.conf(5).

Next mini: how to recover when nothing said here works.


<!--\*#------------------------------#*\--!>


-- 
To UNSUBSCRIBE, email to debian-user-request@lists.debian.org 
with a subject of "unsubscribe". Trouble? Contact
listmaster@lists.debian.org



Reply to: