V několika následujících dílech se vrátíme k hardware. Máme jej už jistě vybraný, tedy se nyní zabývejme jeho rozpoznáním, zprovozněním, testováním a diagnostikou.
18.8.2005 06:00 | Petr Houštěk | přečteno 18996×
V linuxovém systému existuje několik zdrojů informací o instalovaném hardware.
Uvedl bych hlavní zdroje – obsah souborů v adresářích /proc/
a
/sys/
, nahrané moduly, logy kernelu a výstupy z různých utilit,
které získávají data od jádra.
Prvním údajem o instalovných discích je jejich výrobce a model. Tyto informace
se dají nalézt na více místech - např. v /proc a logu jádra. Při bootu se
disky inicializují a informace se zaznamávají do logu. Nejjednodušší způsobem,
jak tyto informace získat je z logu kernelu při bootu. Tento log se v mnoha
distribucích ukládá do souboru /var/log/dmesg
, dále je možné ho
zobrazit pomocí příkazu dmesg
, ten má ale omezený buffer, takže u
počítačů, které jsou v chodu delší dobu může dojít k zaplnění tohoto bufferu
jinými zprávami a údaje z bootu jsou zahozené. Z tohoto logu se dají vyčíst i
jiné informace než o discích.
... VP_IDE: chipset revision 6 VP_IDE: not 100% native mode: will probe irqs later VP_IDE: VIA vt8235 (rev 00) IDE UDMA133 controller on pci0000:00:11.1 ide0: BM-DMA at 0xe400-0xe407, BIOS settings: hda:DMA, hdb:DMA ide1: BM-DMA at 0xe408-0xe40f, BIOS settings: hdc:DMA, hdd:DMA Probing IDE interface ide0... hda: WDC WD1200JB-00EVA0, ATA DISK drive hdb: _NEC CD-RW NR-7800A, ATAPI CD/DVD-ROM drive ide0 at 0x1f0-0x1f7,0x3f6 on irq 14 Probing IDE interface ide1... hdc: QUANTUM FIREBALLlct10 15, ATA DISK drive hdd: DVD-RW IDE1108, ATAPI CD/DVD-ROM drive ide1 at 0x170-0x177,0x376 on irq 15 hda: max request size: 1024KiB hda: 234441648 sectors (120034 MB) w/8192KiB Cache, CHS=16383/255/63, UDMA(100) hda: cache flushes supported hda: hda1 hda2 hda3 hda4 hdc: max request size: 128KiB hdc: 29336832 sectors (15020 MB) w/418KiB Cache, CHS=29104/16/63 hdc: cache flushes not supported hdc: hdc1 hdc2 ...
Další informace jsou v adresáři /proc/ide/hd$/
, např.
$ cat /proc/ide/hda/model
TOSHIBA MK4021GAS
Následující program - hdparm
- se hlavně využívá pro konfiguraci
parametrů disku, jeho další využití je ale také zístávání dalších hardwarových
informací. Pro toto využití se volá s parametrem -i
:
# hdparm -i /dev/hda
/dev/hda:
Model=WDC WD1200JB-00EVA0, FwRev=15.05R15, SerialNo=WD-WCAEK1528410
Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }
RawCHS=16383/16/63, TrkSize=57600, SectSize=600, ECCbytes=74
BuffType=DualPortCache, BuffSize=8192kB, MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=234441648
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5
AdvancedPM=no WriteCache=enabled
Drive Supports : Reserved : ATA-1 ATA-2 ATA-3 ATA-4 ATA-5 ATA-6
Informace o geometrii disku lze nalézt na
/proc/ide/hd$/geometry
, při použití programu fdisk
ale můžeme zjistit i další informace, jako např. rozvržení diskových oddílů:
# fdisk -l
Disk /dev/hda: 16 heads, 63 sectors, 77520 cylinders
Units = cylinders of 1008 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 7746 3903763+ 7 HPFS/NTFS
Partition 1 does not end on cylinder boundary:
phys=(485, 254, 63) should be (485, 15, 63)
/dev/hda2 7746 15492 3903795 83 Linux
Partition 2 does not end on cylinder boundary:
phys=(971, 254, 63) should be (971, 15, 63)
/dev/hda3 15492 16655 586372+ 82 Linux swap
Partition 3 does not end on cylinder boundary:
phys=(1023, 254, 63) should be (1023, 15, 63)
/dev/hda4 16655 77520 30676117+ 83 Linux
Partition 4 does not end on cylinder boundary:
phys=(1023, 254, 63) should be (1023, 15, 63)
K dispozici máme opět i hdparm
, tentokrát s parametrem
-g
. Pro SCSI řadiče a zařízení má hdparm
jen omezené možnosti (primárně je určen pro práci s ATA), většinou ale
pro zjištění potřebných informací stačí pohled do pseudosouboru
/proc/scsi/scsi
. Nejrůznější možnosti ovládáni a konfigurace
SCSI zařízení pak umožňuje balík sg3_utils
.
$ cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 03 Lun: 00
Vendor: BNCHMARK Model: DLT1 Rev: 5E40
Type: Sequential-Access ANSI SCSI revision: 02
Host: scsi1 Channel: 00 Id: 00 Lun: 00
Vendor: IBM Model: SERVERAID Rev: 1.00
Type: Direct-Access ANSI SCSI revision: 02
Host: scsi1 Channel: 00 Id: 01 Lun: 00
Vendor: IBM Model: SERVERAID Rev: 1.00
Type: Direct-Access ANSI SCSI revision: 02
Host: scsi1 Channel: 00 Id: 02 Lun: 00
Vendor: IBM Model: SERVERAID Rev: 1.00
Type: Direct-Access ANSI SCSI revision: 02
Host: scsi1 Channel: 00 Id: 15 Lun: 00
Vendor: IBM Model: SERVERAID Rev: 1.00
Type: Processor ANSI SCSI revision: 02
Host: scsi1 Channel: 01 Id: 08 Lun: 00
Vendor: IBM Model: 02R0980a S320 1 Rev: 1
Type: Processor ANSI SCSI revision: 02
Mnoho se dá zjistit i z informací o řadiči - rychlost, přístupové časy, ...
Tyto informace jsou v souboru /proc/ide/_značka_řadiče_
(případně
/proc/scsi/_značka_řadiče/*
).
$ cat /proc/ide/via
----------VIA BusMastering IDE Configuration----------------
Driver Version: 3.38
South Bridge: VIA vt8235
Revision: ISA 0x0 IDE 0x6
Highest DMA rate: UDMA133
BM-DMA base: 0xe400
PCI clock: 33.3MHz
Master Read Cycle IRDY: 0ws
Master Write Cycle IRDY: 0ws
BM IDE Status Register Read Retry: yes
Max DRDY Pulse Width: No limit
-----------------------Primary IDE-------Secondary IDE------
Read DMA FIFO flush: yes yes
End Sector FIFO flush: no no
Prefetch Buffer: no no
Post Write Buffer: no no
Enabled: yes yes
Simplex only: no no
Cable Type: 80w 80w
-------------------drive0----drive1----drive2----drive3-----
Transfer Mode: UDMA UDMA UDMA UDMA
Address Setup: 120ns 120ns 120ns 120ns
Cmd Active: 90ns 90ns 90ns 90ns
Cmd Recovery: 30ns 30ns 30ns 30ns
Data Active: 90ns 90ns 90ns 90ns
Data Recovery: 30ns 30ns 30ns 30ns
Cycle Time: 22ns 60ns 30ns 30ns
Transfer Rate: 88.8MB/s 33.3MB/s 66.6MB/s 66.6MB/s
Dalším nezbytným údajem o disku je informace o jeho obsazení a volném místě. K
tomuto účelu slouží utilita df
. Užití je přímočaré:
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/hda4 29G 17G 12G 57% / /dev/hda1 3.7G 3.4G 366M 91% /win $ df -m Filesystem 1M-blocks Used Available Use% Mounted on /dev/hda4 29942 16988 12955 57% / /dev/hda1 3812 3447 366 91% /win
Nakonec bych zde pro referenci uvedl smartctl
. Technologie
S.M.A.R.T. se používá hlavně pro monitorování disků a budeme se tímto tématem
zabývat v dalších dílech.
Pro zjištění údajů o paměti můžeme použít utilitu free
nebo
nalézt hledané informace v souboru /proc/meminfo
. Použití
free
je podobné jako u programu df
- paramtry určují
jednotky výpisu:
$ free -m
total used free shared buffers cached
Mem: 218 215 2 0 16 61
-/+ buffers/cache: 137 80
Swap: 572 0 572
Zajímavý je druhý řádek, ten říká, kolik paměti a je využito procesy a kernelem, avšak nejedná se o buffery a keš, což jsou zjednodušene řečeno vycpávky, kterými se využívá volná paměť a které lze v případě potřeby rychle uvolnit.
Pro zjištění využití paměti jednotlivými programy je pravděpodobně
nejjednodušší program top
.
K identifikaci procesoru, jeho taktovací frekvence a dalších vlastností slouží
soubor /proc/cpuinfo
, kde nalezneme téměř veškeré hledané
informace. Další údaje, jako je např. teplota procesoru lze získat při
funkčním acpi
ze souborů v adresáři /proc/acpi/cpu/
.
Ukázkový výstup z /proc/cpuinfo
může vypadat takto:
cpu : TI UltraSparc IIi (Sabre) fpu : UltraSparc IIi integrated FPU promlib : Version 3 Revision 15 prom : 3.15.2 type : sun4u ncpus probed : 1 ncpus active : 1 Cpu0Bogo : 665.19 Cpu0ClkTck : 0000000013d92d40 MMU Type : Spitfire
A ještě jedna ukázka z o něco typičtějšího linuxového serveru
processor : 0 vendor_id : GenuineIntel cpu family : 15 model : 2 model name : Intel(R) Xeon(TM) CPU 2.80GHz stepping : 9 cpu MHz : 2800.171 cache size : 512 KB physical id : 0 siblings : 2 runqueue : 0 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 sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm bogomips : 5583.66
Pro identifikaci nainstalovaných PCI příslušenství lze použít příkaz
lspci
. Jeho výstup závisí na parametrech, nejzákladnější bude
-v
pro podrobnější výstup. K získání více informací je ale nutné
vlastnit privilegia root uživatele.
$ lspci
0000:00:00.0 Host bridge: VIA Technologies, Inc. VT8366/A/7
[Apollo KT266/A/333]
0000:00:01.0 PCI bridge: VIA Technologies, Inc. VT8366/A/7
[Apollo KT266/A/333 AGP]
0000:00:0a.0 Multimedia audio controller: Ensoniq ES1371
[AudioPCI-97] (rev 06)
0000:00:0b.0 Multimedia video controller: Brooktree Corporation Bt878
Video Capture
0000:00:0b.1 Multimedia controller: Brooktree Corporation Bt878
Audio Capture (rev 11)
0000:00:0d.0 Ethernet controller: 3Com Corporation 3c905C-TX/TX-M
[Tornado] (rev 78)
0000:00:10.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1
Controller
0000:00:10.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1
Controller
0000:00:10.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1
Controller
0000:00:10.3 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 82)
0000:00:11.0 ISA bridge: VIA Technologies, Inc. VT8235 ISA Bridge
0000:00:11.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686
/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06)
0000:00:11.5 Multimedia audio controller: VIA Technologies, Inc.
VT8233/A/8235/8237 AC97 Audio Controller (rev 50)
0000:01:00.0 VGA compatible controller: nVidia Corporation NV18
[GeForce4 MX 4000 AGP 8x]
Obdobné informace jsou k dispozici v souboru /proc/pci
.
Pomocí lspci
zjistíme parametry USB slotů na základní desce, k
identifikaci připojených zařízení existuje příkaz lsusb
, případně
další informace jsou (v neupravené podobě) v adresáři
/proc/bus/usb/
$ lsusb
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 003: ID 046d:c03e Logitech, Inc.
Bus 001 Device 001: ID 0000:0000
Dalším způsobem, jak získat informace o hardware je dekódovat údaje uložené v
BIOSu. Tento program netestuje systém a nehledá hardware, pouze vypisuje
informace o hardware, který je BIOS zná. Spolu s utilitou
dmidecode
je v balíku i biosdecode
, která vypisuje
nastavení BIOSu. Tyto nástroje dokáží zobrazit informace jako typ základní desky,
přesné označení typu serveru, obsazení jednotlivých PCI slotů, paměťových modulů
a mnoho dalšího. Pro ilustraci si prohlédněte počátek výpisu pořízeného na starším
serveru IBM.
# dmidecode
SMBIOS 2.3 present.
58 structures occupying 3225 bytes.
Table at 0x000FA45B.
Handle 0x0000
DMI type 0, 19 bytes.
BIOS Information
Vendor: IBM
Version: -[JJE118AUS-1.04]-
Release Date: 08/28/2002
Address: 0xF1930
Runtime Size: 59088 bytes
ROM Size: 2048 kB
Characteristics:
PCI is supported
BIOS is upgradeable
BIOS shadowing is allowed
Boot from CD is supported
Selectable boot is supported
3.5"/720 KB floppy services are supported (int 13h)
Print screen service is supported (int 5h)
8042 keyboard services are supported (int 9h)
Serial services are supported (int 14h)
Printer services are supported (int 17h)
CGA/mono video services are supported (int 10h)
ACPI is supported
USB legacy is supported
I2O boot is supported
Handle 0x0001
DMI type 1, 25 bytes.
System Information
Manufacturer: IBM
Product Name: IBM eserver xSeries 220 -[864652X]-
Version: Not Specified
Serial Number: 555563R
UUID: 2E7A23C8-38B4-4A12-82AC-01E0E06830D6
Wake-up Type: Unknown
...
Nakonec si uvedeme utilitu, která kombinuje většinu dříve uvedených způsobů. Jedná se o nástroj, který vytvoří seznam téměř veškerého instalovaného hardware v jednotné formě. Nejběžnějším využitím pak může být vytváření seznamu hardware pro více počítačů a jejich následné ukládání do databáze. Použití je jednoduché:
# lshw # lshw -X # lshw -html # lshw -xml
Tato utilita se dá stáhnout např. na sourceforge.
Nyní jsme schopni identifikovat většinu instalovaného hardware. V příštích dílech se pak zaměříme na jeho zprovoznění, testování a monitorování.