文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>在内存上运行的操作系统

在内存上运行的操作系统

时间:2006-09-22  来源:音乐无限Emi

重点:1.)制作根系统压缩的映象文件:ram30.img

2.) 创建initrd ramdisk 映像,initrd ramdisk是用来引导(bootstrap)30M的ramdisk,并将它挂载至/mnt/ram。关键文件为linuxrc

linuxrc的内容为:

#!/bin/bash

mount –o –ro /dev/hda1/ /mnt             # 以只读方式将flash盘挂载在/mnt下

zcat /mnt/boot/ram30.img.gz > /dev/ram   # 将根文件系统映像解压至ram

umount
/dev/hda1                        
# 卸载flash盘

************************************************************************************************

3.1 制作根系统压缩的映象文件:ram30.img

# dd if=/dev/zero of=/dev/ram bs=1k count=30000

把ramdisk调整到零,以便后面有更高的压缩率;

# mke2fs –m0 /dev/ram 30000

在ramdisk上建立30M的ext2文件系统;

# mkdir /mnt/ram

建立一个挂装点

# mount /dev/ram /mnt/ram

将已格式化的ramdisk挂载至目录/mnt/ram;

# cp –av /minlinux/* /mnt/ram

将文件结构拷贝至ramdisk。

然后我们对/mnt/ram/etc目录下的文件进行修改。

fstab:(我们使用ramdisk作为根文件系统,且不需要交换分区.)

/dev/ram / ext2 defaults 1 1

none /proc proc defaults 0 0

最后我们要拷贝ramdisk的映像并将其压缩。主要步骤如下:

运行df ,注意1024-blocks一栏中/dev/ram的数值,在我的机上为25600;

# df

# cd /root

# umount /dev/ram      卸载/dev/ram

# dd if=/dev/ram of=ram30.img bs=1k count=25600

将ramdisk写成映象文件

# gzip –9v ram30.img

在/root目录下产生一个压缩的映象文件

*******************************************************************************************

3.2 创建initrd ramdisk 映像

首先我们在/dev/ram0中创建一个适合大小的ext2文件系统,方法同上,只是大小只有2048K,因为initrd ramdisk是用来引导(bootstrap)30M的ramdisk,并将它挂载至/mnt/ram。

# dd if=/dev/zero of=/dev/ram0 bs=1k count=2048

把ramdisk调整到零,以便后面有更高的压缩率;

# mke2fs –m0 /dev/ram0 2048

在ramdisk上建立30M的ext2文件系统;

# mkdir /mnt/ram0

建立一个挂装点

# mount /dev/ram0 /mnt/ram0

将已格式化的ramdisk挂载至目录/mnt/ram;

# cp –av /minlinux/{bin,dev,etc,lib,mnt /mnt/ram0

将文件结构拷贝至ramdisk。

建立可执行脚本文件linuxrc:

linuxrc的内容为:

#!/bin/sh

mount –o –ro /dev/hda1/ /mnt   # 以只读方式将flash盘(或硬盘)挂载在/mnt下

zcat /mnt/boot/ram30.img.gz > /dev/ram     

# 将根文件系统映像""ram30.img.gz""解压至ram

umount /dev/hda1 # 卸载flash盘(或硬盘).

**************************************

最后创建压缩的initrd ramdisk映像。

# df

运行df 看看/dev/ram0的字节数,在我的计算机上1684K;

# cd /root  转换当前目录至/root

# umount /dev/ram0     卸载/dev/ram0

# dd if=/dev/ram0 of=initrd.img bs=1k count=1684

拷贝/dev/ram0成映像文件

# gzip -9v initrd.img

产生压缩的映像文件initrd.img.gz

************************************************************************************************

3.3 启动

系统的启动需要依靠flash盘,通过LILO把系统启动信息写入flash盘(或硬盘)主引导区。

将flash盘作为第一主盘hda,而将装有普通Linux的硬盘作为第一从盘hdb并从它启动。

#(在flash硬盘上创建ext2文件系统,将它挂载至/mnt/flash目录。

在flash盘上建立boot目录,将压缩的文件系统和initrd映像拷贝至boot目录下,同时将Linux内核、引导区记录boot.b、引导区映射map拷贝至其下。在普通Linux系统中建立LILO配置文件 ramlilo.conf,配置文件如下:)

lilo:

boot=/dev/hda

map=/mnt/flash/boot/map

install=/mnt/flash/boot/boot.b

prompt

timeout=50

image=/mnt/flash/boot/vmlinuz

append= “ramdisk_size=30000”

label=embedded

root=/dev/ram

initrd=/mnt/flash/boot/initrd.img.gz

运行命令lilo –C ramlilo.conf ,将启动信息写入flash的主引导区MBR。

************************************************************************************************

重新启动计算机,登陆后运行mount,我们看到如下两项:

/dev/ram on / ext2 (rw)

none on /proc type proc (rw)

这显示只有ramdisk被挂载,制作成功。

************************************************************************************************

3.4 结论

在我们制作的嵌入式Linux中进行各种操作,速度非常快,而且系统很稳定。没有出现因为根文件系统损坏而导致系统进入手工维护界面的现象。用它作为 HTTP网络服务器、网络监视器、宽带通信设备管理器或者其他需要长时间不停运行的机器,都有很高的应用价值。

参考:

http://lunwen.eliu.info/js145.htm

一种实现嵌入式Linux的新方法

相关阅读 更多 +
排行榜 更多 +
全民格斗王-街霸

全民格斗王-街霸

动作格斗 下载
吐司壁纸

吐司壁纸

主题美化 下载
雷姆从零开始的异世界生活

雷姆从零开始的异世界生活

休闲益智 下载