Диагностика железа в Linux

В этом посте я хочу немного рассказать об утилитах, которые помогают в диагностике аппаратной части компьютера.

Предположим, вы установили свежий дистрибутив Debian Linux на свой компьютер. Как посмотреть, какое «железо» определилось и вполне нормально работает, а какое не определилось, например, из-за отсутствующих, либо неправильных драйверов, и осталось «за бортом»?

Для начала можно посмотреть вывод dmesg на предмет ошибок. Например, так:

alexey@workstation:~$ dmesg | grep ail
[ 0.000000] 1149MB HIGHMEM available.
[ 0.000000] 889MB LOWMEM available.
[ 0.000000] Memory: 2054636k/2087936k available (2765k kernel code, 32112k reserved, 1473k data, 404k init, 1175912k highmem)
[ 0.181825] pci0000:00: ACPI _OSC request failed (AE_NOT_FOUND), returned control mask: 0x1d
[ 14.185611] ivtv0: Failed to initialize on device vbi0
[ 14.185764] ivtv0: Failed to initialize on device video24
[ 14.186058] ivtv0: Failed to initialize on device video0
[ 14.187153] ivtv0: Failed to initialize on device radio0
[ 14.188474] ivtv0: Failed to initialize on device video32

Как видно из лога, устройство ivtv0 не инициализировалось корректно. Проведём поиск по нему:

alexey@workstation:~$ dmesg | grep ivtv0
[ 12.197939] ivtv0: Initializing card 0
[ 12.197951] ivtv0: Autodetected AVerTV MCE 116 Plus card (cx23416 based)
[ 12.198247] ivtv0: Unreasonably low latency timer, setting to 64 (was 32)
[ 12.867609] ivtv0: Registered device video0 for encoder MPG (4096 kB)
[ 12.867728] ivtv0: Registered device video32 for encoder YUV (2048 kB)
[ 12.867829] ivtv0: Registered device vbi0 for encoder VBI (1024 kB)
[ 12.867939] ivtv0: Registered device video24 for encoder PCM (320 kB)
[ 12.868090] ivtv0: Registered device radio0 for encoder radio
[ 12.868097] ivtv0: Initialized card: AVerTV MCE 116 Plus
[ 13.555759] ivtv0: Unable to open firmware v4l-cx2341x-enc.fw (must be 376836 bytes)
[ 13.555973] ivtv0: Did you put the firmware in the hotplug firmware directory?
[ 13.556176] ivtv0: Retry loading firmware
[ 14.185234] ivtv0: Unable to open firmware v4l-cx2341x-enc.fw (must be 376836 bytes)
[ 14.185425] ivtv0: Did you put the firmware in the hotplug firmware directory?
[ 14.185611] ivtv0: Failed to initialize on device vbi0
[ 14.185764] ivtv0: Failed to initialize on device video24
[ 14.186058] ivtv0: Failed to initialize on device video0
[ 14.187153] ivtv0: Failed to initialize on device radio0
[ 14.188474] ivtv0: Failed to initialize on device video32

Исходя из этого становится понятно, что проблема с загрузкой драйвера ТВ-тюнера AVerTV MCE 116 Plus. Решением этой конкретной проблемы я уже занимался ранее, так что особых проблем возникнуть не должно. Кстати, сейчас установка конкретно этого драйвера стала намного проще, без сложных телодвижений со скачиванием отдельных драйверов и т.д.

Теперь следующий вопрос: как посмотреть, какие вообще железяки установлены на компьютере? На помощь приходят как минимум две утилиты: lspci и hwinfo.

lspci выводит список всех PCI устройств:

alexey@workstation:~$ lspci
00:00.0 Host bridge: Intel Corporation 82945G/GZ/P/PL Memory Controller Hub (rev 02)
00:02.0 VGA compatible controller: Intel Corporation 82945G/GZ Integrated Graphics Controller (rev 02)
00:1b.0 Audio device: Intel Corporation N10/ICH 7 Family High Definition Audio Controller (rev 01)
00:1c.0 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 1 (rev 01)
00:1c.2 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 3 (rev 01)
00:1c.3 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 4 (rev 01)
00:1d.0 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #1 (rev 01)
00:1d.1 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #2 (rev 01)
00:1d.3 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #4 (rev 01)
00:1d.7 USB Controller: Intel Corporation N10/ICH 7 Family USB2 EHCI Controller (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev e1)
00:1f.0 ISA bridge: Intel Corporation 82801GB/GR (ICH7 Family) LPC Interface Bridge (rev 01)
00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 01)
00:1f.2 IDE interface: Intel Corporation N10/ICH7 Family SATA IDE Controller (rev 01)
00:1f.3 SMBus: Intel Corporation N10/ICH 7 Family SMBus Controller (rev 01)
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller (rev 02)
04:00.0 Multimedia video controller: Internext Compression Inc iTVC16 (CX23416) MPEG-2 Encoder (rev 01)

hwinfo — очень мощная утилита, проверяющая аппаратную часть компьютера и выводящая подробную информацию. Вывод общей информации занимает очень много строк, поэтому приводить его я не буду. Но вот, например, вывод информации о видеоадаптерах:

root@workstation:~# hwinfo —gfxcard
> hal.1: read hal dataprocess 13126: arguments to dbus_move_error() were incorrect, assertion «(dest) == NULL || !dbus_error_is_set ((dest))» failed in file ../../dbus/dbus-errors.c line 280.
This is normally a bug in some application using the D-Bus library.
libhal.c 3483 : Error unsubscribing to signals, error=The name org.freedesktop.Hal was not provided by any .service files
11: PCI 02.0: 0300 VGA compatible controller (VGA)
[Created at pci.318]
Unique ID: _Znp.8qBs1tRfgWE
SysFS ID: /devices/pci0000:00/0000:00:02.0
SysFS BusID: 0000:00:02.0
Hardware Class: graphics card
Model: «Intel 945G»
Vendor: pci 0x8086 «Intel Corporation»
Device: pci 0x2772 «945G»
SubVendor: pci 0x8086 «Intel Corporation»
SubDevice: pci 0x464c
Revision: 0x02
Driver: «i915»
Driver Modules: «drm»
Memory Range: 0x94200000-0x9427ffff (rw,non-prefetchable)
I/O Ports: 0x20c0-0x20c7 (rw)
Memory Range: 0x80000000-0x8fffffff (ro,non-prefetchable)
Memory Range: 0x94280000-0x942bffff (rw,non-prefetchable)
IRQ: 16 (7231 events)
I/O Ports: 0x3c0-0x3df (rw)
Module Alias: «pci:v00008086d00002772sv00008086sd0000464Cbc03sc00i00»
Driver Info #0:
XFree86 v4 Server Module: intel
Driver Info #1:
XFree86 v4 Server Module: intel
3D Support: yes
Extensions: dri
Config Status: cfg=new, avail=yes, need=no, active=unknown

26: PCI 400.0: 0400 Multimedia video controller
[Created at pci.318]
Unique ID: YmUS.v0ozN6Ggen3
Parent ID: 6NW+.mDO_hc8hWX6
SysFS ID: /devices/pci0000:00/0000:00:1e.0/0000:04:00.0
SysFS BusID: 0000:04:00.0
Hardware Class: graphics card
Model: «Internext Compression iTVC16 (CX23416) MPEG-2 Encoder»
Vendor: pci 0x4444 «Internext Compression Inc»
Device: pci 0x0016 «iTVC16 (CX23416) MPEG-2 Encoder»
SubVendor: pci 0x1461 «Avermedia Technologies Inc»
SubDevice: pci 0xc439
Revision: 0x01
Driver: «ivtv»
Driver Modules: «ivtv»
Memory Range: 0x90000000-0x93ffffff (ro,non-prefetchable)
IRQ: 21 (no events)
Module Alias: «pci:v00004444d00000016sv00001461sd0000C439bc04sc00i00»
Driver Info #0:
Driver Status: ivtv is active
Driver Activation Cmd: «modprobe ivtv»
Config Status: cfg=new, avail=yes, need=no, active=unknown
Attached to: #20 (PCI bridge)

Primary display adapter: #11

Информация о состоянии драйвера может быть очень полезна при диагностике неполадок. На этом пока всё.

Установка Linux на флэшку

Уже несколько раз я писал, что пользуюсь дистрибутивом BackTrack. В той записи я упомянул, что работаю с Live USB образом, но не пояснил как я записал его на флэшку, да так, что с неё можно загружаться и работать. Восполняю этот пробел.

Для задуманного потребуется утилита unetbootin и дополнительный пакет extlinux. Устанавливаем её:

apt-get install unetbootin extlinux

Вставляем флэшку. Для успешной записи, на ней нужно создать файловую систему:

mkfs.msdos /dev/sdb1

Работает утилита в графическом режиме под рутом, поэтому логинимся под рутом и запускаем unetbootin. Выглядит она так:

В утилите есть возможность скачать желаемый дистрибутив, либо записать уже скачанный образ. Я выбираю второй вариант:

Выбираю скачанный заранее образ BackTrack5 и запускаю процесс записи:

Который через некоторое время успешно завершается:

Теперь можно вставлять флэшку в любой компьютер и загружаться с неё.

P.S. посты со скриншотами, как мне кажется, более наглядны и понятны. Попробую ещё несколько записей сделать в таком стиле. 🙂

Про подключение к ТТК

На днях решил организовать дополнительный канал связи в своём скромном жилище. Выбор пал на компанию ТТК. Выбор случайный, в моём доме можно подключиться к четырём провайдерам, поэтому было простое желание проверить их качество услуг.

Зашёл на сайт, заполнил заявку. В понедельник ближе к вечеру перезванивает девушка, уточняет информацию по заявке и сообщает, когда могут прийти монтажники для подключения. Договариваемся о времени визита монтажников.

Группа из двух монтажников приезжает вовремя. Один из них полез на чердак, подключать кабель к оборудованию, а второй принялся протягивать кабель в мою квартиру. Я предусмотрительно снял опанелку с входной двери, чтобы можно было быстро затянуть кабель. В итоге подключение заняло минут пятнадцать.

Оставалась последняя часть: настройка подключения. Воткнули кабель в ноутбук, с горем пополам настроили подключение, пинги пошли, сайты начали загружаться. Уточняю: «У оборудования есть привязка к MAC-адресу?». «Нет, можете подключать что угодно, всё будет работать!», – получаю уверенный ответ.

Обрадовался, что не надо будет мучить техподдержку с подключением новых железяк. Распрощался с монтажниками, решил переключить кабель с ноутбука на роутер, чтобы интернет был по всей квартире. И что? Не работает! 🙂

Звоню в техподдержку, интересуюсь: «У вас есть привязка к MAC-адресу?» Девушка в техподдержке похоже более осведомлена: «Конечно есть.» Мысленно чертыхнул монтажников, поменял MAC-адрес на роутере — всё заработало. Скорость и стабильность связи в принципе приемлимая. Но не понравилось, что до отдельных российских площадок трафик идёт через зарубеж. В связи с этим скорость открытия сайтов оставляет желать лучшего.

Сегодня утром связь пропала. Визит в личный кабинет прояснил ситуацию — на счету недостаточно средств. При этом монтажники утверждали, что всё будет работать в течение пяти дней. Сделал для себя вывод: не верить больше монтажникам.

Теперь нахожусь в раздумьях: оставлять подключение к ТТК или же отключаться.

Про интернет-магазины

Одни мои знакомые веб-разработчики решили — хватит работать «на дядю», пришло время работать на себя. Не мудрствуя лукаво, решили они делать не просто сайты, а интернет-магазины, поскольку в них заинтересован бизнес и деньги в них вкладываются намного более серьёзные, чем в какую-нибудь визитку. Меня пригласили в качестве системного администратора для обслуживания их сервера. Я пока согласился, что будет дальше — посмотрим. И вот начали они думать, как грамотно выстроить работу.

Естественно, начали смотреть как данный вид деятельности организован у других компаний. Так и вышли на сайт компании «Фларсис и Партнеры» — http://www.flarsis.ru. Говорю, мужики, посмотрите как у них организован процесс разработки — всё детально расписано, сразу видно, что создание интернет-магазина для них не просто строчка в списке услуг, а серьёзное дело. В общем, если бы я заказывал себе интернет-магазин, к ним бы обратился.

Товарищи почесали головы, сказали, что действительно, надо всё хорошо продумать, прежде чем начинать действовать. Через неделю обещали всё доделать, а я в свою очередь порекомендовал им не торопиться с покупкой сервера, а то будет без дела стоять чёрт знает сколько времени.

В общем, если товарищи всё-таки решатся работать самостоятельно, будут темы для дополнительных статей, что меня определённо радует. Это и подготовка боевого вебсервера, и настройка почты, и тюнинг MySQL, и оптимизация работы PHP. Короче говоря, тем для написания немерянно. 🙂

Обновление Redmine с версии 1.1.1 до версии 1.2.1

В апреле мы установили Redmine. Тогда это была версия 1.1.1. Теперь пришло время его обновить.

Вы скачиваете последнюю стабильную версию, которой на данный момент является версия 1.2.1, и как правильный, умудрённый опытом админ открываете документацию по обновлению установленной системы, которая расположена на официальном сайте — http://www.redmine.org/projects/redmine/wiki/RedmineUpgrade. Читаете и начинаете делать как написано в инструкции. Появляются первые ошибки. Ллишь прочитав документацию до конца вы находите неприметные строки:

Error about the Rails version

Also remember that Redmine 1.2.x uses Rails 2.3.11, so you will need to upgrade your Ruby on Rails gem:
> gem install rails -v=2.3.11

Зачем размещать такую важную информацию в самом конце инструкции? Непонятно 🙂

Таким образом, для успешного обновления вам следует сначала обновить gem до версии 2.3.11, а уже потом запускать все остальные команды. Да, там будут предупреждения об устаревших файлах:

DEPRECATION WARNING: Rake tasks in vendor/plugins/engines/tasks and vendor/plugins/open_id_authentication/tasks are deprecated. Use lib/tasks instead. (called from /var/redmine/vendor/rails/railties/lib/tasks/rails.rb:10)

Но в этом пока нет ничего страшного, все обновления проходят успешно. Теперь у меня вполне успешно работает Redmine версии 1.2.1.

P.S. если у вас не получилось мигрировать на версию 1.2.1, пишите в комментарии, помогу чем смогу.