Go to http://androtab.info/radxa_rock/sdboot/ and get sdboot_rk3188_miniroot.zip
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 :
Code:
mount ext4 mtd@system /system ....
by
Code:
mount ext4 /dev/block/mmcblk0p3 /system....
Code:
mount ext4 mtd@userdata /data ....
by
Code:
mount ext4 /dev/block/mmcblk0p5 /data....
Code:
mount ext4 mtd@cache /cache ....
by
Code:
mount ext4 /dev/block/mmcblk0p8 /system....
rebuild the new boot.img after these changes and write it to the respective partitions on SDcard
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.:
Code:
#!/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
Feel free to make your own adaptations.
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
No comments:
Post a Comment