Tool of the Day – dmidecode

вторник, февруари 17th, 2009

Понякога се налага да добием информация за хардуера на дадена машина. Причини много.  Ако машината е наоколо винаги може да се отвори и да се провери. Но ако е през два-три етажа, или в офиса във Варна, или пък колокирана в нечие сървърно това не е опция. Още повече, че за да се отвори дадена машина, първо трябва да се спре. Когато става дума за десктоп станция, това не е проблем, но ако става дума за сървър нещата стоят по друг начин. Dmidecode върши работа и в двата случая. Цитат от страницата на проекта:

Dmidecode reports information about your system’s hardware as described in your system BIOS according to the SMBIOS/DMI standard . This information typically includes system manufacturer, model name, serial number, BIOS version, asset tag as well as a lot of other details of varying level of interest and reliability depending on the manufacturer. This will often include usage status for the CPU sockets, expansion slots (e.g. AGP, PCI, ISA) and memory module slots, and the list of I/O ports (e.g. serial, parallel, USB).

С други думи програмата чете това, което й казва BIOS-a. Ако той лъже, и тя ще излъже. Така че за съжаление не може да се вярва на изхода на 100%. Тествах я на близо 10-на машини, на повечето, от които знам с точност хардуерните характеристики и не сгреши никъде, така че лично аз й имам достатъчно доверие.

За мен най-полезната опция е -t, –type TYPE. Като съответните възможности са:

DMI TYPES
The SMBIOS specification defines the following DMI types:

Type   Information
—————————————-
0   BIOS
1   System
2   Base Board
3   Chassis
4   Processor
5   Memory Controller
6   Memory Module
7   Cache
8   Port Connector
9   System Slots
10   On Board Devices
11   OEM Strings
12   System Configuration Options
13   BIOS Language
14   Group Associations
15   System Event Log
16   Physical Memory Array
17   Memory Device
18   32-bit Memory Error
19   Memory Array Mapped Address
20   Memory Device Mapped Address
21   Built-in Pointing Device
22   Portable Battery
23   System Reset
24   Hardware Security
25   System Power Controls
26   Voltage Probe
27   Cooling Device
28   Temperature Probe
29   Electrical Current Probe
30   Out-of-band Remote Access
31   Boot Integrity Services
32   System Boot
33   64-bit Memory Error
34   Management Device
35   Management Device Component
36   Management Device Threshold Data
37   Memory Channel
38   IPMI Device
39   Power Supply

Съответно, ако ни интересува какво е дъното:

[root@Galactica ~]# dmidecode -t 2
# dmidecode 2.9
SMBIOS 2.3 present.

Handle 0×0002, DMI type 2, 8 bytes
Base Board Information
Manufacturer: ASUSTeK Computer INC.
Product Name: P5L-MX
Version: Rev x.xx
Serial Number: MB-1234567890

Aко искаме да добавим RAM памет на дадена машина dmidecode отново е наш пръв приятел:

[root@Pegasus ~]# dmidecode -t 16
# dmidecode 2.7
SMBIOS 2.33 present.

Handle 0×0016, DMI type 16, 15 bytes.
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: Single-bit ECC
Maximum Capacity: 16 GB
Error Information Handle: Not Provided
Number Of Devices: 4

т.е. системата поддържа до 16 GB памет.
В момента имаме:

[root@Pegasus ~]# cat /proc/meminfo | grep MemTotal
MemTotal: 2059224 kB

като те са разпределени по следния начин:

[root@Pegasus ~]# dmidecode -t 17
# dmidecode 2.7
SMBIOS 2.33 present.

Handle 0×0017, DMI type 17, 27 bytes.
Memory Device
Array Handle: 0×0016
Error Information Handle: No Error
Total Width: 72 bits
Data Width: 64 bits
Size: 1024 MB
Form Factor: DIMM
Set: 1
Locator: DIMM#1A
Bank Locator: Bank 1

Type: DDR
Type Detail: Synchronous
Speed: 400 MHz (2.5 ns)
Manufacturer: Not Specified
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified

Handle 0×0018, DMI type 17, 27 bytes.
Memory Device
Array Handle: 0×0016
Error Information Handle: No Error
Total Width: Unknown
Data Width: Unknown
Size: No Module Installed
Form Factor: DIMM
Set: 1
Locator: DIMM#2A
Bank Locator: Bank 2
Type: DDR
Type Detail: Synchronous
Speed: 400 MHz (2.5 ns)
Manufacturer: Not Specified
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified

Handle 0x001B, DMI type 17, 27 bytes.
Memory Device
Array Handle: 0×0016
Error Information Handle: No Error
Total Width: 72 bits
Data Width: 64 bits
Size: 1024 MB
Form Factor: DIMM
Set: 1
Locator: DIMM#1B
Bank Locator: Bank 1

Type: DDR
Type Detail: Synchronous
Speed: 400 MHz (2.5 ns)
Manufacturer: Not Specified
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified

т.е. знаем точно какво и на кой слот има, което е предостатъчна информация да си направим сметката за upgrade.

dmidecode е част от RedHat базираните дистрибуции CentOS и Fedora по подразбиране.

Допълнителна информация:
man dmidecode

del.icio.us Digg Google Technorati Svejo.net

CentOS Drivers

сряда, февруари 4th, 2009

Както стана дума и в предното ми писание има хардуер, който не работи от раз (out of the box) под CentOS, къде поради проблем с лицензи, къде по друга причина. На този линк в wiki.centos.org може да се види списък на подобен род хардуер, както и списък на драйверите, които са включени в текущото ядро по подразбиране.

Освен широкоизвестните проблеми с видео драйверите, другите най-често срещани проблеми са с тези за мрежови устройства. На тях и ще се спра, понеже в последните дни доста често ми се налагаше да търся драйвер за този или онзи чип. Някои от модулите, които ще спомена са част от линукс ядрото на по-късен етап (както съм споменал преди седмица за r8169), но текущото ядро в CentOS 5.2 е 2.6.18, в което те липсват. За проблемните чипове на Realtek вече стана дума – в линка по-горе има доста добре систематизирана информация по въпроса /тествани дъна, карти и т.н./

Днес имах проблем с неразпознат чип на Marvel, за който е нужен sk98lin module. Него го няма в хранилищата, на които съм се спрял аз – epel и rpmforge. Намерих го като kmod driver на следния адрес:
http://centos.toracat.org/ajb/CentOS-5/

Ето и пълен списък на модулите там:

kmod package	kmod version	kernel-2.6.18-128.el5 ver
============	===========	=========================

atl1		1.2.40.3	n/a

atl1e		1.0.1.0		n/a

atyfb		1.1		n/a

e1000		8.0.9-NAPI	7.3.20-k2-NAPI

e1000e		0.5.11.2-NAPI	0.3.3.3-k4

et131x		1.2.3		n/a

forcedeth	0.62		present but no version # stated

ieee1394	1.0.0		n/a

igb		1.3.8.6		1.2.45-k2

r8101		1.011.00-NAPI	n/a

r8168		8.010.00-NAPI	n/a

r8169		6.009.00-NAPI	2.3LK-NAPI

			            /--  skge 1.6
sk98lin		10.70.1.3       --<
				    \--  sky2 1.14

tulip		1.1.13-NAPI	1.1.13
del.icio.us Digg Google Technorati Svejo.net

One hell of a week

събота, януари 31st, 2009

Каква седмица само. Чувствах се изморен още във вторник, но след това, което последва, вторник вечерта направо си бях добре :)

Обичам работата си, много дори, но когато нещата се закучат… Е накрая, когато решиш даден проблем винаги е приятно, както беше приятно едно време в училище когато решиш някоя трудна задача по математика и физика, но все пак, въпреки задоволството, което ме изпълва, не пречи да си се оплача.

Всичко започна с невероятно креативната идея на APC да направят кабел usb към RJ50 (10P10C). Защо бе хора, когато UPS-те са ви едва ли не еталон за качество, трябва да разваляте доброто мнение на хората с тази глупост. Но нека цитираме Wikipedia:

Another use is with APC uninterruptible power supplies. In this case, it is a keyed 10P10C plug wit a protrusion on the pin 1 side near the back, it serves only to make the USB connection to the PC incompatible, forcing users with a lost or damaged cable to buy a proprietary one from APC, rather than using an inexpensive and readily-available USB cable with the correct „B“ connector on the UPS end. The pinout (at left) also uses both of the outermost positions on the 10P10C connector, preventing an 8P8C Ethernet cable from being spliced onto a USB cable.

Нужно ли е да казвам нещо повече. Неутралитета на статията бил под въпрос. Голяма работа, поне са си го казали хората така както е. И когато нямаш такъв кабел, работата става грозна. А аз дори не искам да правя shutdown на машината, искам чисто и просто мониторинг. Както и да е, оправих се, не без помощта на системния вожд, който беше така добър да ми заеме един кабел.  В последствие намерих и още един кабел, както и от въпросните накрайници. Ако някой се окаже в моята ситуация, то в Арго Контар има още 358 бр. Момичето, с което говорих каза, че не се радват на кой знае какъв интерес и се продават на високосна година, но се радвам че успях да намеря такъв накрайник и по нашите ширини. Алтернативата бе ebay.

Проблем номер 2. Оказа се не толкова лесна работа, колкото си мислех да се клонира хард диск с LVM. С dd е лесно, но не и когато target диска е по-малък по размер. Варианти много, но с който и да работих накрая все стигах до kernel panic, след проблем в initrd. Варианти за ремонт на initrd също няколко, аз в крайна сметка се спрях на възможността да направя update на ядрото и да го оставя да си свърши работата само. Tака и не успях да открия какво му липсва преди това, но ето какво показа diff след:

diff initrd-old initrd-new

> echo „Loading sata_via.ko module“
> insmod /lib/sata_via.ko

И така машината тръгна след доста мъки и обгрижване от моя страна, но радостта ми бе кратка. Защо? Ами заради Realtek и чиповете, които слагат нагоре надолу по onboard мрежови карти. Както и да е, след малко research стигнах до извода, че имам нужда от r8169 драйвер (или на пакет от тук), като преди това пробвах r8168 и r1000. Ако не се лъжа в ядра след 2.6.22 r8169.ko е включен. So far, so good. Подкарахме и мрежата.

Но ето тук идва кулминацията. За това ще бъда голословен…

Ati drivers for Linux sucks, big time. Period!

В крайна сметка в края на деня стигнах до happy end :) И както казва един приятел, ако не друго качвам level :)

А за да не си помисли някой, че съм злобен хейтър, то през седмицата се случиха и добри неща. Излезе KDE 4.2 :)

del.icio.us Digg Google Technorati Svejo.net