BIOS:
# dmidecode -t 1 | egrep -i 'Manufacturer:|Product Name:|Serial Number:' | sed -e 's/^\t/BIOS /' -e 's/: /=/' BIOS Manufacturer=Dell Inc. BIOS Product Name=PowerEdge 1950 BIOS Serial Number=28A9A4A
Service Tag:
# dmidecode -t 1 | egrep -i 'Serial Number:'
Serial Number: 28A9A4A
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
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
# 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:
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.
Zur Erkennung der CPU, hat jede ein entsprechendes Flag:
Die 64-Bit-CPUs haben das Flag lm (long mode):
egrep ^flags /proc/cpuinfo | tr -s ' ' '\n' | egrep ^lm | uniq lm
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
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}
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
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