[翻译]Slackware initrd 迷你指南
Slackware initrd 迷你指南(Slcakware initrd mini HOWTO)
Author: Patrick Volkerding,volkerdi@slackware.com
Date: Wed Jun 27 15:58:08 CDT 2007
翻译:Scongwei Linn,scongwei_linn@yahoo.com.cn
日期:2007年 11月 22日 星期四 10:20:58 CST
本文档描述怎样创建和安装initrd(可能需要2.6内核)。可参考"man mkinitrd"。
1. initrd是什么?
2. 为什么要使用initrd?
3. 怎样创建initrd?
4. 怎样使用initrd?
1. initrd是什么?
Initrd是"initial ramdisk"(初始随机存储器)的简称。initrd ramdisk是一个非常小的Linux文件系统,在根文件系统挂载之前被加载进内存,并挂载为内核启动(模块)。
2. 为什么要使用initrd?
在挂载根文件系统之前,我们需要加载各个内核模块,这就是我们需要 initrd的原因。通常根分区(ext3,reiserfs,xfs)或与磁盘驱动器相关联的控制器(SCSI,RAID等)需要这些模块的支持。基本上,在现在的Linux内核中有许多可用选项,所以想要发送许多不同内核来满足每一个用户的需求是不切实际的。发布一个通用内核和一些相关的内核模块更具有可定制性。
3.怎样创建initrd?
最简单的方法就是使用包含在mkinitrd包里的mkinitrd脚本。我可以使用slackware/a/目录下的包来升级至通用的2.6.21.5-smp内核。
首先,确定已经安装了内核,内核模块和mkinitrd包(当前版本数字可能不一致,以下例子仅供参考)。
installpkg kernel-generic-2.6.21.5_smp-i486-1.tgz
installpkg kernel-modules-2.6.21.5_smp-i486-1.tgz
installpkg mkinitrd-1.1.2-i486-3.tgz
转至/boot目录下:
cd /boot
然后运行"mkinitrd"。比如根文件系统使用reiserfs,且在IDE系统中reiserfs模块是需要加载的唯一模块
mkinitrd -c -k 2.6.21.5-smp -m reiserfs
这命令作了两件事。首先创建/boot/initrd-tree目录(容纳initrd的文件系统)。然后从这树目录创建initrd(/boot/initrd.gz)。如果需要,你可以在/boot/initrd-tree下做些额外的修改,并再次运行mkinitrd来重新创建initrd镜像,这一步不使用其他参数选项。这一步不适必须的(可选的),但是只有高级用户会考虑这方面的问题。
又一个例子:使用2.6.21.5-smp内核模块为一个文件系统为ext3的根分区并挂载在 /dev/hdb3的系统编译一个initrd镜像。
mkinitrd -c -k 2.6.21.5-smp -m ext3 -f ext3 -r /dev/hdb3
这样initrd会自动加载ext3模块要使用的mbcachae和jbd模块。
要自动使用当前根文件系统和内核,可以简单运行:
mkinitrd -m ext3
4. 怎样使用initrd?
建好 initrd(/boot/initrd.gz)后,我们要使它在启动的时候和内核一块被加载。如果使用LILO启动加载器,修改/etc/lilo/conf,添加一行来加载initrd。如下:
# Linux bootable partition config begins
image = /boot/vmlinuz-generic-2.6.21.5-smp
initrd = /boot/initrd.gz
root = /dev/hda6
label = /Lnx26215smp
read-only
# Linux bootable partiton config ends
initrd = /boot/initrd.gz将会加载 initrd。只需在加载内核镜像的下一行加上这一句就可以了。保存,然后在命令行下运行lilo。每次编辑lilo.conf或重新编译 initrd都要运行一次lilo才能使修改有效。
其他如syslinux等启动加载器也支持initrd的使用。详情请参考这些程序关于使用initrd的相关文档。
---------
Have fun!
----------------------------------
trackback: http://blog.chinaunix.net/u/33029/showart.php?id=429561