制作RAMDISK in KERNEL的OpenBSD微系统
来源:Blog.ChinaUnix.net作者:Blog.ChinaUnix.net 发布时间:2008-04-07 05:24:57


转载自 matthew的日记 http://matthew.3322.org/index.php?action=show&id=3
前言
在以前我们已讲过怎样制作软盘上运行的FreeBSD系统,现在我们来看看怎样制作一个运行在软盘上的OpenBSD系统。和软盘上的FreeBSD不同的是,这次我们将系统中的任何配制文档及程式全部存放到OpenBSD的内核中,这样整个系统看起来就是个文档。下面让我们具体来看看怎样完成这样一个微系统的制作。
0、OpenBSD的启动过程
当硬盘MBR中的引导程式接过启动之后,MBR中的程式将读入硬盘OpenBSD分区中的引导程式,引导程式默认情况下会加载/boot,然后由boot载入内核,此时内核开始检测一些硬件和做一些初始化。初始化完成后kernel将mount
root device,然后启动系统初始化进程/sbin/init,init将根据/etc/rc中的配置来进行初始化等。
1、定制RAMDISK内核
要使用RAMDISK in KERNEL就必须在内核配制文档中加入以下选项:
option RAMDISK_HOOKS option MINIROOTSIZE=3560 pseudo-device rd 1
以上的内核参数意义如下: option RAMDISK_HOOKS:开启ramdisk in kernel的功能。 option
MINIROOTSIZE=xxx:配置内核中ramdisk的大小,以512b为单位(据说最大只能为23000 ) pseudo-device rd
1:在内核中产生1个ramdisk设备。
2、制作ramdisk映像
# dd if=/dev/zero
of=/ramdisk bs=512 count=3560 # vnconfig -c svnd0 /ramdisk # disklabel
-r -w svnd0 rdroot # newfs -m 0 -S 512 -i 4096 /dev/svnd0a # mount
/dev/svnd0a /mnt # mkdir /mnt/ # cp /dev/MAKEDEV
/mnt/dev # cp /bin/ /mnt/bin # cp /sbin/init /mnt/sbin # cd
/mnt/dev/ && ./MAKEDEV ramdisk # echo ’echo "This is my minibsd all
in kernel" && /bin/sh’ > /mnt/etc/rc # sync && umount
/mnt # sync && vnconfig -u svnd0 && sync
3、将ramdisk写入kernel
# cc -o rdsetroot
/usr/src/distrib/common/elfrdsetroot.c # ./rdsetroot /minibsd < ramdisk
4、压缩kernel大小
# gzip -9 -c /minibsd > /minibsd.gz
5、制作目标软盘
因为系统需要使用/boot(/usr/mdec/boot)来加载kernel,所以我们需要在软盘上放置boot文档。
#
disklabel -B -w -r /dev/fd0a fd1440 # newfs -m 0 -S 512 /dev/fd0a #
mount /dev/fd0a /mnt # cp /usr/mdec/boot /mnt # cp /minibsd.gz /mnt/bsd
现在您的ramdisk in kernel的miniopenbsd系统就已做好了。 |
|
|
还没有关于此文章的相关评论!