当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 21 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : 完全在内存上运行linux系统
帖子发表于 : 2008-08-19 18:05 
头像

注册: 2007-10-28 21:35
帖子: 1169
送出感谢: 0 次
接收感谢: 2
这几天研究如何把整个linux系统放到内存上运行,和大家分享一些心得,基础不好,有些概念可能说不清楚。

内存的速度大家都知道,在内存上运行的系统不仅速度快,还可以脱离存储介质,例如光盘启动时,可以把光盘拿出来; u盘启动时,则可以拔下u盘。当然,如果运行的是只读的文件系统,要支持存储数据的话,就需要存储介质了,可以把数据保存到硬盘/u盘上。

经过摸索,有2个办法可以达到目的 :

1 是把整个系统做成initrd. initrd本来就是小文件系统
用cpio把整个系统做成initrd,系统只要2个文件就可以启动了,一个内核vmlinuz,二是initrd.gz。
普通的initrd的主要用途是用来加载一些驱动,并找到真实的文件系统,最后切换根,起到一个中介的作用。而这里的initrd则不切换根了,直接运行/sbin/init。
发行版SliTaz, pudlinux也有一个版本xpud 就是这种方式。
但是initrd太大的话,loader(grub/syslinux)加载要花很长时间,还有个问题就是cpio不是设备,保存数据很麻烦,反正我没想到办法。 :( 那位高手指点指点吧。

2 是在initrd中使用tmpfs技术把压缩的文件系统复制到内存中运行。
tmpfs 是一个文件系统,而它又是使用RAM,可以很好解决在内存中运行,而又支持保存数据。
看下面几行脚本就可以大概了解:
代码:
mkdir /store
mount -t tmpfs -o size=200M  none /store
mkdir /store/iso
 cp -a /iso_dir/*.iso   /store/iso
 /sbin/losetup /dev/loop6  /store/iso/*.iso

我用第二种方法实现在内存上运行prayaya 精简版,感兴趣的朋友可以到这里下载iso文件:
http://ftp.ubuntu.org.cn/home/yaska/prayaya-804-hack/

用户名:ubuntu
密码:ubuntuftp

qemu/kvm运行看这里:
在启动项按f6, 把quiet splash去掉,加上boot2ram,还可以加上verbose,可以看到整个启动过程。由于iso文件120多M,所以必须最少分配300m内存。
代码:
sudo  kvm -cdrom boot2ram.iso  -m  300

安装到U盘看这里:
http://www.inlsd.org/forum/viewtopic.php?t=313
启动参数加上boot2ram, 把quiet splash去掉,加上verbose可以看到整个启动过程。 同样,在内存大于300m以上机器测试。

保存数据就根据帖子做就可以了。


一些链接:
有关initrd的: http://blog.linux.org.tw/~jserv/archives/001954.html
xpud的站点:http://xpud.org
SliTaz: google吧,很牛的linux系统。


最后由 yaska 编辑于 2008-08-26 22:58,总共编辑了 7 次

页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-08-19 18:58 
头像

注册: 2008-02-17 23:47
帖子: 22109
地址: 美丽富饶的那啥星球
送出感谢: 11
接收感谢: 82
关注 :shock:


_________________
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-08-19 19:19 
头像

注册: 2008-04-02 15:36
帖子: 724
地址: O_O
送出感谢: 0 次
接收感谢: 0 次
子曰:硬盘没发明之前,系统运行在内存里。
方法很有创意,小弟有几点不明白,还望指点。
1. CPU与内存的I/O存取速度最快,系统运行程序时是先从硬盘读取并写入内存执行的。所以拖速度的主要是系统对硬盘的读写。所谓在内存中运行的系统 是不是将文件系统和所有程序先加载到内存?那引导启不很慢?
2.内存掉电数据消失,该写入硬盘的还是要写入。

有一个软件(名字忘了)会跟据用户的使用习惯预加载常用软件和文件到内存,效果应该一样吧。


_________________
^o^ && O_O && ^_^
One World|One Dream|One Piece
愛 ^_^ 這個 美麗的世界O_O

本公司专治各种不服、不爽、谩骂、挑衅。


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-08-19 19:27 
头像

注册: 2007-10-28 21:35
帖子: 1169
送出感谢: 0 次
接收感谢: 2
sinyadvan 写道:
子曰:硬盘没发明之前,系统运行在内存里。
方法很有创意,小弟有几点不明白,还望指点。
1. CPU与内存的I/O存取速度最快,系统运行程序时是先从硬盘读取并写入内存执行的。所以拖速度的主要是系统对硬盘的读写。所谓在内存中运行的系统 是不是将文件系统和所有程序先加载到内存?那引导启不很慢?
2.内存掉电数据消失,该写入硬盘的还是要写入。

有一个软件(名字忘了)会跟据用户的使用习惯预加载常用软件和文件到内存,效果应该一样吧。


对,是先把文件系统先加载到内存。 所以引导的时间大多耗在把系统加载到内存这个环节。 启动之后,速度就飞快了。

内存掉电消失,但我用aufs联合了一个可写的空间(文件),这样可以存储数据,重启之后数据还在,当然这个空间(文件)要放到可写的存储设备(硬盘/u盘)上。

试想:在没有硬盘的机器,用一个U盘就可以一台一台打开。


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-08-19 19:34 
头像

注册: 2008-04-02 15:36
帖子: 724
地址: O_O
送出感谢: 0 次
接收感谢: 0 次
加油,把它做出来。
这个方案在很少关机、重启的环境下是非常厉害的,效果会很显著。


_________________
^o^ && O_O && ^_^
One World|One Dream|One Piece
愛 ^_^ 這個 美麗的世界O_O

本公司专治各种不服、不爽、谩骂、挑衅。


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-08-19 19:51 
头像

注册: 2007-05-06 8:19
帖子: 7433
送出感谢: 0 次
接收感谢: 4
你有那么大内存么?


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2008-08-19 19:58 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
slax就可以好像。


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2008-08-19 22:09 
头像

注册: 2006-09-19 18:16
帖子: 3711
送出感谢: 0 次
接收感谢: 3
yaska 写道:

试想:在没有硬盘的机器,用一个U盘就可以一台一台打开。


我仿佛看见一个人拿一U盘,走过一排排电脑,一个挨一个,都亮了。。。


_________________
Ubuntu 系统备份、恢复、克隆、批量部署、制作 live 系统


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2008-08-19 22:15 
头像

注册: 2006-09-19 18:16
帖子: 3711
送出感谢: 0 次
接收感谢: 3
就是重启有点麻烦。

现在的机子 2G以上内存很常见,有搞头!

要是这么用的话,可以对系统结构做些调整,应该会提高些效率


_________________
Ubuntu 系统备份、恢复、克隆、批量部署、制作 live 系统


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2008-08-19 22:18 
头像

注册: 2006-09-19 18:16
帖子: 3711
送出感谢: 0 次
接收感谢: 3
希捷会不大高兴 :lol: :lol:


_________________
Ubuntu 系统备份、恢复、克隆、批量部署、制作 live 系统


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2008-08-19 23:40 
头像

注册: 2007-12-31 14:57
帖子: 1097
送出感谢: 0 次
接收感谢: 1
SliTaz这个超牛,有搞头。
Parted Magic也是可以运行在内存中,但方法好像不是楼主说的2个方法。楼主去研究研究。


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2008-08-20 15:42 
头像

注册: 2007-10-28 21:35
帖子: 1169
送出感谢: 0 次
接收感谢: 2
muzuiget 写道:
SliTaz这个超牛,有搞头。
Parted Magic也是可以运行在内存中,但方法好像不是楼主说的2个方法。楼主去研究研究。


Parted Magic以前用过。。哈,这个用来分区和维护电脑的。的确很适合在内存上运行。


页首
 用户资料  
 
13 楼 
 文章标题 :
帖子发表于 : 2008-08-20 17:13 
头像

注册: 2006-09-19 18:16
帖子: 3711
送出感谢: 0 次
接收感谢: 3
可以设一台 pxe 服务器,存放系统映像,其它机子通过网络,拷贝映像到内存,启动 —— 新式无盘工作站


_________________
Ubuntu 系统备份、恢复、克隆、批量部署、制作 live 系统


页首
 用户资料  
 
14 楼 
 文章标题 :
帖子发表于 : 2008-08-20 22:50 
头像

注册: 2007-07-18 18:56
帖子: 1806
送出感谢: 0 次
接收感谢: 0 次
很多小linux发行版都可以这样啊,装在u盘里,启动就整个系统在内存里了,然后拔掉u盘都可以。
lz可以参考以下puppy,slax之类的发行版


页首
 用户资料  
 
15 楼 
 文章标题 :
帖子发表于 : 2008-08-20 22:58 
头像

注册: 2007-10-28 21:35
帖子: 1169
送出感谢: 0 次
接收感谢: 2
引用:
很多小linux发行版都可以这样啊,装在u盘里,启动就整个系统在内存里了,然后拔掉u盘都可以。
lz可以参考以下puppy,slax之类的发行版


谢谢,prayaya 已经实现了。


最后由 yaska 编辑于 2008-08-31 12:36,总共编辑了 1 次

页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 21 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译