blob: 5e45dc7392a994cde043759f16b3234576fc4dff [file] [log] [blame]
# Copyright 2018 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//src/virtualization/buildtools/linux_paths.gni")
import("//src/virtualization/buildtools/romfs_image.gni")
import("//src/virtualization/packages/guest_package.gni")
declare_args() {
# Package the rootfs as a QCOW image (as opposed to a flat file).
debian_guest_qcow = true
debian_guest_earlycon = false
}
initrd_image = "initrd.img"
rootfs_image = "rootfs.qcow2"
tests_image = "tests.romfs"
linux_image = "vmlinuz"
guest_prebuilt("initrd") {
source = "//prebuilt/virtualization/packages/debian_guest/images/${target_cpu}/${initrd_image}"
output = "${target_out_dir}/debian/${initrd_image}"
}
guest_prebuilt("rootfs") {
source = "//prebuilt/virtualization/packages/debian_guest/images/${target_cpu}/${rootfs_image}"
output = "${target_out_dir}/debian/${rootfs_image}"
}
guest_prebuilt("kernel") {
source = "//prebuilt/virtualization/packages/debian_guest/images/${target_cpu}/${linux_image}"
output = "${target_out_dir}/debian/${linux_image}"
}
romfs_image("tests") {
deps = [
"//src/virtualization/tests/memory_test_util(${linux_exe_toolchain})",
"//src/virtualization/tests/virtio_block_test_util(${linux_exe_toolchain})",
"//src/virtualization/tests/virtio_gpu_test_util(${linux_exe_toolchain})",
"//src/virtualization/tests/virtio_input_test_util(${linux_exe_toolchain})",
"//src/virtualization/tests/virtio_net_test_util(${linux_exe_toolchain})",
"//src/virtualization/tests/virtio_rng_test_util(${linux_exe_toolchain})",
"//src/virtualization/tests/virtio_vsock_test_util(${linux_exe_toolchain})",
]
inputs = [
"${linux_exe_path}/virtio_block_test_util",
"${linux_exe_path}/virtio_gpu_test_util",
"${linux_exe_path}/virtio_input_test_util",
"${linux_exe_path}/virtio_net_test_util",
"${linux_exe_path}/virtio_rng_test_util",
"${linux_exe_path}/virtio_vsock_test_util",
"${linux_exe_path}/memory_test_util",
]
output = "$target_out_dir/debian/${tests_image}"
}
guest_package("debian_guest") {
default_net = true
virtio_balloon = true
virtio_console = true
virtio_gpu = true
virtio_mem = false
virtio_rng = true
virtio_sound = true
virtio_sound_input = false
virtio_vsock = true
deps = [
":initrd",
":kernel",
":tests",
]
cmdline = "root=/dev/vda rw systemd.log_target=kmsg"
if (debian_guest_earlycon) {
if (target_cpu == "x64") {
cmdline += " earlycon=uart,io,0x3f8 console=tty0 keep_bootcon"
} else if (target_cpu == "arm64") {
cmdline += " earlycon=pl011,0x808300000 console=tty0 keep_bootcon"
} else {
panic("Unsupported architecture ${target_cpu}")
}
}
linux = "${target_out_dir}/debian/${linux_image}"
ramdisk = "${target_out_dir}/debian/${initrd_image}"
disk_name = "filesystem.img"
if (debian_guest_qcow) {
deps += [ ":rootfs" ]
disk_path = rebase_path("${target_out_dir}/debian/${rootfs_image}")
disk_options = "ro,qcow,volatile"
} else {
disk_path = rebase_path("${target_out_dir}/debian/rootfs.img")
disk_options = "ro,volatile"
}
resources = [
{
path = disk_path
dest = disk_name
},
]
block_devices = [ "data/${disk_name},${disk_options}" ]
tests_filename = "tests.romfs"
resources += [
{
path = rebase_path("$target_out_dir/debian/${tests_image}")
dest = tests_filename
},
]
block_devices += [ "data/${tests_filename},ro" ]
deps += [ "//src/virtualization/lib/guest_interaction:extras" ]
gis_out_dir =
get_label_info("//src/virtualization/lib/guest_interaction:extras",
"target_out_dir")
resources += [
{
path = rebase_path("$gis_out_dir/linux/extras.img")
dest = "extras.img"
},
]
block_devices += [ "data/extras.img,ro" ]
}