* William Case <billlinux [ at ] rogers [ dot ] com> [071215 15:52]:
> I am about to do a fresh install of Fedora 8. I want to begin exploring
> the kernel so if I need new partitions etc. now would be a good time to
> set up properly.
You don't need separate partitions if you are just swapping a kernel
with one that is relatively close to it. You can run just about any
2.6.x kernel with the same modern userspace (such as FC8).
ls /boot/vmlinuz* | wc -l
18
I seem to have 18 of them.
> I need some advice on how to set up so that I can:
> 1) download a separate kernel -- binary, source and documentation.
I don't use (and avoid) rpm based systems, but you should be able to
install a different kernel using rpm/yum. You would then select the
right one using grub (or another boot loader) at boot time.
> 2) have access to it from my home directory -- if possible.
You want to have the files in $HOME ? Well that's not really how linux
distros are setup to boot.
You can however build the kernel in your $HOME dir and install it in the
system directories (/boot and /lib/modules/). You probably want to use
git.
> 3) trace various trees -- operations from first mention of symbol to
> end.
So you want source, not binaries?
Let me recommend git.
> 4) make sure anything I might do does not screw up my existing system.
Use virtualization or another harddisk.
If you have a modern CPU, you should get a kernel that supports KVM and
run another distro inside a virtual machine. You can then hack up the
virtualized kernel and not worry about breaking things.
See http://kvm.qumranet.com/ for more info. Feel free to ask if you
want some help on KVM.
> The advice that I have found even on Linux Kernel Newbies seems to be
> for hackers who are building drivers etc. as contributions (ie. using
> git). I just want to play and explore -- maybe viewing C and some asm.
You want to use git, even if you just view the source.
Here is how you build a kernel:
# I assume that you have build tools installed, if not something
# like this will cure it
# - substitute apt with your favorite method of getting packages
apt-get install build-essential
# get the git software:
# - again, substitute apt with your favorite method of getting packages
apt-get install git-core
# get the linux kernel
git clone git://git2.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
cd linux-2.6
# checkout the last release (or any release you want)
git reset --hard v2.6.23
# get the config file from the running kernel:
zcat /proc/config.gz > .config
# configure the kernel
# - note many questions are answered from the .config file above
# - you can use any of the following
make oldconfig # text based
make menuconfig # curses based
make xconfig # X based
# build the kernel
make bzImage modules
# install the kernel
make modules-install install
# build a new initramfs for the kernel
# - substitute the <new version> with the version you just built, or with "all"
update-initramfs -c -k <new version>
# get grub to see the new kernel
update-grub
# reboot
Please note that the update-* tools above are Debian specific. The
actual build steps are distro agnostic.
-Bart
--
WebSig: http://www.jukie.net/~bart/sig/