标签归档:ISO启动

geexbox从iso文件启动的自动化改造

有朋友需要指定uuid的支持,弄来弄去也挺麻烦的,干脆一劳永逸搞个脚本

[用法]
./diy_geexbox.sh 官方geexbox的iso文件
生成以”原文件名_new.iso”的新iso文件

[处理逻辑]
1.创建目录结构,解原始iso
2.解initrd,更新修改
3.重新封包

[修改点]
1.重新编译busybox替代geexbox中的,添加了findfs的applet
2.修改init初始化脚本,添加from参数的支持
注:3.0的版本内置了ntfs-3g,因此不需要单独添加

[与以往不同]
以前仅仅支持/dev/sda5这种真实设备名的指定,现在支持指定标签和uuid。
探测逻辑是: 设备名 > 磁盘标签 > uuid

from参数的示例:
1.设备名方式
from=ISO:/dev/sda7:/SYSTEM/geexbox-3.0-x86_64.iso
2.磁盘标签方式
from=ISO:HOME-LINUX:/SYSTEM/geexbox-3.0-x86_64.iso
3.uuid方式
from=ISO:9fa15ff6-991e-40b9-8fbd-b8ecdb3b9485:/SYSTEM/geexbox-3.0-x86_64.iso

以前的文章:
http://www.rainhome.org/geexbox3-0-直接从iso启动
http://www.rainhome.org/geexbox2-0硬盘启动支持ntfs和iso

工具下载地址:
https://github.com/tangfu/geexbox-diy

geexbox3.0 直接从iso启动

geexbox3.0出来了,重新修改了脚本,现在ISO启动的情况下也支持PERSISTENT持久化参数,注意不能和external-persistent一起使用,
initrd地址initrd-3.0

geexbox3.0中
启动参数中带这两项,才能使用持久话
persistent=/dev/sd7:/geexbox/casper-data

FROM_DIR默认还是geexbox所在目录的casper-rw文件
FROM_ISO使用的则是persistent中指定的持久化文件

使用:

其他的细节详见geexbox2.0 硬盘启动支持ntfs和iso

zeroshell从硬盘iso启动

【分析】

经检验zeroshell的1.0所有beta版本内核和initrd均未改变但zeroshell的kernel2.6.25.20没有编译ntfs选项,因此需要编译出ntfs.ko模块,同时修改initrd.gz中的linuxrc启动脚本(initrd中的linuxrc默认不接受内核参数)

【处理】

1.修改linuxrc

给linuxrc添加ISO选项,使用方法 ISO=/dev/hdb7:SYSTEM/zeroshell.isolinuxrc中自动插入ntfs.ko模块,探测ISO选项中所指定的设备以及其上的iso文件zeroshell的kernel识别SATA硬盘通常是hdx而非sdx

2.重新打包iso

zeroshell 1.0 beta16的iso解压出来有300M,而iso仅有180M左右,实际上iso的制造前首先用mkzftree进行了压缩(isolinux下的文件不要压缩,这些是启动器和内核等文件)

mkisofs -R -z -T -v -hide-rr-moved -no-bak -V CDROM -no-iso-translate -jcharset=utf8 -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../../zeroshell.iso .

【grub4dos的引导菜单】

修改的initrd.gz下载地址
http://115.com/file/e6e5q53f#initrd.gz