|
|

楼主 |
发表于 2005-3-8 21:48:24
|
显示全部楼层
继续:有2.6的内容。
AUTHOR: Jim Gifford <lfs-hints at jg555.com>
DATE: 2004-06-20
LICENSE: GNU Free Documentation License Version 1.2
SYNOPSIS: initrd for LFS
DESCRIPTION: This hint will assist you in creating a initrd
for your LFS system
PREREQUISITES: SCSI and USB Modules must be in modules.conf
Linux 2.4/2.6 built with modules.
Ram disk support compiled in
initrd selected
Root Filesystem must be compiled in
Busybox-1.00-pre10
HINT:
Introduction to Initial RAMDisk
This hint will help you configure an LFS system for Initial RAMDisk.
Which will allow you to add modules at start-up instead of compiling them
into the kernel.
The script will auto-detect all SCSI, IDE and USB modules and add them
to the initial ramdisk. It will also detect the root from the fstab file
The above items, upon research are best if configured into the kernel.
You can look at the help of each of the items for more information.
---
Assumptions Made in this document
I have made the following assumptions in this document.
Files have been downloaded.
---
Kernel Configuration for 2.4
You will need to make sure the following items are configured
in your kernel. With out these, the initrd will not work
properly.
Block devices --->
<M> Loopback device support (or <*>)
<*> RAM disk support
(4096) Default RAM disk size Initial RAM disk (initrd) support
The root and initrd file systems must be compiled into the kernel.
---
Kernel Configuration for 2.6
You will need to make sure the following items are configured
in your kernel. With out these, the initrd will not work
properly.
Device Drivers --->
Block devices --->
<M> Loopback device support (or <*>)
<*> RAM disk support
(4096) Default RAM disk size Initial RAM disk (initrd) support
The root and initrd file systems must be compiled into the kernel.
---
File Systems
The new script has 3 choices of file systems.
ext2, ext3, and cramfs.
ext2 and ext3 are the most common file systems
in use, but the initrd is usually bigger.
My initrd with ext3 was only 412k. Compressed with
gzip -9
---
Needed Programs
busybox 1.00-pre10
----
Download From
http://busybox.net/downloads/busybox-1.00-pre10.tar.bz2
Information
http://busybox.net
Busybox has changed the way the configure the shell. It now
uses a menu driven option very similar to make menuconfig
in linux.
Here is the list of the options needed. Anything else
will add to the size of your initrd.
General Configuration ---> Support for devfs
NOTE - only if you using devfs
Build Options ---> Build BusyBox as a static binary (no shared libs)
Coreutils ---> echo (basic SUSv3 version taking no options
Linux Module Utilities ---> insmod Support version 2.1.x to 2.4.x Linux kernels
NOTE - only if your using a 2.4 kernel Support version 2.6.x Linux kernels
NOTE - only if your using a 2.6 kernel
Another Bourne-like Shell ---> Optimize for size instead of speed Enable alias support
(0) history size
Linux System Utilities ---> pivot_root mount
The build size on my system was 502k, considerably smaller than
bash.
After running make menuconfig you will need to run the
following commands.
make
cp busybox /bin/busybox.static
---
mkinitrd
For those who do not want to type out the script. It is
available on my CVS server at
http://svn.jg555.com/viewcvs.cgi ... =1&root=scripts
This script will create the initial RAM Disk image file.
By default this script creates /boot/initrd-{kernelversion}.img
I have sent a mkinitrd file to be placed
in the hints attachments at
http://www.linuxfromscratch.org/hints/downloads/attachments.
The default location for this file is /sbin
There are options on the new script, it will not just create
a initrd anymore. The kernel_version= is the only mandatory
option
Options are the following:
Required
kernel_version={version} = use kernel version
Optional
-ide = remove ide modules [-scsi = remove scsi modules]
-usb = remove usb modules [-cdrom = remove cdrom modules]
-ide-scsi = remove ide-scsi modules
-devfs = remove devfs settings from initrd
initrdfs={ext2|ext3} = use either ext2 or ext3
-module={module} = remove module
+module={module} - add module
root-device={device} - skips auto detection of the root device
order={scsi,ide,usb,added} - sets the order of modules to be loaded
---
initrd script
The following script needs to placed in /etc/rc.d/init.d.
You will then need to link it to rcsysinit.d.
It is recommended that this script be run right after
mountfs.
To link the script change to the /etc/rc.d/rcsysinit.d
directory and issue the following command.
ln -sf ../init.d/initrd S41initrd
#!/bin/sh
# Begin $rc_base/init.d/initrd
# Based on sysklogd script from LFS-3.1 and earlier.
# Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org
source /etc/sysconfig/rc
source $rc_functions
case "$1" in
start)
if [ -e /initrd/dev/.devfsd ]
then
umount /initrd/dev
fi
if [ -e /initrd/proc ]
then
umount /initrd/proc
fi
if [ -e /initrd/sys ]
then
umount /initrd/sys
fi
if [ -e /initrd/linuxrc ]
then
umount /initrd
echo "Clearing Initial RAM Disk..."
blockdev --flushbufs /dev/ram0
evaluate_retval
fi
;;
*)
echo "Usage: $0 {start}"
exit 1
;;
esac
# End $rc_base/init.d/initrd
---
For Lilo
In order to use the initrd.img file is to add the
following entry to you lilo.conf file.
initrd=/boot/initrd.img
So your lilo.conf should look something like this.
image=/boot/vmlinuz-2.4.23
label=test
initrd=/boot/initrd-2.4.23.img
read-only
If you are just testing. You should make a separate
entry in lilo.conf. This will still allow you to boot.
---
For Grub
In order to use the initrd.img file is to add the
following entry to you menu.lst file.
initrd /boot/initrd-2.4.23.img
So your menu.lst should look something like this.
title test
kernel (hd0,1)/boot/vmlinuz-2.4.23
initrd (hd0,1)/boot/initrd-2.4.23.img
---
For Syslinux
In order to use the initrd.img file is to add the
following to syslinux.cfg file.
append initrd=initrd-2.4.23.img
So your syslinux.cfg should look something like this.
label test
kernel vmlinuz
append initrd=initrd.img
---
VERSION: 2.11
CHANGELOG: 2.11 Forgot to update the mkinitrd svn information
2.10 Version Updates and CVS to SVN Information
2.9 Fixes Typos
2.8 Updated initrd script and mkinitrd
2.7 Updated Configurations
2.6 More 2.6 Updates -- removed romfs
2.5 Updated for 2.6 Kernel
2.4 Added a choice of the Change_Root Method
and the pivot_root method.
2.3 Fixed Typos
2.2 Fixed Typos
2.1 Forget at add genromfs build information
2.0 Did more Research - Found easier way to
do things and smaller.
1.5 Update CVS Information
1.4 Updated to New Hint Format
1.3 Updated Script
1.2 Fixed Typos
1.1 Updated Script
1.0 Initial Version
New Version of this document can be viewed from http://svn.jg555.com/viewcvs.cgi/?root=lfs-hints |
|