From 860257051a9a7878631d0a5d41696674e7c42c00 Mon Sep 17 00:00:00 2001 From: Mike Voydanoff <voydanoff@google.com> Date: Wed, 21 Nov 2018 14:51:50 -0800 Subject: [PATCH] [netsvc][bootserver] More support for paving AVB vbmeta partitions TEST: install-disk-image-test passes, paving mt8167s starting to work Change-Id: I804614df6c771fec739f735b3e331da9c5b64a78 --- system/core/netsvc/tftp.c | 6 ++++++ system/host/bootserver/bootserver.c | 28 +++++++++++++++++++++++++++- system/public/zircon/boot/netboot.h | 4 ++++ 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/system/core/netsvc/tftp.c b/system/core/netsvc/tftp.c index 4147ba4d62c..a5a438e51c8 100644 --- a/system/core/netsvc/tftp.c +++ b/system/core/netsvc/tftp.c @@ -230,6 +230,12 @@ static tftp_status paver_open_write(const char* filename, size_t size, file_info } else if (!strcmp(filename + NB_IMAGE_PREFIX_LEN, NB_ZIRCONR_HOST_FILENAME)) { printf("netsvc: Running ZIRCON-R Paver\n"); argv[1] = "install-zirconr"; + } else if (!strcmp(filename + NB_IMAGE_PREFIX_LEN, NB_VBMETAA_HOST_FILENAME)) { + printf("netsvc: Running VBMETA-A Paver\n"); + argv[1] = "install-vbmetaa"; + } else if (!strcmp(filename + NB_IMAGE_PREFIX_LEN, NB_VBMETAB_HOST_FILENAME)) { + printf("netsvc: Running VBMETA-B Paver\n"); + argv[1] = "install-vbmetab"; } else if (!strcmp(filename + NB_IMAGE_PREFIX_LEN, NB_SSHAUTH_HOST_FILENAME)) { printf("netsvc: Installing SSH authorized_keys\n"); argv[1] = "install-data-file"; diff --git a/system/host/bootserver/bootserver.c b/system/host/bootserver/bootserver.c index 663185b46b3..da2f52db15e 100644 --- a/system/host/bootserver/bootserver.c +++ b/system/host/bootserver/bootserver.c @@ -202,6 +202,8 @@ void usage(void) { " --zircona <file> use the supplied file as a ZIRCON-A ZBI\n" " --zirconb <file> use the supplied file as a ZIRCON-B ZBI\n" " --zirconr <file> use the supplied file as a ZIRCON-R ZBI\n" + " --vbmetaa <file> use the supplied file as a AVB vbmeta_a image\n" + " --vbmetab <file> use the supplied file as a AVB vbmeta_b image\n" " --authorized-keys <file> use the supplied file as an authorized_keys file\n" " --netboot use the netboot protocol\n" " --tftp use the tftp protocol (default)\n" @@ -294,6 +296,8 @@ int main(int argc, char** argv) { const char* zircona_image = NULL; const char* zirconb_image = NULL; const char* zirconr_image = NULL; + const char* vbmetaa_image = NULL; + const char* vbmetab_image = NULL; const char* authorized_keys = NULL; const char* fvm_images[MAX_FVM_IMAGES] = {NULL, NULL, NULL, NULL}; const char* kernel_fn = NULL; @@ -378,6 +382,22 @@ int main(int argc, char** argv) { return -1; } zirconr_image = argv[1]; + } else if (!strcmp(argv[1], "--vbmetaa")) { + argc--; + argv++; + if (argc <= 1) { + fprintf(stderr, "'--vbmetaa' option requires an argument (vbmeta_a image)\n"); + return -1; + } + vbmetaa_image = argv[1]; + } else if (!strcmp(argv[1], "--vbmetab")) { + argc--; + argv++; + if (argc <= 1) { + fprintf(stderr, "'--vbmetab' option requires an argument (vbmeta_a image)\n"); + return -1; + } + vbmetab_image = argv[1]; } else if (!strcmp(argv[1], "--authorized-keys")) { argc--; argv++; @@ -481,7 +501,7 @@ int main(int argc, char** argv) { argv++; } if (!kernel_fn && !bootloader_image && !efi_image && !kernc_image && !zircona_image && - !zirconb_image && !zirconr_image && !fvm_images[0]) { + !zirconb_image && !zirconr_image && !vbmetaa_image && !vbmetab_image && !fvm_images[0]) { usage(); } if (!nodename) { @@ -619,6 +639,12 @@ int main(int argc, char** argv) { if (status == 0 && zirconr_image) { status = xfer(&ra, zirconr_image, NB_ZIRCONR_FILENAME); } + if (status == 0 && vbmetaa_image) { + status = xfer(&ra, vbmetaa_image, NB_VBMETAA_FILENAME); + } + if (status == 0 && vbmetab_image) { + status = xfer(&ra, vbmetab_image, NB_VBMETAB_FILENAME); + } if (status == 0 && authorized_keys) { status = xfer(&ra, authorized_keys, NB_SSHAUTH_FILENAME); } diff --git a/system/public/zircon/boot/netboot.h b/system/public/zircon/boot/netboot.h index d1f06bf82aa..5cdf785101e 100644 --- a/system/public/zircon/boot/netboot.h +++ b/system/public/zircon/boot/netboot.h @@ -72,6 +72,10 @@ #define NB_ZIRCONB_FILENAME NB_IMAGE_PREFIX NB_ZIRCONB_HOST_FILENAME #define NB_ZIRCONR_HOST_FILENAME "zirconr.img" #define NB_ZIRCONR_FILENAME NB_IMAGE_PREFIX NB_ZIRCONR_HOST_FILENAME +#define NB_VBMETAA_HOST_FILENAME "vbmetaa.img" +#define NB_VBMETAA_FILENAME NB_IMAGE_PREFIX NB_VBMETAA_HOST_FILENAME +#define NB_VBMETAB_HOST_FILENAME "vbmetab.img" +#define NB_VBMETAB_FILENAME NB_IMAGE_PREFIX NB_VBMETAB_HOST_FILENAME #define NB_SSHAUTH_HOST_FILENAME "authorized_keys" #define NB_SSHAUTH_FILENAME NB_IMAGE_PREFIX NB_SSHAUTH_HOST_FILENAME -- GitLab