ui_print("@Preparing installation");
ui_print("@----------------------");
ui_print("");
ui_print(" - mounting system partition");
assert(mount("ext4", "EMMC", "/dev/block/mmcblk0p9", "/system") || ui_print("   (system is mounted already)"));

ui_print(" - mounting data partition");
assert(mount("ext4", "EMMC", "/dev/block/mmcblk0p12", "/data") || ui_print("   (data is mounted already)"));

ui_print(" - extracting installation files");
package_extract_dir("setup","/tmp");
set_perm_recursive(0, 0, 0777, 0777, "/tmp/arter97");

set_progress(0.1);

ui_print(" ");
ui_print("@Kernel installation");
ui_print("@-------------------");
ui_print(" ");

ui_print(" - Deleting old kernel modules");
run_program("/sbin/busybox", "rm", "/system/lib/modules/*");
run_program("/sbin/busybox", "rm", "-r", "/system/lib/modules");
ui_print(" - Installing new kernel modules");
symlink("/lib/modules", "/system/lib/modules");
ui_print(" - Flashing new boot image");
run_program("/sbin/busybox", "dd", "if=/dev/zero", "of=/dev/block/mmcblk0p5");
set_progress(0.3);
if file_getprop("/tmp/aroma/m440s.prop","selected.1") == "2"
  then
  package_extract_file("m440s.img", "/tmp/m440s.img");
  ui_print(" - Installing SHW-M440S boot.img");
  write_raw_image("/tmp/m440s.img", "/dev/block/mmcblk0p5");
  delete("/tmp/m440s.img");
else
  package_extract_file("boot.img", "/tmp/boot.img");
  write_raw_image("/tmp/boot.img", "/dev/block/mmcblk0p5");
  delete("/tmp/boot.img");
endif;
set_progress(0.5);

ui_print(" ");
ui_print("@Script generation");
ui_print("@-----------------");
ui_print(" ");

ui_print(" - cleaning up /system/etc");
ui_print("   (kernel settings files)");
delete("/system/etc/init.kernel.sh");
delete("/system/etc/init.hardswap.sh");

ui_print(" - cleaning up /data");
ui_print("   (kernel old settings files)");
delete("/data/kernel-script.log");
delete("/data/hardswap.log");
delete("/data/swap.0.log");
delete("/data/swap.1.log");
delete("/data/swap.2.log");
delete("/data/swap.3.log");
delete("/data/swap.4.log");

ui_print(" - starting script generator");

run_program("/tmp/arter97/script/install.sh");

set_progress(0.7);

if file_getprop("/tmp/aroma/swap.prop","selected.1") == "2"
  then

    ui_print(" ");
    ui_print("@Hardswap installation");
    ui_print("@---------------------");
    ui_print(" ");

		ui_print(" - starting installation script");
    ui_print("   (see /data/hardswap.log for details)");
		run_program("/tmp/arter97/swap/install/install.sh");
		
		if file_getprop("/tmp/arter97/swap/install/hardswap.prop","swap.present") == "yes"
		  then
		    ui_print(" - swap partition found on SD-card");
		    ui_print("     '",file_getprop("/tmp/arter97/swap/install/hardswap.prop","swap.device"),"'");
		    if file_getprop("/tmp/arter97/swap/install/hardswap.prop","swap.formated") == "yes"
		      then
		        ui_print(" - swap partition formated");
		    endif;
		    if file_getprop("/tmp/arter97/swap/install/hardswap.prop","swap.scriptinstalled") == "yes"
		      then
		        ui_print(" - swap activation script installed to /system/etc");
		    endif;
		  else
		    ui_print("   Problem: no swap partiton found !");
		    ui_print("   --> Hardswap installation aborted.");
		endif;
  
endif;

set_progress(0.9);

ui_print(" ");
ui_print("@Cleaning up");
ui_print("@-----------");
ui_print(" ");

ui_print(" - removing installation files");
delete_recursive(/tmp/arter97);

ui_print(" - unmounting partition /data");
unmount("/data");	

ui_print(" - unmounting partition /system");
unmount("/system");	

ui_print(" ");
ui_print("@done.");

set_progress(1.0);
