From this package We will need the parameters.img and the bootloader sdboot_rk3188.img.
The boot.img, kernel.img and system.img will come from the ROM we what to boot from SD Card.
initramfs and kernel must be splited from boot.img if they are together. If that is the case please follow these indications: Seperating kernel from boot.img
Use RK3xxx Firmware Tools by SergioPoverony to unpack and repack the newly splitted boot.img (without the kernel included)
locate and comment all entries related with rk30xxnand in the init files init.rc and init.rk30board.rc
#insmod /rk30xxnand_ko.ko
replace all mount points related to system data and cache pointing to NAND partitions by mount points located on SDCard :
mount ext4 mtd@system /system ....
mount ext4 /dev/block/[B]mmcblk0p3 [/B]/system ....
mount ext4 mtd@userdata /data ....
mount ext4 /dev/block/[B]mmcblk0p5 [/B]/data ....
mount ext4 mtd@cache /cache ....
mount ext4 /dev/block/[B]mmcblk0p8 [/B]/cache ....
I adapted this script to create the needed partitions on a 16GB Sdcard and copy the ROM files to the correct partitions acording to the changes described above.:
#!/bin/bash DEVELOPMENT_DIR=.. SRC_DIR=${DEVELOPMENT_DIR}/temp ANDROID_BOOT_IMAGE=${SRC_DIR}/Android/Image/boot.img ANDROID_KERNEL_IMAGE=${SRC_DIR}/Android/Image/kernel.img ANDROID_SYSTEM_IMAGE=${SRC_DIR}/Android/Image/system.img lsblk read -p "Enter name of SD card (e.g. /dev/sdi) : " SDCARD if [ -z "${SDCARD}" ]; then echo "MAKEFILE $0: No device name for SD card entered ... exiting." exit fi echo "$0: Creating a bootable SD card on '${SDCARD}' ..." umount ${SDCARD}* > /dev/null 2>&1 # Create a new filesystem on SD card echo "$0: Creating new filesystem on SD card ..." echo -e "o\nw" | fdisk ${SDCARD} > /dev/null 2>&1 echo -e "40,16,c ,36,83 ,1024,83 ,,5 ,8192,83 ,16,83 ,36,83 ,125,83 ,16,83 ,,83" | sfdisk --in-order -uM ${SDCARD} > /dev/null 2>&1 # Format partitions mkfs.vfat -n loaderp ${SDCARD}1 > /dev/null 2>&1 mkfs.ext4 -L bootpart ${SDCARD}2 > /dev/null 2>&1 mkfs.ext4 -L system ${SDCARD}3 > /dev/null 2>&1 mkfs.ext4 -L data ${SDCARD}5 > /dev/null 2>&1 mkfs.ext4 -L misc ${SDCARD}6 > /dev/null 2>&1 mkfs.ext4 -L recovery ${SDCARD}7 > /dev/null 2>&1 mkfs.ext4 -L cache ${SDCARD}8 > /dev/null 2>&1 mkfs.ext4 -L user ${SDCARD}9 > /dev/null 2>&1 mkfs.vfat -n SD ${SDCARD}10 > /dev/null 2>&1 SYSTEM_PARTITION="${SDCARD}"3 DATA_PARTITION="${SDCARD}"5 CACHE_PARTITION="${SDCARD}"8 USER_PARTITION="${SDCARD}"9 sync sync echo "$0: New filesystem created on SD card with partitions ${SYSTEM_PARTITION} ${DATA_PARTITION} ${CACHE_PARTITION} ${USER_PARTITION}" #./rkcrc ${SRC_DIR}/Android/parameter parameter.img # Copy bootloader to SD card echo "$0: Copying bootloader and kernel to SD card '${SDCARD}' ..." echo "BOOT_IMAGE='${ANDROID_BOOT_IMAGE}'" echo "KERNEL_IMAGE='${ANDROID_KERNEL_IMAGE}'" rm -rf MBR dd if=${SDCARD} of=MBR bs=1 count=512 > /dev/null 2>&1 dd if=sdboot_rk3188.img of=${SDCARD} conv=sync,fsync > /dev/null 2>&1 dd if=parameter.img of=${SDCARD}conv=sync,fsync seek=$((0x2000+0x0)) > /dev/null 2>&1 dd if=${ANDROID_KERNEL_IMAGE} of=${SDCARD} conv=sync,fsync seek=$((0x2000+0x4000)) > /dev/null 2>&1 dd if=${ANDROID_BOOT_IMAGE} of=${SDCARD} conv=sync,fsync seek=$((0x2000+0xc000)) > /dev/null 2>&1 dd if=MBR of=${SDCARD} > /dev/null 2>&1 rm MBR sync sync echo "$0: Bootloader copied to SD card ..." #exit echo "$0: Copying '${ANDROID_SYSTEM_IMAGE}' to Partition '${SYSTEM_PARTITION}' ..." #dd if=${ANDROID_SYSTEM_IMAGE} of=${SYSTEM_PARTITION} bs=4M #sync #sync umount /mnt/sdcard_image /mnt/android_image > /dev/null 2>&1 mkdir /mnt/sdcard_image > /dev/null 2>&1 mkdir /mnt/android_image > /dev/null 2>&1 cp "${ANDROID_SYSTEM_IMAGE}" /tmp/system.img mount -t ext4 "${SYSTEM_PARTITION}" /mnt/sdcard_image mount -t ext4 /tmp/system.img /mnt/android_image cp -a /mnt/android_image/* /mnt/sdcard_image #cp vold.fstab /mnt/sdcard_image/etc sync sync umount /mnt/sdcard_image /mnt/android_image rmdir /mnt/sdcard_image /mnt/android_image > /dev/null 2>&1 rm /tmp/system.img > /dev/null 2>&1 echo "$0: System.img copied to '${SYSTEM_PARTITION}' ..." exit
My mk809III NAND is dead and not even the MASKROM tricks will make it work again. So, the only way I have to run new ROMs is this way. Maybe these instructions might be useful to others in similar circunstances.
This procedure works with this ROM MK809III_ update_dongle RK3188T 6210_3.1
Comment