haulm 发表于 2012-4-6 12:12:32

还是关于 Livecd 的讨论

制做一个微系统并且引导到 bash 环境,能够挂载和解压文件,现在简单地编译一个内核配置 busybox 就可以实现。但我一起没能搞定从现有的一个系统如何 mount 加载另一个系统并成功启动。
如果我把另一个系统解压出来在下一次启动后使用自然没问题,可就是不明白不重启是如何加载 mount 的系统的,手头的 Live 脚本没看懂,而且它对 udev 有要求,高于149 版本就不工作了,出现启动过多错误退出的 bug 。
如果基于现有的 mgaicwin 写个grub 引导配置,可以直接硬盘引导 Live。
其实安装程序有那么麻烦么?直接运行一个微系统,格式化后把所有东西扔进硬盘,安装 grub,重启。

zhucl428 发表于 2012-4-6 14:06:35

“如果基于现有的 mgaicwin 写个grub 引导配置,可以直接硬盘引导 Live”
我这么干过一回,修改mgaicwin的menu.lst,把2.5光盘镜像直接解压到c:。
就是magiclinux好像没有live下的安装程序

jiangtao9999 发表于 2012-4-7 17:41:19

exec chroot /path/to/new/root /sbin/init
执行这个命令的 bash 脚本的 PID 必须是 1 。
之后你就可以启动新 root 里面的系统了。

不过 chroot 不是最优命令,最好的选择是 switch_root (和另外一个类似的命令,忘了是什么了,两个命令一个是老版本一个是新版本)。

huizige 发表于 2012-4-8 00:34:05

slax没有直接用udev管理设备,而是先用mdev -s加载设备,切换到目的根目录后再切换到udev管理设备。
ubuntu的加载代码用好多的文件写成不同的脚本函数,一个接一个的调用,真难看懂,我参照代码修改了后代码简洁了一点,加载文件就没问题了,有需要我发上来提供参考。

haulm 发表于 2012-4-8 05:48:19

当然需要,非常感谢。

jiangtao9999 发表于 2012-4-8 10:20:10

udev 需要跑成服务才有意义。在没有切换到新根下面时,最好不要启动任何的程序。
所以 mdev 生成一下磁盘设备就足够使用了,而且这东西也很小,用不了多少 initrd 的容量。只要能挂载到新的 root 目录,任何 /dev/ 里面的东西都是多余的(除了 /dev/console ,这东西运行脚本需要……)

不过我现在还有一点不知道,initrd 占用的内存空间会不会因为 chroot 或者 switch_root 后被释放?如果没有释放,怎么才能让系统释放这部分的内存占用?

haulm 发表于 2012-4-8 11:09:09

mdev 是 busybox 的工具,我试过加载运行个 linux 基础运行环境是肯定不成问题的。init 也是 busybox 的内容,毛病在于当我把目标系统挂载后,因为要重新挂载硬件,加载目标系统时就会对原来系统挂载的自己产生疑问,断掉脐带有点困难。。。

huizige 发表于 2012-4-9 01:24:59

initrd是解压到/dev/ram0上,然后内核从/dev/ram0上加载根文件系统,chroot不会清除内存,switch_root 就是清除内存和切换根文件系统的组合。
还有一个问题是用mdev -s加载会带来代码的复杂,slax上增加了很多加载usb模块的代码,如果从维护角度来看还是参考cdlinux的代码好点。但cdlinux不能照搬,cdlinux没有切换根文件系统,用squashfs的initrd必须先加载aufs否则加载是会报/dev是只读文件系统,如果先加载了aufs后再次重定位aufs的分支就难于理解了。本来aufs的加载代码我都没理解透,还有就是写加载aufs的目录不能用从根目录起描写的绝对路径。

发个写好没多久的加载cd和搜索磁盘上iso镜像加载后在加载里面的squashfs的镜像脚本,代码可以成功的加载文件,放上来仅供参考,注意在inirtd上用的/sbin/blkid不能用busybox的,需要把系统里的/sbin/blkid和动态链接库拷到initrd去,/lib/udev/vol_id在新一点的udev上已经剔除了,要找版本老一点的udev 源码编译一个,用推荐udev75的源码编译后拷到initrd,这个版本不用依赖动态链接库。文件我原来设计成存放到/etc/live/setroot上,initrd调用,切换到根文件系统必须第一个进程操作,用分支进程会报错。

怎么论坛不支持7zip的文件上传啊。

haulm 发表于 2012-4-9 08:04:05

这个论坛现在有点乱,上传图片都不显示。
页: [1]
查看完整版本: 还是关于 Livecd 的讨论