QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3414|回复: 13

Livecd 实现的基本原理以及 Livecd 安装的实现

[复制链接]
发表于 2011-11-19 01:03:22 | 显示全部楼层 |阅读模式
目前我是成功完成了简易的 busybox + kernel + grub 微系统,通过启动微系统的 /etc/init.d/rcS 自动挂载设备目录(),mdev -s 来查找硬件,挂载硬盘分区,进入硬盘再次挂载硬盘分区到自己的目录(防止后面启动时硬盘检查),然后 chroot 到事先安装好在硬盘的 magiclinux 系统根分区,执行 /etc/rc.d/rc.sysinit  startx 即可启动 magiclinux 系统。
要实现 Livecd 肯定是需要把事先安装配置好的系统用 mksquashfs 压缩成一个或几个压缩文件,然后挂载文件到指定目录进行工作,这里面肯定还要用到 aufs 文件系统,把挂载的目录和另一个硬盘空间捆绑一起来完成桌面加载时写入的文件内容,也可以防止上面硬盘检查重启了。。。
说起来的确很简单,其实 live 也就那么回事。。。,实现起来有点困难。这样的系统其实可以挂载式伪安装,不怕被黑,修改可以保存在硬盘,也可以不需要时恢复。
发表于 2011-11-19 10:16:52 | 显示全部楼层
说起来很容易,其实真正实现起来不那么容易的。至少要考虑硬盘分区。
回复

使用道具 举报

发表于 2011-11-19 10:40:01 | 显示全部楼层
硬盘分区不是问题,安装程序不过是一个运行在 LiveCD 上面的程序而已。
安装程序前面的分区什么的设置后,相比 MI 的区别就是安装 RPM 变成了复制文件。
而且 MI 本质就是一个专门用来跑 MI 的 LiveCD 系统而已。(当然 MI 很小,所以 MI 整体的 live 环境被做成了 initrd 直接扔进了内存)

Live 系统的唯一难度就是在 initrd 环节如何进入光盘上面的镜像系统继续启动。
其实这个也是没难度的……除了需要保证通用以外。
回复

使用道具 举报

 楼主| 发表于 2011-11-19 12:42:18 | 显示全部楼层
原帖由 jiangtao9999 于 2011-11-19 10:40 发表
硬盘分区不是问题,安装程序不过是一个运行在 LiveCD 上面的程序而已。
安装程序前面的分区什么的设置后,相比 MI 的区别就是安装 RPM 变成了复制文件。
而且 MI 本质就是一个专门用来跑 MI 的 LiveCD 系统而已。(当然 MI ...

其实就是没难度 ,我就没有 aufs 配合也强行从微系统启动了硬盘上的主系统。
说有难度,是因为自己的编程技巧和实现可能会是非常地低级。
回复

使用道具 举报

 楼主| 发表于 2011-11-19 12:50:08 | 显示全部楼层
原帖由 sejishikong 于 2011-11-19 10:16 发表
说起来很容易,其实真正实现起来不那么容易的。至少要考虑硬盘分区。

我对挂载的概念不清,Livecd 考虑应该不是硬盘吧?如果我划出一个内存分区,将光盘上 xz 压缩的主系统文件挂载到它上面,然后启动系统,会吃光内存不?
回复

使用道具 举报

发表于 2011-11-19 15:18:16 | 显示全部楼层
原帖由 jiangtao9999 于 2011-11-19 10:40 发表
硬盘分区不是问题,安装程序不过是一个运行在 LiveCD 上面的程序而已。
安装程序前面的分区什么的设置后,相比 MI 的区别就是安装 RPM 变成了复制文件。
而且 MI 本质就是一个专门用来跑 MI 的 LiveCD 系统而已。(当然 MI ...

至少要考虑硬盘分区的情况,解live系统到硬盘以后的引导情况,相当于得重写mi,如果不用mi的话。
回复

使用道具 举报

发表于 2011-11-19 15:57:48 | 显示全部楼层
原帖由 haulm 于 2011-11-19 12:42 PM 发表

其实就是没难度 ,我就没有 aufs 配合也强行从微系统启动了硬盘上的主系统。
说有难度,是因为自己的编程技巧和实现可能会是非常地低级。 ...

不过安装盘直接启动硬盘上面的系统没意义吧……
回复

使用道具 举报

发表于 2011-11-19 17:34:52 | 显示全部楼层
原帖由 haulm 于 2011-11-19 12:50 发表

我对挂载的概念不清,Livecd 考虑应该不是硬盘吧?如果我划出一个内存分区,将光盘上 xz 压缩的主系统文件挂载到它上面,然后启动系统,会吃光内存不? ...

我是指写安装程序,如果只是做live启动,那不困难的。
回复

使用道具 举报

发表于 2011-11-19 20:51:10 | 显示全部楼层
原帖由 sejishikong 于 2011-11-19 05:34 PM 发表

我是指写安装程序,如果只是做live启动,那不困难的。

安装程序不用重写 mi 吧?只是把安装 RPM 的过程改为复制文件或者解压缩 squashfs 镜像。mi 之前用启动脚本挂载好各个文件系统就行了,这样 mi 还可以借助安装好的系统启动实现更好的功能支持,MI 完全不需要专门定制他的运行环境了。而且 MI 的运行环境就是 ML 系统的环境,可以同步开发了。
这样还一个好处就是不用想软件包定制的功能了。
回复

使用道具 举报

发表于 2011-11-20 12:02:47 | 显示全部楼层
原帖由 jiangtao9999 于 2011-11-19 20:51 发表

安装程序不用重写 mi 吧?只是把安装 RPM 的过程改为复制文件或者解压缩 squashfs 镜像。mi 之前用启动脚本挂载好各个文件系统就行了,这样 mi 还可以借助安装好的系统启动实现更好的功能支持,MI 完全不需要专门定制他的 ...

那样实际上需要把mi改成一个live系统制作程序。
回复

使用道具 举报

发表于 2011-11-20 12:32:14 | 显示全部楼层
MI 独立出来成为一个程序就行了。这个程序写好了编译出来做成 squashfs 在 LiveCD 启动后一起 aufs 挂到 Live 系统上就可以用了。安装系统就把特定的几个 squashfs 文件解压缩到硬盘上。
这样 MI 的运行环境要比以前的那个 initrd 里面有更多的支持软件可以用,对功能实现很有用处的。
回复

使用道具 举报

发表于 2011-11-20 12:34:58 | 显示全部楼层
这样 Live 系统就可以和 MI 相互独立出来分别开发,只要这个 Live 系统的函数库什么的运行环境兼容 MI 就行了。如果 MI 用解释型语言这个问题很好解决。只要 ML 的系统一直兼容,那么 MI 根本不用修改来保证兼容,而且软件包的一些循环依赖也好解决了。只要能手工安装好一个系统,这个 LiveCD 系统就能搭建,之后放上 MI 的 squashfs 就是安装盘了。
回复

使用道具 举报

发表于 2011-11-20 12:38:43 | 显示全部楼层
最主要的是,这个 LiveCD 的制作过程完全可以全手工实现。MI 的功能可以做到和这个 Live 系统无关,只需指定 MI 去解压缩哪些 squashfs ,基本上就和这个 live 系统脱钩了。
回复

使用道具 举报

 楼主| 发表于 2011-11-20 22:35:25 | 显示全部楼层
Livecd 的实现比现在的 MI 要简单多了,只是这两都谁都取代不了对方。
说的太多反而太复杂,这两个东西的区别只在于现在的 MI 环境太大了,多了 X python parted 等等,实现了等同于主系统的安全模式一般地的另一个完全不同的系统,而这个系统又不是自己编译的,而是提取自主系统。。。,而 Livcecd 只有 kernel busybox grub,其它东西都是启动系统后直接使用主系统的。
我是希望 MI2 和 未来的Livecd 都会有一个好的开始。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 02:21 , Processed in 0.046276 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表