Microdroid runs on cuttlefish_x86_64
This CL includes x86_64 specific changes that are required to run microdroid on cuttlefish_x86_64. 1) Unsigned bootloader is used. (b/185115783) 2) androidboot.boot_devices is correctly set for the architecture 3) uboot-env.txt is customized to set loadaddr 4) MicrodroidTestCase is revised to handle the case when multiple devices are connected. Bug: 185115783 Bug: 185082754 Test: atest MicrodroidHostTests with aosp_cf_x86_64_phone Change-Id: I1baebedd392f742f9a9cd064d63a8c3741e46daa
This commit is contained in:
parent
ebc3a37b3e
commit
89e81cb889
|
@ -132,6 +132,14 @@ logical_partition {
|
|||
],
|
||||
}
|
||||
|
||||
// TODO(jiyong): change the name to init, cause it's confusing
|
||||
microdroid_boot_cmdline = "rdinit=/bin/init_vendor " +
|
||||
"panic=-1 " +
|
||||
// TODO(b/181936135) make the ratelimiting conditional; ratelimiting on prod build
|
||||
"printk.devkmsg=on " +
|
||||
"androidboot.first_stage_console=1 " +
|
||||
"androidboot.hardware=microdroid "
|
||||
|
||||
bootimg {
|
||||
name: "microdroid_boot-5.10",
|
||||
ramdisk_module: "microdroid_ramdisk-5.10",
|
||||
|
@ -141,19 +149,16 @@ bootimg {
|
|||
arch: {
|
||||
arm64: {
|
||||
kernel_prebuilt: ":kernel_prebuilts-5.10-arm64",
|
||||
cmdline: microdroid_boot_cmdline +
|
||||
"androidboot.boot_devices=10000.pci",
|
||||
},
|
||||
x86_64: {
|
||||
kernel_prebuilt: ":kernel_prebuilts-5.10-x86_64",
|
||||
cmdline: microdroid_boot_cmdline +
|
||||
"pci=noacpi " +
|
||||
"androidboot.boot_devices=pci0000:00/0000:00:01.0",
|
||||
},
|
||||
},
|
||||
// TODO(jiyong): change the name to init, cause it's confusing
|
||||
cmdline: "rdinit=/bin/init_vendor " +
|
||||
"panic=-1 " +
|
||||
// TODO(b/181936135) make the ratelimiting conditional; ratelimiting on prod build
|
||||
"printk.devkmsg=on " +
|
||||
"androidboot.first_stage_console=1 " +
|
||||
"androidboot.hardware=microdroid " +
|
||||
"androidboot.boot_devices=10000.pci ",
|
||||
dtb_prebuilt: "dummy_dtb.img",
|
||||
header_version: "4",
|
||||
partition_name: "boot",
|
||||
|
@ -227,6 +232,14 @@ prebuilt_etc {
|
|||
prebuilt_etc {
|
||||
name: "microdroid_bootloader",
|
||||
src: ":microdroid_bootloader_gen",
|
||||
arch: {
|
||||
x86_64: {
|
||||
// For unknown reason, the signed bootloader doesn't work on x86_64. Until the problem
|
||||
// is fixed, let's use the unsigned bootloader for the architecture.
|
||||
// TODO(b/185115783): remove this
|
||||
src: ":cuttlefish_crosvm_bootloader",
|
||||
},
|
||||
},
|
||||
filename: "microdroid_bootloader",
|
||||
}
|
||||
|
||||
|
@ -262,6 +275,11 @@ genrule {
|
|||
prebuilt_etc {
|
||||
name: "microdroid_uboot_env",
|
||||
src: ":microdroid_uboot_env_gen",
|
||||
arch: {
|
||||
x86_64: {
|
||||
src: ":microdroid_uboot_env_gen_x86_64",
|
||||
},
|
||||
},
|
||||
filename: "uboot_env.img",
|
||||
}
|
||||
|
||||
|
@ -273,6 +291,14 @@ genrule {
|
|||
cmd: "$(location mkenvimage_host) -s 4096 -o $(out) $(in)",
|
||||
}
|
||||
|
||||
genrule {
|
||||
name: "microdroid_uboot_env_gen_x86_64",
|
||||
tools: ["mkenvimage_host"],
|
||||
srcs: ["uboot-env-x86_64.txt"],
|
||||
out: ["output.img"],
|
||||
cmd: "$(location mkenvimage_host) -s 4096 -o $(out) $(in)",
|
||||
}
|
||||
|
||||
// sepolicy sha256 for vendor
|
||||
prebuilt_etc {
|
||||
name: "microdroid_precompiled_sepolicy.plat_sepolicy_and_mapping.sha256",
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
# Static u-boot environment variables for microdroid. See b/180481192
|
||||
|
||||
# Boot the device following the Android boot procedure
|
||||
bootcmd=boot_android virtio 0#misc
|
||||
|
||||
bootdelay=0
|
||||
|
||||
# U-Boot in x86_64 by defaults loads kernel at 0x20000000 (512MB), which is
|
||||
# out of the physical memory when the VM is launched with the default memory
|
||||
# size of 256MB. To avoid that, explicitly set the kernel load addresss using
|
||||
# loadaddr variable.
|
||||
loadaddr=0x02000000
|
||||
fdtaddr=0x40000000
|
|
@ -112,7 +112,14 @@ public class MicrodroidTestCase extends BaseHostJUnit4Test {
|
|||
Thread.sleep(MICRODROID_BOOT_TIMEOUT_MILLIS);
|
||||
|
||||
// Connect to microdroid and read a system property from there
|
||||
executeCommand("adb forward tcp:" + TEST_VM_ADB_PORT + " vsock:" + TEST_VM_CID + ":5555");
|
||||
executeCommand(
|
||||
"adb -s "
|
||||
+ getDevice().getSerialNumber()
|
||||
+ " forward tcp:"
|
||||
+ TEST_VM_ADB_PORT
|
||||
+ " vsock:"
|
||||
+ TEST_VM_CID
|
||||
+ ":5555");
|
||||
executeCommand("adb connect " + MICRODROID_SERIAL);
|
||||
String prop = executeCommand("adb -s " + MICRODROID_SERIAL + " shell getprop ro.hardware");
|
||||
assertThat(prop, is("microdroid"));
|
||||
|
|
Loading…
Reference in New Issue