| # 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("//build/assembly/assembled_system.gni") |
| import("//build/images/args.gni") |
| import("//build/images/custom_signing.gni") |
| import("//build/images/vbmeta.gni") |
| import("//build/images/vboot/vboot.gni") |
| import("//build/images/zedboot/zedboot_args.gni") |
| import("//src/sys/root/build/root.gni") |
| |
| assert(current_toolchain == default_toolchain, |
| "//build/images/* are only valid in the Fuchsia toolchain") |
| |
| root_realm("root") { |
| core_package_name = "core-invalid" |
| } |
| |
| # Zedboot must be included to pave devices until recovery has a replacement |
| # mechanism. Products can specify recovery_label to determine which |
| # image to include in zircon-r. |
| use_zedboot_as_recovery = false |
| zedboot_metadata_slot = "zedboot" |
| if (get_label_info(recovery_label, "label_with_toolchain") == |
| get_label_info(":zedboot", "label_with_toolchain")) { |
| use_zedboot_as_recovery = true |
| zedboot_metadata_slot = "zircon-r" |
| } |
| |
| # Note: This ZBI output is also used by a script in //scripts/verify_cmdline_params. |
| assembled_system("zedboot_assembly") { |
| testonly = true |
| output_dir = root_build_dir |
| image_name = "zedboot" |
| include_component_id_index = true |
| include_shell_commands = false |
| generate_fvm = false |
| fshost_config = board_zedboot_fshost_config |
| |
| base_packages = [] |
| |
| devmgr_config = [ |
| "netsvc.all-features=true", |
| "netsvc.netboot=true", |
| ] + zedboot_devmgr_config |
| |
| cmdline = [ |
| "console.shell=true", |
| "netsvc.disable=false", |
| "kernel.enable-debugging-syscalls=true", |
| "kernel.enable-serial-syscalls=true", |
| "virtcon.colorscheme=special", |
| "virtcon.dpi=160,240,360,480", |
| ] |
| |
| bootfs_labels = [ |
| ":root", |
| "//build/input:zedboot_bootfs", |
| "//build/info:bootfs", |
| "//bundles:bootstrap-zedboot", |
| "//bundles/drivers:bootstrap", |
| "//bundles/drivers:usb-host-stack", |
| "//bundles/drivers:usb-peripheral-stack", |
| "//bundles/drivers:utils", |
| "//src/sys/component_manager:component_manager_bootfs_config", |
| "//src/diagnostics/archivist:default-service-config", |
| ] |
| |
| # Needed for installer runs. |
| bootfs_labels += [ |
| "//src/storage/bin/disk-pave:install-disk-image", |
| "//src/storage/bin/mount", |
| ] |
| |
| # For debugging. |
| bootfs_labels += [ |
| "//src/bringup/bin/virtcon:bootfs", |
| "//src/connectivity/network/bin/ping", |
| "//src/devices/nand/bin/nand-util", |
| "//src/devices/nand/drivers/broker:nand-broker", |
| "//src/diagnostics/bundles:bootstrap", |
| "//src/security/bin/syscall-check", |
| "//src/storage/bin/dd", |
| "//src/storage/bin/umount", |
| "//src/sys/bin/psutils:killall", |
| "//src/sys/bin/psutils:ps", |
| "//src/sys/bin/psutils:threads", |
| "//src/zircon/bin/ktrace", |
| "//zircon/third_party/uapp/dash", |
| ] |
| |
| # zbi arguments |
| if (custom_signing_script != "") { |
| zbi_signing_script = custom_signing_script |
| zbi_signing_script_deps = [ "//build/images/custom_signing:deps" ] |
| } else if (use_vboot) { |
| zbi_signing_script = vboot_action.script |
| zbi_signing_args = vboot_action.args |
| zbi_signing_script_deps = vboot_action.deps |
| inputs = vboot_action.inputs |
| } |
| |
| metadata = { |
| images = [] |
| image_paths = [] |
| update_target = [] |
| |
| images += [ |
| { |
| label = get_label_info(":$target_name", "label_with_toolchain") |
| if (custom_signing_script == "" && !use_vboot) { |
| archive = true |
| if (use_zedboot_as_recovery) { |
| bootserver_pave = [ "--zirconr" ] |
| if (zircon_r_partition != "") { |
| fastboot_flash = [ zircon_r_partition ] |
| } |
| } |
| bootserver_pave_zedboot = [ "--zircona" ] |
| } |
| name = zedboot_metadata_slot |
| path = "zedboot.zbi" |
| type = "zbi" |
| }, |
| ] |
| |
| if (custom_signing_script == "" && !use_vboot) { |
| update_target += [ "zedboot=zedboot.zbi" ] |
| } |
| image_paths += [ "IMAGE_ZEDBOOT_ZBI=zedboot.zbi" ] |
| if (use_zedboot_as_recovery) { |
| image_paths += [ "IMAGE_ZIRCONR_ZBI=zedboot.zbi" ] |
| } |
| |
| # Optionally include the signed images. |
| if (custom_signing_script != "" || use_vboot) { |
| images += [ |
| { |
| label = get_label_info(":$target_name", "label_with_toolchain") |
| archive = true |
| if (use_zedboot_as_recovery) { |
| mkzedboot_mode = [ "vboot" ] |
| bootserver_pave = [ "--zirconr" ] |
| if (zircon_r_partition != "") { |
| fastboot_flash = [ zircon_r_partition ] |
| } |
| } |
| name = "${zedboot_metadata_slot}.signed" |
| bootserver_pave_zedboot = [ "--zircona" ] |
| path = "zedboot.zbi.signed" |
| type = "zbi.signed" |
| }, |
| ] |
| update_target += [ "zedboot.signed=zedboot.zbi.signed" ] |
| if (use_zedboot_as_recovery) { |
| mkzedboot_mode = [ "vboot" ] |
| image_paths += [ "IMAGE_ZIRCONR_SIGNEDZBI=zedboot.zbi.signed" ] |
| } |
| } |
| |
| # Optionally include the vbmeta. |
| if (use_vbmeta) { |
| images += [ |
| { |
| label = get_label_info(":$target_name", "label_with_toolchain") |
| archive = true |
| if (use_zedboot_as_recovery) { |
| bootserver_pave = [ "--vbmetar" ] |
| if (vbmeta_r_partition != "") { |
| fastboot_flash = [ vbmeta_r_partition ] |
| } |
| } |
| name = zedboot_metadata_slot |
| bootserver_pave_zedboot = [ "--vbmetaa" ] |
| path = "zedboot.vbmeta" |
| type = "vbmeta" |
| }, |
| ] |
| if (use_zedboot_as_recovery) { |
| image_paths += [ "IMAGE_VBMETAR_RAW=zedboot.vbmeta" ] |
| |
| # Only include zedboot as recovery.vbmeta if zedboot is used as recovery |
| update_target += [ "recovery.vbmeta=zedboot.vbmeta" ] |
| } |
| } |
| } |
| } |
| |
| if (target_cpu != "arm64" && !use_vboot) { |
| esp("esp") { |
| output_name = "zedboot" |
| cmdline = "efi_cmdline.txt" |
| deps = [ ":zedboot_assembly" ] |
| zedboot = "$root_build_dir/zedboot.zbi" |
| testonly = true |
| |
| metadata = { |
| images = [ |
| { |
| label = get_label_info(":$target_name", "label_with_toolchain") |
| mkzedboot_mode = [ "efi" ] |
| name = "zedboot-efi" |
| path = "zedboot.esp.blk" |
| type = "blk" |
| }, |
| ] |
| image_paths = [ "IMAGE_ZEDBOOT_ESP=zedboot.esp.blk" ] |
| } |
| } |
| } |
| |
| group("zedboot") { |
| public_deps = [ ":zedboot_assembly" ] |
| if (target_cpu != "arm64" && !use_vboot) { |
| public_deps += [ ":esp" ] |
| } |
| testonly = true |
| } |