From b7a0960e1d218694e6e49c8bc44d17a51a6d9a50 Mon Sep 17 00:00:00 2001 From: osm0sis Date: Tue, 26 Aug 2014 14:53:42 -0300 Subject: [PATCH] AnyKernel 2.0: add new features - add new do.modules property - add new remove_line method - update insert_line with ability to change insertion point to before or after the matched line - rearrange properties into the order they are executed - fix minor cpio warnings (only visible when run manually) - clean up sed syntax formatting - README updates for new features and fix zip command to exclude README and any previous zip present. --- META-INF/com/google/android/updater-script | 7 ++++++ README | 18 +++++++++----- anykernel.sh | 29 ++++++++++++++++------ modules/placeholder | 0 4 files changed, 40 insertions(+), 14 deletions(-) create mode 100644 modules/placeholder diff --git a/META-INF/com/google/android/updater-script b/META-INF/com/google/android/updater-script index 5c89644..98347b6 100644 --- a/META-INF/com/google/android/updater-script +++ b/META-INF/com/google/android/updater-script @@ -23,6 +23,13 @@ ifelse(file_getprop("/tmp/anykernel/anykernel.sh", "do.initd") == 1, ); ui_print("Installing kernel..."); assert(run_program("/sbin/sh", "/tmp/anykernel/anykernel.sh")); +ifelse(file_getprop("/tmp/anykernel/anykernel.sh", "do.modules") == 1, + (ui_print("Pushing modules..."); + ui_print(" "); + assert(package_extract_dir("modules", "/system/lib/modules"), + set_perm_recursive(0, 0, 0755, 0644, "/system/lib/modules")); + ) +); ifelse(file_getprop("/tmp/anykernel/anykernel.sh", "do.cleanup") == 1, (delete_recursive("/tmp/anykernel"); ) diff --git a/README b/README index 517e0c8..373a02f 100644 --- a/README +++ b/README @@ -10,17 +10,20 @@ A working script based on DirtyV Kernel for Galaxy Nexus (tuna) is included for // Properties / Variables kernel.string=KernelName by YourName @ xda-developers -do.initd=1 do.devicecheck=1 +do.initd=1 +do.modules=1 do.cleanup=1 device.name1=maguro device.name2=toro device.name3=toroplus block=/dev/block/platform/omap/omap_hsmmc.0/by-name/boot; +do.devicecheck=1 specified requires at least device.name1 to be present. This should match ro.product.device or ro.build.product for your device. + do.initd=1 will create the init.d directory in /system/etc/init.d/ and apply 755 permissions. -do.devicecheck=1 specified requires at least device.name1 to be present. This should match ro.product.device or ro.build.product for your device. +do.modules=1 will push the contents of the module directory to /system/lib/modules/ and apply 644 permissions. do.cleanup=0 will keep the zip from removing it's working directory in /tmp/anykernel - this can be useful if trying to debug in adb shell whether the patches worked correctly. @@ -29,8 +32,9 @@ do.cleanup=0 will keep the zip from removing it's working directory in /tmp/anyk dump_boot backup_file replace_string -insert_line +insert_line replace_line +remove_line prepend_file append_file replace_file @@ -38,15 +42,17 @@ write_boot "if search string" is the string it looks for to decide whether it needs to add the tweak or not, so generally something to indicate the tweak already exists. -Similarly, "line before string" and "line replace string" are the search strings that locate where the modification needs to be made for those commands. +Similarly, "line match string" and "line replace string" are the search strings that locate where the modification needs to be made for those commands. + +"before/after" requires you simply specify "before" or "after" for the placement of the inserted line, in relation to "line match string". // Instructions 1- Place zImage in the root 2- Place any required ramdisk files in /ramdisk 3- Place any required patch files (generally partial files which go with commands) in /patch -4- Modify the anykernel.sh to add your kernel's name, boot partition location, permissions for included ramdisk files, and use methods for any required ramdisk modifications. -5- zip -r9 your.zip * +4- Modify the anykernel.sh to add your kernel's name, boot partition location, permissions for included ramdisk files, and use methods for any required ramdisk modifications +5- zip -r9 UPDATE-AnyKernel2.zip * -x README UPDATE-AnyKernel2.zip Not required, but any tweaks you can't hardcode into the source should be added with a bootscript.sh like is done in the example provided. diff --git a/anykernel.sh b/anykernel.sh index 9574f35..a1744a5 100755 --- a/anykernel.sh +++ b/anykernel.sh @@ -4,8 +4,9 @@ ## AnyKernel setup # EDIFY properties kernel.string=DirtyV by bsmitty83 @ xda-developers -do.initd=1 do.devicecheck=1 +do.initd=1 +do.modules=0 do.cleanup=1 device.name1=maguro device.name2=toro @@ -56,7 +57,7 @@ write_boot() { dtb="--dt $split_img/$dtb"; fi; cd $ramdisk; - find . | cpio -o -H newc | gzip > /tmp/anykernel/ramdisk-new.cpio.gz; + find . | cpio -H newc -o | gzip > /tmp/anykernel/ramdisk-new.cpio.gz; $bin/mkbootimg --kernel /tmp/anykernel/zImage --ramdisk /tmp/anykernel/ramdisk-new.cpio.gz $second --cmdline "$cmdline" --board "$board" --base $base --pagesize $pagesize --kernel_offset $kerneloff --ramdisk_offset $ramdiskoff $secondoff --tags_offset $tagsoff $dtb --output /tmp/anykernel/boot-new.img; dd if=/tmp/anykernel/boot-new.img of=$block; } @@ -71,11 +72,15 @@ replace_string() { fi; } -# insert_line +# insert_line insert_line() { if [ -z "$(grep "$2" $1)" ]; then - line=$((`grep -n "$3" $1 | cut -d: -f1` + 1)); - sed -i $line"s;^;${4};" $1; + case $3 in + before) offset=0;; + after) offset=1;; + esac; + line=$((`grep -n "$4" $1 | cut -d: -f1` + offset)); + sed -i "${line}s;^;${5};" $1; fi; } @@ -83,7 +88,15 @@ insert_line() { replace_line() { if [ ! -z "$(grep "$2" $1)" ]; then line=`grep -n "$2" $1 | cut -d: -f1`; - sed -i $line"s;.*;${3};" $1; + sed -i "${line}s;.*;${3};" $1; + fi; +} + +# remove_line +remove_line() { + if [ ! -z "$(grep "$2" $1)" ]; then + line=`grep -n "$2" $1 | cut -d: -f1`; + sed -i "${line}d" $1; fi; } @@ -130,7 +143,7 @@ append_file init.rc "run-parts" init; # init.tuna.rc backup_file init.tuna.rc; -insert_line init.tuna.rc "nodiratime barrier=0" "mount_all /fstab.tuna" "\tmount ext4 /dev/block/platform/omap/omap_hsmmc.0/by-name/userdata /data remount nosuid nodev noatime nodiratime barrier=0\n"; +insert_line init.tuna.rc "nodiratime barrier=0" after "mount_all /fstab.tuna" "\tmount ext4 /dev/block/platform/omap/omap_hsmmc.0/by-name/userdata /data remount nosuid nodev noatime nodiratime barrier=0\n"; append_file init.tuna.rc "dvbootscript" init.tuna; # init.superuser.rc @@ -140,7 +153,7 @@ if [ -f init.superuser.rc ]; then prepend_file init.superuser.rc "SuperSU daemonsu" init.superuser; else replace_file init.superuser.rc 750 init.superuser.rc; - insert_line init.rc "init.superuser.rc" "on post-fs-data" " import /init.superuser.rc\n\n"; + insert_line init.rc "init.superuser.rc" after "on post-fs-data" " import /init.superuser.rc\n"; fi; # fstab.tuna diff --git a/modules/placeholder b/modules/placeholder new file mode 100644 index 0000000..e69de29