|
原帖由 我是神仙 于 2011-12-8 00:08 发表
原版的不行,是你整合改过的?
不管iso是在NTFS还是FAT32,必须在U盘根目录有rootfs文件才能启动
原帖由 我是神仙 于 2011-12-7 22:03 发表
那个CDLinux倒是把NTFS驱动也打包进initrd了,大得多。geexbox的initrd才500K,CDLinux的initrd是8M,一堆的驱动。
不知道能不能把CDLinux和GeexBox组合起来,用CDLinux的initrd 加上 GeexBox的 rootfs ? 这个完全搞不懂,只是猜想
...
本来只是猜想,没想到已经有人实现了,可以整体ISO启动了。可以在NTFS启动。下面转载一篇:
geexbox2.0硬盘启动
—- 支持NTFS和ISO
发表于 2011 年 11 月 23 日 由 tangfu
【目的】
1.使geexbox 2.0支持NTFS分区格式
2.使geexbox 2.0能够直接从ISO格式的文件启动
3.方便使用持久化
【分析】
Geexbox 2.0使用的是2.6.38.8内核和busybox 1.19.2
通过rootfs的config文件我们可以查处内核的编译选项:
1.内核支持initrd的xz压缩
2.内核不支持ntfs,但开启了ntfs-3g的支持
对init启动脚本的修改:
1.initrd处理
2.增加ntfs-3g命令
initrd镜像中没有包含ntfs-3g程序,因此必须将rootfs中的ntfs-3g移植进去,
从rootfs中拷贝这些库到initrd的 /lib中(注意不是软链接,而是其直接指向的库文件)
ld-linux.so.2 libdl.so.2 libgcc_s.so.1 librt.so.1 libc.so.6 libfuse.so.2 libpthread.so.0,
拷贝ntfs-3g到/bin
3.关于数据保存
开启persistent,相当于使能数据持久化开启persistent与不开启persistent的主要区别(在不使用ro,rw等参数的情况下)
PERSISTENT_OPT=”-o loop -t ext2″挂载参数变成挂载件
ROOT_MODE_PART=rw 挂载选项不是只读挂载,而是读写挂载
默认情况下,开启persistent,持久化文件是/mnt/casper-rw
4.系统文件查找
a)指定ROOT之后,脚本会自动去挂载ROOT指定的设备,ROOTFS指定文件系统模式,官方发布的iso中他为rootfs文件,即非flat,指定为flat之后,脚本不会再去找rootfs,认定rootfs中的内容已经放入ROOT中,并非存在于一个squashfs文件中
b)未指定ROOT设备时,init脚本将扫描磁盘(scan the block devices for rootfs)
默认只探索光驱,单分区优盘,其他磁盘的第一个分区,修改探测时遍历所有设备,且识别ntfs分区。
5.添加选项from,支持从硬盘启动
该参数优先级最高,启用该参数后,不会使用ROOT设备来查找,也不会自动扫描硬盘
格式:</类型:设备:对应的文件或文件夹/>
类型可以是DIR:ISO,如果是其他直接退出
设备通常是dev下的硬盘,U盘或光盘
例子:
ISO:/dev/sda7:geexbox-i386-2.0.iso
DIR:/dev/sda6:GEEXBOX
DIR情况下
1)persistent默认是该目录下的casper-rw
2)ROOTFS不支持flat模式,ROOTFS默认是该目录下的rootfs
ISO情况下
1)persistent默认被禁用,即便设置也无效
2)ISO情况下ROOTFS肯定不是flat模式,因此不用考虑
另外由于需要持久化,必然会占据硬盘,持久化数据所在分区可能无法在geexbox的界面中显示,如果DIR下不使用持久化或者ISO情况下,不会出现某个硬盘分区不显示的状况
6.中文化
这一代不需要中文设置的原因是2.0的geexbox本身就相当于一个xmbc,而xmbc本身是支持中文,因此只需在xmbc界面下设置下即可
【使用方式】
1.启动菜单(grub4dos):
#直接从ISO启动,需要按照以下格式指名from参数
title GeeXboX 2.0 \n这是一个开源的影音播放工具界,2.0完全采用XBMC
map –mem (hd1,6)/SYSTEM/geexbox-2.0-i386.iso (0xff)
map –hook
root (0xff)
kernel /vmlinuz vga=789 quiet splash from=ISO:/dev/sda7:/SYSTEM/geexbox-2.0-i386.iso
initrd /initrd
boot
#从硬盘启动(目录),同样需要借助于from参数,这种方式下一般都使用persistent做持久化处理
title GeeXboX v2.0-disk-full \n做测试,不知道行不
root (hd1,4)
kernel /GEEXBOX/vmlinuz vga=789 quiet debug persistent splash from=DIR:/dev/sda5:GEEXBOX
initrd /GEEXBOX/initrd
boot
2.重新打包iso
a)下载修改过的initrd文件
http://115.com/file/e6ef8j86#initrd.zip
b)替换原版geexbox-2.0-i386.iso的initrd,像7z等解压工具都可以,然后重新打包,mkisofs -J -R -T -v -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../../geexbox-2.0-i386.iso .,这是linux下的参数,window下进行应该也可以
不足之处:
1)initrd没有压缩,体积稍大(有谁知道kernel-2.6.38.8对应的xz版本请告诉我,测试了4.999beta,5.0.0,5.0.1,5.0.2,5.0.3,5.1.1alpha都不行)
2)ISO启动方式没有提供数据持久化(主要是觉得没有必要)
原创文章,转载请注明: 转载自下雨天
http://rain.orgfree.com/2011/11/23/geexbox2-0%E7%A1%AC%E7%9B%98%E5%90%AF%E5%8A%A8%E6%94%AF%E6%8C%81ntfs%E5%92%8Ciso/
本文链接地址: geexbox2.0硬盘启动
此条目是由 tangfu 发表在 Linux、启动 分类目录的。
-------
这位完全是自己重新写了个GeexBox嘛,对linux太熟悉了
强!
另外 我把他那个4M的initrd用xz压缩了一下,只有1M了
无法加附件自己压缩吧 |
|