Ramdisk img android для чего

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

Читайте также:  Android studio starting emulator

Далее с полученным файлом 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 просеянных через Интернет, чтобы найти и составить список инструментов для распаковки и переупаковки файла образа загрузки, все из которых можно загрузить, используя ссылку, приведенную ниже.

Команды, которые вы должны знать

  1. boot_info Файл, включенный в пакет, позволяет вам получить базовый адрес и адрес виртуального диска файла boot.img, который вам позже понадобится для повторной упаковки.
  2. split_boot (split_bootimg.pl) помогает извлечь ramdisk и zImage из файла boot.img в отдельную папку.
  3. unpack_ramdisk позволяет распаковать файл ramdisk с помощью следующей команды:
    Использование: unpack_ramdisk
  4. repack_ramdisk функция позволит вам перепаковать файл ramdisk из заданного каталога, используя следующую команду:
    Использование: repack_ramdisk [outputFile]
  5. mkbootimg Команда поможет вам создать новый файл boot.img из имеющихся у вас файлов ramdisk и zImage (полезно для создания измененных файлов boot.img).
  6. umkbootimg делает прямо противоположное и разделяет ядро ​​и загрузочный образ.
  7. распаковать просто распакует файл boot.img в один каталог, а виртуальный диск в отдельный каталог для удобства.

Совместимость с Windows: что нужно знать

  1. Если у вас нет запущенной операционной системы Linux, вы можете эмулировать ее на своем ПК с Windows, используя это официальное руководство.
  2. Инструмент был протестирован для работы с Debian, но не подтвержден для работы с Cygwin.
  3. Все сценарии в файле .ZIP должны быть сохранены в папке на пути к системе Linux, в которой вы работаете, чтобы они могли быть обнаружены (пример:

Как использовать распаковку и перепаковать загрузку и распаковку файла ramdisk

Что ж, нам нужно использовать файл split_boot, поскольку он содержит сценарий, чтобы сначала распаковать файл boot.img, получить из него файл ramdisk, а затем извлечь файл ramdisk.

  1. Скачать инструмент загрузки из здесь.
  2. Сейчас, извлекать его в отдельную папку, чтобы получить эти файлы.
  3. Теперь предоставьте этим файлам необходимые разрешения. Итак, запустите команду ниже в папке, где у вас есть все файлы.

  • Поместите файл boot.img, который вы хотите извлечь, в ту же папку, что и эти файлы на вашем ПК.
  • Чтобы извлечь файл загрузочного образа и файл виртуального диска, выполните приведенную ниже команду.
  • Это создаст новую папку с именем ботинок в вашей текущей папке. Папка загрузки будет содержать файл ядра загрузочного образа, файл ramdisk и папку ramdisk, содержащую данные, извлеченные из файла ramdisk.
  • Вот и все. Вносить изменения в файл папки ramdisk, как вам нужно.
  • Копировать все основные файлы инструмента (boot_info, mkbootimg, repack_ramdisk, split_boot и unpack_ramdisk) в загрузочную папку, содержащую папку ramdisk.
  • Перепаковать файл ramdisk используя команду ниже. Это создаст новый файл ramdisk с именем new-boot.img-ramdisk.cpio.gz в папке загрузки. (Вы можете изменить имя выходного файла с new-boot.img-ramdisk.cpio.gz на любое по вашему выбору.)
  • Перепаковать загрузочный файл используя команду ниже. Это создаст новый файл образа загрузки с именем new-boot.img в папке загрузки.
  • Вот и все. Работа сделана! Вы успешно распаковали и переупаковали файлы загрузочного и RAM-диска. Теперь ваш каталог будет выглядеть так. Обратите внимание на новые файлы boot и 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. Заменяем загрузочный образ на устройстве

    Я написал для этих целей небольшой скрипт:

    Итоги

    После проделанных манипуляций игра на планшете успешно заработала.

    Источник

    Читайте также:  Живые обой для андроида водопад
    Оцените статью