Benutzer-Werkzeuge

Webseiten-Werkzeuge


hardware-erkennung

Hardware-Erkennung

System Infos

dmidecode oder biosdecode

Ubuntu

> udevadm info -e | less

Architektur

Debian/Ubuntu:

> dpkg --print-architecture
amd64

FreeBSD:

> uname -m
amd64
> sysctl -n hw.machine
amd64

Fakten eines Systems

Facter ist ein Ruby-Probramm, mit dem man von verschiedenen Systemen die "Fakten" ermitteln kann.

# aptitude -y install facter
# facter
architecture => x86_64
domain => deutschland.de
facterversion => 1.5.6
fqdn => fritz.deutschland.de
hardwareisa => unknown
hardwaremodel => x86_64
hostname => fritz
id => root
interfaces => eth0,eth1,eth2,eth0_oq
ipaddress => 192.168.1.252
ipaddress_eth0_oq => 192.168.1.252
is_virtual => false
kernel => Linux
kernelmajversion => 2.6
kernelrelease => 2.6.32-26-server
kernelversion => 2.6.32
lsbdistcodename => lucid
lsbdistdescription => Ubuntu 10.04.1 LTS
lsbdistid => Ubuntu
lsbdistrelease => 10.04
lsbmajdistrelease => 10
macaddress => 00:4c:e4:bb:37:5f
macaddress_eth0 => 00:4c:e4:bb:37:5f
macaddress_eth0_oq => 00:4c:e4:bb:37:5f
macaddress_eth1 => 00:01:9b:d5:a6:d2
macaddress_eth2 => 00:5f:71:50:05:b9
manufacturer => Bochs
memoryfree => 416.91 MB
memorysize => 493.70 MB
netmask => 255.255.255.0
netmask_eth0_oq => 255.255.255.0
network_eth0_oq => 10.30.0.0
operatingsystem => Ubuntu
operatingsystemrelease => 10.04
physicalprocessorcount => 0
processor0 => QEMU Virtual CPU version 0.12.3
processorcount => 1
productname => Bochs
ps => ps -ef
puppetversion => 0.25.4
rubysitedir => /usr/local/lib/site_ruby/1.8
rubyversion => 1.8.7
selinux => false
serialnumber => Not Specified
sshdsakey => AAAAB3NzaC1kc3MAAACBALAXF0yA8viNDXigzoeufxGX6KHt6B1wArkv829WiMncs6sWZVS8NOwRG824E7f0hBipnpxxhFPOLqnYHbOKyRZn4Z8TokflHfOTqOjrRC4P4IZ+FB8ciCAYSRUH8BaelkLd31OYAyRqWzp+fQQwp3BPTw2J1x/QH9z43xl0fZVpAAAAFQCB5IPM9GeE8VwYw5dY4vImIHCXywAAAIBmd81alxC4Se17nnsEz1iDh8wX3rQSg1g8mM+f7vLEPioaqRt4uGum72ZtK1T+G6vQi9/K6snMXG8eM+eTwSqfGNbV8mjIFLED13IHqznBroUDkMB6qgi18tRpvMaQA/aNS19gWyIFh5aaYYrBiKBYWonYR/w0id/w3gxelfNAMgAAAIEAp+wA/byh+r7whGO0ldS5VOobIo9Bh69ssWfDihLKaQFKbeMccW/US+GZMES9IzfmQlZgLYWf59lCg1bZinFoG7bUKobQBhGRRqo18Q/eXs+PPoSTIUONNCD7ofjg7p8sw+AaGXgfWzL+JUyXDYC0XexhZEJvZFu1js8R0GqMNMg=
sshrsakey => AAAAB3NzaC1yc2EAAAABIwAAAQEAq/SvbV3L+YXhGtisUNWiU4as65dA/wjOYeazdLQ30KbmVyhtspEqmI3EAVr4v3n9tOtXs7sE4k/5HdVwP6WghoTia2LoigNuM5KYhODMZKIUvP4A5tvxUlmF1d7b9oNT+P5RBERC+aHvXWZ5CzsJYJw+V61npqD7xeQosMnQiJIDf4E4f7GZtErySAaAbTFQzNqTuLulXmKWW8MDfaGFDlAEWP1zs4nuXbYihrMTT4RmZwCTloObfXKgve46G7fUVnuwJ8QrcNJBzUCV/fNoQicNZw9ma8JBGfuPnhGafGVrziZhDRT6S9paqiWeNYFvUSjRhd/TeCavNqFIj07XKQ==
swapfree => 0.00 kB
swapsize => 0.00 kB
timezone => CET
type => Other
uniqueid => 007f0101
uptime => 2:55 hours
uptime_days => 0
uptime_hours => 2
uptime_seconds => 10520
virtual => physical

Arbeitsspeicher

Plattenspeicher

Die folgende Lösung ist die einfachste, aber leider Sprach- und Distributionsabhängig:

fdisk -l | egrep ^'Platte /|Disk /'
Disk /dev/sda: 72.7 GB, 72746008576 bytes
Disk /dev/sdb: 898.9 GB, 898990342144 bytes
Disk /dev/sdc: 1023 MB, 1023934464 bytes

Das Laufwerk /dev/sdc ist ein 1GB-USB-Stick. Bei dieser Methode kann man ihn nicht klar genug von den eingebauten Laufwerken unterscheiden, deshalb ist eine der nachfolgenden Methoden zum ermitteln der internen Festplatten besser geeignet.

Hier eine Distributionsunabhängige möglichkeit die Plattengröße zu ermitteln:

fgrep -H 0 /sys/class/block/*/removable | egrep -v 'loop|ram|dm-' | awk -F'/' '{print $5}' | while read DEV;do echo "${DEV}=$(cat /sys/class/block/${DEV}/size) Bloecke";done
sda=142082048 Bloecke
sdb=1755840512 Bloecke

oder in MB

fgrep -H 0 /sys/class/block/*/removable | egrep -v 'loop|ram|dm-' | awk -F'/' '{print $5}' | while read DEV;do echo "${DEV}=$(cat /sys/class/block/${DEV}/size | awk -F'/' '{print $1/2048}') MB";done
sda=69376 MB
sdb=857344 MB

HDD

FreeBSD

# sysctl kern.disks
kern.disks: ada10 ada9 ada8 ada7 ada6 ada5 ada4 ada3 ada2 ada1 ada0 cd0
# camcontrol devlist
<WDC WD2005FBYZ-01YCBB2 RR07>      at scbus0 target 0 lun 0 (ada0,pass0)
<WDC WD161KRYZ-01AGBB0 01.01H01>   at scbus1 target 0 lun 0 (ada1,pass1)
<WDC WD121KRYZ-01W0RB0 01.01H01>   at scbus2 target 0 lun 0 (ada2,pass2)
<WDC WD101KRYZ-01JPDB1 01.01H02>   at scbus3 target 0 lun 0 (ada3,pass3)
<ST10000NM0016-1TT101 SND0>        at scbus4 target 0 lun 0 (ada4,pass4)
<HGST HUH721010ALE600 LHGNT384>    at scbus5 target 0 lun 0 (ada5,pass5)
<WDC WD101KRYZ-01JPDB1 01.01H02>   at scbus6 target 0 lun 0 (ada6,pass6)
<WDC WD161KRYZ-01AGBB0 01.01H01>   at scbus7 target 0 lun 0 (ada7,pass7)
<PIONEER BD-RW   BDR-S09 1.51>     at scbus9 target 0 lun 0 (sg0,cd0,pass8)
<WDC WD121KRYZ-01W0RB1 02.02H02>   at scbus10 target 0 lun 0 (ada8,pass9)
<ST10000NM0016-1TT101 SNE0>        at scbus12 target 0 lun 0 (ada9,pass10)
<WDC WD121KRYZ-01W0RB0 01.01H01>   at scbus13 target 0 lun 0 (ada10,pass11)
<AHCI SGPIO Enclosure 2.00 0001>   at scbus14 target 0 lun 0 (ses0,pass12)

FreeBSD + Linux

# lsblk 
DEVICE         MAJ:MIN SIZE TYPE                                          LABEL MOUNT
ada0             0:129 1.8T GPT                                               - -
  ada0p1         0:143 260M efi                                    gpt/efiboot0 /boot/efi
  <FREE>         -:-   1.0M -                                                 - -
  ada0p2         0:144 4.0G freebsd-swap                              gpt/swap0 SWAP
  ada0p3         0:145 1.8T freebsd-zfs                                gpt/zfs0 <ZFS>
  <FREE>         -:-    68K -                                                 - -
ada1             0:130  15T -                              diskid/DISK-2CGWXXXX -
ada10            0:141  11T -                                                 - -
ada2             0:131  11T -                              diskid/DISK-5PGRXXXX -
ada3             0:132 9.1T -                              diskid/DISK-7JJKXXXX -
ada4             0:133 9.1T -                              diskid/DISK-ZA25XXXX -
ada5             0:134 9.1T -                              diskid/DISK-1SHNXXXX -
ada6             0:135 9.1T -                              diskid/DISK-7JJKXXXX -
ada7             0:136  15T -                              diskid/DISK-2CKMXXXX -
ada8             0:137  11T -                              diskid/DISK-5PHWXXXX -
ada9             0:139 9.1T -                              diskid/DISK-ZA2CXXXX -

# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0         7:0    0 132,7M  1 loop /snap/chromium/1973
...
sda           8:0    0 931,5G  0 disk 
├─sda1        8:1    0     1M  0 part 
├─sda2        8:2    0  31,5G  0 part 
└─sda3        8:3    0   900G  0 part 
sr0          11:0    1  1024M  0 rom  
nvme0n1     259:0    0   477G  0 disk 
├─nvme0n1p1 259:1    0   512M  0 part /boot/efi
└─nvme0n1p2 259:2    0 476,4G  0 part /
# smartctl --scan
/dev/sda -d scsi # /dev/sda, SCSI device
/dev/nvme0 -d nvme # /dev/nvme0, NVMe device

# smartctl --scan
/dev/ada0 -d atacam # /dev/ada0, ATA device
/dev/ada1 -d atacam # /dev/ada1, ATA device
/dev/ada2 -d atacam # /dev/ada2, ATA device
/dev/ada3 -d atacam # /dev/ada3, ATA device
/dev/ada4 -d atacam # /dev/ada4, ATA device
/dev/ada5 -d atacam # /dev/ada5, ATA device
/dev/ada6 -d atacam # /dev/ada6, ATA device
/dev/ada7 -d atacam # /dev/ada7, ATA device
/dev/cd0 -d atacam # /dev/cd0, ATA device
/dev/ada8 -d atacam # /dev/ada8, ATA device
/dev/ada9 -d atacam # /dev/ada9, ATA device
/dev/ada10 -d atacam # /dev/ada10, ATA device
/dev/ses0 -d atacam # /dev/ses0, ATA device

Linux

# ls -1 /sys/class/block/
loop0
...
nvme0n1
nvme0n1p1
nvme0n1p2
sda
sda1
sda2
sda3
sr0
# ls -1 /dev/disk/by-id/
ata-HL-DT-ST_DVD+_-RW_GU90N_M2OG22D3834
ata-WDC_WD1003FBYZ-010FB0_WD-WCAW37334750
ata-WDC_WD1003FBYZ-010FB0_WD-WCAW37334750-part1
ata-WDC_WD1003FBYZ-010FB0_WD-WCAW37334750-part2
ata-WDC_WD1003FBYZ-010FB0_WD-WCAW37334750-part3
nvme-eui.5cd2e42981503a70
nvme-eui.5cd2e42981503a70-part1
nvme-eui.5cd2e42981503a70-part2
nvme-SSDPEKKF512G8_NVMe_INTEL_512GB_PHHH830500MA512H
nvme-SSDPEKKF512G8_NVMe_INTEL_512GB_PHHH830500MA512H-part1
nvme-SSDPEKKF512G8_NVMe_INTEL_512GB_PHHH830500MA512H-part2
wwn-0x5001480000000000
wwn-0x50014ee25f2c0054
wwn-0x50014ee25f2c0054-part1
wwn-0x50014ee25f2c0054-part2
wwn-0x50014ee25f2c0054-part3

CPU

CPU-Erkennung

Linux

# cat /proc/cpuinfo
processor     : 0
vendor_id     : GenuineIntel
cpu family    : 6
model         : 13
model name    : Intel(R) Pentium(R) M processor 1.73GHz
stepping      : 8
cpu MHz       : 1733.000
cache size    : 2048 KB
fdiv_bug      : no
hlt_bug       : no
f00f_bug      : no
coma_bug      : no
fpu           : yes
fpu_exception : yes
cpuid level   : 2
wp            : yes
flags         : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov clflush dts acpi mmx fxsr sse sse2 ss tm pbe up bts est tm2
bogomips      : 3467.42
clflush size  : 64
cache_alignment       : 64
address sizes : 32 bits physical, 32 bits virtual
power management:

Anzahl der (logischen) CPU-Kerne ausgeben:

> awk '/processor/{print $NF+1}' /proc/cpuinfo | tail -n1
12

> nproc --all
12

Anzahl der (pysikalischen) CPU-Kerne ausgeben:

> sed 's/.,//' /sys/devices/system/cpu/cpu0/topology/core_cpus_list
6

> awk '/^cpu cores/{print $NF}' /proc/cpuinfo | head -n1
6

> lscpu -p=CORE | grep -E '^[0-9]' | sort | uniq | wc -l
6

> grep -m 1 'cpu cores' /proc/cpuinfo | sed 's/.* //'
6

> grep -m 1 'cpu cores' /proc/cpuinfo | awk '{print $NF}'
6

FreeBSD

FreeBSD-Kernel-Version:

> freebsd-version -k
13.1-RELEASE-p4

FreeBSD-Userland-Version:

> freebsd-version -u
13.1-RELEASE-p4
> pciconf -lv | grep -A1 -E vendor[^=] | less
> usbconfig
ugen0.1: <Intel XHCI root HUB> at usbus0, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=SAVE (0mA)
ugen0.2: <ASRock LED Controller> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)
ugen0.3: <vendor 0x413c Dell KB216 Wired Keyboard> at usbus0, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON (100mA)

Bei FeeBSD kommt man über das Werkzeug dmesg an die ersehnten Infos ran:

# dmesg | grep -F Features
  Features=0x178bfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2,HTT>
  Features2=0x2001<SSE3,CX16>
  AMD Features=0xea500800<SYSCALL,NX,MMX+,FFXSR,RDTSCP,LM,3DNow!+,3DNow!>
  AMD Features2=0x11f<LAHF,CMP,SVM,ExtAPIC,CR8,Prefetch>

Wie man hier im Vergleich sehen kann, wird das Prozessorflag SVM für Hardware-Virtualisierung in der Linux-Emulation nicht angezeigt, von dmesg dagegen schon.

Die kompletten Prozessor-Infos sehen in dmesg so aus:

CPU: AMD Athlon(tm) Dual Core Processor 5050e (2600.02-MHz K8-class CPU)
  Origin = "AuthenticAMD"  Id = 0x60fb2  Stepping = 2
  Features=0x178bfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2,HTT>
  Features2=0x2001<SSE3,CX16>
  AMD Features=0xea500800<SYSCALL,NX,MMX+,FFXSR,RDTSCP,LM,3DNow!+,3DNow!>
  AMD Features2=0x11f<LAHF,CMP,SVM,ExtAPIC,CR8,Prefetch>
  TSC: P-state invariant
real memory  = 4294967296 (4096 MB)
avail memory = 4065894400 (3877 MB)
ACPI APIC Table: <082708 APIC1356>
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
FreeBSD/SMP: 1 package(s) x 2 core(s)
 cpu0 (BSP): APIC ID:  0
 cpu1 (AP): APIC ID:  1

Hier ist auch zu sehen, das die CPU zwei Kerne besitzt.

> sysctl -a | grep -Ei 'hw.machine|hw.model|hw.ncpu'
hw.machine: amd64
hw.model: Intel(R) Core(TM) i5-10600T CPU @ 2.40GHz
hw.ncpu: 12
hw.machine_arch: amd64
> sysctl hw.model hw.machine hw.ncpu
hw.model: Intel(R) Core(TM) i5-10600T CPU @ 2.40GHz
hw.machine: amd64
hw.ncpu: 12
> sysctl hw.ncpu
hw.ncpu: 12

> sysctl -e hw.ncpu
hw.ncpu=12

> sysctl -n hw.ncpu
12

# Beschreibung:
> sysctl -d hw.ncpu
hw.ncpu: Number of active CPUs
> devinfo -rv | grep -F cpu

Anzahl der (logischen) CPU-Kerne ausgeben:

> sysctl -n hw.ncpu
12

> nproc --all
12

Anzahl der (pysikalischen) CPU-Kerne ausgeben:

> sysctl -n kern.smp.cores
6
> getconf LONG_BIT
64
> pkg install sysutils/cpu-x
> cpu-x
> pkg install sysutils/cpuid
> cpuid | less
> pkg install sysutils/dmidecode
> dmidecode -t processor | grep -F Count
        Core Count: 6
        Thread Count: 12
> pkg install sysutils/x86info
> x86info -a
> kldload -v coretemp
> echo 'coretemp_load="YES"' >> /boot/loader.conf
oder bei AMD-CPUs
> kldload -v amdtemp
> echo 'amdtemp_load="YES"' >> /boot/loader.conf

> sysctl -a | grep -F temperature
dev.pchtherm.0.temperature: 47.0C
dev.cpu.11.temperature: 30.0C
dev.cpu.9.temperature: 29.0C
dev.cpu.7.temperature: 29.0C
dev.cpu.5.temperature: 29.0C
dev.cpu.3.temperature: 31.0C
dev.cpu.1.temperature: 29.0C
dev.cpu.10.temperature: 30.0C
dev.cpu.8.temperature: 28.0C
dev.cpu.6.temperature: 29.0C
dev.cpu.4.temperature: 29.0C
dev.cpu.2.temperature: 31.0C
dev.cpu.0.temperature: 29.0C

Wenn man die Linuxemulation aktiviert hat und das Linux-proc-Verzeichnis gemountet hat, kann man es genauso wie bei Linux machen.

# cat /usr/compat/linux/proc/cpuinfo
processor     : 0
vendor_id     : AuthenticAMD
cpu family    : 15
model         : 1
model name    : AMD Athlon(tm) Dual Core Processor 5050e
stepping      : 2
processor     : 1
vendor_id     : AuthenticAMD
cpu family    : 15
model         : 1
model name    : AMD Athlon(tm) Dual Core Processor 5050e
stepping      : 2
flags         : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 b19 mmx fxsr xmm sse2
cpu MHz       : 2600.02
bogomips      : 2600.02

Die Infos dort müssen nicht immer 100%-ig stimmen.

16/32/64 Bit

Zur Erkennung der CPU, hat jede ein entsprechendes Flag:

  1. Real mode - 16 bit CPU
  2. i286-Protected Mode - 16-bit CPU
  3. i386-Protected Mode - 32-bit CPU
  4. Long mode (lm) - 64 bit CPU

Die 64-Bit-CPUs haben das Flag lm (long mode):

egrep ^flags /proc/cpuinfo | tr -s ' ' '\n' | egrep ^lm | uniq
lm

Hardware-Virtualisierung

egrep ^flags /proc/cpuinfo | tr -s ' ' '\n' | egrep 'vmx|svm' | uniq
vmx

oder

egrep 'vmx|svm' /proc/cpuinfo > /dev/null && echo "CPU unterstützt Hardware-Virtualisierung" || echo "CPU unterstützt keine Hardware-Virtualisierung"
CPU unterstützt Hardware-Virtualisierung

MAC-Adressen

So ermittelt man die MAC-Adressen eines Linux-Systems am Sinnvollsten und umgeht dadurch einige Fallstricke, die durch Systemunterschiede auftreten.

find /sys/ -type f | egrep 'address' | fgrep -i 'eth' | xargs cat ${1}

weitere Informationen beschaffen

/home/http/wiki/data/pages/hardware-erkennung.txt · Zuletzt geändert: von manfred