Перенос Android на HDD в Mele A100 (и похожих, Allwinner A10)
Досталось мне такое вот устройство, Mele A100 с битой nand памятью, работало после прошивки пару перезагрузок, потом не загружалось (bootloop).
Первое что пришло в голову подключить консольку, но ничего информативного туда не было.
Второе что пришло в голову, после непродолжительного гугления, это записать прошивку на sd карту, на 4pda такое есть, но у меня была только карточка на 32G с моего мобильника, покупать я не хотел, да и скорость будет не очень.
Третье, что пришло в голову, после продолжительного рассматривания платы в поиске usb внутри (так как андроид детектил больше 3х usb, а наружу есть только 3) взгляд зацепился за sata неприпаяный, жесткий то у меня есть.
Консолька подключается вот сюда, вот таким шнурком (cd-audio)
Чувствуя радость и под приколы коллеги, я припаял к нему sata, родное фото не прилаживаю, там всё залито термоклеем, а я тогда не верил в победу.
3 не изолированных я припаял к 3 м справа, а парные к парным, Будьте внимательны, не припаяйте «верхногами», надо смотреть по ключу нарисованному с другой стороны платы
Питание на sata разъеме я взял только GND и 5V, для 2.5» жестких этого хватает, питание брал с входа БП.
После таких издевательств android обнаружил sata, что меня удивило и обрадовало.
Далее я пропущу кучу потраченного зря времени, которое я потратил на изучение как оно работает и почему, установку debian-ubuntu, pimp-my-mele, и debian-installer
Debian я не хотел, потому что хочу смотреть на этой штуке видео, а debian не умеет hardware acceleration для видео, а может и умеет :-), но еще нужен пульт, а еще надо LazyMedia, а этого debian не умеет.
Наткнулся я на утилиту ImgRepacker (4pda, xda), которая умеет пересобирать образы прошивки для PhoenixSuit и LiveSuit, разобрал прошивку и в файле init.sun4i.rc в папке firmware.img.dump\boot.fex.dump\ramdisk.dump изменил все обращения к nand обращениями к sda (Появилась проблемма, если включена флешка она монтируется как sda, а hdd как sdb, что наталкивает на мысль что hdd на usb шине, но hdd все равно быстрее флешки, как минимум визуально).
## — исходные комментарии
on fs
# mount ext4 /dev/block/nandd /system wait noatime nodev barrier=0
wait /dev/block/sda
mount ext4 /dev/block/sda2 /system wait noatime nodev barrier=0
## try to mount /data
# wait /dev/block/nande
# mount ext4 /dev/block/nande /data wait noatime nosuid nodev barrier=0
# setupfs /dev/block/nande
mount ext4 /dev/block/sda3 /data wait noatime nosuid nodev barrier=0
# setupfs /dev/block/nande
# umount /data
# exec /system/bin/logwrapper /system/bin/e2fsck -y /dev/block/nande
# exec /system/bin/busybox mount -t ext4 -o noatime,nosuid,nodev,barrier=0,journal_checksum,noauto_da_alloc /dev/block/nande /data
## try to mount /cache
# mount ext4 /dev/block/nandh /cache wait noatime nosuid nodev barrier=0
# setupfs /dev/block/nandh
# umount /cache
# exec /system/bin/logwrapper /system/bin/e2fsck -y /dev/block/nandh
# exec /system/bin/busybox mount -t ext4 -o noatime,nosuid,nodev,barrier=0,journal_checksum,noauto_da_alloc /dev/block/nandh /cache
# exec /system/bin/busybox mount -t ext4 -o noatime,nosuid,nodev,barrier=0,journal_checksum,noauto_da_alloc /dev/block/sda7 /cache
mount ext4 /dev/block/sda7 /cache wait noatime nosuid nodev barrier=0
# format_userdata /dev/block/nandk apollo
# exec /system/bin/busybox mount -t ext4 -o noatime,nosuid,nodev,barrier=0,journal_checksum,noauto_da_alloc /dev/block/sda4 /mnt/sdcard
mount ext4 /dev/block/sda4 /mnt/sdcard wait noatime nosuid nodev barrier=0
# try to mount /private
export PRIVATE_STORAGE /mnt/private
# format_userdata /dev/block/nandi PRIVATE
mkdir /mnt/private 0000 system system
# mount vfat /dev/block/nandi /mnt/private
format_userdata /dev/block/sda6 PRIVATE
mount vfat /dev/block/sda6 /mnt/private
Также свои комманды можно писать в /system/etc/install-recovery.sh, его можно создать уже в рабочей системе.
Подготовка диска
на диске создаются разделы, размеры на ваш выбор, те что итспользуются в nand указаны нижеsda1 Расширеный раздел sda5 swap sda6 private nandi/16М vfat sda7 cache nandh/512М ext4 sda2 system nandd/1024М ext4 sda3 data nande/1024M ext4 sda4 sdcard nandk/2048M ext4
Копировал информацию я с помошью dd, когда запустил liveSD Ubuntu
dd if=/dev/nandd of=/dev/sda2
и провел e2fsck /dev/sda2
Далее прошиваем с помошью PhoenixCard запакованый образ на SD карту, прошиваем mele и подключаем hdd, после грузится система с hdd.
Для тех кто не хочет заниматься этим всем сам, образ соснованый на Toucan Smart (Android + iconBIT TV Launcher 22.01.2013)
Прошивка на Яндекс.Диск
Папка с файлами на Яндекс.Диск
Прошивка на OneDrive
Папка с файлами на OneDrive
Обнаружилось что у меня на плате 4×256М оперативки, а где поменять эту настройку, я не нашел, поэтому решил не особо парить мозг:
Подлючаем usb console
На моменте Hit any key to stop autoboot: жмакаем пробел и попадаем в загрузчик
в загрузчике: setenv setargs_nand setenv bootargs console=\${console} root=\${nand_root}init=\${init} loglevel=\${loglevel} partitions=\${partitions} mac_addr=\${mac} mem=1024M
команда mem=1024M передает андроиду что есть 1024М оперативы, далее
если команда printenv mac покажет mac=00:00:00:00:00:00 то скорее всего при каждом запуске mac адресс ethrernet будет меняться, чтоб такого не было, впишите свой мак, он чаще всего наклеен на карточке, внутри корпуса.setenv mac 12:34:56:78:90:12
Для того чтоб сохранить переменныеsaveenv
после перезагрузки reset получаем рабочий Андроид на котором 1 гиг оперативы
swap я прописал в /system/etc/install-recovery.sh
mount -o remount,rw /system echo swapon /dev/block/sda5 > /system/etc/install-recovery.sh chmod +x /system/etc/install-recovery.sh mount -o remount,ro /system
P.S. Ошибки прошу писать в личные, я их исправлю, и коментарии будут выглядеть глупо
Хотел поставить OpenWRT, но вовремя задал себе вопрос «а на… зачем?»