| # 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/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.img" |
| 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("tests") { |
| source = "//prebuilt/virtualization/packages/debian_guest/images/${target_cpu}/${tests_image}" |
| output = "${target_out_dir}/debian/${tests_image}" |
| } |
| |
| guest_prebuilt("kernel") { |
| source = "//prebuilt/virtualization/packages/debian_guest/images/${target_cpu}/${linux_image}" |
| output = "${target_out_dir}/debian/${linux_image}" |
| } |
| |
| guest_package("debian_guest") { |
| deps = [ |
| ":initrd", |
| ":kernel", |
| ":tests", |
| ] |
| |
| cmdline = "root=/dev/vda rw" |
| if (debian_guest_earlycon) { |
| if (target_cpu == "x64") { |
| cmdline += " earlycon=uart,io,0x3f8" |
| } else if (target_cpu == "arm64") { |
| cmdline += " earlycon=pl011,0x808300000" |
| } 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.img" |
| 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" ] |
| } |