快捷搜索:

Slackware 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的应用。

您可能还会对下面的文章感兴趣: