summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorosm0sis <osm0sis@outlook.com>2014-08-26 14:53:42 -0300
committerosm0sis <osm0sis@outlook.com>2014-08-27 02:22:53 -0300
commitb7a0960e1d218694e6e49c8bc44d17a51a6d9a50 (patch)
treeb13317fdd37fca2dae46c792ab5dd1b0699c8efb
parentdc43d6cde5901a6b8e0fd72ec08448d3ac1b9b91 (diff)
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.
-rw-r--r--META-INF/com/google/android/updater-script7
-rw-r--r--README18
-rwxr-xr-xanykernel.sh29
-rw-r--r--modules/placeholder0
4 files changed, 40 insertions, 14 deletions
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 <file>
replace_string <file> <if search string> <original string> <replacement string>
-insert_line <file> <if search string> <line before string> <inserted line>
+insert_line <file> <if search string> <before/after> <line match string> <inserted line>
replace_line <file> <line replace string> <replacement line>
+remove_line <file> <line match string>
prepend_file <file> <if search string> <patch file>
append_file <file> <if search string> <patch file>
replace_file <file> <permissions> <patch 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 <file> <if search string> <line before string> <inserted line>
+# insert_line <file> <if search string> <before/after> <line match string> <inserted 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 <file> <line match string>
+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
--- /dev/null
+++ b/modules/placeholder