Как создать установочный пакет ClockworkMod?

Я опытный ветеран Linux и недавно купил Samsung Galaxy S2 у T-Mobile. Я почувствовал ошибку, поэтому я решил загрузить исходный код с сайта Samsung и начать возиться.

Моя проблема в том, что у меня уже установлен ClockworkMod на моем телефоне, поэтому я не хочу, чтобы Один прошил новое ядро ​​и тем самым испортил ClockworkMod, поэтому я ищу подробности о том, как создать правильный установочный пакет ClockworkMod (обычно /всегда zip-файл?), чтобы я мог протестировать только что скомпилированные ядра.

Мои поиски в гугле пока ничего не дали. Страница ClockworkMod кажется довольно бедной документацией. Может ли кто-нибудь указать мне на какую-нибудь документацию по процессу создания пакета установки?

Прошивка ядра через Odin ломает CWM?
Я полагал, что это произойдет, поскольку ODIN, кажется, прошивает основной загрузочный блок телефона, но я мог быть совершенно неправ. Я не хотел пробовать, не зная наверняка. Я так понимаю, что CWM — это тонкое ядро ​​посредника, которое может перейти к правильному ядру, но, опять же, может быть совершенно не так.

Ответы (2)

Требуемая часть ZIP-файла ядра выглядит следующим образом:

META-INF
    com
        google
            android
                update-binary
                updater-script

Вы также захотите иметь zImageфайл ядра где-нибудь еще, проще всего, если он будет просто в корне архива.

updater-scriptсодержит как минимум следующее (предполагается zImageв корне):

assert(package_extract_file("zImage", "/tmp/zImage");
       write_raw_image("/tmp/zImage", "/dev/block/mmcblk0p8");
       delete("/tmp/zImage")
);

Вы также можете делать такие вещи, как показывать индикатор выполнения, печатать сообщения, стирать /cacheи так далее.

Вы можете взять update-binaryдругой пакет ядра для SGS2. Один случайным образом прикреплен к этому сообщению XDA .

Я без проблем протестировал этот метод на своем SGS Vibrant, используя ядро ​​из пакета Odin и update-binary.zip из другого ядра Vibrant. Обратите внимание, что это совершенно безопасно, если вы записываете в правильный раздел — для Vibrant это было bml17, для SGS2 это кажется mmcblk0p5(на основе ядра с XDA, на которое я ссылался выше) или mmcblk0p8если вы прошиваете весь загрузочный образ (см. комментарии ниже). Вы захотите убедиться в этом наверняка. В худшем случае у вас не работает ядро ​​и вы прошиваете заведомо исправное.

Для Samsung Galaxy S2 (T-Mobile) SGH-T989 правильная директива (собранная из известного хорошего рома, который я уже установил) показывает, что загрузочный блок находится в /dev/block/mmcblk0p8, а не в p5. Возможно, вы захотите отредактировать это для безопасности. Я сделал почтовый индекс на основе этого сообщения, и это сработало как шарм! Спасибо!
@PeterGrace Ах, загрузочный образ - это больше, чем просто ядро, вот почему он отличается.
Есть ли способ убедиться, что я должен использовать /dev/block/mmcblk0p8? У меня есть Galaxy S2 от Virgin Mobile Canada (такой же, как у Bell Canada), так что это не от T-Mobile, и у меня нет известного хорошего ПЗУ (кроме CM7, но он записывает загрузочный образ, а не zImage). Должен ли я предполагать, что мой Virgin Mobile GS2 работает так же, как ваш T-Mobile GS2, или есть способ проверить это наверняка?
@Rognon Вы можете попробовать запустить mount, чтобы увидеть, какие блоки где отображаются. В противном случае найдите ПЗУ.
@MatthewRead mountне показывает ни p8, ни p5. Поиск в Google, кажется, указывает на то, что zImage должен быть записан на p5, как и на этом сайте: forum.xda-developers.com/showthread.php?t=1691867 . Я попытался перечислить содержимое папки, упомянутой в теме, но ее нет на моем телефоне...

Я обнаружил, что вы можете использовать fastboot, не затрагивая CWM.

sudo /path/to/fastboot boot boot.img

или

sudo /path/to/fastboot flash:raw boot /path/to/zImage /path/to/ramdisk.img