- Распаковка boot img linux
- как распаковать boot.img?
- Распаковка boot img linux
- СТАТЬЯ ЕЩЕ СЫРАЯ
- Разблокировка бутлоадера
- Прошивка с помощью bootloader
- Отключение dm-verity и включение userdebug
- Всё, что написано ниже, неактуально, но может кому-то пригодиться
- Перепаковка boot.img
- Распаковка
- Упаковка initramfs
- Отключение verify для раздела system
- Получение root в adb
- Упаковка
- Перепаковка boot.img с помощью abootimg
- Перепаковка с подписью сертификатом
- Перепаковка system.img
- Howto — unpack,change,repack boot.img
- Breadcrumb
Распаковка boot img linux
/ramdisk# gzip -dc ../boot.img-ramdisk.gz | cpio -i
986 блок
[email protected]:
#
В папке ramdisk 18 объектов, всего 514,6 КБ
Где все остальное ?? где файлы ядра ?
Какие еще файлы ядра??
boot.img-kernel — это zImage-образ ядра. Если ты имеешь ввиду исходники ядра, то с образа их никак не получишь.
boot.img-ramdisk.gz — cpio/gz архив рамдиска с init.rc и прочей хренью. Его содержимое распаковано в папку ramdisk.
А больше ничего в буте и нету. То же самое касается и recovery.img
system.img (и userdata.img) — образ файловой системы в формате yaffs2. Распаковывается утилитой unyaffs под линухом. Ну или могу под винду утилиту подкинуть.
Ну что же, мысль здравая, если знаете что к чему.
1 Скачайте/найдите в интернете исходники для своего устройства. Если устройство htc, то developer.htc.com, если другое, ищите в интернете.
2 Ввнесите нужные изменения в файл arch/arm/mach-msm/acpuclock.c,
3 Скачайте к примеру NDK с андроидовского сайта (нужно для кросс-компиляции). Как я понял, у вас убунту. Тогда дальше все просто.
4 ARCH=arm CROSS_COMPILE=/путь_куда_установили_ndk/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- make zImage
5 mkbootimg —kernel arch/arm/boot/zImage —ramdisk ваш_рамдиск.gz —cmdline то_что_писало_когда_вы_извлекали_рамдиск -o boot.img
6 adb push boot.img /cache/ && adb shell flash_image boot /cache/boot.img
Нельзя ли поподробней с компиляцией ?
Вот эту строку которую вы указали, ка я понял надо вписывать в Makefile ? И вообщем у последнего NDK совсем другой путь папок ! Может дадите ссылку на ваш NDK ?
И еще можно ли делать компиляцию через arm-2007q3 как написано тут http://www.anddev.org/learning_porting_and. step-t3252.html .
Или через windows компиляцию сделать можно ?
Сообщение отредактировал bobjob — 17.02.11, 17:33
unyaffs под винду.
При распаковке:
— теряются owners, permissions и даты создания/изменения/доступа
— симлинки заменяются на файлы в фигурных скобках <>, внутри — путь куда указывает симлинк
Просто для извлечения данных этого вполне достаточно.
Написано на коленке в делфях.
Использование: unyaffs.exe файл.img
Cygwin не нужен.
Скачать: unyaffs.zip ( 12,23 КБ )
Источник
как распаковать boot.img?
Нужно распаковать boot.img т.к. там есть один нужный файлик. Как это сделать? Гугл выдал кучу разных скриптов и обёрток на тему вокруг zcat boot.img | cpio -i, но это не работает: gzip: ./boot.img: not in gzip format
С подобной ошибкой падают скрипты типа split_bootimg.pl . Что делать?
Распаковываю boot.img из cm-10.1-20130522-NIGHTLY-i9100.zip .
Может я туплю и там кроме ядра никакого initrd нет?
Спасибо, я читал эти доки. Не помогло :(. Я вот даже открываю образ в hex-редакторе и не вижу по смещению 2k (0x800?) никаких 1F 8B.
Тулзы из статьи типа split_bootimg.pl не работают. Возможно, поменялся формат файла, щас сверюсь с сырцами.
Запустить под соответствующим эмулятором, оно само себя распакует. Дальше снять дамп памяти, искать нужный файл по сигнатуре.
ArtKun , спасибо, вот этим распаковал: https://github.com/xiaolu/galaxys2_kernel_repack
Источник
Распаковка boot img linux
/ramdisk# gzip -dc ../boot.img-ramdisk.gz | cpio -i
986 блок
[email protected]:
#
В папке ramdisk 18 объектов, всего 514,6 КБ
Где все остальное ?? где файлы ядра ?
Какие еще файлы ядра??
boot.img-kernel — это zImage-образ ядра. Если ты имеешь ввиду исходники ядра, то с образа их никак не получишь.
boot.img-ramdisk.gz — cpio/gz архив рамдиска с init.rc и прочей хренью. Его содержимое распаковано в папку ramdisk.
А больше ничего в буте и нету. То же самое касается и recovery.img
system.img (и userdata.img) — образ файловой системы в формате yaffs2. Распаковывается утилитой unyaffs под линухом. Ну или могу под винду утилиту подкинуть.
Ну что же, мысль здравая, если знаете что к чему.
1 Скачайте/найдите в интернете исходники для своего устройства. Если устройство htc, то developer.htc.com, если другое, ищите в интернете.
2 Ввнесите нужные изменения в файл arch/arm/mach-msm/acpuclock.c,
3 Скачайте к примеру NDK с андроидовского сайта (нужно для кросс-компиляции). Как я понял, у вас убунту. Тогда дальше все просто.
4 ARCH=arm CROSS_COMPILE=/путь_куда_установили_ndk/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- make zImage
5 mkbootimg —kernel arch/arm/boot/zImage —ramdisk ваш_рамдиск.gz —cmdline то_что_писало_когда_вы_извлекали_рамдиск -o boot.img
6 adb push boot.img /cache/ && adb shell flash_image boot /cache/boot.img
Нельзя ли поподробней с компиляцией ?
Вот эту строку которую вы указали, ка я понял надо вписывать в Makefile ? И вообщем у последнего NDK совсем другой путь папок ! Может дадите ссылку на ваш NDK ?
И еще можно ли делать компиляцию через arm-2007q3 как написано тут http://www.anddev.org/learning_porting_and. step-t3252.html .
Или через windows компиляцию сделать можно ?
Сообщение отредактировал bobjob — 17.02.11, 17:33
unyaffs под винду.
При распаковке:
— теряются owners, permissions и даты создания/изменения/доступа
— симлинки заменяются на файлы в фигурных скобках <>, внутри — путь куда указывает симлинк
Просто для извлечения данных этого вполне достаточно.
Написано на коленке в делфях.
Использование: unyaffs.exe файл.img
Cygwin не нужен.
Скачать: unyaffs.zip ( 12,23 КБ )
Источник
СТАТЬЯ ЕЩЕ СЫРАЯ
Приемы, работы с образами описанные тут актуальны, однако, для получения root достаточно просто корректно собрать TWRP.
Я собирал его так: Сборка TWRP из исходников для любого аппарата
В данной статье я пытаюсь получить root для телефона Nomu S30 mini, на базе MTK6735.
Разблокировка бутлоадера
Для того, чтобы в телефон можно было заливать модифицированные образы нужно разблокировать бутлоадер.
ВНИМАНИЕ!! при разблокировке или блокировке бутлоадера пользовательские данные теряются.
Устанавливаем adb-tools
Включаем в Developer Options опцию USB Debugging.
В Developer Options включаем OEM Unlocking.
Включаем телефон и подключаем к компу. Телефон спросит — можно ли использовать с этим компьютером USB Debug — отвечаем Yes.
Теперь перезагружаем телефон в режим бутлоадера. Для этого при подключенном к компу телефоне (включенном) выполняем
Либо выключаем телефон, зажимаем Vol+ и PowerButton. Появится меню, в котором кнопкой Vol+ нужно выбрать fastboot и нажать Vol-.
После того, как на телефоне появится надпись FASTBOOT MODE на компе выполняем:
В результате компьютер скажет:
То есть теперь бутлоадер разлочен и мы можем прошивать новые прошивки через него.
Прошивка с помощью bootloader
Перезагружаем телефон в режим бутлоадера (fastboot):
Например, для того, чтобы прошить flash-блок system (в котором лежит собственно android) — подключаем аппарат к компу и выполняем:
Эта команда прошьет блок с названием system файлом-образом system.img из текущего каталога. Аналогично прошиваются recovery и boot:
Или перезагружаем его в recovery
Отключение dm-verity и включение userdebug
Для того, чтобы можно было загружать модицицированный system.img, нужно отключить проверку образа dm-verity. Это делается путем редактирования образа boot.img. Распаковываем boot.img с помощью AIK-Linux:
Из распакованного ramdisk удаляем файл verity_key
В файле ./ramdisk/fstab.mt6735 отключаем verify:
В файле ./ramdisk/default.prop меняем значение параметра ro.secure=1 на 0, меняем ro.debuggable=0 на 1 и добавляем строку ro.config.dmverity=false:
И прошиваем в телефон:
Всё, что написано ниже, неактуально, но может кому-то пригодиться
Перепаковка boot.img
Распаковка
В результате в папке ./boot будут файлики. И среди них два:
Чтобы распаковать ram-диск делаем так:
Упаковка initramfs
Отключение verify для раздела system
Получение root в adb
В файлике default.prop нужно сделать так:
Упаковка
Выполняется как-то так:
Перепаковка boot.img с помощью abootimg
boot.img перепакованый таким образом нормально загружается, (даже не подписаный сертификатом) только в том случае, если не вносились изменения (не перепаковывался) initrd.img. Это значит, что secureboot проверяет initrd.img.
Команда abootimg-unpack-initrd распакует файл initrd.img из текущей директории в папку ramdisk. После внесения изменений в файлы можно упаковать все обратно.
Команда abootimg-pack-initrd упакует содержимое папки ramdisk в файл ./initrd.img
Теперь можно всё собрать обратно в newboot.img.
Перепаковка с подписью сертификатом
В сертификате указывал такие данные: C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com
Подписанный (но не измененный) boot.img НЕ загружается.
Перепаковка system.img
При внедрении в образ system.img файлов SuperSU нужно прописать их в SELinux. База данных SELinux хранится в образе boot.img, в файлике file_contexts.bin. После извлечения, файл file_contexts.bin нужно распаковать для внесения в него изменений с помощью утилиты sefcontext, а затем запаковать обратно и пересобрать образ boot.img.
Образ system.img нужно распаковать с помощью img-tools, смонтировать образ и добавить в него файлы SuperSU, а затем запаковать его обратно.
Итак.
В отдельную папку (меня это пака
Источник
Howto — unpack,change,repack boot.img
Breadcrumb
Member
I included compiled tools mkbootfs , mkbootimg and perl scripts unpack-bootimg.pl and repack-bootimg.pl.
Repack-bootimg.pl is edited and the needed parameters for our folio are included ([email protected] [email protected] vmalloc=192M video=tegrafb console=ttyS0,115200n8 usbcore.old_scheme_first=1 tegraboot=sdmmc tegrapart=recovery:122000:a00:800,linux:a0e00:1000:800,loader:300:400:800,mbr:700:200:800,system:900:20000:800,cache:20900:80000:800,misc:a0900:400:800,userdata:a1f00:80000:800 boardtype=PR)
1) unpack attachement mytools.tgz into your home, in your home the folder
/mytools is created:
tar -xzf mytools.tgz
2) copy existing boot.img into
/mytools (from foliomod update.zip)
3) ./unpack-bootimg.pl boot.img
— old kernel from boot.img is extracted: boot.img-kernel.gz
— content of contained ramdisk is extracted in folder: boot-img.ramdisk
4) copy new compiled kernel (zImage) into
/mytools (from /kernel/arch/arm/boot/zImage , you have to compile yourself with the weeds2000 quide http://forum.xda-developers.com/showthread.php?p=10331797#post10331797)
5) make all desired changes into ramdisk folder
6) repack new boot.img with a new kernel and changed ramdisk
./repack-bootimg.pl zImage boot.img-ramdisk boot-new.img
7) new boot image is created as boot-new.img
8) if you want just to experiment, you can take any full foliomod dexter’s update.zip (1.3d), put the new boot image inside instead original one.
It is possible to remove the other 2 images (recovery and system) if you want just to flash kernel. NOTE! But you have to remove the extrating command for recovery and system from update.zip/meta-inf/com/google/android/update-script.
p.s. Feel free to correct me, if something wrong with the steps. It’s my first attempt to compile kernel
I am on FolioMod 1.3d and I use the kernel built without patches from http://tegramid.com/wiki/Main_Page(Full GPL source bundle including framework) for a day without problems. I had to do a full wipe. It’s meant for testing, I don’t say that kernel from source is better or worse.
Many thanks to Dexter because everything is based on his release, weeds2000 because of his kernel compile quide and tsh who placed the sources on the git and to all who try hacking our folio
Источник