summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2018-02-23 12:49:15 +0100
committerSven Eden <yamakuzure@gmx.net>2018-05-30 07:59:05 +0200
commitd6ac074bf95f61aeaa9b81db414cc3089fa22f7a (patch)
tree86dc6063a29b8a6f403cdbb7f9cde6697863f439 /src
parent47271fd56eadbc451e3ef8b2692dcc8bd2d5d8c7 (diff)
basic/virt: provide a nicer message is /proc/cpuinfo is not available
$ sudo systemd-run -p RootDirectory=/usr -E LD_LIBRARY_PATH=/lib/systemd/ -E SYSTEMD_LOG_LEVEL=debug /bin/systemd-detect-virt Before systemd-detect-virt[18498]: No virtualization found in DMI systemd-detect-virt[18498]: No virtualization found in CPUID systemd-detect-virt[18498]: Virtualization XEN not found, /proc/xen does not exist systemd-detect-virt[18498]: This platform does not support /proc/device-tree systemd-detect-virt[18498]: Failed to check for virtualization: No such file or directory The first four lines are at debug level, so the user would only see that last one usually, which is not very enlightening. This now becomes: systemd-detect-virt[21172]: No virtualization found in DMI systemd-detect-virt[21172]: No virtualization found in CPUID systemd-detect-virt[21172]: Virtualization XEN not found, /proc/xen does not exist systemd-detect-virt[21172]: This platform does not support /proc/device-tree systemd-detect-virt[21172]: /proc/cpuinfo not found, assuming no UML virtualization. systemd-detect-virt[21172]: This platform does not support /proc/sysinfo systemd-detect-virt[21172]: Found VM virtualization none systemd-detect-virt[21172]: none We do more checks, which is good too.
Diffstat (limited to 'src')
-rw-r--r--src/basic/virt.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/basic/virt.c b/src/basic/virt.c
index e04553642..aaff4ea58 100644
--- a/src/basic/virt.c
+++ b/src/basic/virt.c
@@ -283,6 +283,10 @@ static int detect_vm_uml(void) {
/* Detect User-Mode Linux by reading /proc/cpuinfo */
r = read_full_file("/proc/cpuinfo", &cpuinfo_contents, NULL);
+ if (r == -ENOENT) {
+ log_debug("/proc/cpuinfo not found, assuming no UML virtualization.");
+ return VIRTUALIZATION_NONE;
+ }
if (r < 0)
return r;
@@ -291,7 +295,7 @@ static int detect_vm_uml(void) {
return VIRTUALIZATION_UML;
}
- log_debug("No virtualization found in /proc/cpuinfo.");
+ log_debug("UML virtualization not found in /proc/cpuinfo.");
return VIRTUALIZATION_NONE;
}
@@ -608,18 +612,18 @@ int running_in_userns(void) {
#endif // 0
int running_in_chroot(void) {
- int ret;
+ int r;
#if 0 /// elogind does not allow to ignore chroots, we are never init!
if (getenv_bool("SYSTEMD_IGNORE_CHROOT") > 0)
return 0;
#endif // 0
- ret = files_same("/proc/1/root", "/", 0);
- if (ret < 0)
- return ret;
+ r = files_same("/proc/1/root", "/", 0);
+ if (r < 0)
+ return r;
- return ret == 0;
+ return r == 0;
}
static const char *const virtualization_table[_VIRTUALIZATION_MAX] = {