@memeka, I was having problems with cairo's gles shader compiler, so I was hoping the Android 4.4.4 libs would fix it.
If not then it was just a good learning exercise I guess
@OverSun, nevermind the above dev fix.
It's the stupidest thing I ever did hehe.
Here's the real fix.
In Android 4.4.x the /init binary is used to setup the property_service, but it also tries to do android specific things, like mounting /dev and running /init.X scripts.
However this is not part of the bionic libc at all.
I commented out those lines (ugly workaround), and recompiled the /init binary.
It's the system/core/init/init.c file (I've attached it to the archive).
Now it will just do: property_init(); and take care of the selinux permissions on the /dev nodes (if you enable it in /system/build.prop).
Furthermore I adjusted the libc a little bit:
- The libc_malloc_debug_leak.so and libc_malloc_qemu_.so will now link to libdsyscalls as well so they can utilize the __errno functions.
- I reverted the logging paths to /dev/log/main and /dev/log/events (instead of /dev/alog) since all other user-space binaries will write to /dev/log/X anyways
Just get the above system directory and replace the libs from the attached archive.
In order to get it working you need to run the static "init" binary once, so the properties get setup, then you can run the pvrsrvctl/ servicemanager / mediaserver.
So your startup script should look something like:
Code: Select all
# Android Hybris stuff
rm -Rf /dev/log
rm -Rf /dev/graphics
mkdir /dev/log
mkdir /dev/graphics
ln -s /dev/log_events /dev/log/events
ln -s /dev/log_main /dev/log/main
ln -s /dev/log_system /dev/log/system
ln -s /dev/log_radio /dev/log/radio
ln -s /dev/fb0 /dev/graphics/fb0
/system/init
/vendor/bin/pvrsrvctl --start --no-module || true
/system/bin/servicemanager &
/system/bin/mediaserver &
I followed voodik's instructions to build the complete image from the first post.. (takes a while)
Then when I would to make changes I just go into the source dir:
Code: Select all
. build/envsetup.sh
lunch 11
cd bionic/libc
# Apply libc patch
mm
cd system/core/init
# Edit init.c
mm
Maybe you can skip building the complete image instead just repo sync and build libc.
If it works then it will certainly save you a lot of time
