Benutzer-Werkzeuge

Webseiten-Werkzeuge


hardware-erkennung

Dies ist eine alte Version des Dokuments!


Hardware-Erkennung

System Infos

dmidecode oder biosdecode

Ubuntu

> udevadm info -e | less

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 -
# 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

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:

FreeBSD

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

Muss man aber nicht und will man auch nicht immer, denn die Infos dort müssen nicht immer 100%-ig stimmen.

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

# dmesg | grep 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, das kann man in der /usr/compat/linux/proc/cpuinfo auch nur am Namen erkennen.

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

Mit dmidecode kann man viele Details von seinem System ermitteln, allerdings ist das kein natives Bordmittel. Dmidecode ist in den Repositories der meisten Distributionen enthalten, sodass man dieses Paket meistens problemlos nachinstallieren kann.

dmidecode -t
  bios
  system
  baseboard
  chassis
  processor
  memory
  cache
  connector
  slot

Hilfe:

dmidecode -h

BIOS:

dmidecode -t 0
dmidecode -t 0,13

System:

dmidecode -t 1
dmidecode -t 1,12,15,23,32

Hauptplatine:

dmidecode -t 2
dmidecode -t 2,10
dmidecode -t 1,2,3

RAM:

dmidecode -t 5,6,16,17
dmidecode -t 5,6,7,16,17,18,19,20

CPU:

dmidecode -t 4

Port-Anschlüsse (COM, USB):

dmidecode -t 8

System-Steckplätze (PCI, AGP, PCIe:

dmidecode -t 9

OEM-Angaben (Händlerinformationen):

dmidecode -t 11

System Event Log:

dmidecode -t 15

Fehler beim System-Boot:

dmidecode -t 32

BIOS-Datum:

dmidecode -t 0 | fgrep -i 'Release Date:'
        Release Date: 07/17/2009
dmidecode -t 0 | fgrep -i 'Release Date:' | sed -e 's/^\t/BIOS /' -e 's/: /=/'
BIOS Release Date=07/17/2009

System-Infos:

dmidecode -t 1 | egrep -i 'Manufacturer:|Product Name:|Serial Number:'
        Manufacturer: Dell Inc.
        Product Name: PowerEdge R710
        Serial Number: 93GL345
dmidecode -t 1 | egrep -i 'Manufacturer:|Product Name:|Serial Number:' | sed -e 's/^\t/SYSTEM /' -e 's/: /=/'
SYSTEM Manufacturer=Dell Inc.
SYSTEM Product Name=PowerEdge R710
SYSTEM Serial Number=93GL345

Anzahl der CPUs:

dmidecode -t processor | egrep -i 'Socket Designation:' | wc -l
2
dmidecode -t processor | egrep -i 'Socket Designation:' | wc -l | awk '{print "CPU Anzahl="$1}'
CPU Anzahl=2

CPU-Infos:

dmidecode -t processor | sed -e '1,/^$/ d' -e '/^$/ q' | egrep -i 'Family:|Manufacturer:|ID:|Signature:|Core Count:|Core Enabled:'
        Family: Xeon
        Manufacturer: Intel
        ID: A5 A6 A1 A0 AF AB AB AF
        Signature: Type 0, Family 6, Model 26, Stepping 5
        Core Count: 4
        Core Enabled: 4
dmidecode -t processor | sed -e '1,/^$/ d' -e '/^$/ q' -e 's/^\t/CPU /' -e 's/: /=/' | egrep -i 'Family=|Manufacturer=|ID=|Signature=|Core Count=|Core Enabled='
CPU Family=Xeon
CPU Manufacturer=Intel
CPU ID=A5 06 01 00 FF FB EB BF
CPU Signature=Type 0, Family 6, Model 26, Stepping 5
CPU Core Count=4
CPU Core Enabled=4
/home/http/wiki/data/attic/hardware-erkennung.1652281388.txt · Zuletzt geändert: von manfred