diff --git a/etc/udev/rules.d/998-droid-system.rules b/etc/udev/rules.d/998-droid-system.rules new file mode 100644 index 0000000..739b014 --- /dev/null +++ b/etc/udev/rules.d/998-droid-system.rules @@ -0,0 +1,26 @@ +SUBSYSTEM=="graphics", SYMLINK+="$env{SUBSYSTEM}/%k" +SUBSYSTEM=="block", SYMLINK+="$env{SUBSYSTEM}/%k" +SUBSYSTEM=="oncrpc", SYMLINK+="$env{SUBSYSTEM}/%k" +SUBSYSTEM=="adsp", SYMLINK+="$env{SUBSYSTEM}/%k" +SUBSYSTEM=="mtd", SYMLINK+="$env{SUBSYSTEM}/%k" +SUBSYSTEM=="block", SYMLINK+="$env{SUBSYSTEM}/%k" +SUBSYSTEM=="misc", KERNEL=="log_events", SYMLINK+="alog/events" +SUBSYSTEM=="misc", KERNEL=="log_radio", SYMLINK+="alog/radio" +SUBSYSTEM=="misc", KERNEL=="log_system", SYMLINK+="alog/system" +SUBSYSTEM=="misc", KERNEL=="log_main", SYMLINK+="alog/main" + +ENV{ID_PART_ENTRY_SCHEME}=="gpt", ENV{ID_PART_ENTRY_NAME}=="?*", IMPORT{program}="/bin/sh /lib/udev/platform-device $env{DEVPATH}", SYMLINK+="block/platform/$env{ANDROID_BLOCK_DEVICE}/by-name/$env{ID_PART_ENTRY_NAME}" + +ENV{ID_PART_ENTRY_SCHEME}=="gpt", ENV{ID_PART_ENTRY_NAME}=="?*", IMPORT{program}="/bin/sh /lib/udev/platform-device $env{DEVPATH}", SYMLINK+="block/bootdevice/by-name/$env{ID_PART_ENTRY_NAME}" + +# Temporary hacks +KERNEL=="ashmem", MODE="0666" +KERNEL=="binder", MODE="0666" +KERNEL=="fb0", MODE="0666" +KERNEL=="ion", MODE="0666" +KERNEL=="mtk_disp_mgr", MODE="0666" +KERNEL=="pmsg0", MODE="0666" +KERNEL=="mali0", MODE="0666" +KERNEL=="swsync", MODE="0666" + +KERNEL=="mmcblk0", ENV{UDISKS_SYSTEM}="1" diff --git a/lib/systemd/system/droid-hal-init.service b/lib/systemd/system/droid-hal-init.service new file mode 100644 index 0000000..8bf72d4 --- /dev/null +++ b/lib/systemd/system/droid-hal-init.service @@ -0,0 +1,13 @@ +[Unit] +Description=droid-hal-init +Wants=lxc@android.service +After=lxc@android.service +After=local-fs.target systemd-udev-settle.service +Before=graphical.target display-manager.service lightdm.service + +[Service] +Type=oneshot +ExecStart=/usr/bin/droid-hal-init + +[Install] +WantedBy=multi-user.target diff --git a/usr/bin/droid-hal-init b/usr/bin/droid-hal-init new file mode 100755 index 0000000..6334076 --- /dev/null +++ b/usr/bin/droid-hal-init @@ -0,0 +1,8 @@ +#!/bin/sh +# Wait for Android LXC container to start +sleep 10 + +mount /dev/disk/by-partlabel/nvcfg /nvcfg +mount /dev/disk/by-partlabel/nvdata /nvdata + +echo 1 > /dev/wmtWifi diff --git a/usr/lib/lxc-android/mount-android b/usr/lib/lxc-android/mount-android index c4c152a..83e31f6 100755 --- a/usr/lib/lxc-android/mount-android +++ b/usr/lib/lxc-android/mount-android @@ -15,6 +15,8 @@ cat ${fstab} | while read line; do ([ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ]) && continue ([ "$3" = "emmc" ] || [ "$3" = "swap" ] || [ "$3" = "mtd" ]) && continue ([ "$2" = "/system" ] || [ "$2" = "/data" ]) && continue + # For Gemini PDA + ([ "$2" = "/nvcfg" ] || [ "$2" = "/nvdata" ]) && continue label=$(echo $1 | awk -F/ '{print $NF}') [ -z "$label" ] && continue diff --git a/var/lib/lxc/android/config b/var/lib/lxc/android/config index 912b72c..993cf9d 100644 --- a/var/lib/lxc/android/config +++ b/var/lib/lxc/android/config @@ -8,7 +8,6 @@ lxc.tty = 4 lxc.pts = 1024 lxc.arch = armhf lxc.cap.drop = mac_admin mac_override -lxc.pivotdir = lxc_putold lxc.hook.pre-start = /var/lib/lxc/android/pre-start.sh diff --git a/var/lib/lxc/android/fstab.mt6797 b/var/lib/lxc/android/fstab.mt6797 new file mode 100644 index 0000000..8f0080d --- /dev/null +++ b/var/lib/lxc/android/fstab.mt6797 @@ -0,0 +1,52 @@ +# 1 "vendor/mediatek/proprietary/hardware/fstab/mt6797/fstab.in" +# 1 "" +# 1 "" +# 1 "/usr/include/stdc-predef.h" 1 3 4 +# 1 "" 2 +# 1 "vendor/mediatek/proprietary/hardware/fstab/mt6797/fstab.in" +# 26 "vendor/mediatek/proprietary/hardware/fstab/mt6797/fstab.in" +#/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/system /system ext4 ro wait,verify +# 38 "vendor/mediatek/proprietary/hardware/fstab/mt6797/fstab.in" +#/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/userdata /data ext4 noatime,nosuid,nodev,noauto_da_alloc,discard wait,check,resize,forceencrypt=/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/metadata, + + +#/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/cache /cache ext4 noatime,nosuid,nodev,noauto_da_alloc,discard wait,check +#/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/protect1 /protect_f ext4 noatime,nosuid,nodev,noauto_da_alloc,commit=1,nodelalloc wait,check,formattable +#/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/protect2 /protect_s ext4 noatime,nosuid,nodev,noauto_da_alloc,commit=1,nodelalloc wait,check,formattable +/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/nvdata /nvdata ext4 noatime,nosuid,nodev,noauto_da_alloc,discard wait,check,formattable +/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/nvcfg /nvcfg ext4 noatime,nosuid,nodev,noauto_da_alloc,commit=1,nodelalloc wait,check,formattable +# 54 "vendor/mediatek/proprietary/hardware/fstab/mt6797/fstab.in" +#/devices/mtk-msdc.0/11230000.msdc0* auto vfat defaults voldmanaged=sdcard0:auto +#/devices/mtk-msdc.0/11240000.msdc1* auto auto defaults voldmanaged=sdcard1:auto,encryptable=userdata +#/devices/soc/11270000.usb3_xhci* auto vfat defaults voldmanaged=usbotg:auto +/devices/platform/musbfsh* auto vfat defaults voldmanaged=usbotg:auto + + +/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/frp /persistent emmc defaults defaults + + +/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/nvram /nvram emmc defaults defaults +/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/proinfo /proinfo emmc defaults defaults +/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/lk /bootloader emmc defaults defaults +/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/lk2 /bootloader2 emmc defaults defaults +/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/para /misc emmc defaults defaults +/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/boot /boot emmc defaults defaults +/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/recovery /recovery emmc defaults defaults +/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/logo /logo emmc defaults defaults +/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/expdb /expdb emmc defaults defaults +/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/seccfg /seccfg emmc defaults defaults + +/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/tee1 /tee1 emmc defaults defaults +/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/tee2 /tee2 emmc defaults defaults + + +/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/scp1 /scp1 emmc defaults defaults +/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/scp2 /scp2 emmc defaults defaults + + + + +/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/md1img /md1img emmc defaults defaults +/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/md1dsp /md1dsp emmc defaults defaults +/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/md1arm7 /md1arm7 emmc defaults defaults +/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/md3img /md3img emmc defaults defaults diff --git a/var/lib/lxc/android/pre-start.sh b/var/lib/lxc/android/pre-start.sh index ab9a1ec..095bacf 100755 --- a/var/lib/lxc/android/pre-start.sh +++ b/var/lib/lxc/android/pre-start.sh @@ -13,11 +13,11 @@ mount_android_partitions() { mkdir -p ${lxc_rootfs_path}/$2 mount -n -o bind,recurse $2 ${lxc_rootfs_path}/$2 - done + done } INITRD=/system/boot/android-ramdisk.img -rm -Rf $LXC_ROOTFS_PATH +mount none -t tmpfs $LXC_ROOTFS_PATH mkdir -p $LXC_ROOTFS_PATH cd $LXC_ROOTFS_PATH cat $INITRD | gzip -d | cpio -i @@ -37,9 +37,15 @@ rm -Rf $LXC_ROOTFS_PATH/vendor # Mount the android partitions mount_android_partitions $LXC_ROOTFS_PATH/fstab* "$LXC_ROOTFS_PATH" +umount $LXC_ROOTFS_PATH/nvdata $LXC_ROOTFS_PATH/nvcfg +umount /nvdata /nvcfg sed -i '/on early-init/a \ mkdir /dev/socket\n\ mount none /socket /dev/socket bind' $LXC_ROOTFS_PATH/init.rc -sed -i "/mount_all /d" $LXC_ROOTFS_PATH/init.*.rc +#sed -i "/mount_all /d" $LXC_ROOTFS_PATH/init.*.rc +cp /var/lib/lxc/android/fstab.mt6797 $LXC_ROOTFS_PATH/fstab.mt6797 + sed -i "/swapon_all /d" $LXC_ROOTFS_PATH/init.*.rc sed -i "/on nonencrypted/d" $LXC_ROOTFS_PATH/init.rc + +echo 10 > /sys/class/firmware/timeout