|
本帖最后由 jie_china 于 2018-9-21 17:58 编辑
问题的本质是linux没有类似Firadisk的玩意,不过下面这种取巧的方法,的确也能解决问题。
UDM对linux的支持
目标/效果:
和普通分区一样地启动,不需要UD版。
1:
linux也有个启动脚本,对应于PE的PECMD.INI
正常LINUX系统也有的。
该文件名为linuxrc 或 init, 取决于制作时选取的方式。
一般是明文一个脚本。
该文件存在于启动文件initrd(可压缩成initrd.gz initrd.xz)
initrd 和 主文件系统是独立的, 启动时是通过内存直接传递的。
这样在 linuxrc 或 init 可加载 主文件系统。
目前的CDLINUX 等便携式 LINUX 都是这样实现的,即在 linuxrc 或 init 中查找、选择、加载 主文件系统。
2:
在 linuxrc 或 init 的最开始调用 ./udm 即可加载 当前UDM文件系统。
需要先加载 devtmpfs :
mount -nt devtmpfs none /dev
调用 ./udm 调用 ./udm :
udmboot=`./udm 2>/dev/null`
如果不是普通分区模式,
会加载到/mnt/udmdev,设备为/dev/udmdev
输出返回 /dev/udmdev /mnt/udmdev
如果是普通分区模式
输出返回分区,如: /dev/sdb1
没有加载。
高级:
如果需要,可进一步分解出2部分
udmdev=`echo $udmboot | cut -d" " -f1`
udmroot=`echo $udmboot | cut -d" " -f2`
./udm 放initrd解开目录树的根下, 一起打包
find .| cpio -o -H newc > ../initrd
cd ..
gzip < initrd > initrd.gz
xz --check=crc32 --x86 -lzma2 < initrd >initrd.xz
高级:
udmdev 其实指明了当前优先加载的设备,即精确制导。
linuxrc 或 init 可以因此优化下,精确加载-----系统有多个本系统的拷贝时,
可以正确找到当前启动的Linux,而不会启动到其它拷贝。
3:
menu.lst 中
(77)/udmboot || set _=
这个加载UDM 传过来的 精确制导 参数, 用来 加载 UDM
启动linux的每行 kernel 最后都加上 %udmboot%
如:
kernel /porteus/vmlinuz norootcopy nomagic timezone=Asia/Shanghai volume=0% kmap=cn,us login=root %udmboot%
4:
实例Porteus.zip\linuxrc.tgz 实例Porteus.zip\menu.lst
Porteus-KDE-zh_CN-i486-20151113.iso
这个是把ISO完全解开到UDM分区, UDM分区就如普通分区一样。
如果ISO整体放在分区中 /xxx/Porteus-KDE-zh_CN-i486-20151113.iso
(77)/udmboot || set _=
title 启动 Porteus.iso
map /xxx/Porteus-KDE-zh_CN-i486-20151113.iso (hd32) && map --rehook
kernel (hd32)/porteus/vmlinuz from=/xxx/Porteus-KDE-zh_CN-i486-20151113.iso %udmboot%
initrd (hd32)/porteus/initrd.xz
|
评分
-
查看全部评分
|