jie_china 发表于 2018-9-17 17:18:22

linux下访问仿真内存的方法 from mdyblog

本帖最后由 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

jie_china 发表于 2018-9-17 17:19:36

udmboot=`./udm`
udmdev=`echo $udmboot |cut -d" " -f1`
udmroot=`echo $udmboot | cut -d" " -f2`

PTH=/ud/porteus
LPTH=porteus
echo $i"""using data from $PTH"""

# Make all drivers available:
mount -o loop -t squashfs $PTH/base/000-kernel.xzm /opt/000-kernel 2>/dev/null
mount -o bind /opt/000-kernel/lib/modules /lib/modules 2>/dev/null

# Create symlinks used often by porteus scripts:
ln -sf $PTH/modules/porteus/modules
ln -sf $PTH/optional /porteus/optional

jie_china 发表于 2018-9-21 18:06:38

wintoflash 发表于 2018-9-18 10:45
其实是有的。
来源:https://www.syslinux.org/wiki/index.php?title=MEMDISK
memdiskfind and kernel...

多谢大神,我试试

jie_china 发表于 2018-10-11 19:55:25

本帖最后由 jie_china 于 2018-10-11 20:04 编辑

[原创] 基于e2b的iso文件硬盘整体启动
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=378314

[分享] easy2boot最新版2016-05【iso强迫症 ntfs的优盘uefi启动】
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=378247

[教程] [原创]Easy2Boot 1.90版的启动U盘的制作与使用
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=386566

Easy2Boot多系统U盘移动硬盘启动制作工具1.85绿色版
http://www.upantool.com/qidong/hdd/9821.html

Easy2Boot多系统U盘安装工具: Windows 7/8/8.1; Linux -MBR/UEFI通杀
http://bbs.pcbeta.com/viewthread-1508659-1-1.html

jie_china 发表于 2018-10-11 23:47:28

CDlinux 9.8b5 从PXE启动,及UD启动进入图形界面 2013.07.07更新
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=210496

jie_china 发表于 2018-10-13 11:19:02

title load ubuntu 16.04.1 iso image
find --set-root --ignore-floppies --ignore-cd /iso/ubuntu-16.04.1-desktop-amd64.iso
map /iso/ubuntu-16.04.1-desktop-amd64.iso (hd32)
map --hook
kernel (hd32)/casper/vmlinuz.efi boot=casper iso-scan/filename=/iso/ubuntu-16.04.1-desktop-amd64.iso noprompt noeject
initrd (hd32)/casper/initrd.lz
页: [1]
查看完整版本: linux下访问仿真内存的方法 from mdyblog