ui_print("");
ui_print("Boot /emmc/boot.img");
ui_print("");
show_progress(1.0, 0);

ui_print("Remount partitions read-only.");
run_program("/sbin/mount", "-ro", "remount", "", "/system");
run_program("/sbin/mount", "-ro", "remount", "", "/data");
run_program("/sbin/mount", "-ro", "remount", "", "/cache");
set_progress(0.2);

ui_print("Unpack unpackbootimg and kexec.");
package_extract_file("unpackbootimg",   "/tmp/unpackbootimg");
package_extract_file("kexec",           "/tmp/kexec");
package_extract_file("kexec_append.sh", "/tmp/kexec_append.sh");
set_perm(0, 0, 0755, "/tmp/unpackbootimg");
set_perm(0, 0, 0755, "/tmp/kexec");
set_perm(0, 0, 0755, "/tmp/kexec_append.sh");
set_progress(0.4);

ui_print("Unpack boot.img.");
run_program("/tmp/unpackbootimg", "-i", "/emmc/boot.img", "-o", "/tmp");
set_progress(0.6);

ui_print("Load boot.img-zImage with boot.img-ramdisk.gz.");
run_program("/tmp/kexec_append.sh", "--load-hardboot",
            "--mem-min=0xa0000000", "--initrd=/tmp/boot.img-ramdisk.gz",
            "/tmp/boot.img-zImage");
set_progress(0.8);

ui_print("Sync.");
run_program("/sbin/sync");
set_progress(1.0);

ui_print("Reboot into zImage.");
run_program("/tmp/kexec", "-e");
