init.rc
안드로이드 패드 파일을 변경하고 싶습니다. 하지만 시스템을 변경하고 시스템을 재부팅하면 원래 init.rc
이 다시 나타납니다.init.rc에 영구 변경을하십시오.
init.rc
을 시스템을 재구성하지 않고 어떻게 영구적으로 변경할 수 있습니까 (시스템의 소스 코드가 없으므로). 아니면 해결할 방법이 있습니까?
init.rc
안드로이드 패드 파일을 변경하고 싶습니다. 하지만 시스템을 변경하고 시스템을 재부팅하면 원래 init.rc
이 다시 나타납니다.init.rc에 영구 변경을하십시오.
init.rc
을 시스템을 재구성하지 않고 어떻게 영구적으로 변경할 수 있습니까 (시스템의 소스 코드가 없으므로). 아니면 해결할 방법이 있습니까?
Android 패드 파일 시스템을 만들기 전에 init.rc
을 수정/변경해야합니다. 이것은 선호되는 방법이며 항상 효과가 있습니다.
패드 시스템의 소스 코드가 없습니다. 어떻게 구축 할 수 있습니까? 시스템을 재 구축하지 않고도이 문제를 해결할 수있는 방법이 있습니까? – user1278251
많은 Android 장치에는 시스템 파일에 대한 루트 수정을 방지하는 코드가 포함되어 있습니다. 이것이 완료되는 방법은 복구 파티션을 사용하는 것입니다. 다시 부팅하면 기본적으로 복구 이미지를 사용하여 시스템 파티션이 복원됩니다. 시스템이이를 수행하고 있다면 지속적인 변경을 할 수 없습니다. 재부팅 한 후에 변경 사항을 다시 적용하기 위해 무언가를 실행하는 것이 가장 좋습니다. CyanogenMod에서는 init.rc에 sdcard 스크립트가있는 경우 실행하도록 후크가 있습니다. 아마도 app이나 위젯을 만들어 스크립트를 실행하여 데이터 파티션의 setuid 루트 스크립트를 사용하여 mod를 만들 수 있습니다. 자신의 ROM을 만들지 않고는이 영역에서 매우 제한적입니다.
아마도 복구 이미지를 가져 와서 압축을 풀어 변경하고 다시 꾸미고 깜박일 수 있습니다. 그러나 이것을 시도하기 전에 fastboot로 복구 할 수 있는지 확인하십시오. 안드로이드 부팅 이미지 • : http://bootloader.wikidot.com/linux:boot:android 가 맨 아래에있는 섹션을 읽어 : boot.img를 ◦Unpack, 다시 팩 부트 이미지 : http://android-dls.com/wiki/index.php?title=HOWTO:_Unpack%2C_Edit%2C_and_Re-Pack_Boot_Images#Background
정보를 제공해 주셔서 감사합니다. 복구 파티션 방법이이 두 패드에 사용 된 것 같습니다. 후크 방법은 init.rc로하고 싶은데, 시스템 부팅 중에 제어 할 수 있습니다. 그러나 복구로 인해 복구가 불가능합니다. 복구 이미지가있는 경우 그 위치는 어디입니까? 어떻게 찾았습니까? – user1278251
복구 이미지를 얻는 한 가지 방법 인 nandroid를 사용하여 백업 할 수 있다면. 그렇지 않으면 dd를 사용하여 복구 파티션을 파일에 복사 할 수 있습니다. 복구 파티션 이미지가 있으면 unyaff를 사용하여 압축을 해제 할 수 있어야합니다. 안드로이드 소스가 파일 트리에서 어떻게 리메이크하는지 알아 내기 위해 안드로이드 소스가 이것을 만드는 방법을 조사해야한다. – patthoyts
힌트로 시도한 : http : //android-dls.com/wiki/index.php? title = HOWTO : _Unpack % 2C_Edit % 2C_and_Re-Pack_Boot_Images. 그러나 "cat/dev/mtd/mtd1> mtd1.img"를 통한 복구 img는 "broken image file"오류가있는 unyaffs에 의해 열리지 못했습니다. 어떠한 제안? 감사! – user1278251
이 사이트를보십시오 'uRamdisk'라는 부트 파티션에있는 파일의 압축 된 특수 공을 RAM에 압축을 풀고 시스템의 루트 디렉토리를 구성하도록 파일을 정의합니다. uRamdisk에는 일반적으로 들어있는 파일을 포함하는 파티션에 대한 마운트 포인트 역할을하는 디렉토리 (시스템, 데이터, 미디어 등)가 많이 들어 있지만 init 바이너리 및 시작과 같은 시스템에 중요한 매우 기본적인 파일도 있습니다 init.rc.과 같은 스크립트
init.rc를 편집하면 실제로는 RAM에있는 init.rc의 패키지되지 않은 복사본을 편집했을뿐입니다. 정말로 변경하려면 uRamdisk를 복사하여 압축을 풀고 거기에서 init.rc를 편집하고 uRamdisk를 다시 꾸며 넣은 다음 새 것으로 바꾼 후/boot에있는 것으로 교체해야합니다.
'xuramdisk'및 'mkuramdisk'스크립트를 검색하면 이러한 작업이 매우 간단 해집니다. partion을 uramdisk/uInitrd
상주는
안드로이드 시스템이 부팅 uboot
호스트 PC (리눅스)
mkdir /tmp/initrc cd /tmp/initrd
sudo mount /dev/sdb1 /mnt
sdb1
에서 다음 명령을 사용하여 uramdisk을 풀고있다.명령 file initrd
을 실행하는이 시점에서
dd bs=1 skip=64 if=/mnt/uInitrd of=initrd.gz
gunzip initrd.gz
는 표시해야합니다 :
mkdir fs
cd fs
cpio -id < ../initrd
이 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
/dev/sdb1이 uramdisk/uInitrd에 있다는 것을 어떻게 알 수 있습니까? 전화를 연결할 때/dev/sdb 밑에 만 sdcard를 볼 수 있습니다. uramdisk를 검색하려면 어떻게해야합니까? – melopsitaco
/dev/sdb1이 내 장치에 존재하지 않습니다. 부팅 이미지가있는 올바른 블록 장치를 결정하는 방법을 논의해야 할 수도 있습니다. –
Android 기기에 따라 다릅니다. 장치가 루팅 된 경우 마운트 된 파일 시스템 목록을 보려면 "adb 쉘 마운트"를 실행하십시오. 이것은 당신에게 어디서 볼지에 관해 좋은 힌트를 줄 것입니다. –
나도 몰라 당신이 아직이 일을하려고하지만 당신을 모른 채 정확한 장치는 아무도 정확한 답을 줄 수 없습니다.
모든 내부 파티션 중 dd image
을 복용하고 xda 포럼에 android kitchen에 포함 된 스크립트를 사용하십시오. 복구 파티션과 부팅 파티션에 모두 램 디스크가 있지만 복구 모드에있는 변경 사항 만 원하는 경우가 아니면 boot.img
에있는 init.rc
을 복구하지 않을 가능성이 있습니다.
unyaffs는 모든 장치에 적용되는 것은 아니며 대부분의 장치에는 다른 파티션 레이아웃이 있으므로 어느 것이 부팅인지 그리고 어떤 유형의 fs인지 파악해야합니다. 어쩌면 당신이 당신의 장치 사양을 주면 더 나은 대답을 얻을 수 있습니다.
루트 파티션 (/init.rc가있는 위치)은 initrd 파일에서 압축을 풀고 장치가 부팅 될 때마다 마운트되는 램 디스크입니다. 변경 한 내용은 램 디스크에만 적용되며 다음 재부팅시 없어집니다.
initrd 파일을 얻을 수 있다면 Linux 호스트 시스템에 마운트하고, 거기에서 파일을 수정하고, 마운트 해제하고, Android에 다시 쓸 수 있습니다.
initrd 파일은 장치의 자체 파티션에 있습니다. 어떤 파티션인지 파악할 수 있다면 장치에서 호스트로 가져 와서 마운트하고 수정 한 다음 장치에 다시 쓸 수 있습니다. 이것은 tripler가 위에서 말한 것입니다.
일반적으로 boot.img 수정은 시스템 개발자 만 수행 할 수 있습니다. Android 시스템 전체를 구축하는 경우 필요한 소스 코드에 액세스 할 수 있습니다. 이에 대한 나의 워크 플로우는 다음과 같습니다
# Modify init.rc
m -j8 bootimage_signed
adb reboot bootloader
fastboot flash boot $OUT/boot.img
fastboot reboot
sdcard (ln -s /sdcard/init.rc init.rc)에서 init.rc에 대한 정적 링크를 만들려고 했으므로 init.rc 로의 변경이 쉬울 것이지만 작동하지 않았습니다. 어떤 생각? – ransh
"정적 링크"는 하드 링크를 의미합니까? 파일 시스템을 가로 질러 만들 수 없으므로 램 디스크의 다른 파일에 링크되어 있어야합니다. 다시 한 번 다음 재부팅시이를 유실합니다. 심볼릭 링크를 만들었다면 필자는 그것이 필요할 때 아직 마운트되지 않았을 수도있는 다른 파일 시스템에 있다고 가정합니다. 어쨌든, 나는 이것이 효과가 있다고 생각하지 않는다. 어떤 방법 으로든 init.rd 이미지를 수정해야합니다. –
@Edward 그는 소스 코드에 액세스 할 수 없습니다. –
가이 파일을 수정보다 부팅시 스크립트를 실행 스크립터와 같은 응용 프로그램을 사용하는 것이 더 쉬울 수도 있습니다.
이dd if=/dev/block/platform/<someplatform>/by-name/boot of=/sdcard/boot.img
그런 다음 컴퓨터에 안드로이드를 연결하고 복사
당신이 (루트없이 검증되지 않은 실행할 뿌리 안드로이드 장치)에 의해 추출 할 수boot.img
라는 파일이 필요 이상으로 체배기의 지침 @ 다음 전 거기에서 파일
boot.img
.
는 스크립트 : 여기 http://linuxclues.blogspot.ca/2012/11/split-bootimg-python-android.html
가 체배기의 지시 버전을보고, 쉽게 수정 (boot.img
는 TMP에 가정) :
cd /tmp
mkdir fs
# Now use the linked script above to split the boot.img file into ramdisk.gz and kernel
python split_boot_img.py -i boot.img -o parts
cd fs
gunzip -c ../parts/ramdisk.gz | cpio -id
# make changes to init.rc
그 시점에서 다시 빌드해야합니다 다시 구체화하기 전에 다시 boot.img
을 함께 사용하십시오. 이는 장치마다 다릅니다. 그걸로 너를 도울 수 없어, 미안해!
어떻게 init.rc를 변경 했습니까 ?? 파일을 ADB로 당겨서 ?? 그리고 장치에 밀고 ?? –
예, adb를 밀고 당겨 – user1278251
은 루트 권한이있는 장치입니까 ?? –