use*_*251 39 boot android persistence
我想更改init.rc
android pad 的文件.但是在我更改它并重新启动系统之后,原始版本init.rc
又回来了.
如何在init.rc
不重建系统的情况下对持久性进行更改(因为我没有系统的源代码)?或者有什么方法可以解决?
小智 13
在主机PC(Linux)中使用以下命令解压缩uramdisk
mkdir /tmp/initrc cd /tmp/initrd
sudo mount /dev/sdb1 /mnt
Run Code Online (Sandbox Code Playgroud)
sdb1
是uramdisk/uInitrd
居住的分区.
dd bs=1 skip=64 if=/mnt/uInitrd of=initrd.gz
gunzip initrd.gz
Run Code Online (Sandbox Code Playgroud)
此时运行命令file initrd
应该显示:
mkdir fs
cd fs
cpio -id < ../initrd
Run Code Online (Sandbox Code Playgroud)
进行更改 init.rc
使用以下命令打包uramdisk:
find ./ | cpio -H newc -o > ../newinitrd
cd ..
gzip newinitrd
mkimage -A arm -O linux -C gzip -T ramdisk -n "My Android Ramdisk Image" -d newinitrd.gz uInitrd-new
Run Code Online (Sandbox Code Playgroud)
pat*_*yts 10
许多Android设备都包含防止对系统文件进行根修改的代码.这样做的方法是使用恢复分区.在重新启动时,它们基本上使用恢复映像还原系统分区.如果您的系统正在执行此操作,那么您无法进行持久更改 - 您可以做的最好的事情就是在重新启动后连接某些内容以重新应用您的更改.在CyanogenMod中,如果找到,他们在init.rc中有钩子来运行sdcard脚本.也许你可以创建一个应用程序或小部件,然后启动一个脚本,使用数据分区中的setuid根脚本来生成所需的mod.如果不构建自己的ROM,那么这个领域就非常受限制了.
可能您可以获取恢复映像并尝试解压缩,进行更改并重新打包并闪烁.但在尝试此操作之前,请确保您可以使用fastboot进行恢复.
小智 10
试试这个网站: http ://bootloader.wikidot.com/linux:boot:android阅读底部的部分:•Android启动映像:boot.img◦解压缩,重新启动启动映像:http:// android- dls.com/wiki/index.php?title=HOWTO:_Unpack%2C_Edit%2C_and_Re-Pack_Boot_Images#Background
当android系统启动时,uboot会将启动分区中名为"uRamdisk"的特殊压缩文件包解压缩到RAM,并将这些文件定义为包含系统的根目录.uRamdisk通常包含一堆目录(系统,数据,媒体等),它们作为包含其中文件的分区的挂载点,但也有一些对您的系统至关重要的非常基本的文件,包括init二进制文件和启动像init.rc这样的脚本.
当你编辑init.rc时,你实际上只是编辑了驻留在你RAM中的init.rc的解压缩副本.要真正改变它,你必须复制你的uRamdisk,解压缩,从那里编辑init.rc,重新打包uRamdisk然后用/ boot中的旧的替换它.
尝试查找'xuramdisk'和'mkuramdisk'脚本,这些过程非常简单.
归档时间: |
|
查看次数: |
69677 次 |
最近记录: |