LinuxQuestions.org
View the Most Wanted LQ Wiki articles.
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Distributions > Slackware
User Name
Password
Slackware This Forum is for the discussion of Slackware Linux.

Notices

Reply
 
Search this Thread
Old 02-23-2005, 09:16 AM   #1
acidjuice
Member
 
Registered: Jan 2005
Location: a tiny spot on the iceberg
Distribution: Slackware 10.1 (dropline 2.10, kernel 2.6.11.6)
Posts: 320

Rep: Reputation: 30
Acid Guide to compiling Kernel 2.6.10 on Slack 10.1


This is a detailed guide to compiling a new kernel version 2.6.10 under a fresh install of Slackware 10.1.

I enjoyed DaOne's little guide and am grateful for his contribution. However, as the total noob I am, in my first kernel compiling experiences I still missed some points I believe some other noobs as me may miss to successfully compiling their new kernel. I am therefore releasing this first 'acid guide' hoping to help out someone, as I was helped by DaOne and various posts' around here. Please do feel free to leave comments on any suggestions / mistakes that you have found in this guide. Forums are all made of this, sharing.

General note: I try and keep this Post #1 updated all the time so that there's no need to go through all the inevitable posts with such a topic. However, feel free to read on and give your own feedbacks.

Now for the guide part. For the purpose of this guide, I'll use version 2.6.10 which at the moment of this writing is the latest kernel release.

Note: even though strictly not necessary, if you are doing a fresh install of Slackware I recommend updating the kernel prior doing anything else, on the first boot after installing Slack (i.e. even before you get the X server configured and running). This is useful since many compiles do rely on the current version of kernel and may need to be reinstalled when upgrading it (for instance, NVIDIA drivers need to be reinstalled after a kernel upgrade).

The following are my recommended points to follow. Definitely not exhaustive. One last thing: this worked for me. It doesn't mean that it will work for you. Upgrading a kernel may result in the total mess up of your system (this sound scary: it is however a normal operation done by most linux users; it is here to ensure you are aware of what you are doing).

Before you begin, download the necessary files and save them to /etc/src:

1. Get the kernel 2.6.10 sources
Slackware 10.1 comes with kernel 2.4.29. You therefore need to download the full sources of the new kernel. You can get them here: linux-2.6.10.tar.bz2 (35MB). This is the .bz2 file format, which is more compressed than the tar.gz one.

2. Get a valid kernel 2.6.10 configuration file
At a certain point you will have to configure your kernel. You may start off with a fresh configuration, however I recommend getting a good starting point by downloading Patrick's excellent configuration file: config-2.6.10.

Now let's start the operations. Let's move into the /usr/src directory (where you have put the two files here above) and decompress the kernel 2.6.10 source code:
Code:
# cd /usr/src
/usr/src# tar xjvf linux-2.6.10.tar.bz2
The Kernel 2.6.10 source code will now be found into the directory /usr/src/linux-2.6.10.

Note: as per Linus Thorvalds, there's a philosophy that if it doesn't have to be done as root it shouldn't be, in order to reduce error / hacking risks. You may consider compiling the kernel on your local home directory and then su to root to move the compiled files. However, I somewhat tend to believe that having a symbolic link /usr/src/linux to /usr/src/kernel-2.6.10 might be needed by some applications / installs that look for the kernel source, and therefore the fastest / easiest way to proceed is as described here below. If you didn't understand a single word of this, you may just as well ignore this note.

Now, delete the symbolic link 'linux' that is under /usr/src and which points to the old kernel source directory and recreate it to point to the new directory:
Code:
/usr/src# rm linux
/usr/src# ln -s linux-2.6.10 linux
Now the symbolic link 'linux' points to the new kernel source directory.

Move into the directory linux:
Code:
/usr/src# cd linux
Prepare the compiling by removing all eventual precedent files (which you shouldn't have since this is your first compiling, isn't it?)
Code:
/usr/src/linux# make mrproper
Now let's start configuring the kernel. There are several tools around, I prefer menuconfig. Start it up:
Code:
/usr/src/linux# Make menuconfig
You may now start configuring from scratch, however as I already explained I believe that it is better to load Patrick's configuration file and build on it. In the configuration window, choose the option 'Load an alternate file', an type /usr/src/config-2.6.10 in the box, then click 'ok'. You have now loaded a proper startup configuration file.

Here things can get tricky, since the options that you set here must build the kernel according to the system you are running linux on. Read all available help and be sure to have the correct settings.

Personally, I setup these three additional things:

1. I have an AMD64 processor, therefore under the processors section I select 'AMD64' and leave 'PC-compatible' as architecture.

2. I use SATA disks, therefore I must ensure that these disks are understood by the kernel at boot time or it will not be able to read from it and I would experience a 'Kernel panic' error. To enable SATA support, under Device drivers->SCSI device support I ensure that I have 'SCSI disk' and 'SCSI generic' selected <*> and not loaded in modules [M]. Also, under SCSI Low Level Drivers, I make sure that 'Serial ATA' is <*>, and I ensure that my chipset support is also enabled here (I enabled NVIDIA chipset support since I have a NFORCE one). This is all done since at boot time modules are not loaded yet, therefore I can't have this support on modules (or, as explained, I wouldn't be able to boot).

3. Also, since I've formatted my disks using ReiserFS, I also want to be sure that at boot time the Kernel is able to read from them. To do so, under File systems I enable Reiserfs support <*>.

Thank you db391 for these clues.

4. I have a PS2 mouse, therefore i ensure that under Device Drivers I select all the necessary PS2 and serial port support otherwise my mouse will not work.

5. Finally, I enable ALSA support to allow for my sound card configuration and I ensure to select the driver for my card (SoundBlaster). You may consider in setting this as module <M> instead of compiled into the kernel <*>.

If you do believe that you need to make additional changes, do so. Otherwise, quit and, when prompted, save the file leaving the .config name as it is by default. You have now configured your kernel.

Now, it's time to build the compressed kernel image using the command:
Code:
/usr/src/linux# make -j5 bzImage
You'll have to wait some time here depending on your machine's speed.

Afer a certain time it will finish, and you will have the kernel image into the directory /usr/src/linux/arch/i386/boot/ (do not browse there for now, stay into the /usr/src/linux directory).

Now let's proceed with compiling and the install of the modules by issuing these 2 commands:
Code:
/usr/src/linux# make -j5 modules
/usr/src/linux# make modules_install
This will take longer, and the modules will be installed into /lib/modules/**kernel version here**.

We will now create a new boot entry for LILO, so that you can boot in your new kernel but keeping the old kernel still available.

First, we need to put the freshly generated System.map, .config and the compiled kernel image bzImage into the /boot/ directory.

To do so:
Code:
/usr/src/linux# mv System.map /boot/System.map-2.6.10
/usr/src/linux# mv .config /boot/config-2.6.10
/usr/src/linux# mv /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.6.10
Now we need to rename the old kernel image (why we do this will become clear when we recreate the virtual links):
Code:
/usr/src/linux# mv /boot/vmlinuz /boot/vmlinuz-old
Now let's create the new LILO entry, modifying its config file (lilo.conf). Open this file in pico, a very simple text editor:
Code:
/usr/src/linux# pico /etc/lilo.conf
Note on pico: as per XavierP post here below, pico is only installed if PINE is installed. If you selected a full install of Slack, you will have it. If not, you may try using 'nano' instead of 'pico', or use any text editor you may be familiar with.

You will see at the end of the lilo.conf file the Windows entry of your boot option, and then the Linux one. Do not touch the Windows entry. We will modify the existing Linux entry and add a new one so that the last two entries of this file look like this:
Code:
# Slack NEW begins
image = /boot/vmlinuz-2.6.10
  root = /dev/sdb5
  label = Slack_2.6.10
  read-only
# Slack NEW ends
# Slack OLD begins
image = /boot/vmlinuz-old
  root = /dev/sdb5
  label = Slack_OLD
  read-only
# Slack OLD ends
Important note: please do use the appropriate root disk instead of the example /dev/sdb5 which is the partition that I use in my system.

Quit pico by pressing Ctrl-X and say yes to save the file, leave default name unchanged (lilo.conf).

Now, let's activate these changes by running lilo:
Code:
/usr/src/linux# lilo
------------------ Optional Step ------------------

If you wish, you may remove the existing symbolic links to the old kernel files:
Code:
/usr/src/linux# cd /boot
/boot# rm System.map
/boot# rm config
/boot# rm vmlinuz
We can now add the links to the new files:
Code:
/boot# ln -s System.map-2.6.10 System.map
/boot# ln -s config-2.6.10 config
/boot# ln -s vmlinuz-2.6.10 vmlinuz
Now these symlinks will point directly to the new compiled files.

-------------- End of Optional Step -------------


We're almost done. Since kernel version 2.6.xx, the file modules.conf is now substituted by the file modprobe.conf, which you normally shouldn't have already, or if you do, it might just as well be empty.

to see if you have it or if it is empty, type:
Code:
/boot# pico /etc/modprobe.conf
and see if the file contains something. Exit pico, typing Ctrl-X. If the file doesn't contain anything, delete it:
Code:
/boot# rm /etc/modprobe.conf
(If you receive an error it is simply because you didn't have the file in the first place).

Now let's create a good file from the new kernel:
Code:
/boot# generate-modprobe.conf /etc/modprobe.conf
Final step, ensure that you have a /sys directory. If you do not have, create one with
Code:
mkdir /sys
You may now reboot, and at boot select the Slack_2.6.10 option from LILO.

Enjoy.

Acid Juice.

Last edited by acidjuice; 02-25-2005 at 03:59 AM.
 
Old 02-23-2005, 09:35 AM   #2
320mb
Senior Member
 
Registered: Nov 2002
Location: pikes peak
Distribution: Slackware, LFS
Posts: 2,577

Rep: Reputation: 47
you might tell people that you put pico editor on yourself since it is not included in Slackware at all.............

I guess VI is not good enough for you...........
 
Old 02-23-2005, 09:40 AM   #3
davidsrsb
Member
 
Registered: Oct 2003
Location: Kuala Lumpur, Malaysia
Distribution: Slackware 13.37 current
Posts: 770

Rep: Reputation: 33
pico (or actually a link to nano) is on all of my Slackware machines which were originally installed as 9.x and 10.0
Kernel 2.4.39 by default? I think that you meant 2.4.29

Last edited by davidsrsb; 02-23-2005 at 09:44 AM.
 
Old 02-23-2005, 09:42 AM   #4
acidjuice
Member
 
Registered: Jan 2005
Location: a tiny spot on the iceberg
Distribution: Slackware 10.1 (dropline 2.10, kernel 2.6.11.6)
Posts: 320

Original Poster
Rep: Reputation: 30
320mb: as per davidsrsb post here above, so is on my machine, on a fresh install... btw no need to be so harsh on me i'm just trying to help here and i guess vi is less immediate for noobs. just an opinion.

Quote:
Originally posted by davidsrsb
Kernel 2.4.39 by default? I think that you meant 2.4.29
whoops! corrected

Last edited by acidjuice; 02-23-2005 at 10:06 AM.
 
Old 02-23-2005, 09:54 AM   #5
jp_
LQ Newbie
 
Registered: Feb 2005
Location: East Coast, USA
Distribution: Slackware
Posts: 27

Rep: Reputation: 15
Quote:
Originally posted by 320mb
you might tell people that you put pico editor on yourself since it is not included in Slackware at all.............

I guess VI is not good enough for you...........
Pico has been in slackware for a very long time. It certainly is more intuitive than vi. Although at some point EVERYONE should learn to use vi.

Thanks for taking the time to post such a nice thread =) It's nice when people give back to the community.

Last edited by jp_; 02-23-2005 at 09:56 AM.
 
Old 02-23-2005, 10:13 AM   #6
XavierP
Moderator
 
Registered: Nov 2002
Location: Kent, England
Distribution: Lubuntu
Posts: 19,176
Blog Entries: 4

Rep: Reputation: 430Reputation: 430Reputation: 430Reputation: 430Reputation: 430
Pico is only installed in Slackwar if you install PINE (the email program). An alternative, if you don't want Pine, is to track down and install Nano. As another alternative, just use whatever console based text editor you are comfortable with.
 
Old 02-23-2005, 10:21 AM   #7
acidjuice
Member
 
Registered: Jan 2005
Location: a tiny spot on the iceberg
Distribution: Slackware 10.1 (dropline 2.10, kernel 2.6.11.6)
Posts: 320

Original Poster
Rep: Reputation: 30
Quote:
Originally posted by XavierP
Pico is only installed in Slackwar if you install PINE (the email program). An alternative, if you don't want Pine, is to track down and install Nano. As another alternative, just use whatever console based text editor you are comfortable with.
Comment added to the guide. Thank you.
 
Old 02-23-2005, 10:26 AM   #8
xushi
Senior Member
 
Registered: Jun 2003
Location: UK
Distribution: Gentoo
Posts: 1,288

Rep: Reputation: 45
May i add that there are much easier ways in doing all of this? as discussed in the "kernel compile guide for 2.6.0" ...
 
Old 02-23-2005, 10:31 AM   #9
acidjuice
Member
 
Registered: Jan 2005
Location: a tiny spot on the iceberg
Distribution: Slackware 10.1 (dropline 2.10, kernel 2.6.11.6)
Posts: 320

Original Poster
Rep: Reputation: 30
xushi is there something in particular you are thinking of?
 
Old 02-23-2005, 10:35 AM   #10
keefaz
Senior Member
 
Registered: Mar 2004
Distribution: Slackware
Posts: 4,548

Rep: Reputation: 120Reputation: 120
Also, there is no need to add
none /sys sysfs defaults 0 0

...in fstab, just create a /sys dir if it does not exists, the /etc/rc.d/rc.S script will mount it for you :
Code:
cat /etc/rc.d/rc.S :
...
if [ -d /sys ]; then
     /sbin/mount -v sysfs /sys -n -t sysfs
...
 
Old 02-23-2005, 10:36 AM   #11
acidjuice
Member
 
Registered: Jan 2005
Location: a tiny spot on the iceberg
Distribution: Slackware 10.1 (dropline 2.10, kernel 2.6.11.6)
Posts: 320

Original Poster
Rep: Reputation: 30
Quote:
Originally posted by keefaz
Also, there is no need to add
none /sys sysfs defaults 0 0

...in fstab, just create a /sys dir if it does not exists, the /etc/rc.d/rc.S script will mount it for you :
Code:
cat /etc/rc.d/rc.S :
...
if [ -d /sys ]; then
     /sbin/mount -v sysfs /sys -n -t sysfs
...
point taken, guide has been modified.
 
Old 02-23-2005, 10:41 AM   #12
xushi
Senior Member
 
Registered: Jun 2003
Location: UK
Distribution: Gentoo
Posts: 1,288

Rep: Reputation: 45
Quote:
Originally posted by acidjuice
xushi is there something in particular you are thinking of?
Sorry, yea,

From what i've tried, it's much easier to just edit the Makefile and uncomment "export INSTALL_PATH=/boot" somewhere around line 450. This will save you the trouble of moving everything into /boot, and backing up the older stuff..

For more information about that, just check out both the guides on the top of the forum (2.4 and 2.6).

Keep up the good work.


EDIT:
==============
It's better to backup the old kernal and system.map into Lilo (say as MyKernel.old), instead of removing it. Just incase your new kernel does not work for some reason (and you will get into that problem at some point), you can always chose the last configured kernel and fix the problems, compile again, etc...

Last edited by xushi; 02-23-2005 at 10:43 AM.
 
Old 02-23-2005, 10:41 AM   #13
XavierP
Moderator
 
Registered: Nov 2002
Location: Kent, England
Distribution: Lubuntu
Posts: 19,176
Blog Entries: 4

Rep: Reputation: 430Reputation: 430Reputation: 430Reputation: 430Reputation: 430
acidjuice - when you have (or think you have) a complete and finalised guide, could I ask you to submit it to the Linux Tutorial section?
 
Old 02-23-2005, 10:43 AM   #14
keefaz
Senior Member
 
Registered: Mar 2004
Distribution: Slackware
Posts: 4,548

Rep: Reputation: 120Reputation: 120
For simplicity, some could create a /sbin/installkernel script
which contains the kernel install steps

I discovered this feature with doing make help

So after a /sbin/installkernel script created, you just run make
install and it will run your script instead of the default make install
procedure
 
Old 02-23-2005, 10:44 AM   #15
egag
Senior Member
 
Registered: Jul 2004
Location: Netherlands
Distribution: Slackware
Posts: 2,721

Rep: Reputation: 52
well...some remarks....
------------
/usr/src# rm linux
/usr/src# ln -s linux-2.6.10 linux
------------

that link is never used, you don't need it.
------------
/usr/src/linux# cd /boot
/boot# rm System.map
/boot# rm config
/boot# rm vmlinuz

/boot# ln -s System.map-2.6.10 System.map
/boot# ln -s config-2.6.10 config
/boot# ln -s vmlinuz-2.6.10 vmlinuz
--------------

i also think those links are not used, as you edit lilo.conf.

egag
 
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Newbie Guide To Compiling A Kernel! DrOzz Linux - General 318 08-20-2008 05:21 AM
I'm interested in compiling a 2.6.x kernel, is this is a decent guide? Erik_the_Red Linux - Newbie 7 08-14-2005 06:03 AM
Kernel compiling guide for newbies... DaOne Slackware 127 04-17-2005 04:20 AM
Guide for snort+mysql+acid at Debian Woody Tredo Debian 1 02-03-2005 09:30 AM
: Kernel compiling guide for newbies Question Anibal Slackware 6 08-01-2003 07:06 AM


All times are GMT -5. The time now is 09:00 PM.

Main Menu
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
identi.ca: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration