diff --git a/system/core/netsvc/tftp.c b/system/core/netsvc/tftp.c index 4147ba4d62c9db014e4d1f2c721f3b315b03156b..a5a438e51c84dfa3754ac6c7cfad737914a50020 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 663185b46b3efe867e9843be7223b6907036b5cb..da2f52db15e6e59240363889fd873d9fc416faae 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 d1f06bf82aab40670b701dabecf0b5cd12741c24..5cdf785101e31a66245f78ffee2042d8e3c08d2f 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