Merge "[LSC] Add LOCAL_LICENSE_KINDS to packages/modules/Virtualization"
diff --git a/apex/Android.bp b/apex/Android.bp
index 4f7201a..0985577 100644
--- a/apex/Android.bp
+++ b/apex/Android.bp
@@ -26,7 +26,10 @@
],
},
},
- binaries: ["assemble_cvd"],
+ binaries: [
+ "assemble_cvd",
+ "virtmanager",
+ ],
filesystems: ["microdroid"],
}
diff --git a/microdroid/Android.bp b/microdroid/Android.bp
index fc26f89..a44eb26 100644
--- a/microdroid/Android.bp
+++ b/microdroid/Android.bp
@@ -59,11 +59,21 @@
"servicemanager",
"tombstoned",
"cgroups.json",
+
+ // These two files are temporary and only for test.
+ // TODO(b/178993690): migrate cil files to Soong
+ "microdroid_plat_sepolicy.cil",
+ "microdroid_plat_mapping_file",
] + microdroid_shell_and_utilities,
multilib: {
common: {
deps: [
"com.android.runtime",
+ "plat_file_contexts",
+ "plat_hwservice_contexts",
+ "plat_property_contexts",
+ "plat_service_contexts",
+ "plat_keystore2_key_contexts",
],
},
},
@@ -81,17 +91,85 @@
installable: false, // avoid collision with system partition's init.rc
}
+logical_partition {
+ name: "microdroid_super",
+ sparse: true,
+ // TODO(b/181107248): remove this hard-coded value
+ size: "104857600",
+ groups: [
+ {
+ name: "mygroup",
+ // TODO(b/181107248): remove this hard-coded value
+ size: "80000000",
+ partitions: [
+ {
+ name: "system",
+ filesystem: ":microdroid",
+ },
+ ],
+ },
+ ],
+}
+
bootimg {
- name: "microdroid_vendor_boot-5.10",
+ name: "microdroid_boot-5.10",
ramdisk_module: "microdroid_ramdisk-5.10",
+ enabled: false,
+ arch: {
+ arm64: {
+ kernel_prebuilt: ":kernel_prebuilts-5.10-arm64",
+ enabled: true,
+ },
+ x86_64: {
+ kernel_prebuilt: ":kernel_prebuilts-5.10-x86_64",
+ enabled: true,
+ },
+ },
+ // TODO(jiyong): change the name to init, cause it's confusing
+ cmdline: "rdinit=/bin/init_vendor",
dtb_prebuilt: "dummy_dtb.img",
header_version: "3",
- vendor_boot: true,
- partition_name: "vendor_boot",
+ partition_name: "boot",
}
android_filesystem {
name: "microdroid_ramdisk-5.10",
+ deps: [
+ "init_first_stage_soong",
+ ],
+ dirs: [
+ "dev",
+ "proc",
+ "sys",
+
+ // TODO(jiyong): remove these
+ "mnt",
+ "debug_ramdisk",
+ "second_stage_resources",
+ ],
+ type: "compressed_cpio",
+}
+
+bootimg {
+ name: "microdroid_vendor_boot-5.10",
+ ramdisk_module: "microdroid_vendor_ramdisk-5.10",
+ dtb_prebuilt: "dummy_dtb.img",
+ header_version: "3",
+ vendor_boot: true,
+ partition_name: "vendor_boot",
+ enabled: false,
+ arch: {
+ arm64: {
+ enabled: true,
+ },
+ x86_64: {
+ enabled: true,
+ },
+ },
+}
+
+android_filesystem {
+ name: "microdroid_vendor_ramdisk-5.10",
arch: {
arm64: {
deps: ["virt_device_prebuilts_kernel_modules-5.10-arm64"],
@@ -100,5 +178,40 @@
deps: ["virt_device_prebuilts_kernel_modules-5.10-x86_64"],
},
},
+ deps: [
+ "microdroid_fstab",
+ ],
+ base_dir: "first_stage_ramdisk",
type: "compressed_cpio",
+ symlinks: [
+ {
+ target: "etc/fstab",
+ name: "first_stage_ramdisk/fstab.microdroid",
+ },
+ {
+ target: "first_stage_ramdisk/lib",
+ name: "lib",
+ },
+ ],
+}
+
+prebuilt_etc {
+ name: "microdroid_fstab",
+ src: "fstab",
+ filename: "fstab",
+ installable: false,
+}
+
+prebuilt_etc {
+ name: "microdroid_uboot_env",
+ src: ":microdroid_uboot_env_gen",
+ filename: "uboot_env.img",
+}
+
+genrule {
+ name: "microdroid_uboot_env_gen",
+ tools: ["mkenvimage_host"],
+ srcs: ["uboot-env.txt"],
+ out: ["output.img"],
+ cmd: "$(location mkenvimage_host) -s 4096 -o $(out) $(in)",
}
diff --git a/microdroid/fstab b/microdroid/fstab
new file mode 100644
index 0000000..494f5b4
--- /dev/null
+++ b/microdroid/fstab
@@ -0,0 +1 @@
+system /system ext4 noatime,ro,errors=panic wait,first_stage_mount,logical
diff --git a/microdroid/uboot-env.txt b/microdroid/uboot-env.txt
new file mode 100644
index 0000000..cdd2c19
--- /dev/null
+++ b/microdroid/uboot-env.txt
@@ -0,0 +1,12 @@
+# Static u-boot environment variables for microdroid. See b/180481192
+
+# Boot the device following the Android boot procedure
+bootcmd=boot_android virtio -
+
+# Kernel commandlines
+bootargs=rdinit=/bin/init_vendor panic=-1 androidboot.first_stage_console=1 androidboot.hardware=microdroid androidboot.boot_devices=10000.pci
+
+# 0:2 is the misc partition
+bootdevice=0:2
+bootdelay=0
+fdtaddr=0x80000000
diff --git a/tests/hostside/AndroidTest.xml b/tests/hostside/AndroidTest.xml
index c97a1df..0995881 100644
--- a/tests/hostside/AndroidTest.xml
+++ b/tests/hostside/AndroidTest.xml
@@ -26,7 +26,7 @@
<!-- CrosVM is installed. -->
<option name="run-command" value="ls /apex/com.android.virt/bin/crosvm" />
<!-- Virt Manager is installed. -->
- <option name="run-command" value="which virtmanager" />
+ <option name="run-command" value="ls /apex/com.android.virt/bin/virtmanager" />
</target_preparer>
<!-- Push test binaries to the device. -->
diff --git a/tests/hostside/java/android/virt/test/VsockTest.java b/tests/hostside/java/android/virt/test/VsockTest.java
index 4895c9a..9de4f2e 100644
--- a/tests/hostside/java/android/virt/test/VsockTest.java
+++ b/tests/hostside/java/android/virt/test/VsockTest.java
@@ -35,7 +35,7 @@
private static final String TEST_MESSAGE = "HelloWorld";
private static final String SERVER_TARGET = "vsock_server";
- private static final String VIRT_MANAGER_COMMAND = "virtmanager";
+ private static final String VIRT_MANAGER_COMMAND = "/apex/com.android.virt/bin/virtmanager";
@Test
public void testVsockServer() throws Exception {
diff --git a/virtmanager/Android.bp b/virtmanager/Android.bp
index 9681afc..5ff5db4 100644
--- a/virtmanager/Android.bp
+++ b/virtmanager/Android.bp
@@ -15,4 +15,5 @@
"libserde",
"libanyhow",
],
+ apex_available: ["com.android.virt"],
}
diff --git a/virtmanager/aidl/Android.bp b/virtmanager/aidl/Android.bp
index b9fd134..ebe5624 100644
--- a/virtmanager/aidl/Android.bp
+++ b/virtmanager/aidl/Android.bp
@@ -16,6 +16,7 @@
},
rust: {
enabled: true,
+ apex_available: ["com.android.virt"],
},
},
}