Linux中国  设为主页
 收藏本站
 
当前位置: > 首页 ->Linux技术 ->内核研究 ->制作RAMDISK in KERNEL的OpenBSD
  相关分类: 
入门与提高
系统管理
网络应用
嵌入式系统
内核研究
服务器相关
发行版专区
Linux程序设计
Linux安全
BSD相关
桌面应用
  站内搜索: 
热门文章排行
热门文章排行 一次即大功告成 Linux内核升级全过程(04-19)
使用 Linux 系统调用的内核命令 (04-22)
推荐:Linux用户态与内核态的交互(04-11)
Linux内核配置选项 (04-22)
Linux 2.6 内核的 Initrd 机制解析(04-11)
精采文章排行
精采文章排行 使用 Linux 系统调用的内核命令 (04-22)
Linux 和对称多处理 (04-22)
Relay:一种高效的数据传输技术 (04-22)
使用 SystemTap 调试内核 (04-22)
配置FreeBSD内核 (04-22)
  ·Linux 和对称多处理 ·Relay:一种高效的数据传输技术 ·使用 SystemTap 调试内核 ·配置FreeBSD内核 ·在FreeBSD4.x中制作启动菜单 ·制作软盘上运行的FreeBSD系统 ·FreeBSD光盘运行版的制作过程 ·制作RAMDISK in KERNEL的NetBSD ·制作RAMDISK in KERNEL的OpenBSD

制作RAMDISK in KERNEL的OpenBSD

作者:Matthew    来源:cnfug   点击:   日期:2007-04-22 [收藏] [投稿]

  IE是否经常中毒?推荐您

前言

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

原文链接:http://cnfug.org/journal/systems/2004/000071.html



 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:关于FreeBSD 5优化的补充   下一篇:制作RAMDISK in KERNEL的NetBSD
文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论

   相关文章:
·使用 Linux 系统调用的内核命令

   文章评论:(1条)
  
 请留名: 匿名评论   点击查看所有评论 论坛讨论
 

 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。