summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Maurer <mmaurer@google.com>2019-01-29 08:59:21 -0800
committerandroid-build-merger <android-build-merger@google.com>2019-01-29 08:59:21 -0800
commitc08aa23b956098a329f14e43d5036cb3a388af95 (patch)
tree966f2f6b8990d208ee56c53a8f6507a4d7c8b9ae
parenta8c9e875ba447bfc09ab1c760edafd78caab7f27 (diff)
parentfd68d47acd6dd251c27f52d22b078c21ba64d960 (diff)
downloaddevice_generic_trusty-c08aa23b956098a329f14e43d5036cb3a388af95.tar.gz
device_generic_trusty-c08aa23b956098a329f14e43d5036cb3a388af95.tar.bz2
device_generic_trusty-c08aa23b956098a329f14e43d5036cb3a388af95.zip
Add trusty emulator target
am: fd68d47acd Change-Id: Ic51e6d965b2e1e41c93e2d5c101c63e0e028ca2c
-rw-r--r--AndroidProducts.mk17
-rw-r--r--BoardConfig.mk53
-rw-r--r--init.qemu_trusty.rc106
-rw-r--r--qemu_trusty_arm64.mk22
-rw-r--r--qemu_trusty_base.mk73
-rw-r--r--sepolicy/dhcpclient.te18
-rw-r--r--sepolicy/file.te1
-rw-r--r--sepolicy/file_contexts3
-rw-r--r--sepolicy/trusty_test.te3
-rw-r--r--vendor.mk23
-rw-r--r--vendorsetup.sh22
11 files changed, 341 insertions, 0 deletions
diff --git a/AndroidProducts.mk b/AndroidProducts.mk
new file mode 100644
index 0000000..431511e
--- /dev/null
+++ b/AndroidProducts.mk
@@ -0,0 +1,17 @@
+# Copyright (C) 2018-2019 The Android Open-Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+PRODUCT_MAKEFILES := \
+ $(LOCAL_DIR)/qemu_trusty_arm64.mk
diff --git a/BoardConfig.mk b/BoardConfig.mk
new file mode 100644
index 0000000..508645b
--- /dev/null
+++ b/BoardConfig.mk
@@ -0,0 +1,53 @@
+# Copyright (C) 2019 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# The generic product target doesn't have any hardware-specific pieces.
+TARGET_NO_BOOTLOADER := true
+TARGET_NO_KERNEL := true
+TARGET_ARCH := arm64
+TARGET_ARCH_VARIANT := armv8-a
+TARGET_CPU_VARIANT := generic
+TARGET_CPU_ABI := arm64-v8a
+TARGET_BOOTLOADER_BOARD_NAME := trusty_$(TARGET_ARCH)
+
+TARGET_2ND_ARCH := arm
+TARGET_2ND_ARCH_VARIANT := armv7-a
+TARGET_2ND_CPU_ABI := armeabi-v7a
+TARGET_2ND_CPU_ABI2 := armeabi
+
+BOARD_SEPOLICY_DIRS += device/generic/trusty/sepolicy
+
+TARGET_USES_64_BIT_BINDER := true
+
+BUILD_QEMU_IMAGES := true
+
+TARGET_USERIMAGES_USE_EXT4 := true
+BOARD_SYSTEMIMAGE_PARTITION_SIZE := 33554432 # 32M
+BOARD_USERDATAIMAGE_PARTITION_SIZE := 4194304 # 4M
+TARGET_COPY_OUT_VENDOR := vendor
+# ~100 MB vendor image. Please adjust system image / vendor image sizes
+# when finalizing them.
+BOARD_VENDORIMAGE_PARTITION_SIZE := 4194304 # 4M
+BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := ext4
+BOARD_FLASH_BLOCK_SIZE := 512
+TARGET_USERIMAGES_SPARSE_EXT_DISABLED := true
+DEVICE_MATRIX_FILE := device/generic/goldfish/compatibility_matrix.xml
+
+BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED := true
+BOARD_SEPOLICY_DIRS += build/target/board/generic/sepolicy
+
+# Enable A/B update
+TARGET_NO_RECOVERY := true
+BOARD_BUILD_SYSTEM_ROOT_IMAGE := true
diff --git a/init.qemu_trusty.rc b/init.qemu_trusty.rc
new file mode 100644
index 0000000..a67cf48
--- /dev/null
+++ b/init.qemu_trusty.rc
@@ -0,0 +1,106 @@
+on fs
+ mount_all /fstab.qemu_trusty
+
+on early-init
+ mount debugfs debugfs /sys/kernel/debug mode=755
+
+on post-fs-data
+ setprop vold.post_fs_data_done 1
+
+on boot
+ chown root system /sys/power/wake_lock
+ chown root system /sys/power/wake_unlock
+ setprop ro.radio.use-ppp no
+ setprop ro.build.product generic
+ setprop ro.product.device generic
+ setprop ro.hardware.audio.primary goldfish
+ setprop ro.setupwizard.mode EMULATOR
+
+# fake some battery state
+ setprop status.battery.state Slow
+ setprop status.battery.level 5
+ setprop status.battery.level_raw 50
+ setprop status.battery.level_scale 9
+
+# set up the GPU caching
+ setprop ro.hwui.texture_cache_size 72
+ setprop ro.hwui.layer_cache_size 48
+ setprop ro.hwui.r_buffer_cache_size 8
+ setprop ro.hwui.path_cache_size 32
+ setprop ro.hwui.gradient_cache_size 1
+ setprop ro.hwui.drop_shadow_cache_size 6
+ setprop ro.hwui.texture_cache_flushrate 0.4
+ setprop ro.hwui.text_small_cache_width 1024
+ setprop ro.hwui.text_small_cache_height 1024
+ setprop ro.hwui.text_large_cache_width 2048
+ setprop ro.hwui.text_large_cache_height 1024
+
+# disable some daemons the emulator doesn't want
+ stop dund
+ stop akmd
+
+# start essential services
+# These were written for the classic emulator, but are applicable to ranchu
+ start goldfish-logcat
+# start goldfish-setup
+
+
+# enable Google-specific location features,
+# like NetworkLocationProvider and LocationCollector
+ setprop ro.com.google.locationfeatures 1
+
+#emulator is not much useful before boot complete
+#start it later
+on property:sys.boot_completed=1
+ setprop sys.usb.config adb
+ start adbd
+ start goldfish-logcat
+ start qemu_trusty-net
+
+on property:qemu.adbd=start
+ setprop sys.usb.config adb
+ start adbd
+ start goldfish-logcat
+
+service qemu_trusty-net /vendor/bin/dhcpclient -i eth0
+ class late_start
+ user root
+ group root wakelock
+
+# The qemu-props program is used to set various system
+# properties on boot. It must be run early during the boot
+# process to avoid race conditions with other daemons that
+# might read them (e.g. surface flinger), so define it in
+# class 'core'
+#
+service qemu-props /vendor/bin/qemu-props
+ class core
+ user root
+ group root
+ oneshot
+
+on property:qemu.logcat=start
+ start goldfish-logcat
+
+# -Q is a special logcat option that forces the
+# program to check wether it runs on the emulator
+# if it does, it redirects its output to the device
+# named by the androidboot.console kernel option
+# if not, is simply exits immediately
+# logd user added to prevent logcat from logging content.
+# log group added to support access to read logs socket.
+service goldfish-logcat /system/bin/logcat -Q
+ user logd
+ group log
+ oneshot
+
+service fingerprintd /system/bin/fingerprintd
+ class late_start
+ user system
+
+service bugreport /system/bin/dumpstate -d -p -B \
+ -o /data/user_de/0/com.android.shell/files/bugreports/bugreport
+ class main
+ disabled
+ oneshot
+ keycodes 114 115 116
diff --git a/qemu_trusty_arm64.mk b/qemu_trusty_arm64.mk
new file mode 100644
index 0000000..a643328
--- /dev/null
+++ b/qemu_trusty_arm64.mk
@@ -0,0 +1,22 @@
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
+$(call inherit-product, $(LOCAL_PATH)/qemu_trusty_base.mk)
+
+PRODUCT_NAME := qemu_trusty_arm64
+PRODUCT_DEVICE := trusty
+PRODUCT_BRAND := Android
+PRODUCT_MODEL := qemu-trusty-arm64
+
diff --git a/qemu_trusty_base.mk b/qemu_trusty_base.mk
new file mode 100644
index 0000000..256a20d
--- /dev/null
+++ b/qemu_trusty_base.mk
@@ -0,0 +1,73 @@
+#
+# Copyright (C) 2018-2019 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This file contains the definitions needed for a _really_ minimal system
+# image to be run under emulation under upstream QEMU (www.qemu.org), once
+# it supports a few Android virtual devices. Note that this is _not_ the
+# same as running under the Android emulator.
+
+PRODUCT_PACKAGES += \
+ android.hidl.allocator@1.0-service \
+ init \
+ init_system \
+ init_vendor \
+ init.environ.rc \
+ init.rc \
+ linker \
+ linker64 \
+ logcat \
+ logd \
+ logwrapper \
+ servicemanager \
+ hwservicemanager \
+ vndservicemanager \
+ sh \
+ toolbox \
+ toybox \
+ vold \
+ reboot \
+ adbd \
+ dhcpclient \
+ mdnsd \
+
+# SELinux packages are added as dependencies of the selinux_policy
+# phony package.
+PRODUCT_PACKAGES += \
+ selinux_policy \
+
+PRODUCT_COPY_FILES += \
+ system/core/rootdir/init.usb.rc:root/init.usb.rc \
+ system/core/rootdir/init.usb.configfs.rc:root/init.usb.configfs.rc \
+ system/core/rootdir/ueventd.rc:root/ueventd.rc \
+ system/core/rootdir/etc/hosts:system/etc/hosts \
+
+PRODUCT_FULL_TREBLE_OVERRIDE := true
+
+PRODUCT_COPY_FILES += \
+ device/generic/qemu/fstab.ranchu:root/fstab.qemu_trusty \
+ device/generic/trusty/init.qemu_trusty.rc:root/init.qemu_trusty.rc \
+
+PRODUCT_COPY_FILES += \
+ device/generic/goldfish/data/etc/config.ini:config.ini \
+ device/generic/qemu/advancedFeatures.ini:advancedFeatures.ini \
+
+# for Trusty
+$(call inherit-product, system/core/trusty/trusty-base.mk)
+$(call inherit-product, system/core/trusty/trusty-storage.mk)
+
+PRODUCT_PACKAGES += \
+ tipc-test \
+ trusty-ut-ctrl \
+
diff --git a/sepolicy/dhcpclient.te b/sepolicy/dhcpclient.te
new file mode 100644
index 0000000..7aeb2f4
--- /dev/null
+++ b/sepolicy/dhcpclient.te
@@ -0,0 +1,18 @@
+# DHCP client
+type dhcpclient, domain;
+type dhcpclient_exec, exec_type, vendor_file_type, file_type;
+
+init_daemon_domain(dhcpclient)
+net_domain(dhcpclient)
+
+dontaudit dhcpclient kernel:system module_request;
+allow dhcpclient self:capability { net_admin net_raw };
+allow dhcpclient self:udp_socket create;
+allow dhcpclient self:netlink_route_socket { write nlmsg_write };
+allow dhcpclient varrun_file:dir search;
+allow dhcpclient self:packet_socket { create bind write read };
+allowxperm dhcpclient self:udp_socket ioctl { SIOCSIFFLAGS
+ SIOCSIFADDR
+ SIOCSIFNETMASK
+ SIOCSIFMTU
+ SIOCGIFHWADDR };
diff --git a/sepolicy/file.te b/sepolicy/file.te
new file mode 100644
index 0000000..b3bd582
--- /dev/null
+++ b/sepolicy/file.te
@@ -0,0 +1 @@
+type varrun_file, file_type, data_file_type, mlstrustedobject;
diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts
new file mode 100644
index 0000000..6e7e8c6
--- /dev/null
+++ b/sepolicy/file_contexts
@@ -0,0 +1,3 @@
+/dev/trusty-ipc-dev0 u:object_r:trusty_ipc_device:s0
+/vendor/bin/dhcpclient u:object_r:dhcpclient_exec:s0
+/data/vendor/var/run(/.*)? u:object_r:varrun_file:s0
diff --git a/sepolicy/trusty_test.te b/sepolicy/trusty_test.te
new file mode 100644
index 0000000..08d347a
--- /dev/null
+++ b/sepolicy/trusty_test.te
@@ -0,0 +1,3 @@
+type trusty_ipc_device, dev_type;
+
+allow shell trusty_ipc_device:chr_file { open read write ioctl };
diff --git a/vendor.mk b/vendor.mk
new file mode 100644
index 0000000..4cc62d2
--- /dev/null
+++ b/vendor.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2019 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This file contains the definitions needed for a _really_ minimal system
+# image to be run under emulation under upstream QEMU (www.qemu.org), once
+# it supports a few Android virtual devices. Note that this is _not_ the
+# same as running under the Android emulator.
+
+PRODUCT_PACKAGES +=
+ dhcpclient \
+
diff --git a/vendorsetup.sh b/vendorsetup.sh
new file mode 100644
index 0000000..350b3ce
--- /dev/null
+++ b/vendorsetup.sh
@@ -0,0 +1,22 @@
+# Copyright (C) 2018-2019 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# This file is executed by build/envsetup.sh, and can use anything
+# defined in envsetup.sh.
+#
+# In particular, you can add lunch options with the add_lunch_combo
+# function: add_lunch_combo generic-eng
+
+add_lunch_combo qemu_trusty_arm64-userdebug