Create a minimal bootable image

It passes "make -j" but does not work further so far.

build completed successfully (18:59 (mm:ss))

Bug: 79601115
Test: make -j
Change-Id: I7f7c6c1056cb6cfab29426eda1eb0483ea0e212c
Signed-off-by: Roman Kiryanov <rkir@google.com>
diff --git a/kernel-tests/config.ini b/kernel-tests/config.ini
new file mode 100644
index 0000000..f58040f
--- /dev/null
+++ b/kernel-tests/config.ini
@@ -0,0 +1,4 @@
+avd.ini.encoding=UTF-8
+disk.dataPartition.size=2G
+hw.ramSize=2048
+image.sysdir.1=x86/
diff --git a/kernel-tests/fstab.ranchu b/kernel-tests/fstab.ranchu
new file mode 100644
index 0000000..12988ab
--- /dev/null
+++ b/kernel-tests/fstab.ranchu
@@ -0,0 +1,6 @@
+# Android fstab file.
+#<src>                                                  <mnt_point>         <type>    <mnt_flags and options>                              <fs_mgr_flags>
+# The filesystem that contains the filesystem checker binary (typically /system) cannot
+# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
+/dev/block/vdc                                          /data               ext4      noatime,nosuid,nodev,nomblk_io_submit,errors=panic   wait,check,quota,forceencrypt=/dev/block/vdd,reservedsize=128M
+/devices/*/block/vdf                                    auto                auto      defaults                                             voldmanaged=sdcard:auto,encryptable=userdata
diff --git a/kernel-tests/goldfish_kernel_tests_x86_64.mk b/kernel-tests/goldfish_kernel_tests_x86_64.mk
index d499862..a21bc02 100644
--- a/kernel-tests/goldfish_kernel_tests_x86_64.mk
+++ b/kernel-tests/goldfish_kernel_tests_x86_64.mk
@@ -1,16 +1,124 @@
-$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
-$(call inherit-product, $(SRC_TARGET_DIR)/product/gsi_common.mk)
-
-PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS := relaxed
-
-PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += \
-    root/init.zygote32_64.rc \
-    root/init.zygote64_32.rc \
-
-PRODUCT_COPY_FILES += \
-    system/core/rootdir/init.zygote32_64.rc:root/init.zygote32_64.rc
-
 PRODUCT_NAME := goldfish_kernel_tests_x86_64
 PRODUCT_DEVICE := generic_x86_64
 PRODUCT_BRAND := Android
 PRODUCT_MODEL := Kernel tests for goldfish kernel
+PRODUCT_FULL_TREBLE_OVERRIDE := true
+
+BUILD_EMULATOR := false
+
+TARGET_NO_BOOTLOADER := true
+TARGET_NO_KERNEL := true
+TARGET_CPU_ABI := x86_64
+TARGET_ARCH := x86_64
+TARGET_ARCH_VARIANT := x86_64
+TARGET_SUPPORTS_64_BIT_APPS := true
+TARGET_USERIMAGES_USE_EXT4 := true
+TARGET_USERIMAGES_SPARSE_EXT_DISABLED := true
+
+BOARD_SYSTEMIMAGE_PARTITION_SIZE := 2147483648
+BOARD_USERDATAIMAGE_PARTITION_SIZE := 576716800
+BOARD_CACHEIMAGE_PARTITION_SIZE := 69206016
+BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE := ext4
+BOARD_FLASH_BLOCK_SIZE := 512
+BOARD_HAVE_BLUETOOTH := false
+
+SRC1_ROOT_DIR := device/generic/goldfish/kernel-tests
+
+# libXYZ
+PRODUCT_PACKAGES += \
+    libc \
+    libstdc++ \
+    libm \
+    libdl \
+    libutils \
+    libsysutils \
+    libbinder \
+    libhardware \
+    libhardware_legacy \
+    linker \
+    linker64 \
+
+# important stuff
+PRODUCT_PACKAGES += \
+    android.hidl.allocator@1.0-service \
+    android.hidl.base-V1.0-java \
+    android.hidl.manager-V1.0-java \
+    android.hidl.memory@1.0-impl \
+    android.hidl.memory@1.0-impl.vendor \
+    android.system.suspend@1.0-service \
+    ashmemd \
+    libashmemd_client \
+
+# logs
+PRODUCT_PACKAGES += \
+    liblog \
+    logd \
+    logcat \
+    logwrapper \
+
+# debugger
+PRODUCT_PACKAGES += \
+    debuggerd \
+    debuggerd64 \
+    dumpstate \
+    dumpsys \
+    crash_dump \
+    adb \
+    adbd \
+
+# QEMU
+PRODUCT_PACKAGES += \
+    qemu-props \
+
+# Graphics
+PRODUCT_PACKAGES += \
+    gralloc.goldfish \
+    gralloc.goldfish.default \
+    gralloc.ranchu \
+    android.hardware.graphics.allocator@2.0-service \
+    android.hardware.graphics.allocator@2.0-impl \
+
+# Device modules
+PRODUCT_PACKAGES += \
+    servicemanager \
+    hwservicemanager \
+    vndservice \
+    vndservicemanager \
+    toolbox \
+    toybox \
+    vold \
+    init \
+    init.environ.rc \
+    init.rc \
+    reboot \
+    service \
+    cmd \
+    sh \
+    e2fsck \
+    gzip \
+
+# SELinux
+PRODUCT_PACKAGES += \
+    sepolicy \
+    selinux_policy_system \
+    selinux_policy \
+    file_contexts \
+    seapp_contexts \
+    property_contexts \
+    mac_permissions.xml \
+
+PRODUCT_COPY_FILES += \
+    $(SRC1_ROOT_DIR)/manifest.xml:$(TARGET_COPY_OUT_VENDOR)/manifest.xml \
+    $(SRC1_ROOT_DIR)/init.ranchu-core.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.ranchu-core.sh \
+    $(SRC1_ROOT_DIR)/init.ranchu.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.ranchu.rc \
+    $(SRC1_ROOT_DIR)/fstab.ranchu:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.ranchu \
+    $(SRC1_ROOT_DIR)/config.ini:config.ini \
+
+# The set of packages we want to force 'speed' compilation on.
+PRODUCT_DEXPREOPT_SPEED_APPS := \
+
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \
+    ro.zygote=zygote32
+
+PRODUCT_PROPERTY_OVERRIDES += \
+    ro.carrier=unknown
diff --git a/kernel-tests/init.ranchu-core.sh b/kernel-tests/init.ranchu-core.sh
new file mode 100644
index 0000000..62c64aa
--- /dev/null
+++ b/kernel-tests/init.ranchu-core.sh
@@ -0,0 +1,12 @@
+#!/vendor/bin/sh
+
+# take the wake lock
+allowsuspend=`getprop ro.kernel.qemu.allowsuspend`
+case "$allowsuspend" in
+    "") echo "emulator_wake_lock" > /sys/power/wake_lock
+    ;;
+    1) echo "emulator_wake_lock" > /sys/power/wake_unlock
+    ;;
+    *) echo "emulator_wake_lock" > /sys/power/wake_lock
+    ;;
+esac
diff --git a/kernel-tests/init.ranchu.rc b/kernel-tests/init.ranchu.rc
new file mode 100644
index 0000000..1b8fc6c
--- /dev/null
+++ b/kernel-tests/init.ranchu.rc
@@ -0,0 +1,42 @@
+on fs
+    mount_all /vendor/etc/fstab.ranchu
+
+on early-init
+    mount debugfs debugfs /sys/kernel/debug mode=755
+
+on init
+    symlink /dev/goldfish_pipe /dev/android_pipe
+    symlink /dev/goldfish_pipe /dev/qemu_pipe
+
+on post-fs-data
+    # nothing
+
+on zygote-start
+    # nothing
+
+on boot
+    start goldfish-logcat
+
+on property:vendor.qemu.timezone=*
+    setprop persist.sys.timezone ${vendor.qemu.timezone}
+
+on property:dev.bootcomplete=1
+    setprop vendor.qemu.dev.bootcomplete 1
+
+service qemu-props /vendor/bin/qemu-props
+    class core
+    user root
+    group root
+    oneshot
+
+service goldfish-logcat /system/bin/logcat -Q
+    user logd
+    group log
+    oneshot
+
+service bugreport /system/bin/dumpstate -d -p -B -z \
+        -o /data/user_de/0/com.android.shell/files/bugreports/bugreport
+    class main
+    disabled
+    oneshot
+    keycodes 114 115 116
diff --git a/kernel-tests/manifest.xml b/kernel-tests/manifest.xml
new file mode 100644
index 0000000..359b4ad
--- /dev/null
+++ b/kernel-tests/manifest.xml
@@ -0,0 +1,5 @@
+<manifest version="1.0" type="device" target-level="3">
+    <sepolicy>
+        <version>27.0</version>
+    </sepolicy>
+</manifest>