• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

制作RAMDISKinKERNEL的OpenBSD微系统

发布: 2007-6-21 12:06 | 作者:   | 来源:   | 查看: 14次 | 进入软件测试论坛讨论

领测软件测试网

   
  在以前我们已经讲过如何制作软盘上运行的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系统就已经做好了。

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网