diff --git a/man/systemd-detect-virt.xml b/man/systemd-detect-virt.xml index acbe54a140..2175c48fa2 100644 --- a/man/systemd-detect-virt.xml +++ b/man/systemd-detect-virt.xml @@ -230,6 +230,12 @@ technology identifier. + + + + Output all currently known and detectable container and VM environments. + + diff --git a/src/detect-virt/detect-virt.c b/src/detect-virt/detect-virt.c index 3fbcdf5556..197e526b05 100644 --- a/src/detect-virt/detect-virt.c +++ b/src/detect-virt/detect-virt.c @@ -10,6 +10,7 @@ #include #include +#include "string-table.h" #include "util.h" #include "virt.h" @@ -32,6 +33,7 @@ static void help(void) { " -r --chroot Detect whether we are run in a chroot() environment\n" " --private-users Only detect whether we are running in a user namespace\n" " -q --quiet Don't output anything, just set return value\n" + " --list List all known and detectable types of virtualization\n" , program_invocation_short_name); } @@ -40,6 +42,7 @@ static int parse_argv(int argc, char *argv[]) { enum { ARG_VERSION = 0x100, ARG_PRIVATE_USERS, + ARG_LIST, }; static const struct option options[] = { @@ -50,6 +53,7 @@ static int parse_argv(int argc, char *argv[]) { { "chroot", no_argument, NULL, 'r' }, { "private-users", no_argument, NULL, ARG_PRIVATE_USERS }, { "quiet", no_argument, NULL, 'q' }, + { "list", no_argument, NULL, ARG_LIST }, {} }; @@ -89,6 +93,10 @@ static int parse_argv(int argc, char *argv[]) { arg_mode = ONLY_CHROOT; break; + case ARG_LIST: + DUMP_STRING_TABLE(virtualization, int, _VIRTUALIZATION_MAX); + return 0; + case '?': return -EINVAL;