制作RAMDISK in KERNEL的OpenBSD微系统(转)

制作RAMDISK in KERNEL的OpenBSD微系统(转)[@more@]

  Matthew(黑夜编码人)

  前言

  在以前我们已经讲过如何制作软盘上运行的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/{dev,bin,sbin,etc}

# cp /dev/MAKEDEV /mnt/dev

# cp /bin/{sh,ls} /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系统就已经做好了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752019/viewspace-941476/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10752019/viewspace-941476/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值