- Ramdisk img android для чего
- Создаем прошивку для Android своими руками. Работа с рамдиском.
- Как легко распаковать и перепаковать файлы boot и ramdisk
- Скрипты для распаковки и перепаковки файла boot.img
- Команды, которые вы должны знать
- Совместимость с Windows: что нужно знать
- Как использовать распаковку и перепаковать загрузку и распаковку файла ramdisk
- Препарирование Android, или получаем на планшете полноценный Linux
- Патчим прошивку Android за 5 минут
- Задача
- Необходимые инструменты
- Решение
- 1. Извлекаем с устройства загрузочный образ
- 2. Затем загрузочный образ нужно разобрать
- 3. Патчим
- 4. Заменяем загрузочный образ на устройстве
- Итоги
Ramdisk img android для чего
/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 КБ )
Источник
Создаем прошивку для Android своими руками. Работа с рамдиском.
Работаем с рамдиском (для ядер с initrd).
Статья написана на примере работы с образом ramdisk от таблетки Flytouch 2.
Сам рамдиск представляет из себя архив gz внутри которго содержится архив cpio расположенный в образе изготовленном средствами mkimage. Посмотрим на образ внимательнее.
Эта информация нам понадобится в дальнейшем при создании собственного рамдиска.
/droid/installer$ mkimage -l ramdisk.img
Image Name: hRamdisk
Created: Sun Apr 24 16:28:14 2011
Image Type: ARM Linux RAMDisk Image (uncompressed)
Data Size: 1485551 Bytes = 1450.73 kB = 1.42 MB
Load Address: 0x41000000
Entry Point: 0x41000000
Ок, теперь будем распаковывать рамдиск для его просмотра и\или модификации. Находим т.н. magic (1f8b08) для gz в образе, притом только первое вхождение.
/droid/installer$ grep -P -a -b -m 1 —only-matching ‘\x1F\x8B\x08’ ramdisk.img | cut -f 1 -d :
64
Теперь имея позицию начала gzip-а вытаскиваем его из образа (читать блоками по 64 байта, порпустив первый блок — bs=64 skip=1).
/droid/installer$ dd if=ramdisk.img bs=64 skip=1 of=ramdisk.cpio.gz
23211+1 записей считано
23211+1 записей написано
скопирован 1485551 байт (1,5 MB), 0,0738819 c, 20,1 MB/c
Далее с полученным файлом ramdisk.cpio.gz можно работать как с обычным архивом, однако нам нужно сохранить все права доступа на файлы извлеченные из этого архива. Распаковать можно например так:
/droid/installer$ gzip -dc ramdisk.cpio.gz | cpio -id
6963 блоков
Теперь о запаковке рамдиска. Мы имеем распакованный рамдиск. Если мы внесли в него нужные нам правки, то его необходимо правильно собрать. Для этого удалим старый рамдиск и архив ramdisk.cpio.gz из этой папки.
/droid/installer$ rm -f ramdisk.cpio.gz ramdisk.img
Далее создадим архив cpio.
/droid/installer$ find ./ | cpio -H newc -o > ../ramdisk.cpio
6963 блоков
И заархивируем его в gzip.
/droid/installer$ cd ..
barsuk@droidtest:
/droid$ gzip ramdisk.cpio
Теперь нам осталось создать образ рамдиска в mkimage. Адрес загрузки и точку входа возьмем из вывода mkimage -l, который мы делали в начале статьи.
Источник
Как легко распаковать и перепаковать файлы boot и ramdisk
Учитывая, что модификация прошивки такая же старая, как и сама ОС Android, попасть в игру для новичков может быть довольно сложно. Например, для прошивки определенных пользовательских ПЗУ требуется несколько шагов, таких как извлечение официального загрузочного образа и его прошивка на устройстве перед окончательным завершением процесса и прошивка файлов пользовательских ПЗУ вместе с ним.
Хотя в некоторые руководства вы найдете в Интернете включенные файлы boot.img, в других случаях вам может потребоваться самостоятельно изменить загрузочный образ, а затем переупаковать его. Поскольку операционная система Android для мобильных телефонов является производной от Linux, единственный способ сделать это — использовать платформу на основе Linux или эмулировать ее на вашем ПК с Windows.
Скрипты для распаковки и перепаковки файла boot.img
Пользователь XDA CNexus просеянных через Интернет, чтобы найти и составить список инструментов для распаковки и переупаковки файла образа загрузки, все из которых можно загрузить, используя ссылку, приведенную ниже.
Команды, которые вы должны знать
- boot_info Файл, включенный в пакет, позволяет вам получить базовый адрес и адрес виртуального диска файла boot.img, который вам позже понадобится для повторной упаковки.
- split_boot (split_bootimg.pl) помогает извлечь ramdisk и zImage из файла boot.img в отдельную папку.
- unpack_ramdisk позволяет распаковать файл ramdisk с помощью следующей команды:
Использование: unpack_ramdisk - repack_ramdisk функция позволит вам перепаковать файл ramdisk из заданного каталога, используя следующую команду:
Использование: repack_ramdisk [outputFile] - mkbootimg Команда поможет вам создать новый файл boot.img из имеющихся у вас файлов ramdisk и zImage (полезно для создания измененных файлов boot.img).
- umkbootimg делает прямо противоположное и разделяет ядро и загрузочный образ.
- распаковать просто распакует файл boot.img в один каталог, а виртуальный диск в отдельный каталог для удобства.
Совместимость с Windows: что нужно знать
- Если у вас нет запущенной операционной системы Linux, вы можете эмулировать ее на своем ПК с Windows, используя это официальное руководство.
- Инструмент был протестирован для работы с Debian, но не подтвержден для работы с Cygwin.
- Все сценарии в файле .ZIP должны быть сохранены в папке на пути к системе Linux, в которой вы работаете, чтобы они могли быть обнаружены (пример:
Как использовать распаковку и перепаковать загрузку и распаковку файла ramdisk
Что ж, нам нужно использовать файл split_boot, поскольку он содержит сценарий, чтобы сначала распаковать файл boot.img, получить из него файл ramdisk, а затем извлечь файл ramdisk.
- Скачать инструмент загрузки из здесь.
- Сейчас, извлекать его в отдельную папку, чтобы получить эти файлы.
- Теперь предоставьте этим файлам необходимые разрешения. Итак, запустите команду ниже в папке, где у вас есть все файлы.
Как это было? Удалось ли вам легко пользоваться инструментами?
Источник
Препарирование Android, или получаем на планшете полноценный Linux
Загорелся идеей приобрести себе недорогую планшетку на Андроиде. Заказал с Китая Zenithink Z102. Пока жду ее прихода решил посмотреть что-же из себя представляет эта ОСь.
Поставил на свою Fedoru VmWare Player, скачал дистрибутив для x86, запустил — понял, что работать на этом Ведроиде нереально. А хотелось бы чтобы все как у людей: консоль, удобное рабочее окружение и остальные плюшки.
После вдумчивого курения форума 4PDA, были найдены решения:
— установка на рабочий Андроид дополнительного окружения Debian или Ubuntu и подключение к удаленному рабочему столу. 4PDA.RU, Linux Installer;
— установка Debian (Ubuntu, Fedora), заточенного под ARM с нуля. Тот же 4PDA, Установка Fedora;
— ждать когда KDE допилят свою оболочку до приемлего уровня Планшет с KDE;
— пилить Android самому до рабочего состояния.
Первые два варианта не устаивают, так как проблеммы с драйверами и сильными тормозами делают работу невозможными. Третий вариант только на стадии проработки, пока планшетка не приедет.
Итак, выбрал вариант номер 4 — пилить самому.
Для начала поковыряв гугль и прочитав статью Переселение души: linux на android планшете, понял что надо копать в сторону запуска сервисов с помощью INIT.
Эта процедура выполняется при загрузке системы и описывается в файле init.rc, который запакован в ramdisk.img.
Для того чтобы начать препарирование скачиваем подходящий дистрибутив Android_x86 Android x86 (У меня завелся от Lenovo Ideapad S10-3T ).
Устанавливаем систему в VMWare Player, осматриваемся и расстроившись даем команду PowerOff в плэере.
Далее идем в настройки виртуальной системы и монтируем ее образ через Utilites. Заходим в смонтированный каталог и копируем оттуда файл ramdisk.img.
Ramdisk.img представляет собой cpio-архив, впоследствии сжатый GZip. Для извлечения переименовываем ramdisk.img в ramdisk.gz и распаковываем gunzip ramdisk.gz, получаем архив дерева каталогов который извлекаем с помощью ARK или cpio -i -F ramdisk (положить в отдельный каталог так как разворачивает в текущий).
Смотрим init.rc, ищем такие вот строчки:
## Daemon processes to be run by init.
##
service console /system/bin/sh # Описывает процесс загрузки консоли, оставляем.
console # Описывает процесс загрузки консоли, оставляем.
Остальные строки комментируем, как показано (отвечают за загрузку граф. оболочки Android).
# adbd is controlled by the persist.service.adb.enable system property
# service adbd /sbin/adbd
# disabled
# adbd on at boot in emulator
# on property:ro.kernel.qemu=1
# start adbd
# on property:persist.service.adb.enable=1
# start adbd
# on property:persist.service.adb.enable=0
# stop adbd
service servicemanager /system/bin/servicemanager
user system
critical
# onrestart restart zygote
onrestart restart media
# service zygote /system/bin/app_process -Xzygote /system/bin —zygote —start-system-server
# socket zygote stream 666
# onrestart write /sys/android_power/request_state wake
# onrestart write /sys/power/state on
# onrestart restart media
# service bootanim /system/bin/bootanimation
# user graphics
# group graphics
# disabled
# oneshot
Итак запаковываем наш исправленный ramdisk обратно find -print | cpio -ovcaB | gzip > ramdisk.gz, переименовываем в ramdisk.img, копируем обратно в каталог смонтированный VMWare, отмонтируем, запускаем наш исправленный образ и… и нифига не выходит.
Ладно, может это только у меня не получилось, я поступил иначе: скопировал файл ramdisk.img, переименовал его в ramdisk.gz, распаковал gunzip ramdisk.gz и вносил в ramdisk исправления непрямую, через редактор в mc (обязательно нужно точно соблюдать размер файла, т.к. это все таки архив).
После описанных процедур запускаем снова наш допиленный Android и, вуаля, нам открывается консоль.
A N D R O I D root@android:/ _
В итоге что мы имеем: консоль с работающими устройствами, отсутствие убогого ведроидного интерфейса.
Загруженные модули можно просмотреть с помощью lsmod, загружены uvesafb, usb, bluetoth, snd, multitouch и все другие вкусные плюшки. Проверил сеть: netcfg
lo UP 127.0.0.1 255.0.0.0 0x0xxxxx
eth0 DOWN 0.0.0.0 0.0.0.0 0x0xxxxx
Поднимаем: netcfg eth0 dhcp
eth0 UP 172.16.151.128 255.255.255.0
Делаем ping www.yandex.ru: не работает DNS (ping 8.8.8.8 — работает, разберемся).
Осталось только прикрутить проект KDE Plasma Active (думаю, займусь когда выйдет KDE spark, основанный на Zenithink C71) и тогда будет нам, братья планшетникам, поистинне linuxoidnoe счастье.
Источник
Патчим прошивку Android за 5 минут
Задача
Все началось с того, что я захотел установить на планшет Digma Optima 7.61 игру GTA San Andreas. К сожалению, виртуальная SD-карта планшета имеет объем менее 1 Гб, а кэш игры весит порядка 2-3 Гб. На планшете установлен Android 4.4.2 и возможность просто взять и сменить память по умолчанию в нем отсутствует. Так же в нем отсутствует файл /etc/vold.fstab (он есть на более старых версиях андроида, и изменив данный файл с root-правами, можно поменять местами виртуальную и реальную карты памяти).
Необходимые инструменты
1. Компьютер или ноутбук с ОС Linux.
2. Утилиты adb и fastboot (входят в состав Android SDK, так же, как заметил tmnhy, входят в репозитории как отдельные пакеты).
3. Набор утилит bootimg_tools (нашел здесь).
Решение
1. Извлекаем с устройства загрузочный образ
— Подключаем устройство к компьютеру через usb-кабель и заходим в shell устройства:
— Где-то в папке /dev/block на устройстве нужно найти файл с именем boot. У меня он находился по пути /dev/block/by-name/boot, но данный путь может различаться на разных устройствах.
— Извлекаем загрузочный образ:
— Выходим из shell’а (exit) и извлекаем образ:
2. Затем загрузочный образ нужно разобрать
— Скачиваем и распаковываем bootimg_tools.
— Добавляем bootimg_tools в PATH:
— Если все предыдущие шаги сделаны верно, то должна появиться папка boot-from-device. Внутри нее должны лежать файлы zImage и ramdisk.cpio.gz, а так же папка ramdisk. Как раз внутри последней лежит содержимое загрузочного образа, которое мы будем патчить.
3. Патчим
Для решения своей задачи я нашел строчку, которую нужно заменить, в файле init.sun8i.rc. Я просто заменил export EXTERNAL_STORAGE /mnt/sdcard на export EXTERNAL_STORAGE /mnt/extsd. Как я понимаю, это как раз и есть то значение, которое возвращает метод Environment.getExternalStorageDirectory() в Android API. В пользу этого предположения говорит тот факт, что после применения патча приложения начали использовать аппаратную карту памяти вместо виртуальной для хранения своих данных.
4. Заменяем загрузочный образ на устройстве
Я написал для этих целей небольшой скрипт:
Итоги
После проделанных манипуляций игра на планшете успешно заработала.
Источник