Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/archinstall/lib/hardware.py
diff options
context:
space:
mode:
authorAnton Hvornum <anton@hvornum.se>2021-06-03 10:31:44 +0200
committerGitHub <noreply@github.com>2021-06-03 10:31:44 +0200
commitf85f99dd401c588fd89cb60cf9dd026444345041 (patch)
treee81a4a0510b9bcd0cfb74ba53ae6ef3d65253bab /archinstall/lib/hardware.py
parentbedc5cd13277e23141fbd1b491e14ffde106d9f5 (diff)
parent3e505d4321a6593574bfbcb468803ae5266ffb01 (diff)
Merge pull request #543 from dylanmtaylor/hardware-detection
Add additional hardware debugging functions
Diffstat (limited to 'archinstall/lib/hardware.py')
-rw-r--r--archinstall/lib/hardware.py51
1 files changed, 46 insertions, 5 deletions
diff --git a/archinstall/lib/hardware.py b/archinstall/lib/hardware.py
index 6a3b166d..45e042db 100644
--- a/archinstall/lib/hardware.py
+++ b/archinstall/lib/hardware.py
@@ -79,22 +79,22 @@ def has_uefi() -> bool:
def graphics_devices() -> dict:
cards = {}
for line in SysCommand("lspci"):
- if b' VGA ' in line:
+ if b' VGA ' in line or b' 3D ' in line:
_, identifier = line.split(b': ', 1)
- cards[identifier.strip().lower().decode('UTF-8')] = line
+ cards[identifier.strip().decode('UTF-8')] = line
return cards
def has_nvidia_graphics() -> bool:
- return any('nvidia' in x for x in graphics_devices())
+ return any('nvidia' in x.lower() for x in graphics_devices())
def has_amd_graphics() -> bool:
- return any('amd' in x for x in graphics_devices())
+ return any('amd' in x.lower() for x in graphics_devices())
def has_intel_graphics() -> bool:
- return any('intel' in x for x in graphics_devices())
+ return any('intel' in x.lower() for x in graphics_devices())
def cpu_vendor() -> Optional[str]:
@@ -107,6 +107,47 @@ def cpu_vendor() -> Optional[str]:
return None
+def cpu_model() -> Optional[str]:
+ cpu_info_raw = SysCommand("lscpu -J")
+ cpu_info = json.loads(b"".join(cpu_info_raw).decode('UTF-8'))['lscpu']
+
+ for info in cpu_info:
+ if info.get('field', None) == "Model name:":
+ return info.get('data', None)
+ return None
+
+
+def sys_vendor() -> Optional[str]:
+ with open(f"/sys/devices/virtual/dmi/id/sys_vendor") as vendor:
+ return vendor.read().strip()
+
+
+def product_name() -> Optional[str]:
+ with open(f"/sys/devices/virtual/dmi/id/product_name") as product:
+ return product.read().strip()
+
+
+def mem_info():
+ # This implementation is from https://stackoverflow.com/a/28161352
+ return dict((i.split()[0].rstrip(':'), int(i.split()[1])) for i in open('/proc/meminfo').readlines())
+
+
+def mem_available() -> Optional[str]:
+ return mem_info()['MemAvailable']
+
+
+def mem_free() -> Optional[str]:
+ return mem_info()['MemFree']
+
+
+def mem_total() -> Optional[str]:
+ return mem_info()['MemTotal']
+
+
+def virtualization() -> Optional[str]:
+ return str(SysCommand("systemd-detect-virt")).strip('\r\n')
+
+
def is_vm() -> bool:
try:
# systemd-detect-virt issues a non-zero exit code if it is not on a virtual machine