mirror of
https://github.com/systemd/systemd.git
synced 2024-11-27 12:13:33 +08:00
detect-virt: detect User-Mode Linux
In a User-Mode Linux session: $ systemd-detect-virt none Although it is possible to reliably detect virtualization: $ cat /proc/cpuinfo processor : 0 vendor_id : User Mode Linux model name : UML mode : skas host : Linux kytes 3.11.0-rc1-00009-ge5fd680 (...) bogomips : 7007.43 So, grep for the string "\nvendor_id\t: User Mode Linux\n" in /proc/cpuinfo, and say "uml" when asked.
This commit is contained in:
parent
36c0868b67
commit
7080ea16b5
@ -70,6 +70,7 @@
|
||||
<varname>microsoft</varname>,
|
||||
<varname>oracle</varname>, <varname>xen</varname>,
|
||||
<varname>bochs</varname>, <varname>chroot</varname>,
|
||||
<varname>uml</varname>,
|
||||
<varname>openvz</varname>, <varname>lxc</varname>,
|
||||
<varname>lxc-libvirt</varname>,
|
||||
<varname>systemd-nspawn</varname>.</para>
|
||||
|
@ -969,6 +969,7 @@
|
||||
<varname>xen</varname>,
|
||||
<varname>bochs</varname>,
|
||||
<varname>chroot</varname>,
|
||||
<varname>uml</varname>,
|
||||
<varname>openvz</varname>,
|
||||
<varname>lxc</varname>,
|
||||
<varname>lxc-libvirt</varname>,
|
||||
|
@ -67,6 +67,7 @@ int detect_vm(const char **id) {
|
||||
const char *j, *k;
|
||||
bool hypervisor;
|
||||
_cleanup_free_ char *hvtype = NULL;
|
||||
_cleanup_free_ char *cpuinfo_contents = NULL;
|
||||
int r;
|
||||
|
||||
/* Try high-level hypervisor sysfs file first:
|
||||
@ -164,6 +165,16 @@ int detect_vm(const char **id) {
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/* Detect User-Mode Linux by reading /proc/cpuinfo */
|
||||
r = read_full_file("/proc/cpuinfo", &cpuinfo_contents, NULL);
|
||||
if (r < 0)
|
||||
return r;
|
||||
if (strstr(cpuinfo_contents, "\nvendor_id\t: User Mode Linux\n")) {
|
||||
*id = "uml";
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user