Преглед на „печата“ в телеграфен стил

вторник, май 19th, 2009

Какво ново при мен през последните 20-на дни, в които не съм се обаждал.

Доста работа, от което всъщност не се оплаквам. Обичам си работата, а когато правиш нови и интересни неща, времето минава неусетно. Когато не се получават както се очаква е малко неприятно (така се случва в последните 2 дни), главно заради недоглеждане от моя страна, но вече нещата се нареждат.

Единствения проблем е, че една машина има някакви хардуерни затруднения, които не мога да диагностицирам и се налага да я спра за да се опитам да разбера какво я мъчи. Проблемът е, че работи 24/7. В тази връзка си търся 2х1GB DDR 400 PC3200 или 2х512 на същата честота. Ако някой има, да се обади, черпя бири :)

Communicator-а ми се бъгна и се наложи да мигрирам към Blackberry, което има нестандартна qwerty клавиатура, която все още не мога да свикна.

Возих се няколко пъти на широкорекламираното разширение на първи метродиаметър. Като го удължат до Сердика, вероятно ще го ползвам по-постоянно. Сега ми се налага преход от 2.3 км. В това разбира се няма нищо лошо, особено с това хубаво време навън разхождането по Граф Игнатиев е повече от приятно (мъжката част от читателите ми, ще ме разбере).

Два от футболните отбори, на които симпатизирам (в случая чуждестранните) станаха шампиони на страните си и дори ще се срещнат в Рим в битка за Купата на Европейските Шампиони, известна след ’92 повече като Шампионска лига (името не е много правилно, но…от догодина ще има нови правила). Това ме изправя пред проблема, за кой от двата тима да викам на финала. Затова реших да се насладя изцяло на шоуто, и нека по-добрият победи (малко клиширано, но…). Само едно леко условие имам. Ако Барселона победи, то Бербатов да вкара гол за Юнайтед. Дано това накара малоумните английски журналя да спрат да го оплюват толкова нагло.

На няколко пъти споменавах за дипломната работа. В края на миналата година дадох на пауза, защото така или иначе разбрах, че не мога да запиша магистратура през февруари. Сега вече я завърших, дори си спретнах и скромна презентация от 25 слайда. Надявам се другата седмица да я предам, и до края на юни да приключа с този належащ и дълго протакан въпрос.

Догледах и Prison Break. Разгеле, че свърши, това всъщност трябваше да стане още след края на първи сезон, с малки уговорки може и втори. Но се подведоха по високия рейтинг и разводниха хубавата идея. Той именно затова беше висок, защото беше нещо различно. Лошото е, че интересните сериали взеха да приключват. Гледах и пилотната серия на Caprica, fork-a на Battlestar Galactica. За актьорите не искам да говоря. Ще ги видим натам, евентуално 2010. Според мен има потенциал, но изглежда, че ще има предимно тостери, хубавите силонки са кът нещо.Трябва да отида да гледам Star Trek – 80% от гледалите го са доволни. Аз така или иначе щях да ида всъщност.

И на края, малко странно, но напоследък не слушам рок, особено следобедно време. Залагам на включен климатик и chill out, като мога да спомена един артист. Нещо негово може да се чуе тук.

del.icio.us Digg Google Technorati Svejo.net

Patch and recompile source rpm

четвъртък, април 30th, 2009

Както обикновено когато е последен работен ден изникват странни проблеми. Днес попаднах на интересен client/server side bug, който се наложи да оправям. Оказа се, че в PureFTPd има проблем засягащ timestamp на файлове. При upload на файл timestamp-а локално и този на сървъра се различават с по няколко часа, в зависимост от часовата зона, като за нашата часовете са 2. Това е когато се използва preserve timestamp опцията от страна на клиента, и е доста неудобно при синхронизация на файлове. За щастие проблема се оказа елементарен за решаване – описано е как да стане тук. Аз обаче нямах време да чакам bugfix от upstream-a и взех нещата в свои ръце. Реших да прекомпилирам source rpm и по-надолу ще опиша как точно може да се направи това.

  • Като за начало имаме нужда от rpm-build, така че ако го няма, се налага да го инсталираме :
yum -y install rpm-build
  • Намираме и инсталираме src rpm-а. В моя случай той е ето тук.
rpm -ivh pure-ftpd-1.0.21-15.el5.src.rpm
  • Отиваме в specs директорията:
cd /usr/src/redhat/SPECS/
  • Където подготвяме source за компилиране, като го разархивираме и apply-ваме вече дефинираните patch-ове
rpmbuild -bp pure-ftpd.spec

#Възможно е да има проблеми със зависимости, като естествено трябва да инсталираме посочените пакети, ако има такава необходимост

  • Отиваме в /usr/src/redhat/BUILD където би трябвало да има директория от рода pure-ftpd-1.0.21. Правиме й backup, който ще ползваме при генериране на patch-a в последствие.
cd /usr/src/redhat/BUILD

cp -r pure-ftpd-1.0.21 pure-ftpd-1.0.21.orig

Промяната, която трябва да направим е да заменим "mktime()" с "timegm()" във файла ftpd.c. И така с любимия файлов редактор vim, правим нужната промяна във файла /usr/src/redhat/BUILD/pure-ftpd-1.0.21/src/ftpd.c

  • Генерираме patch-a
diff -Naur pure-ftpd-1.0.21.orig/src/ftpd.c pure-ftpd-1.0.21/src/ftpd.c > ../SOURCES/pure-ftpd-1.0.21-utime.patch

като той трябва да съдържа нещо от рода:

1
2
3
4
5
6
7
8
9
10
11
--- pure-ftpd-1.0.21.orig/src/ftpd.c    2009-04-30 13:39:37.000000000 +0300
+++ pure-ftpd-1.0.21/src/ftpd.c 2009-04-30 13:40:55.000000000 +0300
@@ -2541,7 +2541,7 @@
tm.tm_mon--;
tm.tm_year -= 1900;
if (tm.tm_mon < 0 || tm.tm_year <= 0 ||
-       (ts = mktime(&tm)) == (time_t) -1) {
+       (ts = timegm(&tm)) == (time_t) -1) {
addreply_noformat(501, MSG_TIMESTAMP_FAILURE);
return;
}
  • Редактираме spec файла /usr/src/redhat/SPECS/pure-ftpd.spec като правим следните промени
Release:    15%{?dist}

на

Release:    15%{?dist}.1
  • Добавяме ред, в който описваме направения patch
Patch3:     pure-ftpd-1.0.21-utime.patch
  • в %prep секцията, добавяме следния ред, след другите patch-ове
%patch3 -p1 -b .utime
  • в %changelog секцията описваме направената промяна
1
2
* Thu Apr 30 2009 package maintainer <mail> - 1.0.21-15.1
- patch pure-ftpd "SITE UTIME" bug</mail>
  • остава да прекомпилираме пакета
rpmbuild -ba pure-ftpd.spec
  • Ако всичко мине гладко, готовият RPM трябва да се намира в /usr/src/redhat/RPMS/$arch/ и можем да пристъпим към update/инсталация на готовия пакет.

Още информация:

http://docs.fedoraproject.org/drafts/rpm-guide-en/ch-rpmbuild.html

http://linux.die.net/man/8/rpmbuild

Допълнение:

Настройка на winscp за Daylight saving time (DST) - http://winscp.net/eng/docs/ui_login_environment#daylight_saving_time

del.icio.us Digg Google Technorati Svejo.net

Intel Nehalem EP

сряда, април 1st, 2009

Имах възможността да присъствам на представянето на новия процесор на Intel в сървърния сегмент, близък роднина на Core i7 в настолния и базиран на новата им архитектура известна с кодовото название Nehalem. На пазара ще са известни като Xeon от серия 5500. Какво ново?

Въпреки, че все още сме на 45 нанометра, то технологията като архитекура може да се нарече революционна, поне такава е за Intel. За първи път има вграден memory controller, използва се нов начин за връзка между процесора и чипсета – Quick Path Interconnect като всичко това води до увеличаване на производителността с около 2 пъти. Връща се и Hyper Threading-а, като води със себе си и приятел  – Turbo Boost, технология която позволява промяна на производителността на процесора в зависимост от натоварването (но не за всички ядра) – т.е. имаме „самоклокващ“ се процесор. Честотата може да се управлява и по предварително зададен критерий например време от денонощието, което увеличава и енергийната ефективност. Процесорите са доста (с около 50% в idle) по-икономични спрямо своите предшественици от Xeon серията 5400.

Безспорно добри играчки, но цените са си солидни. Все пак никой не мисли за цената, когато му е нужно да изгради надеждна и ефективна сървърна система. Пък и покрай Green инициативата, бързо ще си избие парите от сметките за ток :) Аз пък се прибрах от представянето с пътническа чанта подарък от викторината :)

За любознателните: Nehalem @ Wikipedia и едно ревю от TheRegister.

del.icio.us Digg Google Technorati Svejo.net

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