update-binary: Change how we handle modules
As of Oreo, Google is requiring that kernel modules be used whenever possible and that their location be in /vendor. With Lineage 15.1, devices without a separate /vendor partition will use /system/vendor, which symlinked to /vendor. To make this more flexible and future proof, allow developers to specify where each module needs to go by setting the path in the modules folder. If a module needs to go to /system/vendor/lib/modules, then the module should be placed in modules/system/vendor/lib/modules. Contexts and permissions will still be updated automatically. Android documentation: https://source.android.com/devices/architecture/kernel/modular-kernels Lineage 15.1 commit: https://github.com/LineageOS/android_vendor_lineage/commit/bf38db2a5e358a5449458b3dee2dd9d4015b8147 Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
This commit is contained in:
1 file changed
+15
-11
@@ -13,14 +13,6 @@ ui_print() {
|
|||||||
done;
|
done;
|
||||||
}
|
}
|
||||||
show_progress() { echo "progress $1 $2" > $OUTFD; }
|
show_progress() { echo "progress $1 $2" > $OUTFD; }
|
||||||
set_perm_recursive() {
|
|
||||||
dirs=$(echo $* | $bb awk '{ print substr($0, index($0,$5)) }');
|
|
||||||
for i in $dirs; do
|
|
||||||
$bb chown -R $1:$2 $i;
|
|
||||||
$bb find "$i" -type d -exec chmod $3 {} +;
|
|
||||||
$bb find "$i" -type f -exec chmod $4 {} +;
|
|
||||||
done;
|
|
||||||
}
|
|
||||||
file_getprop() { grep "^$2=" "$1" | cut -d= -f2; }
|
file_getprop() { grep "^$2=" "$1" | cut -d= -f2; }
|
||||||
getprop() { test -e /sbin/getprop && /sbin/getprop $1 || file_getprop /default.prop $1; }
|
getprop() { test -e /sbin/getprop && /sbin/getprop $1 || file_getprop /default.prop $1; }
|
||||||
cleanup() { rm -rf /tmp/anykernel; }
|
cleanup() { rm -rf /tmp/anykernel; }
|
||||||
@@ -63,6 +55,7 @@ ui_print "AnyKernel2 by osm0sis @ xda-developers";
|
|||||||
ui_print " ";
|
ui_print " ";
|
||||||
umount /system 2>/dev/null;
|
umount /system 2>/dev/null;
|
||||||
mount -o ro -t auto /system;
|
mount -o ro -t auto /system;
|
||||||
|
mount -o ro -t auto /vendor 2>/dev/null;
|
||||||
mount /data 2>/dev/null;
|
mount /data 2>/dev/null;
|
||||||
test -f /system/system/build.prop && root=/system;
|
test -f /system/system/build.prop && root=/system;
|
||||||
|
|
||||||
@@ -97,10 +90,21 @@ if [ "$(file_getprop /tmp/anykernel/anykernel.sh do.modules)" == 1 ]; then
|
|||||||
ui_print " ";
|
ui_print " ";
|
||||||
ui_print "Pushing modules...";
|
ui_print "Pushing modules...";
|
||||||
mount -o rw,remount -t auto /system;
|
mount -o rw,remount -t auto /system;
|
||||||
$bb cp -rLf /tmp/anykernel/modules/* $root/system/lib/modules/;
|
mount -o rw,remount -t auto /vendor 2>/dev/null;
|
||||||
set_perm_recursive 0 0 0755 0644 $root/system/lib/modules;
|
cd /tmp/anykernel/modules;
|
||||||
chcon -R 'u:object_r:system_file:s0' $root/system/lib/modules;
|
for module in $(find . -name '*.ko'); do
|
||||||
|
$bb cp -rLf $module /$module;
|
||||||
|
$bb chown 0:0 /$module;
|
||||||
|
$bb chmod 644 /$module;
|
||||||
|
case $module in
|
||||||
|
*/vendor/*) mod=vendor;;
|
||||||
|
*) mod=system;;
|
||||||
|
esac;
|
||||||
|
chcon "u:object_r:${mod}_file:s0" /$module;
|
||||||
|
done;
|
||||||
|
cd /tmp/anykernel;
|
||||||
mount -o ro,remount -t auto /system;
|
mount -o ro,remount -t auto /system;
|
||||||
|
mount -o ro,remount -t auto /vendor 2>/dev/null;
|
||||||
fi;
|
fi;
|
||||||
|
|
||||||
debugging;
|
debugging;
|
||||||
|
|||||||
Reference in new issue
Block a user