Adds four fstab.zram.{25p,50p,75p,none} variants copied to vendor/etc.
init.rpi4.rc activates swap at boot_complete using persist.vendor.zram.size.
Adds vm.min_free_kbytes/lowmem_reserve_ratio memory tuning on init.
SELinux: declares vendor_zram_config_prop for persist.vendor.zram.size.
Remove vendor_default_prop and bluetooth_lea_prop get_prop rules — both violate
AOSP neverallow rules (vendor_default_prop is banned for all app domains;
bluetooth_lea_prop is a platform type not exported to the vendor policy interface).
Remove generic sysfs:file allow for init and system_server — both violate
neverallow rules in init.te and coredomain.te; proper labeled sysfs types are
needed when specific paths are identified from avc: denied logs.
Rename ro.pawlet.ota. -> ro.vendor.pawlet.ota. to satisfy VTS vendor property
namespace enforcement.
- priv_app.te: get vendor_default_prop + bluetooth_lea_prop (Settings, priv apps)
- system_app.te: get vendor_default_prop
- device.mk: persist.adb.tcp.port=5555 for userdebug builds only
Now that the prebuilt defines a separate LawnchairQuickStep module,
include it alongside Lawnchair so Launcher3QuickStep (recents/overview)
is also replaced by the Lawnchair APK.
Targeting the rpiboot directory directly confuses ninja when inner files
change (Missing restat warning, outputs should be files error). Use a
stamp file (.stamp) so ninja correctly detects when the directory contents
are stale.
Also uppercase the FAT volume label BOOT to avoid mkfs.fat's lowercase
label compatibility warning.
Add fstab.rpi4.discard (metadata with discard) alongside the default
fstab.rpi4 (no discard). device.mk selects between them based on
BOARD_STORAGE_SUPPORTS_DISCARD — set true for SD cards or SSDs that
actually support TRIM, leave unset for USB flash drives.
USB drives typically don't support TRIM. The USB DISK 3.0 in use explicitly
rejects it (EXT4-fs: mounting with discard option, but the device does not
support discard). Every ext4 journal commit on sda8 was attempting a TRIM,
adding latency that stalled jbd2/sda8-8 and caused Watchdog kills.
Writing the fixed-size disk image to a larger device leaves userdata at its
image size (128M) and strands the backup GPT header mid-disk. wipe_userdata now
relocates the backup GPT to the true end of the device (fixing the 'Alternate
GPT header not at the end of the disk' kernel warning) and recreates partition 9
spanning all remaining free space before formatting it.
Our partition layout has no vbmeta partition, so Android Verified Boot must be
off — otherwise first-stage init fails verification and bootloops. Explicit
guard against an inherited config enabling it.
First-stage init only creates /dev/block/by-name/* symlinks for partitions
on a declared boot device. Our fstab mounts system/system_ext/vendor/metadata
by-name, so without boot_devices set these symlinks were never created and
first-stage mount failed, rebooting ~45s into boot (rainbow-splash loop).
Set boot_devices to the USB (scb/fd500000.pcie) and SD (emmc2bus/fe340000.mmc)
platform paths, matched exactly against the uevent path with /devices/platform/
stripped. Verified booting past first-stage mount from USB via serial console.
* Decompressing APEX can take couple of minutes on the very first boot.
For some reason this is significantly slower on AOSP16 than it was
on AOSP15.
* This takes ~170 MB more space on the system partition which we can
afford.
* Labeling vendor allocator libraries became necessary for some reason
after moving minigbm gralloc to APEX.
* Address remaining drm_hwcomposer denials.