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



58 коммент.
Он есть у каждого из нас. Он - наше всё в прямом смысле слова, маленький кусочек высоких технологий и точной механики, на котором хранятся наши бесценные данные: фотографии, тексты, фильмы, музыка, конфиги и собственно операционная система. Это - Винчестер. Но рано или поздно, он выходит из строя - почему?

Предыстория вопроса
Всё началось с того, что я на работе решил скачать свежий Debian Testing и перенести его домой на мои большие винчестеры. Всё скачалось и записалось, выключил ноутбук в штатном режиме - в общем, всё, как всегда. Однако при копировании была выдана ошибка: I/O Error, и в логах dmesg засветилось:
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x40 { UncorrectableError }, LBAsect=35807470, high=2, low=2253038, sector=35807428
ide: failed opcode was: unknown
end_request: I/O error, dev hda, sector 35807428
Приехали - по диску пошли битые сектора. Дело плохо, и я решил посмотреть на данные SMART, чего, признаться, уже давно не делал.
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000b 100 100 062 Pre-fail Always - 0
2 Throughput_Performance 0x0005 100 100 040 Pre-fail Offline - 0
3 Spin_Up_Time 0x0007 192 192 033 Pre-fail Always - 2
4 Start_Stop_Count 0x0012 099 099 000 Old_age Always - 1904
5 Reallocated_Sector_Ct 0x0033 100 100 005 Pre-fail Always - 0
7 Seek_Error_Rate 0x000b 100 100 067 Pre-fail Always - 0
8 Seek_Time_Performance 0x0005 100 100 040 Pre-fail Offline - 0
9 Power_On_Hours 0x0012 085 085 000 Old_age Always - 6651
10 Spin_Retry_Count 0x0013 100 100 060 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 965
191 G-Sense_Error_Rate 0x000a 100 100 000 Old_age Always - 0
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 2
193 Load_Cycle_Count 0x0012 071 071 000 Old_age Always - 299688
194 Temperature_Celsius 0x0002 144 144 000 Old_age Always - 38 (Lifetime Min/Max 11/44)
196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 5
197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 1

198 Offline_Uncorrectable 0x0008 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 0
А вот и герой торжества: сбойный сектор отловлен, и он уже не одинок - их там пятеро. Обидно перекачивать такой большой файл (хотя при подсчёте MD5SUM значение выдавалось правильное), но ещё обиднее терять данные - тут же была сделана резервная копия самых важных данных. Через день я выполнил на нём полное тестирование по SMART, и оно прошло гладко. Теперь сбойный сектор исчез (для меня, но не для SMART), и их теперь шестеро.
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000b 099 099 062 Pre-fail Always - 0
2 Throughput_Performance 0x0005 100 100 040 Pre-fail Offline - 0
3 Spin_Up_Time 0x0007 204 204 033 Pre-fail Always - 2
4 Start_Stop_Count 0x0012 099 099 000 Old_age Always - 1906
5 Reallocated_Sector_Ct 0x0033 100 100 005 Pre-fail Always - 0
7 Seek_Error_Rate 0x000b 100 100 067 Pre-fail Always - 0
8 Seek_Time_Performance 0x0005 100 100 040 Pre-fail Offline - 0
9 Power_On_Hours 0x0012 085 085 000 Old_age Always - 6659
10 Spin_Retry_Count 0x0013 100 100 060 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 966
191 G-Sense_Error_Rate 0x000a 100 100 000 Old_age Always - 0
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 2
193 Load_Cycle_Count 0x0012 071 071 000 Old_age Always - 299691
194 Temperature_Celsius 0x0002 171 171 000 Old_age Always - 32 (Lifetime Min/Max 11/44)
196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 6
197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 0

198 Offline_Uncorrectable 0x0008 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 0
В общем, я уже понемногу откладываю деньги на новый винчестер, а пока решил выяснить, почему же они помирают.

Статьи, на которые я буду ссылаться, научные, так что не ищите там выкриков "самсунг\сигейт отстой\рулёз" и конкретных рекомендаций "покупайте у Васи - не прогадаете". Кто не знаком с жанром научной статьи, говорю сразу: это не рецепт, а скорее пища для дальнейших размышлений. Написано всё максимально дипломатично и завуалировано, но так, чтобы читатель уловил основные идеи, однако не ждите, что все результаты долгих исследований вам выложат на блюдечке с голубой каёмочкой. Это напоминает то, как одна хозяйка другой рассказывает рецепт своего фирменного блюда: вроде бы все ингредиенты упомянуты, но фирменный штрих, который и делает блюдо таким замечательным, скорее всего сказан не будет.

Так или иначе, я старался внимательно следить за хитросплетениями мыслей авторов статей и смог-таки кое-что выцедить оттуда.


Причины, статистика, анализ
Итак, статья "Failure Trends in a Large Disk Drive Population" проливает немного света на причины выхода из строя винчестеров на серверах Гугл - авторы собирали данные в течении полутора лет (с декабря 2005 по август 2006) с почти 100.000 винчестеров, диски были SATA и ATA, 5400 и 7200 RPM, ёмкостью от 80 до 400Гб разных производителей.

Главное, на что упирают гугловцы, что SMART - вовсе не панацея от всех бед и что ориентирование только на данные SMART в большинстве случаев (особенно индивидуальных) ничего не даёт. Большая часть их дисков померли в то время, как по SMART они были совершенно здоровы и без каких либо сообщений об ошибках.

Сообщается также, что вероятность гибели винчестера слабо связана с его степенью загруженности. Но если SMART сыплет ошибками типа scan errors, reallocation counts, offline reallocation counts, and probational counts - дело дрянь и пора делать бекапы :-)


Возраст
Вероятность отказа, как и следовало ожидать, растёт с возрастом диска, то есть с тем временем, которое он отработал. Диски, работающие до 1 года, чаще всего дохнут в первые три месяца. Резкий скачок вероятности выхода из строя - 2 года.


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


Нагрузки

Дальше они приводят данные по зависимости смертности дисков от степени их загруженности (т. е. от дисковых операций).



График из работы "Failure Trends in a Large Disk Drive Population", Eduardo Pinheiro, Wolf-Dietrich Weber and Luiz Andre Barroso, Google Inc., Appears in the Proceedings of the 5th USENIX Conference on File and Storage Technologies (FAST’07), February 2007

Оказывается, что только очень новые (до 3 месяцев) и очень старые (старше 3 лет) чаще всего дохнут от высоких нагрузок, в остальных возрастных категориях вероятность выхода из строя от нагрузок зависит слабо.


Температура
Считается, что температура - важнейший фактор для жёсткого диска и что лучше диски охлаждать. Здесь главное не дойти до маразма: температура винчестера ниже 15 градусов по Цельсию удваивает среднюю частоту выхода их из строя.



График из работы "Failure Trends in a Large Disk Drive Population", Eduardo Pinheiro, Wolf-Dietrich Weber and Luiz Andre Barroso, Google Inc., Appears in the Proceedings of the 5th USENIX Conference on File and Storage Technologies (FAST’07), February 2007

Гугловцы выяснили, что с повышением температуры винчестера риск отказа растёт медленно - хуже того, есть тенденция к тому, что дискам больше страшны низкие температуры. Интересно, что минимальный риск выхода из строя приходится на интервал температур от 36 до 45 градусов. Риск выхода из строя при температурах меньше 25 градусов почти вдвое больше, чем при 45, и возрастает быстро с уменьшением температуры.

Диски возраста до 2 лет чаще дохнут от холода (при температуре от 15 до 30 градусов), а старики (от 3 лет) мрут от перегрева (более 45 градусов).



Анализ данных SMART

Самые важные ошибки, на которые следует обращать внимание: Scan Error, Reallocation Count Offline reallocation Probational Count

Ошибка сканирования (Scan Error).
Электроника диска время от времени сканирует поверхность диска незаметно для пользователя и передаёт данные SMART - если будут найдены битые сектора, они, как правило, вскоре будут заменены на свободные. Однако гугловцы говорят: после первой же ошибки сканирования поверхности, вероятность выхода из строя винчестера в следующие 60 дней возрастает почти в 40 раз!


Количество перемещений (Reallocation Count).
Если при чтении информации возникают ошибки ввода-вывода и операционная система о них сообщает, такие ошибки перехватываются SMART и сбойный сектор заменяется нормальным из набора доступных. Количество перемещений отражает износ поверхности, однако это ещё не повод бить тревогу: около 90% гугловских винчестеров имеют отличное от нуля количество перемещений, хотя при этом годовая вероятность сбоя (
Annualized Fault Rate, AFR) повышается в 3-6 раз. После первого же перемещения сбойного участка, вероятность выхода из строя в следующие 60 дней увеличивается в 14 раз.


Остальные ошибки (в том числе Seek Error) не дают заметного вклада в общую статистическую картину дисковой смертности. Примечательно, что, например, выход диска из строя слабо соотносится с количеством циклов "старт-стоп". Однако если диску более 3 лет, следует его использовать непрерывно, так как частых включениях и выключениях вероятность выхода из строя повышается на 2%.

В общем, гугловцы призывают не уповать на SMART и его в общем не высокую предсказательную силу (более 56% всех умерших дисков не имели отметок об ошибках SMART), а больше налегать на бекапы и резервирование, чем почти никто не занимается, пока жареный петух не клюнет в известное место.

На десерт - самое вкусное: распределение вероятностей ошибок по данным SMART. На кладбище гугловых винчестеров винчестеры встречаются со следующим распределением сбоев:
Ошибки, которые SMART не отловила - 60%
Reallocation Count - около 40%
Seek Error - 30%
Offline Reallocation - 28%
Probe Count - 20%
Scan Error - 15%
CRC Error - менее 5%.
Ясно, что винчестеры дохнут не от одной ошибки, а чаще всего от нескольких, лидирует в которых сбойные сектора и ошибки позиционирования.
Следует отметить, что в винчестерах отдельных производителей Raw_Read_Error_Rate и Seek_Error_Rate параметры достигают максимума и обнуляютя несколько раз в день. Это связанно с политикой некоторых производителей в отношении SMART: в эти параметры пишутся все ошибки, а остальные производители только те, что не смог отловить контроллер.
За информацию спасибо s7ang3r


Время наработки на отказ
Другая статья, "Disk failures in the real world: What does an MTTF of 1,000,000 hours mean to you?", подробно разбирает, что такое MTTF, или mean time to failure. Статистика также очень впечатляющая (около 100.000 устройств).

Многие производители оценивают отказоустойчивость двумя связанными друг с другом оценками: ежегодная частота ошибок (Annualized failure rate, AFR) и среднее время отказа (mean time to failure). AFR оценивается на основе предсказаний по результатам ускоренных тестов, а MTTF оценивается как время работы за год делённой на AFR. Ведущие производители дисков заявляют, что MTTF их устройств - от 1 млн. часов до 1.5 млн. часов в соответствии с AFR равной 0.58% и 0.88% соответственно.
Для любознательных: делается это потому, что проверять диски непосредственно, включив их и оставив, скажем, на 4-5 лет, просто невозможно, потому как производителю данные о надёжности нужны сейчас, а не через 5 лет, когда эти диски безнадёжно устареют. Поэтому разработаны и проводятся так называемые ускоренные тесты, при которых устройства загоняют в заведомо невыносимые условия работы (страшная жара \ лютый мороз и катастрофические дисковые нагрузки) и смотрят, сколько они в таком режиме протянут. Ясное дело, что дохнут они там очень быстро - и эти данные потом экстраполируются (т.е. пересчитываются с предсказанием) на нормальные условия работы. Конечно, точность таких предсказаний не слишком высока, но это лучше, чем ничего.
Чаще всего исходные данные таких исследований строго охраняются компанией-производителем и не просачиваются за пределы лабораторий. На выходе цифры, полученные такими методами, несколько приукрашиваются отделом маркетинга, и мелкими буквами вписываются на сайте для тех, кто интересуется.
Искать правду в этой мутной воде - дело гиблое, и остаётся ориентироваться на научные исследования разной степени достоверности, отчёты о которых время от времени публикуются на научных конференциях.
В статье говорится о том, что их данные о частоте замены винчестеров ввиду сбоев, мягко говоря, расходятся с тем, что заявляет производитель. Так, в трёх дата-центрах, в которых снимались данные для этой статьи в течение 5 лет, в общем случае замены жёстких дисков в связи со сбоями были несколько чаще, чем замена планок оперативной памяти, в 2.5 раза чаще, чем замена процессоров, в 2 раза чаще, чем замена материнских плат. Факт остаётся фактом: сбои винчестеров - одни из самых распространённых причин остановки узлов дата-центров для замены оборудования.

Дальше в рамках исследования было вычислено значение ежегодной частоты ошибок (AFR) для всех датацентров, в которых это исследование проводилось, и вот график:


График взят из работы: Bianca Schroeder, Garth A. Gibson "Disk failures in the real world: What does an MTTF of 1,000,000 hours mean to you?", FAST ’07: 5th USENIX Conference on File and USENIX Association Storage Technologies.

Он стоит тысячи слов: горизонтальная сплошная прямая соответствует заявляемым 1.5 млн. часам безотказной работы, горизонтальная пунктирная - 1 млн. часов, а точечная - реальному усреднённому времени работы. Согласно этому, AFR составляет 3%, а соответствующее MTTF - около 300 тыс. часов.

Но и эта цифра несколько завышена: не секрет, что в дата-центрах сделано всё, чтобы оборудование работало дольше. Это и системы кондиционирования, и распределение вычислительной нагрузки, и защита от перегрева \ переохлаждения отдельных компонентов и проч. Едва ли в пользовательских машинах имеется нечто подобное, особенно это касается ноутбуков.

Разброс таких данных велик: AFR составляет от 0.5% до 13.6%, и это в дата-центрах. Последняя цифра соответствует примерно 7 годам работы винчестера, но понятно, что в бытовых устройствах эта цифра намного скромнее: постоянно меняющаяся температура устройства, небольшое время непрерывной работы, скачки напряжения, большое количество циклов "старт-стоп" и прочее сильно сокращают время жизни жёстких дисков.

Ещё один замечательный график, показывающий жизненный цикл жёстких дисков в зависимости от времени работы:

График из работы J. Yang and F.-B. Sun., "A comprehensive review of hard-disk drive reliability". In Proc. of the Annual Reliability and Maintainability Symposium, 1999.

Как остроумно назвали авторы работы такую форму графика, "bathtub curve", т.е. кривая в форме ванной :-)

Интересные выводы в работе такие:
  1. MTTF, которое заявляет производители, более чем в 3 раза превосходит тот, который оценен в реальных условиях дата-центров.
  2. Для старых винчестеров, отработавших 5-8 лет, переоценка MTTF производителями составляет более 30 раз.
  3. Даже для сравнительно новых жёстких дисков (менее 3 лет работы) MTTF производителем завышена по крайней мере в 6 раз.
  4. Частота замен для дорогостоящих SCSI-дисков и обычных SATA почти одинакова.
И далее по работе: Для дисков, чьё время непрерывной работы менее 5 лет, частота замены в связи со сбоями в 2-10 раз больше той, которая следует из времени MTTF, а для старше 8 лет эта частота замен в 30 раз больше.


Как просмотреть информацию SMART
Для этого уже должны быть установлен пакет smartmontools, который содержит в том числе утлиту smartctl. После этого:
  • для IDE-дисков пишем smartctl --all /dev/hda
  • для SCSI-дисков smartctl --all /dev/sda
  • для SATA-дисков smartctl --all -d ata /dev/sda
Будет выведена длинная таблица, в которой будет много интересного.

smartctl version 5.36 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===
Device Model: HTS421260H9AT00
Serial Number: HKA210AJGKHV1B
Firmware Version: HA2OA70G
User Capacity: 60.011.642.880 bytes
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: 7
ATA Standard is: ATA/ATAPI-7 T13 1532D revision 1
Local Time is: Fri Oct 19 17:12:58 2007 MSD
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

Здесь, собственно, информация о винчестере - размер, серийный номер.



=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status: (0x00) Offline data collection activity
was never started.
Auto Offline Data Collection: Disabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 645) seconds.
Offline data collection
capabilities: (0x5b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
No Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 2) minutes.
Extended self-test routine
recommended polling time: ( 47) minutes.

Здесь данные о том, какие тесты поддерживаются SMART в устройстве и сколько они по времени будут занимать.

А дальше идёт самое интересное.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000b 100 100 062 Pre-fail Always - 0
2 Throughput_Performance 0x0005 100 100 040 Pre-fail Offline - 0
3 Spin_Up_Time 0x0007 202 202 033 Pre-fail Always - 1
4 Start_Stop_Count 0x0012 099 099 000 Old_age Always - 1930
5 Reallocated_Sector_Ct 0x0033 100 100 005 Pre-fail Always - 0
7 Seek_Error_Rate 0x000b 100 100 067 Pre-fail Always - 0
8 Seek_Time_Performance 0x0005 100 100 040 Pre-fail Offline - 0
9 Power_On_Hours 0x0012 085 085 000 Old_age Always - 6745
10 Spin_Retry_Count 0x0013 100 100 060 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 978
191 G-Sense_Error_Rate 0x000a 100 100 000 Old_age Always - 0
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 2
193 Load_Cycle_Count 0x0012 071 071 000 Old_age Always - 299731
194 Temperature_Celsius 0x0002 196 196 000 Old_age Always - 28 (Lifetime Min/Max 11/44)
196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 6
197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0008 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 0

Выделенные красным строки - для повышенного внимания, полужирным - для внимания пристального. В общем, если данные в них ненулевые, то есть имеются определённые ошибки, это ещё не повод для вселенской катастрофы, просто сигнал к тому, что неплохо бы выяснить адресок ближайшего сервис-центра по обслуживанию ноутбука вашей фирмы и отложить немного денег на замену винчестера. Хорошо бы ещё сделать полный дамп данных, пока это ещё возможно (чтобы потом залить на новый винчестер сразу всё). Или по крайней мере сделать копию содержимого /etc и /home


Error 4 occurred at disk power-on lifetime: 6652 hours (277 days + 4 hours)
When the command that caused the error occurred, the device was active or idle.

After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
40 51 d6 ee 60 22 e2 Error: UNC 214 sectors at LBA = 0x022260ee = 35807470

Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
25 00 00 c4 60 22 e0 00 00:29:58.200 READ DMA EXT
25 00 00 c4 5f 22 e0 00 00:29:58.200 READ DMA EXT
25 00 00 c4 5e 22 e0 00 00:29:58.200 READ DMA EXT
25 00 00 c4 5d 22 e0 00 00:29:58.200 READ DMA EXT
25 00 00 c4 5c 22 e0 00 00:29:58.100 READ DMA EXT

Далее пойдёт описание ошибок, если таковые случались. У меня это была ошибка ввода-вывода.

Ниже будут следовать данные о том, какие тесты запускались и чем они окончились. Если они завершились с ошибками - это верный признак скорой кончины винчестера.

SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Completed without error 00% 6651 -
# 2 Short offline Completed without error 00% 6651 -
# 3 Short offline Completed without error 00% 3097 -
# 4 Short offline Completed without error 00% 806 -

Надеюсь, что эта статья поможет выяснить причину, почему сломался жёсткий диск.


Ссылки
Для дальнейшего изучения параметров SMART можно обратиться к этой ссылке, здесь говорят о SMART в целом. Эта статья также многое поможет прояснить.
Читать далее

Программы для Linux: пользовательский софт в Linux



90 коммент.
Вот поставили вы Debian GNU/Linux (или другой дистрибутив типа Ubuntu Linux) - какие программы в Linux за что отвечают? Какие программы для линукс стоит поставить в первую очередь для создания привычного рабочего окружения? Ответ на этот вопрос, а также на вопрос "есть ли аналоги программы в Linux?" приводится в этом посте.

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

Для облегчения навигации: полужирным будут выделены приложения, которые стоит поставить в любом случае, курсивом - аналогичные по классу, обычным шрифтом - на которые стоит посмотреть. Зелёным отмечены программы, которые есть в составе дистрибутива, жёлтым - не свободные / требуется ставить из сторонних репозиториев.


Работа с изображениями

Редактирование фотографий, конвертирование из raw-формата, поточная обработка изображений, просмотрщики.
  • GIMP, krita, CinePaint - редактор изображений (аналог Adobe Photoshop в Linux, описание).
  • ImageMagick (консольный) - консольный графический редактор, полезен при поточной обработке изображений (описание).
  • Nip2 - специализированный графический редактор для изображений большого размера (описание).
  • Inkscape, Sodipodi - векторный графический редактор.
  • F-Spot, digiKam, gThumb, Google Picasa ( отсутствует в дистрибутиве по лицензионным соображениям [?]) - приложение для управления вашими фотографиями
  • Gwenview, gqview, geeqie, eog, pornview - просмотрщики изображений в Linux (аналог ACDSee в Linux).
  • UFraw, dcraw (консольный), shotwell, rawtharepee - конверторы RAW-файлов для Linux (описание
Интернет
Веб-броузеры и почтовые клиенты, мгновенные сообщения и FTP-клиенты, интернет-телефония.
  • Mozilla Firefox / Iceweasel, Konqueror, Epiphany, Opera, chromium-browser ( отсутствует в дистрибутиве по лицензионным соображениям [?]) - веб-браузер (аналог Internet Exploder в Linux).
  • Mozilla Thunderbird / Icedove, Evolution, Sylpheed, KMail, mutt (консольный) - почтовый клиент (аналог Microsoft Outlook в Linux).
  • gFTP, ncftp, FileZilla - FTP клиенты в Linux.
  • aMule - приложение для работы в P2P сетях.
  • Azureus, Deluge, KTorrent, Transmission, rtorrent (консольный) - Bittorrent клиент.
  • linuxdcpp, valknut, microdc - DC++ клиенты для Линукс.
  • Pidgin, Psi, SIM, Kopete, gajim, tkabber, mcabber (консольный) и centericq (консольный), QutIM (скачать) - клиент обмена мгновенными сообщениями (аналог ICQ в Linux).
  • Skype ( отсутствует в дистрибутиве по лицензионным соображениям [?]) , wengophone, gizmo, Ekiga - интернет-телефония.
  • d4x, gwget, kget, wget (консольный) - менеджеры закачек файлов.
  • wget (консольный), aria, httrack (консольный) - оффлайн-броузеры, скачивают сайты для локального просмотра (аналог Teleport Pro для Linux).

Работа с текстом и таблицами
Визульные текстовые процессоры, системы вёрстки.
  • OpenOffice Writer - аналог Microsoft Word в Linux (часть пакета OpenOffice.org)
  • OpenOffice Calc - аналог Microsoft Excel в Linux (часть пакета OpenOffice.org)
  • OpenOffice Impress - аналог Microsoft PowerPoint (часть пакета OpenOffice.org)
  • OpenOffice Base - аналог Microsoft Access (часть пакета OpenOffice.org)
  • AbiWord, GNUmeric, KOffice, SiagOffice - другие офисные приложения для Линукс.
  • Adobe Reader, Evince, xpdf, okular, kpdf - чтение PDF-файлов под Линукс.
  • gnochm, kchmview, xChmCHM - чем прочитать CHM-файлы в Linux.
  • StarDict - словари в Линукс, аналог Lingvo.
  • GnuCash, kMyMoney - персональный финансовый менеджер (аналог Quicken).
  • Scribus - настольная издательская система (аналог QuarkXPress в Linux).
  • Kate, nEdit, gedit - текстовые редакторы с подсветкой синтаксиса.
  • vi, vim, emacs - продвинутые среды обработки текста.


Мультимедиа
Проигрыватели аудио и видеофайлов, звуковые редакторы, видеоредаторы и системы видеомонтажа, запись CD/DVD-дисков.

  • Amarok, Banshee, exaile - музыкальный проигрыватель и каталогизатор музыки.
  • XMMS, audacious, bmp - музыкальный проигрыватель, аналог знаменитого Winamp (описание)
  • Rhythmbox- музыкальный проигрыватель, аналог Apple's iTunes, с поддержкой iPods
  • Mocp (консольный) - консольный музыкальный проигрыватель с интерфейсом в стиле Нортон Командер.
  • Audacity - звуковой редактор
  • MPlayer, Xine, VLC Media Player, Totem, Real Player( отсутствует в дистрибутиве по лицензионным соображениям [?]) - проигрыватели видеофайлов и DVD в Линукс (видео/аудио)
  • Kino, Сinelerra - редактор цифрового видео
  • TVtime, zapper, xawtv, kdetv - приложение для просмотра телевизионных каналов
  • grip ("Звуковыжималка"), KAudioCreator, abcde (консольный) - копирование звуковых CD
  • GnomeBaker, graverman, Brasero, K3B - программа записи на CD/DVD
  • EasyTag - программа для конвертирования тэгов музыки в правильные кодировки (описание).

Системное
Приложения для расширения возможностей ОС: интерпретаторы языков программирования, виртуальные машины, эмуляторы.

  • WINE, Cedega, Crossover Office( отсутствует в дистрибутиве по лицензионным соображениям [?]) - средство запуска exe-файлов в Линукс.
  • QEMU (консольный), VirtualBox - полные эмуляторы, для запуска других ОС в Линукс (описание QEMU, описание VirtualBox)
  • Midnight Comander (MC), deco, gentoo - аналог Norton Сommander, файловый менеджер для консоли
  • torsmo, conky, gkrellm - индикация работы системы.

Научное
Программы для набора научных документов,
  • tetex / texlive - дистрибутив LaTeX для Линукс (как установить)
  • Kile / Lyx / texmaker - оболочка для создания латех-файлов (описание)
  • jabref (нужна Java) - ведение библиографической базы данных (описание)
  • sam2p - для перевода всего-чего-угодно в eps
Остальные программы можно найти тут: Аналоги Windows программ в Linux (Ubuntu)- таблица соответствий.
Читать далее

Экспозиция более 30 секунд на цифровой камере: Long-time remote shooting



12 коммент.
Задача: требуется фотографировать с выдержками более 30 секунд ("от руки") и есть необходимость этот процесс автоматизировать.
Решение: при помощи паяльника, доступных электрических компонентов и скрипта на bash можно снимать с длительными выдержками без необходимости стоять с камерой и держать кнопку.


Исходные данные
Имеется цифровая фотокамера Canon EOS 400D, Debian-powered ноутбук и необходимость снимать фотографии с выдержкой более 30 секунд. Если немного погуглить, то можно найти замечательную схему, которую предлагает Michael A. Covington здесь. На всякий случай дублирую её тут:



Схема прекрасная, но она подходит для Canon EOS 300D, а для 400D нет - если её спаять и попробовать управлять 400D, то затвор будет только подниматься, но не опускаться. То есть нет возможности остановить экспозицию в нужный момент, кроме как выключить камеру.


Схема для Canon EOS 400D
Долго ли, коротко, однако я с коллегой, Алексеем Ропяным, экспериментальным путём выяснили, что закрывает затвор фотоаппарат по сигналу с другого контакта, и Алексей предложил схему изменить вот так:



И это сработало: наш лабораторный Canon EOS 400D стал открывать и закрывать затвор по команде с компьютера!


Необходимые компоненты
Для того, чтобы спаять шнурок управления камерой, требуется некоторое количество четырёхжильного кабеля (от аудиоаппаратуры или простой телефонный провод), jack на 2.5мм (он же 3/32 inch), указанные на схеме радиоэлементы (можно купить в Chip&Dip), 9-контактный COM-порт и соответственно переходник USB-COM (чтобы можно было использовать и на современных компьютерах, и на старых), а так же паяльник и немного терпения.

Переходник USB-COM лучше всего брать на чипе Profilic 2303 - это самый распространённый чип и в Линукс работает "из коробки".


Программное обеспечение
Для управления камерой требуется одна маленькая утилита, которую мне подсказали на Астрофоруме (обсуждение велось в теме "Выдержка более 30 сек. через комп?" тут и "Чем Linux полезен ЛА?" здесь).

Программа называется setSerialSignal и её исходник находится здесь. Скомпилировать её GCC, который входит в любой дистрибутив *nix-систем:
gcc -o setSerialSignal setSerialSignal.c
Проверялось на системе Debian GNU/Linux v4.0 r.0 "Etch", gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21).

На всякий случай дублирую исходный код программы:

/*
* setSerialSignal v0.1 9/13/01
* www.embeddedlinuxinterfacing.com
*
*
* The original location of this source is
* http://www.embeddedlinuxinterfacing.com/chapters/06/setSerialSignal.c
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this program; if not, write to the
* Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/* setSerialSignal
* setSerialSignal sets the DTR and RTS serial port control signals.
* This program queries the serial port status then sets or clears
* the DTR or RTS bits based on user supplied command line setting.
*
* setSerialSignal clears the HUPCL bit. With the HUPCL bit set,
* when you close the serial port, the Linux serial port driver
* will drop DTR (assertion level 1, negative RS-232 voltage). By
* clearing the HUPCL bit, the serial port driver leaves the
* assertion level of DTR alone when the port is closed.
*/

/*
gcc -o setSerialSignal setSerialSignal.c
*/


#include
#include
#include

/* we need a termios structure to clear the HUPCL bit */
struct termios tio;

int main(int argc, char *argv[])
{
int fd;
int status;

if (argc != 4)
{
printf("Usage: setSerialSignal port DTR RTS\n");
printf("Usage: setSerialSignal /dev/ttyS0|/dev/ttyS1 0|1 0|1\n");
exit( 1 );
}

if ((fd = open(argv[1],O_RDWR)) < 0)
{
printf("Couldn't open %s\n",argv[1]);
exit(1);
}
tcgetattr(fd, &tio); /* get the termio information */
tio.c_cflag &= ~HUPCL; /* clear the HUPCL bit */
tcsetattr(fd, TCSANOW, &tio); /* set the termio information */

ioctl(fd, TIOCMGET, &status); /* get the serial port status */

if ( argv[2][0] == '1' ) /* set the DTR line */
status &= ~TIOCM_DTR;
else
status |= TIOCM_DTR;

if ( argv[3][0] == '1' ) /* set the RTS line */
status &= ~TIOCM_RTS;
else
status |= TIOCM_RTS;

ioctl(fd, TIOCMSET, &status); /* set the serial port status */

close(fd); /* close the device file */
}



Посылаемые сигналы
Программу собираем и даём ей необходимые права на выполнение, а ниже - сигналы, посылаемые в порт программой, и их передача setSetialSignal:

Сигнал DTR
setSerialSignal /dev/ttyS0 1 0



Сброс сигнала DTR
setSerialSignal /dev/ttyS0 0 0


Сигнал RTS
setSerialSignal /dev/ttyS0 0 1


Сброс сигнала RTS
setSerialSignal /dev/ttyS0 1 1


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


Скрипт управления камерой
Дальше удобно воспользоваться простым скриптом, который написал Евгений Ромас aka BrainBug, но для случая с 400D я скрипт немного поправил, и теперь он выглядит так:

#!/bin/bash

for i in `seq $3`; do
{
setSerialSignal /dev/ttyUSB0 0 0 &&
sleep $1 && setSerialSignal /dev/ttyUSB0 0 1 &&
sleep 0.3 && setSerialSignal /dev/ttyUSB0 0 0 &&
sleep $2 && setSerialSignal /dev/ttyUSB0 1 1 && echo "One more image captured!" &&
sleep $4;

}
done

echo "Done!"

Параметры скрипта:
1: задержка поднятия зеркала
2: время выдержки в секундах
3: количество кадров
4: задержка между кадрами

Пример:
make_captures 4 60 30 2

Скрипт расчитан на работу с переходником USB-COM, и если у вас другой номер порта - естественно, скрипт нужно немного поправить.


Как это работает
Итак, шнурок спаян, переходник USB-COM включён в USB или сам шнурок вставлен в COM-порт, софт скомпилирован и наделён необходимыми правами. Изложение ориентировано на любую *nix-систему, в данном случае это Debian GNU/Linux.
  • Включаем камеру, переводим её в режим BULB, выставляем значение диафрагмы и ISO, а так же другие параметры при необходимости.
  • Вставляем jack в разъём фотокамеры, а противоположный конец в COM-порт или COM-USB переходник и далее в USB-порт компьютера.
  • Убеждаемся (в случае USB), что переходник опознан и работает: dmesg должен выдать что-то вроде:
usb 2-1: new full speed USB device using uhci_hcd and address 2
usb 2-1: configuration #1 chosen from 1 choice
drivers/usb/serial/usb-serial.c: USB Serial support registered for pl2303
pl2303 2-1:1.0: pl2303 converter detected
usb 2-1: pl2303 converter now attached to ttyUSB0
usbcore: registered new interface driver pl2303
drivers/usb/serial/pl2303.c: Prolific PL2303 USB to serial adaptor driver
  • Всё готово, теперь снимаем при помощи команды:
    make_capture 1 5 2 3
В этом примере будет сделано 2 кадра с экспозицией 5 секунд, задержка между кадрами 3 секунды, задержка поднятия зеркала 1 секунда.
Следует так же отметить, что таким способом можно отсекать выдержки от 1 секунды и больше по Exif. Физически передавать сигнал можно и быстрее, однако в Exif при этом пишутся неправильные данные. Точно так же, выдержки в данном случае отсекаются с точностью 1 секунда. Впрочем, для установки, которая должна отсекать длинные выдержки, это приемлемо.

Данное устройство с успехом применяется в оптическом эксперименте для снятия изображений с длинной выдержкой. Конкретно: применяется в оптико-цифровом корреляторе. Кроме того, может быть полезно астрономам-любителям для фотографирования астрономических объектов с длительной экспозицией.

Работает на камерах по крайней мере с firmware 1.0.4, имеются частные сообщения, что оригинальная схема должна работать с 400D. Выясняется в настоящее время.

Благодарности
Эта статья появилась в результате усилий многих людей, которых мне хотелось бы поблагодарить за помощь:
  • Michael A. Covington for his original article "Building a Cable Release and Serial-Port Cable for the Canon EOS 300D Digital Rebel".
  • Евгению Ромасу aka BrainBug за ссылку на оригинальную статью по управлению фотоаппаратом при помощи COM-порта, а так же за ценные мысли, высказанные в частных сообщениях.
  • Антону aka NTRNO за то, что выискал ключевые посты в недрах Астрофорума и выдал идеи по управлению камерой в Linux.
  • Всем участникам Астрофорума, так или иначе участвовавших в темах управления фотокамерой при помощи компьютера.
  • Алексею Ропяному, который экспериментально выяснил особенность фотокамеры, предложил изменить схему и использовать сигнал DTR для закрывания затвора.
  • Леониду Серёжкину за реализацию схемы в железе.
А так же огромная благодарность сотрудникам кафедры Физики твёрдого тела №25 МИФИ за поддержку и понимание.
Читать далее

Растровый графический редактор в Linux: Krita



7 коммент.
Если кто искал среди графических редакторов под Linux 16-битный цвет, работу в CMYK и графический интерфейс в одном флаконе - встречайте Krita, очень достойный редактор растровой графики.


Общие впечатления
Не только GiMP, nip2 и ImageMagick умеют обрабатывать растровые изображения в Линукс - есть ещё один замечательный графический редактор - это Krita. Здесь есть и 16-битный CMYK, и RGB, и L*a*b* и другие пространства цветов. И хотя редактор несколько сыроват, но довольно быстр и с приличной функциональностью.

Редактор больше походит на фотошоп лучших его дней, чем инопланетный GiMP.

Те же боковые панели, слои, кисти и набор инструментов рисования. Есть очень приличный собственный RAW-конвертор: не такой мощный, как dcraw, но вполне справляющийся со своей работой.


Цвета и разрядности
Реализованы средства работы в следующих цветовых пространствах:
  • RGB 8, 16 и 32-разрядные;
  • CMYK 8 и 16 разрядные;
  • L*a*b 16 разрядные;
  • YCbCr 8 и 16 разрядные;
и другие. В общем, разнообразие большое.



Перевод в другие цветовые пространства довольно быстрый, есть декомпозиция по цветовым слоям (как в GiMP).


Инструменты для рисования и фильтры
Пока маловато продвинутых инструментов для рисования. В текущем своём виде Krita больше подходит для обработки изображений, а не для рисования. Есть инструменты изменения перспективы, кадрирования, сложной деформации изображений - но при этом нет, например, аэрографа. В общем, Krita сейчас в активной разработке, и скорее всего, такие инструменты будут добавлены.

Немного фильтров, и есть подозрение, что некоторые из них не совсем корректно работают на цветных изображениях. Например, даже при небольших значениях параметров Нечёткой маски ("Unsharp mask") на изображении появились цветные артефакты. Некоторые фильтры явно не доделаны, и, кроме прочего, довольно медленные (а так же охочи до ресурсов).



Размытие по Гауссу, Нечёткая маска, простые методы выделения контуров, вейвлет-алгоритмы подавления шумов - в общем, довольно скромно, однако сомневаюсь, чтобы команда Krita на этом остановилась.


Итоги
Пока что Krita несколько сырая, но многие важные инструменты редактирования изображений есть, и весьма приличные. Есть работа с 16 и 32 разрядным цветом, перевод между цветовыми пространствами, небольшой набор алгоритмов обработки изображений.

Не стоит разводить религиозных войн на тему "Gimp vs Krita" - просто нужно использовать нужный инструмент для данной конкретной работы. Что-то есть в гимпе, что-то в крите. В любом случае, много места крита не займёт и кошелёк не опустошит.

Ссылки
Интересное сопоставление GiMP и Krita есть здесь, правда, на английском.
Читать далее

Настройка conky: Индикация состояния системы в Linux



41 коммент.
Весьма удобно следить за состоянием своей системы, не слишком отрываясь от других задач. Здорово бросить взгляд на информативную панельку - и сразу получить всю информацию о работе системы. Именно для этих целей есть системные мониторы, например conky. Настроить conky в Linux очень просто, о чём и будет этот пост.


Умолчания, стиль и необходимость настройки conky
По умолчанию, установленный conky выглядит жутковато. Это такой тонкий намёк на то, что программу нужно подгонять под себя и свои представления об удобстве. Дело это до некоторой степени кропотливое, но сделав это раз, потом много раз экономим время.

Настраивается conky через свой конфиг, который нужно скопировать из /usr/share/doc/conky/examples/ или из /usr/share/doc/conky/ в свой домашний каталог и переименовать в .conkyrc

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


Настраиваем conky под себя
В первой части конфиг довольно хорошо прокомментирован (во всяком случае, в Дебиане). Несколько наиболее важных параметров приведу ниже. Но прежде, чем вы начнёте запускать и пробовать, нужно кое-что учесть.

Во-первых, процесс это увлекательный и может отвлечь на долго (у меня это отняло вечер).

Во-вторых, процесс это исключительно интерактивный: меняете настройку - прибиваете текущий процесс conky - запускаете новый - смотрите - меняете настройку... и так далее. Лучше руководствоваться Первой Заповедью Радиотехники - "Не крути две ручки сразу". Иначе потом трудно ловить ошибки в конфиге и думать, что привело к нежелательным последствиям.

Итак, первая часть параметров отвечает за то, как будет выглядеть системный монитор. Здесь можно выбрать, в частности, шрифт и его параметры:
# Xft font when Xft is enabled
xftfont Bitstream Vera Sans Mono:size=9
Время обновления, если в этом нет насущной необходимости, лучше ставить 1-2 секунды, хотя можно и меньше (тогда возрастает потребление ресурсов):

# Update interval in seconds
update_interval 2.0
Расположение по углам экрана, что тоже хорошо прокомментировано и потому понятно:
# Text alignment, other possible values are commented
#alignment top_left
#alignment top_right
#alignment bottom_left
alignment bottom_right
Ещё подробностей можно прочитать в официальном FAQ conky или, пользуясь своими знаниями английского, догадаться :-)

Это всё довольно просто - главное развлечение начинается при настройке переменных, которые и будут отображаться. Лучше всего за основу взять какой-нибудь образцовый конфиг отсюда и брать понравившиеся элементы. В этой замечательной статье (на русском!) есть много интересных идей - только читать её нужно с конца (пропуская философские отвлечения).
Короче говоря: вторая часть конфига выглядит примерно так
${переменная параметры}
$элемент оформления
${color цветтекста}
${переменная параметры}
...

Назначение переменных в основном понятно из их названий:
  • exec выводит на экран текст, возвращаемый вызываемой программой;
  • execbar и execgraph визуализируют вывод исполняемой команды в виде диаграммы или графика (выводимое значение должно лежать в пределах 0..100);
  • execi и texeci запускают команду циклически с интервалом (texeci — с интервалом, заведомо большим времени исполнения). execibar и execigraph полностью аналогичны execbar и execgraph, но для циклического выполнения команд;
  • if_running, if_existing и if_mounted — выводят всё вплоть до endif, если выполняется процесс, существует файл и монтирована точка монтирования, соответственно;
  • else — выводить, если ложны все вышестоящие выражения.

Надо сказать, что применение execi особенно для скриптов - дело довольно затратное, и скрипты лучше отрабатывать таким образом не часто (раз в несколько секунд).

Ниже - несколько наиболее интересных решений для отображения данных в conky.

Показывать текущее время в формате часы:минуты:секунды
${time %k:%M:%S}

Отображение занимаемой приложениями памяти
$mem/$memmax
Вот тут у меня был лёгкий конфуз: часто значения отображаемой памяти были неприлично маленькими - это происходит оттого, что не учитывается память, занятая кэшем.

Вывести три самых охочих до процессора приложения:
${color #ddaa00} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
Несколько более сложным является отображение ACPI-данных о процессоре или питании системы. В этом нам помогут замечательные программы cat и cut. Вот как, например, вывести информацию о температуре на процессоре и включения троттлинга:

${color lightgrey} Core: $color ${
execi 2 cat /proc/acpi/thermal_zone/THRM/temperature | cut -c26-} - critical 115 C - ${color lightgrey} Throttling state: $color ${execi 2 cat /proc/acpi/processor/CPU1/throttling | grep active | cut -c26-}

Для удобства я подсветил цветом: красным - команды conky, серым - текст, который будет выведен, синим - системные команды, которые дают необходимые значения, зелёным - пути до данных ACPI (у вас они будут, скорее всего, другими).

Более навороченные трюки, типа отображения степени зарядки батареи ноутбука, описываются опять-таки здесь ближе к концу статьи. Напоследок - скриншот моего conky и текст его конфига.



И текст конфига .conkyrc который это обеспечивает (внимание, для отображения заряда батарей используется обращение к скрипту, которого у вас может не быть). Вот образец конфигурационного файла conky
# Conky advanced configuration
background yes

# Use Xft?
use_xft yes

# Xft font when Xft is enabled
xftfont Bitstream Vera Sans Mono:size=9

# Text alpha when using Xft
xftalpha 0.8

# Update interval in seconds
update_interval 2.0

# This is the number of times Conky will update before quitting.
# Set to zero to run forever.
total_run_times 0

# Create own window instead of using desktop (required in nautilus)
own_window no

# If own_window is yes, you may use type normal, desktop or override
own_window_type normal

# Use pseudo transparency with own_window?
own_window_transparent yes

# If own_window is yes, these window manager hints may be used
#own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager

# Use double buffering (reduces flicker, may not work for everyone)
double_buffer yes

# Minimum size of text area
minimum_size 300 5

# Draw shades?
draw_shades yes

# Draw outlines?
draw_outline no

# Draw borders around text
draw_borders no

# Draw borders around graphs
draw_graph_borders no

# Stippled borders?
stippled_borders 8

# border margins
border_margin 40

# border width
border_width 1

# Default colors and also border colors
default_color white
default_shade_color black
default_outline_color black

# Text alignment, other possible values are commented
#alignment top_left
#alignment top_right
#alignment bottom_left
alignment bottom_right
#alignment none

# Gap between borders of screen and text
# same thing as passing -x at command line
gap_x 12
gap_y 12

# Subtract file system buffers from used memory?
no_buffers yes

# set to yes if you want all text to be in uppercase
uppercase no

# number of cpu samples to average
# set to 1 to disable averaging
cpu_avg_samples 2

# number of net samples to average
# set to 1 to disable averaging
net_avg_samples 2

# Force UTF8? note that UTF8 support required XFT
override_utf8_locale no

# Add spaces to keep things from moving about? This only affects certain objects.
use_spacer no

# Maximum size of buffer for user text, i.e. below TEXT line.
#max_user_text 16384

# Allow for the creation of at least this number of port monitors (if 0 or not set, default is 16)
#min_port_monitors 16

# Allow each port monitor to track at least this many connections (if 0 or not set, default is 256)
#min_port_monitor_connections 256

# variable is given either in format $variable or in ${variable}. Latter
# allows characters right after the variable and must be used in network
# stuff because of an argument

# stuff after 'TEXT' will be formatted on screen

TEXT
$nodename - $sysname $kernel on $machine
$stippled_hr
${color lightgrey}Current time: $color ${time %k:%M:%S} - ${color lightgrey}Uptime:$color $uptime ${color lightgrey}- Load:$color $loadavg
${color lightgrey}CPU Usage:${color #cc2222} $cpu% ${cpubar}
${color blue}${cpugraph 0000ff 00ff00}
${color lightgrey}RAM Usage:$color $mem/$memmax - Swap Usage:$color $swap/$swapmax - $swapperc%
${color lightgrey}File systems: $color${fs_free /}/${fs_size /} ${fs_bar /}
${color lightgrey}Processes:$color $processes ${color grey}Running:$color $running_processes
$stippled_hr
${color}Name PID CPU% MEM%
${color #ddaa00} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${color}Mem usage
${color #ddaa00} ${top_mem name 1} ${top_mem pid 1} ${top_mem cpu 1} ${top_mem mem 1}
${color lightgrey} ${top_mem name 2} ${top_mem pid 2} ${top_mem cpu 2} ${top_mem mem 2}
${color lightgrey} ${top_mem name 3} ${top_mem pid 3} ${top_mem cpu 3} ${top_mem mem 3}
$stippled_hr
${color blue}System health ${color lightgrey}
${color lightgrey} Core: $color ${execi 2 cat /proc/acpi/thermal_zone/THRM/temperature | cut -c26-} - critical 115 C - ${color lightgrey} Throttling state: $color ${execi 2 cat /proc/acpi/processor/CPU1/throttling | grep active | cut -c26-}
${color lightgrey} Core clock: $color ${execi 2 cat /proc/cpuinfo | grep 'cpu MHz' | cut -c12-}
$stippled_hr
${color red}Energy subsystem:
${color lightgrey}Power: $color${execi 2 cat /proc/acpi/ac_adapter/AC0/state | cut -c26-} - ${color lightgrey}Charging state:$color ${execi 2 cat /proc/acpi/battery/BAT0/state | grep charging | cut -c26-}
${color lightgrey}Present rate :$color ${execi 2 cat /proc/acpi/battery/BAT0/state | grep 'present rate' | cut -c26-} - ${color lightgrey}Battery energy:${color green} ${execi 2 /usr/bin/myscript/kmvbatterystate}%
$color $stippled_hr
${color #ddaa00}Port(s)${alignr}#Connections
$color Inbound: ${tcp_portmon 1 32767 count} Outbound: ${tcp_portmon 32768 61000 count}${alignr}ALL: ${tcp_portmon 1 65535 count}
${color #ddaa00}Inbound Connection ${alignr} Local Service/Port$color
${tcp_portmon 1 32767 rhost 0} ${alignr} ${tcp_portmon 1 32767 lservice 0}
${tcp_portmon 1 32767 rhost 1} ${alignr} ${tcp_portmon 1 32767 lservice 1}
${tcp_portmon 1 32767 rhost 2} ${alignr} ${tcp_portmon 1 32767 lservice 2}
${color #ddaa00}Outbound Connection ${alignr} Remote Service/Port$color
${tcp_portmon 32768 61000 rhost 0} ${alignr} ${tcp_portmon 32768 61000 rservice 0}
${tcp_portmon 32768 61000 rhost 1} ${alignr} ${tcp_portmon 32768 61000 rservice 1}
${tcp_portmon 32768 61000 rhost 2} ${alignr} ${tcp_portmon 32768 61000 rservice 2}

Скрипт для отображения заряда батареи /usr/bin/myscript/kmvbatterystate

#!/bin/sh
MAX=`cat /proc/acpi/battery/BAT0/info | grep 'design capacity:' | cut -b26-30`
CUR=`cat /proc/acpi/battery/BAT0/state | grep remaining | cut -d':' -f2 | cut -d' ' -f7`
PRC=$(( $CUR * 100 / $MAX ))
echo $PRC
Ещё раз напомню, что у вас пути в /proc к информации об ACPI могут быть другими.

Ссылки
Есть очень хорошая статья про conky, и даже на русском, но там вначале довольно много философии. Полный список переменных есть тут.
Читать далее

Выводим Nokia N800 в Интернет через ноутбук с WiFi



7 коммент.
Задача: требуется вывести Nokia N800 (или аналогичное устройство) в Интернет через компьютер с беспроводной сетью. Предполагается, что интернет проводной или ADSL\модем.
Решение: требуется выполнить простые настройки на стороне настольной машины и N800.

На стороне машины, подключённой к Интернет
Нужно создать простую одноранговую ad-hoc сеть и дать статический IP-адрес сетевому беспроводному интерфейсу. После этого делаем NAT и всё работает. Для беспроводного интерфейса eth3 и сети с идентификатором virens команда выглядит так (от рута):
# iwconfig eth3 mode Ad-Hoc channel 1 essid virens
В /etc/network/interfaces пишем что-то вроде:

auto eth3
iface eth3 inet static
address 10.106.146.1
netmask 255.255.255.0
wireless-mode ad-hoc
wireless-channel 1
wireless-rate auto
wireless-essid virens

Теперь делаем NAT:
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING --out-interface eth1 -j MASQUERADE
При этом eth1 это интерфейс, который подключён к Интернету. Соединение не шифруется - нужно сначала проверить, что всё работает, а потом городить огород с шифрованием.


На стороне Nokia N800
Заходим в меню "Инструменты" --- "Панель управления", ищем там "Соединения", запускаем. Жмём в открывшемся окне на кнопку "Соединения", "Создать".

Даём соединению любое имя, отмечаем галку WLAN, жмём Дальше.

Здесь задаём essid - такой же, какой дали в iwconfig, в моём примере это virens. Шифрование отсутствует, тип сети - одноранговая ad-hoc. Далее.

Здесь нас поздравят, но радоваться рано - тыкаем по кнопке "Дополнительно". Откроется диалоговое окно, выбираем вкладку IP-адреса.

Здесь снимаем галку "Получать IP-адрес автоматически" и вводим адреса:
IP-адрес: 10.106.146.2
Маска подсети: 255.255.255.0
Маршрутизатор: 10.106.146.1

Адрес DNS должен быть от того интерфейса, который обеспечивает выход в сеть - иначе говоря, содержимое /etc/resolv.conf

Основной адрес DNS: 10.106.255.199
Это всё настройки моей сети, подключённой к Корвету. У вас они будут \ могут быть другими.
Весь процесс настройки таблетки показан на комбинированном скриншоте:



По большому счёту всё. Некоторые применяют фильтрацию по мак-адресу, но у меня после этого возник забавный глюк: Kate, KDVI, KPDF и Kile стартуют через 1.5-2 минуты, а потом так и иксы начинают делать при их перезапуске - до перезагрузки системы. Поэтому на мак-фильтрацию я плюнул, благо у меня в районе нет никого с WiFi в радиусе 500 метров в любую сторону :-)

Ссылки
Собственно, статья является сокращённым переводом этого замечательного поста заокеанского коллеги-блоггера, за что ему большое человеческое спасибо.
Читать далее

Сентябрьский UNIX-поинт 2007 года



14 коммент.
Версия документа в формате PDF здесь (700 Кб).

Участники:

+ virens
+ SAV


Предисловие
Да, именно так - поинт получился UNIX-поинтом, поскольку в этот раз представителей Линукс и БСД было как раз поровну. А именно двое - я, Михаил aka virens, и Андрей aka SAV. Так получилось, что многие новопеределкинцы и солнцевцы, которые приходят часто, в этот раз прийти не смогли, а я по уважительной причине (участие в конференции "Голография-Экспо" с докладом на тему диссертации) не смог проанонсировать нашу встречу пораньше. Так что сколь мы не ждали и не агитировали в метро разный народ к нам присоединиться, нам пришлось проводить поинт вдвоём. Ничего - нас мало, но мы в тельняшках!



Приготовления
Собственно, мы быстренько отоварились в ``Перекрёстке'', взяв две вязанки берёзовых дров, сосиски, ГСМ/НСМ, хлеба и со всем этим провиантом двинулись в сторону новопеределкинского леска - нашего традиционного места проведения подобных мероприятий. По ходу мы обсуждали насущные проблемы и с интересом выясняли научные интересы друг друга. Быстро выяснилось, что мы оба используем gnuplot, наперекор сопротивлению наших научных руководителей - ибо автоматизация позволяет заменять тупой механический труд в офисных программах изящными скриптами и кучей тут же построенных красивых графиков. За этими интересными разговорами мы подошли к месту проведения встречи. Однако там обнаружилось, что на выбранное нами место скоро нагрянет весьма солидная компания не очень трезвых граждан, о чём нам сообщил их представитель. Оценив наши силы и взвесив все последствия, мы решили передислоцироваться - и нашли весьма привлекательное место.


Рис: Прометей SAV за работой - готовится извлечь огонь при некоторой поддержке ассистента virens




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

Этот процесс сопровождался, естественно, обменом мнений и впечатлений. Я рассказывал Андрею про недавно вышедший PC-BSD 1.4, который мне очень понравился, он мне - про Убунту, на которую переходят его знакомые. Картина была просто идиллическая :-)



Рис: Небольшое усилие мысли - и костёр горит.


Так же я делился впечатлениями о работе в замечательной операционной системы Windows Vista - замечательна она прежде всего тем, что делает исключительную рекламу Linux и MacOS X. Особенно эффектно выглядит Убунта на одном винчестере с вистой - можно загружаться поочерёдно и сравнивать скорость и удобство работы. Желательно при этом для полноты эффекта в Убунте включить Compiz Fusion.

Говорили и о других системах, претендующих на десктопность. DesktopBSD и PC-BSD вполне подходят на эту роль, вот только написать графическую оболочку для установки софта. Я вспоминал своё первое знакомство с BeOS, о том, как был очарован Кноппиксом, с которого и начался мой долгий путь к Линукс.

Обсуждали МСВС, который есть Рэдхат какой-то бородатой версии, и о том, есть ли под неё вирусы. Хотя, как было верно отмечено, вирусы в никсах устанавливать сложно, особенно без патчей и документации... В каждой системе есть свои минусы. Особенно порадовало Андрея то, что в МСВС есть кнопки ``Есть'' и ``Отставить'' - ну а что, вполне себе военная локализация :-)

Сосиски жарились, и вот уже пошла вторая вязанка дров, а дело начало клониться к вечеру. За интересной беседой время летит быстро, и вот мы собираемся в обратный путь. Костёр затушен найденным рядом пивом, отчего в воздух поднялся дымок, тонкий ароматический букет которого высоко оценил SAV. Культурная программа мероприятия входит в эндшпиль, и мы идём по дороге обратно, глядя на очаровательный закат.



Напоследок
Друзья, коллеги и дорогие товарищи, которые не пришли - я не смогу вам передать, что и сколько вы пропустили. Ну, во-первых, совершенно изумительную осеннюю погоду: тепло, солнечно, лёгкий ветер, дым костра, жареные сосиски, хлебцы на огне...
А во-вторых, просто потрясающие по красоте закаты, фотографии которых лишь отчасти передают всю их прелесть. Общение с собратьями по никсам на этом фоне - просто удовольствие.

Рис: Красоты в Новопеределкино - закат.

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



Титры

Данный отчёт создан в системе LATEX, исходные тексты отчёта распространяются по лицензии GNU General Public License и совместимыми с ней.

При наборе и подготовке использовалась интегрированная оболочка Kile создания документов LATEX и текстовый процессор OpenOffice.org Writer. Изображения обрабатывались в GIMP и Cinepaint, обработка RAW-файлов производилась при помощи конвертера DCRAW. Использовались просмотрщики изображений GQView и Gwenview. Опубликовано на форумах с помощью броузера Mozilla Firefox. Возможно предоставление данного отчёта в любом открытом формате: PDF, ODT, TeX, HTML.

Ни одной проприетарной программы не было использовано.
Во время поинта ни один пользователь виндовс не пострадал.

Пользуясь случаем, автор этого текста, virens, выражает искреннюю признательность всем разработчикам дистрибутива Debian GNU/Linux, в котором и происходил набор и обработка материалов, посвящённых сентябрьскому UNIX-поинту.
Читать далее