Как стать автором
Обновить

Перенос Android на HDD в Mele A100 (и похожих, Allwinner A10)

Время на прочтение4 мин
Количество просмотров20K


Досталось мне такое вот устройство, Mele A100 с битой nand памятью, работало после прошивки пару перезагрузок, потом не загружалось (bootloop).

Первое, что пришло в голову — подключить консольку, но ничего информативного туда не было. Второе, что пришло в голову, после непродолжительного гугления, это записать прошивку на sd карту, на 4pda такое есть, но у меня была только карточка на 32G с моего мобильника, покупать я не хотел, да и скорость будет не очень. Третье, что пришло в голову, после продолжительного рассматривания платы в поиске usb внутри (так как андроид детектил больше 3х usb, а наружу есть только 3), взгляд зацепился за sata неприпаяный, жесткий то у меня есть.

Консолька подключается вот сюда, вот таким шнурком (cd-audio):


Собственно понравился он мне обилием интерфейсов, сбоку еще есть SD и USB-OTG
image

Чувствуя радость и под приколы коллеги, я припаял к нему 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 но вовремя задал себе вопрос «а на… зачем?»
Теги:
Хабы:
Всего голосов 21: ↑18 и ↓3+15
Комментарии4

Публикации