读文网>电脑>操作系统>Linux教程

initramfs镜像命令如何生成及运行

生成initramfs镜像命令

若镜像根目录为/initrd,执行下面命令在当前用户主文件夹中生成myinitramfs.gz镜像。

cd /initrd

find .|cpio -o -H newc|gzip>~/myinitramfs.gz

生成的镜像文件是gzip压缩过的。

如何运行initramfs

如果第一章开发工具学习 你会了的话,这是很好办的事。首先要找一个内核,自己编译一个也可以,用现有linux系统内核也可以,一般在/boot文件夹内。

设置一个menu.lst加入对自己制作的initrd的启动项,可以如下:

title my initramfs

root (hd0,0)

kernel /boot/vmlinuz

initrd /boot/myinitramfs.gz

boot

其中内核和镜像都放到了U盘的boot文件夹下了。

其实启动方法有很多,对于熟悉GRUB的人来说这很简单,所以多了解一点GRUB还是很好的。

这样的好处是不用重启系统,如果在linux中设置grub的话要重启系统,很费时间。

生成initrd镜像

下面是一个shell文件,可以自动将/initrd目录下的文件打包成myinitrd.img镜像。

#!/bin/sh

dd if=/dev/zero of=/dev/ram1

mke2fs -m 0 /dev/ram1

mount /dev/ram1 /mnt/ram

cp -R /initrd/* /mnt/ram

umount /dev/ram1

dd if=/dev/ram1 of=~/myinitrd.img

gzip -v9 ~/myinitrd.img

生成位置为当前用户主文件夹。

RedHat的initrd

下面是镜像中的linuxrc文件。

#!/bin/nash

echo "Loading sCSi_mod.o module"

insmod /lib/scsi_mod.o

echo "Loading sd_mod.o module"

insmod /lib/sd_mod.o

echo "Loading BusLogic.o module"

insmod /lib/BusLogic.o

echo "Loading jbd.o module"

insmod /lib/jbd.o

echo "Loading ext3.o module"

insmod /lib/ext3.o

echo Mounting /proc filesystem

mount -t proc /proc /proc

echo Creating block devices

mkdevices /dev

echo Creating root device

mkrootdev /dev/root

echo 0x0100 > /proc/sys/kernel/real-root-dev

echo Mounting root filesystem

mount -o defaults --ro -t ext3 /dev/root /sysroot

pivot_root /sysroot /sysroot/initrd

umount /initrd/proc

pivot_root是切换到真实系统的一个命令下面有详细讲述。下面是redhat镜像中的所有文件的结构:

│ linuxrc

├─bin

│ insmod

│ nash

└─lib

BusLogic.o

ext3.o

jbd.o

scsi_mod.o

sd_mod.o

相关热搜

相关文章

【Linux教程】热点

【Linux教程】最新