+ -
当前位置:首页 → 问答吧 → 如何创建 initrd 文件??

如何创建 initrd 文件??

时间:2007-07-27

来源:互联网

我下载了 slack 12 的前两个ISO文件,解压到FAT32分区,
通过 grub for Dos 启动,硬盘安装,
根分区装在 /dev/sda11 上,用的是xfs 文件系统
在最后没有安装 lilo , 在启动 slack 时发现 /boot 下面没有 initrd 文件

通过启动盘启动,挂载了 /dev/sda11 分区,再 chroot 到 挂载目录 下,
cd /boot
mkinitrd -c -m xfs -f xfs -k 2.6.21.5 -r /dev/sda11
用上面那条命令用各种参数组合创建了不同的 initrd.gz 文件,但是这个文件 只有几百K,不到1M,用 gunzip 解压 ,cpio 导出文件内容来看,在lib 下只有一个 xfs.ko 模块 ,而且连 sbin 目录都没有。。。。 这样在启动时,显示到 SGI XFS .. 那几行时,下面提示无法挂载 / 分区,系统了停在那里了。


我想问一下slack 安装时不会自己创建内核对应的initrd 文件吗? 如果是手工创建的话要怎样创建?

作者: windwiny   发布时间: 2007-07-27

mkinitrd的时候确保根分区的模块在其中,如果不能顺利挂载,用loop方式挂上文件,手工修改一下它的脚本。脚本很简单,相信你不会看不懂。

作者: shannleon   发布时间: 2007-07-27

楼上的说怎么做还是没看明白 。。。


不过问题。。。我用 huge 的内核启动,没带 initrd 。。。。。就解决了。。。。(刚开始没注意,一直用 generic 的内核在启动)

作者: windwiny   发布时间: 2007-07-27

引用:
作者: windwiny
cd /boot
mkinitrd -c -m xfs -f xfs -k 2.6.21.5 -r /dev/sda11
我想问一下slack 安装时不会自己创建内核对应的initrd 文件吗? 如果是手工创建的话要怎样创建?
Slackware 共提供了两种类型的kernel,一个是huge, 另一个是generic, 每种kernel又有两个版本,SMP和non-SMP。在kernels/目录下的huge kernel是用来安装用的,包含了所有的文件系统,因此使用huge kernel则不需要initrd. 另一个gerneric kernel在/slackware/a/目录下,只包含了少量的文件系统支持,因此当使用gerneric 时,必须使用initrd加载所需要的文件系统。

如果你使用kernel-generic-2.6.21.5, 则
代码:
# installpkg kernel-generic-2.6.21.5-i486-1.tgz
# installpkg kernel-modules-2.6.21.5-i486-1.tgz
# cd /boot
# mkinitrd -c -k 2.6.21.5 -m xft -f xft -r /dev/sda11
如果你使用kernel-generic-2.6.21.5-smp, 则
代码:
# installpkg kernel-generic-smp-2.6.21.5-i486-1.tgz
# installpkg kernel-modules-smp-2.6.21.5-i486-1.tgz
# cd /boot
# mkinitrd -c -k 2.6.21.5-smp -m xft -f xft -r /dev/sda11
使用initrd,必须在/etc/lilo.conf增加一行 initrd = /boot/initrd.gz, 并重新安装lilo
代码:
# Linux bootable partition config begins
image = /boot/vmlinuz
 initrd = /boot/initrd.gz
 root = /dev/sda11 <==改成你自己的root
 label = Linux
 read-only
# Linux bootable partition config ends
注:Slackware 12.0 的huge kernel是安装系统用的, Slackware 不反对在安装完成后仍然使用huge kernel作为日常, 但Slackware 建议使用SMP版本的kernel. 详见Release Notes.

Slackeware的 kernel
引用:
slackware/a/kernel-generic-2.6.21.5-i486-2.tgz
slackware/a/kernel-generic-smp-2.6.21.5_smp-i686-2.tgz
slackware/a/kernel-huge-2.6.21.5-i486-2.tgz
slackware/a/kernel-huge-smp-2.6.21.5_smp-i686-2.tgz
Reference: Slackware official announcement
引用:
There are two kinds of kernels in Slackware -- the huge kernels, which
contain support for just about every driver in the Linux kernel. These are
primarily intended to be used for installation, but there's no real reason
that you couldn't continue to run them after you have installed. The
other type of kernel is the generic kernel, in which nearly every driver
is built as a module. To use a generic kernel you'll need to build an
initrd to load your filesystem module and possibly your drive controller
or other drivers needed at boot time, configure LILO to load the initrd at
boot, and reinstall LILO. See the docs in /boot after installing for more
information. Slackware's Linux kernels come in both SMP and non-SMP types
now. The SMP kernel supports multiple processors, multi-core CPUs,
HyperThreading, and about every other optimization available. In our own
testing this kernel has proven to be fast, stable, and reliable. We
recommend using the SMP kernel even on single processor machines if it
will run on them.

作者: lchxr   发布时间: 2007-07-28