这个问题包含两部分,新的在第29行。
我使用cygwin cpio命令来创建ramdisk,但是我发现它不能在android中使用,因为文件树是E:/xx/xx,我需要ramdisk的内容是xx。
set "bin=E:\cygwin64\bin"
set "PATH=E:"
"%bin%"\find "%PATH%"\ramdisk -depth -print0 | "%bin%"\cpio --null -ov >e:\ramdisknew
当我使用cpio -t时,输出是这样的。
E:\ramdisk/acct
E:\ramdisk/bugreports
E:\ramdisk/cache
E:\ramdisk/charger
E:\ramdisk/config
E:\ramdisk/d
E:\ramdisk/data
我需要像这样的-t putput。
"E:\cygwin64\bin"\cpio -t "E:"\ramdisk0
acct
bugreports
cache
charger
config
d
我发现在windows中,文件或dirctory Owner是1000而不是root,也许这就是问题所在。
所以我换了Fedora 31。
原文件ramdisk0属性Kind=CPIO存档。
使用cpio -idv < ramdisk0然后-ov到ramdisknew.Replace origin ramdisk0运行android。
它DONT工作。
我发现两个问题
1.输出顺序变成反向不[acct bugreports cache d]。
selinux_version
sepolicy
init.environ.rc
init.zygote32.rc
etc
config
2.ramdisknew的十六进制内容与ramdisk0不同原版ramdisk0包含了大量的 "07070100049...",但ramdisknew却没有。
[070701000493e0000041ed000000000000000000000001000000000000000000000000000000000000000000000000000000000000000500000000acct]
但在ramdisknew中的格式是[...嚆矢^Gð...acct] 。
原点硬盘十六进制[部分]
...
30 30 00 00 30 37 30 37 30 31 30 30 30 34 39 33 | 00..070701000493
65 31 30 30 30 30 61 31 61 34 30 30 30 30 30 30 | e10000a1a4000000
30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 | 0000000000000000
30 31 30 30 30 30 30 30 30 30 30 30 30 30 30 30 | 0100000000000000
33 32 30 30 30 30 30 30 30 30 30 30 30 30 30 30 | 3200000000000000
30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 | 0000000000000000
30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 | 000000000b000000
30 30 62 75 67 72 65 70 6F 72 74 73 00 00 00 00 | 00bugreports....
2F 64 61 74 61 2F 75 73 65 72 5F 64 65 2F 30 2F | /data/user_de/0/com
...
新的ramdisknew六合资料大全[部分]。
D5 5E 47 F0 0B 00 00 00 32 00 62 75 67 72 65 70 | Õ^Gð....2. bugrep
6F 72 74 73 00 00 2F 64 61 74 61 2F 75 73 65 72 | orts../data/user_de/0/com
如何解决这个问题?
我相信类似这样的东西可能会有用。
pushd "%PATH%"\ramdisk
"%bin%"\find . -depth -printf "%P\0" | "%bin%"\cpio --null -ov >e:\ramdisknew
popd
Cpio在这里显然存储了Find传递的完整路径。 这个 pushd
和 popd
命令将工作目录临时改变为文件存储的地方。 该 find
命令被修改为查找当前目录(但这一改变并不是严格意义上的必要),并且只打印相对路径(相对路径中的 %P
);保留空字符分隔符(在此保留了 \0
部分)。)