| # 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" ] |
| } |