Muxa52 @ 12.07.2011, 00:15
Цитата(vladigor @ 11.07.2011, 11:38) *
в ядре мини-ос прошивальшика неправильная версия mkfs.vfat...
совсем ничего не понял... какой файл вы имеете ввиду? я взял только сам файл mfg tool, естественно, всё остальное там не подходит
Хорошо. Сейчас я коротенько расскажу про
Manufacturing Tool Factory, более подробно см. в доке. Данная информация будет полезна для интересующихся прошиванием.
Сам по себе
файл mfg tool мало что меняет, ето просто оболочка и там изменили самую малость - как обычно, поправили одни баги, добавили другие.
Я, как всегда, начинал с експериментов и, в конце-кнцов, пришлось воспользоваться известным правилом - "если что-то не получается, прочитайте наконец документацию" ;) Она есть, и довольно исчерпывающая. А не получалось залить прошивку из-за ошибки
256.
MfgTool предназначен для массового руления устройствами на базе IMX, в частности для заливки прошивок одновременно до 16 штуков, причем потоком, только успевай втыкать-вытыкать USB.
Итак. Как оно работает.
Для разных устройств есть профили, нас интересует "MX51 Linux Update". В профиле нам нужны операции, в частности "OS Firmware". Структура папок так и формируется
\Profiles\MX51 Linux Update\OS Firmware\. В
OS Firmware находится самый главный скрипт
ucl.xml (Update Command List), он описывает устройство и что с ним делать. При выполнении скрипта инициализируется загрузчик (u-boot-mx51.bin), память (initramfs.cpio.gz.uboot), грузится ядро с мини-ос (uImage) и дальше выполняются команды. Так вот, главные изменения ето как раз скрипт и файлики профиля операции. Очевидно, что скрипт мы можем менять под свои нужды, необходимо только понимать, чего мы хотим. Естественно можно и подобрать нужные загрузчик и ядро.
Теперь о том почему появляется ошибка
256 и как попбороть. В старом скрипте использовалась команда
fdisk <fdiskcmd.txt. И т.к. fdiskcmd.txt был сделан для планшетов одной партии, он мог не подходить для другой, где SD другие (в моем случае). fdisk тупо резал партиции в соответствии с fdiskcmd.txt. Последний 6-й раздел
cache получался кривой и, при выполнении команды его форматирования, случалась пресловутая ошибка 256. В
новой первоначальной версии разделы создаются оригинальным скриптом
mksdcard-android.sh.tar взятым из Mfgtools-Rel-1.6.2.0322 или Mfgtools-Rel-11.03.00_ER_MX51_UPDATER, по-умолчанию:
- BOOT_ROM_SIZE=10 -- for uBoot, Kernel, Ramdisk
- SYSTEM_ROM_SIZE=150 -- for /system
- DATA_SIZE=100 -- for /data/
- CACHE_SIZE=100 -- for /cache
- RECOVERY_ROM_SIZE=20 -- for recovery partition.
Остальное отдано под пользовательский раздел VFAT.
Данный скрипт можно поправить только в линуксе. Но. В новом ядре, которое впихивает прошивальщик, старая версия mkfs.vfat, она форматирует с неправильным размером. Пришлось мне в скрипт после разбивки, форматирования и заливки образов дополнительно добавить загрузку старого ядра и форматирование первого раздела.
Также я добавил опцию обновления прошивки без удаления пользовательских данных, т.е. без нарезания разделов и форматируются только system и recovery. И еще несколько опций добавлено, см. ссылку ниже.
Теперь о том
как изменить скрипт и размеры разделов и некоторые мысли по поводу размеров.
Я использую
Far Manager 2.0 build 1807 x86.
Заодим в папку
Mfgtool\Profiles\MX51 Linux Update\OS Firmware\ курсор на нужный скрипт, напр
mksdcard-android.sh.tarЖмем Enter ( можно и двойной клик и средняя кнопка мыши), т.е. входим в архив как в каталог. Там ставим курсор на
mksdcard-android.shЖмем
F4 (Edit)
Изменяем 4-8 строки на нужные значения, сейчас в
mksdcard-android.sh.tar:
BOOT_ROM_SIZE=10
SYSTEM_ROM_SIZE=190
DATA_SIZE=1500
CACHE_SIZE=150
RECOVERY_ROM_SIZE=20
в
mksdcard-android-ws.sh.tar (с разделом
swap):
BOOT_ROM_SIZE=10
SYSTEM_ROM_SIZE=190
DATA_SIZE=1500
CACHE_SIZE=150
RECOVERY_ROM_SIZE=20
SWAP_SIZE=524
Жмем ESC и соглашаемся с изменениями - Enter
Далее соглашаемся перезаписать файл внутри архива - Enter
Все, скрипт исправлен, размеры заданы
Соображения по размерам.
BOOT_ROM_SIZE=10 - менять не стоит, дб не меньше размера mbr+u-boot-no-padding.bin+uImage+uramdisk.img.
SYSTEM_ROM_SIZE=190 - не меньше system.img + запас на всякий пожарный. Кстати, в фабричной прошивке было 191.
DATA_SIZE=1500 - говорят хорошо для толстых и жадных приложений, желающих жить только в DATA. Если внутренняя SD маленькая, можно уменьшить, соотв увеличится на уменьшаемое пользовательский раздел VFAT (который монтируется в /sdcard/ и виден с компа по usb).
CACHE_SIZE=150 - совместно решили, что так хорошо.
RECOVERY_ROM_SIZE=20 - не меньше recovery.img + запасец.
SWAP_SIZE=524 - Вроде как решили, что оно не надо. В теориях не меньше размера RAM. Кстати в mksdcard-android.sh.tar от freescale своп не предусмотрен. Если что, можно и в файл организовать, а не в раздел. С другой стороны в фабричной прошивке раздел был. Вопрос пока открыт.
Так было разбито на заводе
Disk /dev/block/mmcblk0: 7948 MB, 7948206080 bytes
81 heads, 10 sectors/track, 19165 cylinders
Units = cylinders of 810 * 512 = 414720 bytes
Device Boot Start End Blocks Id System
/dev/block/mmcblk0p1 26 13582 5490585 83 Linux
/dev/block/mmcblk0p2 13583 14065 195615 83 Linux
/dev/block/mmcblk0p3 14066 19068 2026215 5 Extended
/dev/block/mmcblk0p4 19069 19165 39285 83 Linux
/dev/block/mmcblk0p5 14066 16535 1000345 83 Linux
/dev/block/mmcblk0p6 16536 17741 488425 83 Linux
/dev/block/mmcblk0p7 17742 19068 537430 83 Linux
Вот еще интересная картинка, на XDA сейчас наткнулся, иллюстрирует доку
system.img, recovery.img - соотв разделы.
u-boot-no-padding.bin (загрузчик), uImage (ядро), uramdisk.img (rfs) - ядро и его обвязка. Там камера, вайфай (в 2.3 вынесено в system), тач, BT.
uramdisk.img - корневая ФС, если интересно, можно откусить первые 64 байта и распаковать 7зипом. Там, напр, параметры камеры можно найти.
Кусок доки
i.MX Android R10.3.1 User Guide3.2.1 Storage PartitionsThe layout of the MMC/SD card or eMMC for Android system is showed in below.
[Partition type/index] is which defined in the MBR.
[Name] is only meaningful in android, you can ignore it when creating these partitions.
[Start Offset] shows where partition is started, unit in MBytes.
The SYSTEM partition is used to put the built out android system image. The DATA is used to put application's unpacked codes/data, system configurations database, etc. In normal boot mode, the root file system is mounted from uRamdisk. In recovery mode, the root file system is mounted from the REOVERY partition.
To create these partitions, you can simply use MFG tool described in next section, or use fdisk utility on Linux PC.
After creating the partitions by fdisk, please format each file systems by the following commands:
# mkfs.vfat /dev/sdx1
# mkfs.ext4 /dev/sdx2 -O ^extent -L system
# mkfs.ext4 /dev/sdx4 -O ^extent -L recovery
# mkfs.ext4 /dev/sdx5 -O ^extent -L data
# mkfs.ext4 /dev/sdx6 -O ^extent -L cache
NOTE: /dev/sdxN, the x is the disk index from 'a' to 'z', that may be different on each Linux PC.
Еще есть мысль добавить опцию забивания SD нулями, как-бы для лечения (сделано). Если будут еще хотелки, скажите, сделаю.
PS. Да. Сам набор тут -
Обновленный MfgtoolПрикрепленные изображения
Сообщение отредактировал vladigor - 15.12.11, 11:15Причина редактирования: как изменить скрипт и размеры разделов