Linux и компьютер - в помощь школьнику



13 коммент.
Продолжение темы и окончательное развенчание мифа о том, что компьютер вообще и с Linux в частности - лишь игровая приставка и рассадник болезненных зависимостей и ухода в виртуальный мир. На очереди - самый простой и быстрый способ развернуть для школьника систему, устойчивую к вирусам и снабжённой целым арсеналом обучающих программ. Встречаем Edubuntu!


Что умеет? Чем поможет?
Есть много дистрибутивов, и часть из нацелены именно на обучение - для школьников, студентов и "лиц, занимающихся самообразованием". Среди них можно выделить разновидность Ubuntu - а именно Edubuntu. Загрузившись с этого диска, увидим что-то вроде:



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

Загрузка происходит в автоматическом режиме, ничего писать не нужно. После некоторого ожидания перед вами появится рабочий стол GNOME с кучей разных приложений в меню наверху. Смотрим и удивляемся: всё это расположено на одном-единственном диске и может быть запущено прямо сейчас, даже без установки на жёсткий диск. Просто выбираем в меню программу и ждём, пока она загрузится.



Набор приложений обычен для обучающих дистрибутивов:
TuxMath - сверху летят арифметические примеры, и правильные ответы сбиваются Туксом.
TuxPaint - растровый графический редактор для детей.
TuxType - на падающей сверху экрана рыбке для Тукса написаны буквы, и правильное нажатие на клавиатуре делает пингвина сытым.
Kturtle - вариант языка Лого для обучения азам программирования.
Kstars - интерактивная карта звёзд.
Kig - интерактивная геометрия.
Kanagram - анаграммы слов, требуется ввести правильный вариант.
Kalzium - периодическая таблица элементов с подробными сведениями о каждом из них

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

Ели возникло желание поставить на винчестер этот замечательный дистрибутив - никаких проблем. Слева вверху есть кнопка Установить (Install). Для этого нужно несколько раз нажать на кнопку Далее и один раз на Готово.

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

Кроме обучающих приложений, вы получите офисный пакет OpenOffice, растровый графический редактор GiMP, броузер Firefox, почтовый клиент Thunderbird и другие приложения, являющиеся джентльменским набором в Линукс-системах.

Удачи в обучении!
Читать далее

Юмор: О формах обучения UNIX



15 коммент.
"Только познав UNIX, искатель может,
наконец,
открыть консоль своей души
 и ввести главный вопрос: whoami"...

Бхагаван Шри Константин


Мы разделяем учеников (садхак) на четыре класса:

1) Слабые ученики (мриду)
это те, кто любят графический интерфейс и контекстный хелп, они критикуют учителей, жадны, расположены к джаве, не читают Кнута, много едят, подвержены влиянию женщин, уклоняются от написания скриптов, трусливы, несамостоятельны, не пишут драйверы под собственное железо, предпочитая пользоваться готовыми, у них слабый характер, им недостает мужества. Гуру ведет таких искателей лишь по пути пользователя UNIX. Он ставит им Иксы и сносит Винду, чтобы искатель под его руководством изучал man, идя к понимаю того, как заставить работать мышь, клавиатуру, монитор и звук. Такой ученик может достичь просветления за 12 лет, если будет очень стараться. Требуется долгое время, нередко целые годы, чтобы понимание UNIX проникло в его слабый ум, и ещё дольше, чтобы оно дало плоды.


2) У среднего ученика (мадхьяма)
ум ровен, он способен выдерживать невзгоды, читает Кнута (но не делает упражнений), стремится работать лучше, любит писать скрипты, говорит деликатно, отвергает графический интерфейс, умерен во всех отношениях. Распознав эти качества, Гуру обучает его администрированию UNIX и шелл-программированию, приносящим освобождение.


3) У искателя высшего типа (адхиматра)
устойчивый ум, он способен к программированию на голом Си, мужественен, независим, благороден, милосерден, делает упражнения из Кнута, правдив, храбр, молод, почтителен, читает исходники ядра, искушен в написании скриптов, преклоняется перед своим учителем, понимает POSIX, твёрд в следовании Пути UNIX. Такой ученик может достичь просветления за шесть лет практики. Гуру обучает его программированию на Си и знакомит со священным текстом "Advanced Programming in UNIX Environment".


4) Полный великой мужественности и энтузиазма,

не пользующийся никаким другим софтом, кроме того, что написал сам, приятной наружности, отважный, знающий наизусть всего Стивенса и Таненбаума, усердный в занятиях, здравомыслящий, неунывающий, взломавший в 9 лет соседскую домашнюю сеть с помощью кнопочного телефона, размеренный в еде, предпочитающий пиво, владеющий своими чувствами, не знающий страха, сделавший все упражнения из Кнута, написавший собственный интерпретатор лиспа, чистый, искусный, щедрый, не признающий иного редактора кроме Emacs'а, с хорошим характером, с деликатной речью, преклоняющийся перед своим учителем - таков наивысший тип искателя (адхиматрама), он годен для всех форм UNIX. Он может достичь просветления за три года. Под руководством Гуру, он пишет собственный UNIX и называет его своим именем.


Взято отсюда.
Читать далее

Создание графиков в gnuplot: пример построения графика



23 коммент.
Согласно официальной документации, gnuplot имеет интерактивный и поточный режим. В интерактивном режиме вы вводите команду за командой, задавая параметры строительства графика. Для изучения возможностей или чтобы построить единственный график это, наверное, нужно, но обычно проще написать скрипт и скармливать его гнуплоту. Об этом далее.

Как в gnuplot построить график
Gnuplot использует скриптовой язык, который описывает строительство графика функции или рядов данных. В скрипте задаются параметры графика: шрифты осей, пределы по осям, расположение легенды. После этого скрипт передаётся по конвейеру гнуплоту, и он выдаст файл PostScript, который и содержит график.

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

Небольшой пример. Имеются ряды данных в обычном текстовом файле, нужно построить график. Вот исходные данные, файл RAWSTDmeasurementresult
1.6593991e+00 1.6523134e+00 1.6407763e+00
1.8986703e+00 1.8667678e+00 1.8595763e+00
2.6304331e+00 2.5340401e+00 2.4999678e+00
4.2843754e+00 4.0227936e+00 4.0423230e+00
7.6136102e+00 7.0438436e+00 7.1057056e+00

Нужно построить цветной график, с подписями на осях по-английски, шрифт Helvetica. Вот что у меня получилось:

#! /usr/bin/gnuplot -persist
set terminal postscript eps enhanced color solid
set output "~/matlab/programs/kmvdecoder/plots/1NoiseRAWSTDtoISOnoisecomparing.ps"
set xlabel "ISO number" font "Helvetica,18"
set bmargin 4
set ylabel "Pixels standard deviation" font "Helvetica,18"
set yrange [0:50]
set key top left
set xtics ("100" 0,"200" 1,"400" 2,"800" 3,"1600" 4)
set style line 1 lt 1 pt 9
set style line 2 lt 3 pt 7
set style line 3 lt 2 pt 5
plot "~/matlab/programs/kmvdecoder/plots/RAWSTDmeasurementresult" using 1 title "RAW data, Red channel" with linespoints linestyle 1,"~/matlab/programs/kmvdecoder/plots/RAWSTDmeasurementresult" using 2 title "RAW data, Green channel" with linespoints linestyle 3,"~/matlab/programs/kmvdecoder/plots/RAWSTDmeasurementresult" using 3 title "RAW data, Blue channel" with linespoints linestyle 2


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

Даже беглый взгляд на текст при некотором знании английского позволяет догадаться, какие строчки что примерно делают. Понятно, что команда set что-то устанавливает - а устанавливает она параметры построения графика. А команда plot как нетрудно догадаться, что-то строит. Так что всего-то навсего две команды и немного параметров к ним. Не так страшно, как выясняется - для настоящего джигитапользователя никс-систем это не должно быть проблемой.


Пример скрипта построения графика на gnuplot с пояснениями
Итак, разбираем скрипт.

#! /usr/bin/gnuplot -persist
Это обычный заголовок скриптов, только указывает он на gnuplot а не на, скажем, perl или bash. Если вы когда-нибудь видели скрипты, то сразу почувствуете себя как дома.


set terminal postscript eps enhanced color solid
Устанавливает постскрипт-вывод, расширенный - можно использовать греческие символы, цветной - графики будут цветными.


set output "~/matlab/programs/kmvdecoder/plots/1NoiseRAWSTDtoISOnoisecomparing.ps"
Это путь к будущему графику и имя графика. Можно сваливать их в текущий каталог или куда захотите.


set xlabel "ISO number" font "Helvetica,18"
Подпись по оси Х будет "ISO number", шрифтом Helvetica и размером 18 пунктов.


set bmargin 4
Устанавливаем нижнее поле равное 4 относительным единицам, чтобы не обрезалась подпись к оси Х (этот досадный косяк имеет место быть у меня, у вас его может и не быть).


set ylabel "Pixels standard deviation" font "Helvetica,18"
Подпись по оси Y будет "Pixels standard deviation", шрифтом догадайтесь каким :-)



set yrange [0:50]
Пределы по оси Y составляют от 0 до 50.



set key top left
Легенда (обозначение рядов данных) сверху слева.



set xtics ("100" 0,"200" 1,"400" 2,"800" 3,"1600" 4)
Отсчёты по оси Х будут 100, 200, 400 800 и 1600.


set style line 1 lt 1 pt 9
set style line 2 lt 3 pt 7
set style line 3 lt 2 pt 5
Здесь задаётся номер линии (чтобы на неё сослаться при построении конкретного ряда данных), тип линии и тип точки (квадратик, кружочек, ромбик...).


plot "~/matlab/programs/kmvdecoder/plots/RAWSTDmeasurementresult" using
1 title "RAW data, Red channel" with linespoints linestyle
1,
"~/matlab/programs/kmvdecoder/plots/RAWSTDmeasurementresult" using 2
title "RAW data, Green channel" with linespoints linestyle
3,
"~/matlab/programs/kmvdecoder/plots/RAWSTDmeasurementresult" using 3
title "RAW data, Blue channel" with linespoints linestyle 2
Вся эта конструкция предписывает строить график, который будет состоять из трёх линий (типа 1, 2 и 3). График строится по данным, которые лежат в одном текстовом файле тут: ~/matlab/programs/kmvdecoder/plots/RAWSTDmeasurementresult

Заголовок у каждой ветви графика разный, он задаётся после
title, а слово using означает, что в файле несколько рядов данных: для первой ветви - первый столбик, для второй ветви - второй столбик и так далее.

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

Следует отметить, что, вопреки распространённому заблуждению, gnuplot выдаёт графики с publication-ready качеством, которые без вопросов принимаются в любом зарубежном (и уж тем более местном) научном журнале. Например, NASA с помощью gnuplot создаёт карты погоды, а некоторые математические системы (типа MATLAB) просто используют куски кода gnuplot чтобы отрисовывать графики. Так что график, который выдаст гнуплот, в любом случае на порядок краше того, на что способен ексель или Openoffice.org Calc.

Для тренировки можно немного поиграть с параметрами и посмотреть, к чему это приводит. Смотреть удобнее всего в kghostview или любой другой программе, способной открыть PostScript-файлы.
Читать далее

Построение графиков в gnuplot: о легендах



7 коммент.
Легенда - это подпись к рядам данных на графике, которая позволяет понять, к каким данным относится одна зависимость, а к каким - другая. Gnuplot называет легенды словом key, а не legend, и это нужно учитывать.

Как убрать легенду с графика?
Есть два способа. Первый: задать значение
gnuplot> set nokey
или можно указать параметр notitle при построении графика, например так:
gnuplot> plot f(x) notitle, "file.dat" title "data"
После этого в графике легенда отображаться не будет.


Как изменить положение легенды на графике?
Обычно легенда отрисовывается в правом верхнем углу графика. Изменить это можно при помощи команд:
gnuplot> set key bottom left
gnuplot> set key bottom right
gnuplot> set key top left
gnuplot> set key top right

Здесь перечислены варианты, позволяющие отрисовывать легенду в левом нижнем, правом нижнем, левом верхнем и правом верхнем углу графика соответственно. Так же можно попросить gnuplot рисовать легенду за пределами графика - для этого следует добавить параметр outside, или под графиком - для этого есть параметр bottom. Например:

gnuplot> set key outside bottom

Так же можно задать положение легенды с помощью координат, хотя это менее гибкий способ. Если хотите сдвинуть легенду в положение (X,Y)=(100,100), даём команду:

gnuplot> set key 100,100

Координата (100,100) это позиция точки между текстом и линией/символом первой линии легенды. Координаты задаются по осям X и Y.


Как избавиться от отображения погрешностей в легенде?
Когда один из рядов данных имеет погрешности, они тоже отображаются в легенде (например, на рисунке ниже). Даже тогда, когда погрешности по оси Y, они отображаются в легенде горизонтально, и это не нужно.

Например, есть ряды данных:
#  X     Y     Y-погрешность
1.0 1.2 0.2
2.0 1.8 0.3
3.0 1.6 0.2

Строим график:

gnuplot> set xrange [0:4]
gnuplot> set yrange [0:3]
gnuplot> plot "test.dat" usi 1:2:3 title "data" w yerrorbars



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

gnuplot> set xrange [0:4]
gnuplot> set yrange [0:3]
gnuplot> plot "test.dat" usi 1:2:3 notitle w yerrorbars 1,\
"test.dat" usi 1:2 title "data" w points 1
Но работает хорошо.



Как изменить межстрочный интервал в легенде?

Это можно сделать при помощи команды set key spacing.
Например, чтобы сделать полуторный межстрочный интервал в легенде, нужно:
gnuplot> set key spacing 1.5
Это увеличит расстояние между строками в легенде.


Как сделать рамку вокруг легенды?
Чтобы вокруг легенды появилась рамка, следует использовать set key box.
Тип линии рамки будет тот же, что вокруг самого графика. Изменить это можно так:
gnuplot> set style line 1 lt 2 lw 3
gnuplot> set key box linestyle 1
Таким образом, вокруг легенды появится рамка.
Читать далее

Создание графиков в gnuplot: предисловие



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


Что есть gnuplot

Это профессиональная система построения графиков, своеобразный скриптовой язык, "программы" на котором транслируются в графики. Как и любая профессиональная вещь, гнуплот требует освоения -  потребуется определённое время и усилия, чтобы заставить его работать.

И не надо думать, что "я в екселе построю и будет не хуже и быстрее". Поверьте, в любой научной статье екселевские графики выглядят уродливо, быстро выдавая компьютерную безграмотность авторов. Мало того, что такие графики уродливо смотрятся, так ещё и строить их намного, намного дольше, тыкая по куче кнопок и пытаясь всё это затащить в (чаще всего) ворд. Особенно это относится к анализу данных, когда ещё не понятно, какие данные заслуживают внимания, а какие нет.

Один хороший график стоит тысячи слов в любой книге или публикации. Gnuplot умеет строить их очень быстро и качественно, выдавая прекрасные и удобные для восприятия графики по написанным скриптам.


Где gnuplot нужен и где без него можно обойтись
Несмотря на то, что это замечательная программа, в ряде случаев можно использовать и более простые средства. Например, в офисной деятельности он вам просто не нужен - что, в общем-то, не удивительно, если учесть, что gnuplot создавался прежде всего для обработки научных данных.

Gnuplot не стоит использовать, если нужно построить только один график и тут же о нём забыть. Вообще, если вам нужно построить меньше 3-4 графиков, не стоит выкатывать этот авианосец, чтобы просто немного порыбачить :-)

Вот где gnuplot незаменим, так это при масштабном анализе и обработке данных. Например, снято много экспериментальных данных и их нужно проанализировать и построить десятки графиков. Потом, быть может, их ещё придётся перестраивать, немного изменив оси или пределы по осям. Однажды написанные скрипты могут применяться снова и снова для построения графиков, если эксперимент проводится неоднократно.


Планируемые посты
В общих чертах дело обстоит так. Есть замечательный ресурс, который называется gnuplot tips (not so Frequently Asked Questions). Там собрана куча примеров по использованию gnuplot, что до некоторой степени заменяет чтение длиииииииииииинного и скучнейшего мануала по gnuplot (который к тому же весьма кучеряво организован). И потом, на примерах учиться намного проще, поэтому сей ресурс пользуется заслуженной славой и популярностью.

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

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

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


Ссылки
Часть текста навеяна замечательной статьёй Евгения Балдина Gnuplot. Графики заказывали? 
Сравнение различных программ построения графиков можно найти здесь.
Читать далее

Knoppix Linux для школьника



7 коммент.
В продолжение темы обучающих программ в Linux - "живой дистрибутив" Knoppix 4 kids. Это разновидность хорошо известного кноппикса, наполненного замечательными программами для школьников. Многие из них на английском, что даже и хорошо: заодно язык можно подучить. Этот дистрибутив даже не нужно устанавливать на компьютер: достаточно просто загрузиться с него и через несколько мгновений можно погрузиться в мир замечательных программ.

Живой диск
Итак, вставили диск, загрузились с него - он нас поприветствует, нажимаем Enter и наблюдаем за процессом загрузки. На диске много разных обучающих программ (TuxPaint, TuxType, TuxMath и другие) и игрушек (шахматы, шашки, аркады и другие). Да, есть и игрушки - какое обучение без игры?

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

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

Забавно, и примеры подчас не такие простые. Так что научиться быстро считать можно в прямом смысле слова "играючи".
Помимо игр и обучающих программ, есть на диске и вполне серьёзные пакеты, такие как GiMP, Povray, Blender, QCAD и InkScape. Вот, например, простейшие фигуры, которые можно создавать в Povray:

В общем, компьютер может быть полезен школьнику, и на основе этих (бесплатных и свободных) программ можно создавать специальные компьютеры для подрастающей ребятни, примеры чего уже есть. А так как Кноппикc основан на Дебиан, все перечисленные программы вы без труда найдёте в репозитории текущего стабильного релиза Debian GNU/Linux.
Читать далее

Настройка веб-камеры Logitech QuickCam Messenger в Linux



42 коммент.
Давно хотел приобрести подобное устройство (webcam), но было лень и не доходили руки. Пока мой давний друг не подарил мне сие чудо на день рожденья. О том, как с полпинка настроить веб камеру в Linux, будет говориться здесь.

Подготовка
Несколько предварительных замечаний - если вы не собирали сами, можно пропустить эту часть.
Нужно учесть, что видеокамера в Linux - такое же точно видеоустройство, как и TV-Tuner. Поэтому все замечания о настройке TV-Tuner в силе. Если у вас дистрибутивное ядро - там всё уже включено, а для любителей самосборных ядер нужно включить:
  • v4l и все его протоколы (само v4l монолитом, протоколы - модулями)
  • i2c и его протоколы (так же, фактически как при установке ТВ-тюнеров)
Если это в ядре есть, дальнейшее не составит проблем.


Установка
На коробке пишут: установка проста, как раз-два-три. В общем, у меня так и получилось:

1. Устанавливаем программное обеспечение.
Запускаем с балкона два прилагающихся диска и вместо этого ставим из репозитория:
sudo aptitude install gspca-source camorama
В каталоге /usr/src появится архив с исходниками gspca-source.tar.bz2 - распаковываем его прямо там. После этого переходим в каталог /usr/src/modules/gspca и там выполняем команду:
make
Модуль должен собраться без ошибок. Далее пишем:
sudo make install
Это установит наш модуль в каталог к другим модулям ядра. На всякий случай, можно после этого написать:
sudo depmod -a
Всё, время загрузить модуль ядра для вебкамеры:
sudo modprobe gspca
Теперь всё готово. Врубаем камеру и запускаем софт.


2. Подключаем камеру
Подключаем USBшный штекер камеры, она мигнёт зелёным светодиодом. На всякий случай смотрим выводы dmesg, появится что-то вроде:

usb 4-1: new full speed USB device using uhci_hcd and address 6
usb 4-1: configuration #1 chosen from 1 choice
/usr/src/modules/gspca/gspca_core.c: USB SPCA5XX camera found.(ZC3XX)
/usr/src/modules/gspca/gspca_core.c: [spca5xx_probe:3887] Camera type JPEG
/usr/src/modules/gspca/Vimicro/zc3xx.h: [zc3xx_config:515] Sensor ID:7
/usr/src/modules/gspca/Vimicro/zc3xx.h: [zc3xx_config:597] Find Sensor HV7131R(c)
/usr/src/modules/gspca/gspca_core.c: [spca5xx_getcapability:1165] maxw 640 maxh 480 minw 176 minh 144
usbcore: registered new interface driver gspca
/usr/src/modules/gspca/gspca_core.c: gspca driver 01.00.04 registered

Диагностические выводы показывают, что чип опознан. Теперь должен появиться файл устройства /dev/video0 - это и есть наша вебкамера. После этого запускаем программу по работе с камерами (её мы устанановили на предыдущем шаге):
$ camorama
Если всё было сделано верно, вы увидите видеоизображение в окошке программы и простой интерфейс управления изображением (яркость\контраст, насыщенность, фильтры и прочее). Вот что увидел я:


3. Общаемся
Свежеподключённое устройство теперь можно использовать в Wengophone для видеоконференций с друзьями и коллегами. Надо сказать, что процессор грузит обработка изображений с видеокамеры очень слабо, не более 4-5% (во всяком случае у меня на ноутбуке).

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


Итоги
Несмотря на то, что на коробке говорится только об Единственой На Планете Земля Операционной Системе, Logitech QuickCam Messenger отлично работает и в Линукс - и настраивается за те же три шага. Минус сотни мегабайт бесполезного проприетарного мусора.

В процессе настройки я пользовался вот этим замечательным и кратким руководством, так как у меня самосборное ядро. У тех, кто пользуется дистрибутивным, может быть полезно вот это руководство. Это руководство проверялось в следующих условиях: ядро 2.6.22, компилятор gcc 3.4, Debian GNU/Linux Etch v4.0, gspca-source 01.00.04-2.
Читать далее

Живой Линукс своими руками, Эпизод 2: Варианты загрузки



1 коммент.
Сделанный вами живой дистрибутив LiveUSB, о котором говорилось тут, может многое - можно указывать опции при загрузке и получить много интересного.

Возможность загрузчика Linux запускать ядро с определёнными параметрами - это, конечно, очень приятный плюс. Живой дистрибутив, созданный live-scripts, может получать опции при загрузке, для чего нужно нажать TAB в самом начале (когда видна таблица загрузчика). После этого через пробел вписывать параметры. Ниже о некоторых наиболее интересных я напишу.


Монтирование разделов
Есть случаи, когда монтировать разделы не надо и вообще не нужно иметь дела с дисками. Например, при проверке железа. По умолчанию созданный дистрибутив монтирует все файловые системы, до которых только доберётся. Поэтому при загрузке стоит указать соответствующие параметры:
  • nocd --- не загружать поддержку CDROM-устройств,
  • nohd --- не загружать поддержку винчестеров,
  • noauto --- не монтировать найденные файловые системы автоматически.

Копирование в оперативную память
Очень нужная функция, особенно если вы хотите создавать живой дистрибутив для спасательно-восстановительных целей. Например, после того, как образ будет скопирован в память, можно вынимать компакт-диск из привода - это позволит записывать данные на CD\DVD-R\RW, если такие утилиты включены в состав дистрибутива.
Для этого следует передать параметр при загрузке:
  • toram или copy2ram --- это скопирует дистрибутив полностью в оперативную память и выдвинет лоток с диском.
Естественно, объём оперативной памяти должен позволять это сделать. Далее работа с дистрибутивом ничем не отличается от обычной - только происходит быстрее, так как чтение с компакт-диска для этого не требуется.

Загрузочная флешка со Slax
Однажды мне потребовалось по-быстрому сделать флешку загрузочной и поставить туда LiveUSB дистрибутив SLAX. Кратко приведу здесь основные шаги.

Сначала скачиваем SLAX отсюда. Размечаем пространство на флешке и форматируем раздел под файловую систему FAT. Скачанные tar-архив распаковываем и копируем на флешку каталоги boot и slax.
Теперь делаем флешку загружаемой (у меня с загрузчиком lilo получилось только с FAT):

When Slax is unpacked to your device, it will create '/boot/' and '/slax/' directories there. Only one more step is needed to make Slax boot from your USB device or disk: you have to manually navigate to the newly created /boot/ directory and run bootinst.sh script (if you are in Linux) or bootinst.bat script (if you are in Windows).

The method mentioned above will simply install syslinux bootloader to your device's MBR (master boot record). Syslinux works only on FAT filesystem (which is widely used on most USB
flash keys, Cameras and MP3 players). If your device or disk is formated using a different filesystem (it is strongly recommended to use a native Linux filesystem like XFS), you will have to use 'liloinst.sh' script instead.
Currently, liloinst doesn't provide the same nice boot menu like syslinux, but this will be implemented soon.

После этого флешка становится загружаемой.
Читать далее

Обзор средств эмуляции: эмулятор Linux в Windows и наоборот



38 коммент.
Проблема: Как известно, не все программы под windows имеют свои аналоги в Linux, и часто эти программы бывают очень нужны. Требуется запуск прог Windows в Linux.
Решение: Есть класс программ, позволяющих запускать программы других операционных систем (не обязательно Windows) в Linux и других UNIX-системах. Это эмуляторы - такие программы, которые позволяют, грубо говоря, эмулировать Linux в Windows или наоборот. Среди них следует выделить наиболее часто применяемые.


1. WINE

opensource, GPL.
Wine Is Not a (CPU) Emulator
это прослойка, которая транслирует Win32API в POSIX API, то есть свободная реализация Windows API, которая позволяет запускать программы Windows, переводя вызовы программы под Windows в вызовы Linux. Это позволяет выполнять программы почти на полной скорости. Однако из-за того, что продукты Microsoft являются закрытыми, невозможно точно воспроизвести структуру их API, что приводит к разного рода сбоям и странностям при выполнении Windows-программ в WINE. Положительным моментом является то, что вам не нужно ставить Windows - только WINE и программу.
Плюсы: достаточно быстрая работа на реальных ресурсах машины, работа с реальными каталогами и файлами, нет необходимости в установке Windows.
Минусы: не все приложения поддерживаются и работают не всегда стабильно.
Ссылки:
http://www.winehq.org
http://gazette.linux.ru.net/team/a_kuprin.html
http://linuxshop.ru/linuxbegin/print633.html

1.1 CodeWavers CrossOver Office
closedsource.
Основанный на WINE коммерческий продукт, отличающийся лучшим исполнением особенно важных Windows приложений, таких как Adobe Photoshop, Microsoft Office, Autodesk AutoCAD и некоторых других. В общем, более стабильная, хотя и не самая свежая версия WINE, с графическим установщиком, который предоставит вам удобный и простой интерфейс для настройки.
Ссылки: http://www.codeweavers.com

1.2 TransGaming Technologies WineX / Cedega
proprietary, но есть возможность скачать исходники.
Так же основанный на WINE, но имеющий одно очень существенное, особенно для геймеров, усовершенствование - он содержит в себе улучшенную, вдобавок, полную (в плане совместимости) поддержку интерфейса Direct3D.
Ссылки: http://www.transgaming.com



2. DOSEMU
opensource, GPL.
dosemu - эмулятор DOS для запуска старых приложений, часто используется для бухгалтерских и прочих весьма специфичных нужд. Многие программы под DOS использовали его "особенности" и баги для работы, которых в dosemu может не оказаться.
Плюсы: быстрый запуск и работа устаревших, но нужных программ DOS (бухгалтерских, например), не требователен к ресурсам.
Минусы: нетривиальная установка, не все программы будут работать.
Ссылки: www.dosemu.org




3. Win4Lin
closedsource.
В файл, который для
Windows будет диском, ставится полноценная копия Windows и потом туда ставятся нужные приложения. Старая версия Win4Lin позволяла запускать Windows 95 с очень приличной скоростью и работать с приложениями для этих систем в виндовс, однако для этого требуются патчи на ядро. Патчи есть далеко не для всех версий ядер, и для определённых версий Win4Lin патчи были свои - нужно было угадывать.
Win4lin PRO не требует патча, позволяет запускать
Windows 2000/XP, но работает медленно и при этом подгружает служебные программы для "ускорения". Есть подозрения, что в этом эмуляторе используются наработки автора QEMU и особенно его ускоряющего модуля. Особенностью этого эмулятора является то, что есть возможность работать с реальными каталогами Linux.
Плюсы: возможность запуска
Windows.
Минусы: проблемы с накладыванием патчей на ядро (закрытых и возможно небезопасных), либо очень низкая скорость запуска
Windows, необходимость устанавливать Windows, невозможность эмуляции других ОС.
Ссылки:
http://www.win4lin.com/
http://www.netraverse.com/
http://sys.net.ru/docs/win4lin/Win4Lin6/
http://sys.net.ru/docs/win4lin/win4lin2debian



4. Виртуальные машины
Имитируют весь компьютер целиком вместе с жёстким диском (в виде файла), CD-ROM и USB (всё это связано с железом настоящего компьютера). Установленная туда ОС будет работать с реальным железом только через эмулированное. Виртуальные машины это как раз то, что обычно называют "эмулятор Linux" или "Эмулятор Windows" - с помощью виртуальных машин вы действительно сможете эмулировать Linux или Windows.

4.1 QEMU
opensource, GPL.
QEMU - виртуальная машина. В QEMU можно поставить почти любую ОС - любой
Windows (начиная с Windows95 до WindowsXP включительно), любой дистрибутив Linux или FreeBSD, BeOS/Haiku, ReactOS, Syllable и проч. Для быстрой работы нужен kqemu - ускоряющий модуль (так же под GPL), который имеется на сайте автора. Для этого потребуются заголовки ядра - в основном, чтобы собрать ускоряющий модуль kqemu, с которым замедление работы гостевой ОС составит до 1.5 раза (вместо 5-10 раз без модуля). Этот эмулятор использует наработки другого проекта, BOCHS. Так же позволяет создавать виртуальные машины собственной утилитой qemu-img. Работа с эмулятором (вызов, задание параметров) происходят в консольном режиме, но есть и графические оболочки.
Плюсы: хорошая скорость работы (с kqemu) гостевой ОС, стабильность, широкие возможности (эмуляция нескольких платформ, одновременный запуск множества систем, точность эмуляции), защищённая среда.
Минусы: несколько меньшая скорость эмуляции, чем VMware, консольный интерфейс (хотя есть графические оболочки типа Qemulator).
Ссылки:
форум о QEMU
www.qemu.org
Установка в Дебиан (на английском)


4.2 BOCHS
opensource, GPL.
BOCHS - виртуальная машина, точный эмулятор x86 платформы. Имеет свой BIOS, VGABIOS и прочее, что и используется QEMU. Очень точный, но очень медленный, применяется в основном разработчиками, где нужна уверенность, что это сбой в программе, а не эмулятора.
Плюсы: полная точная эмуляция x86, возможность установки в него практически любой ОС, лёгкая и простая установка в Debian.
Минусы: очень низкая скорость работы гостевой ОС.
Ссылки:
www.bochs.org


4.3 VMWare
closedsource.
VMWare - как и QEMU, виртуальная машина. Обладает более высокой скоростью эмуляции, поддерживает большее число ОС. Кроме того, установка VMWare на Дебиан нетривиальна, хотя имеются deb-пакеты в неофициальных репозиториях; требуется компиляция закрытых ускоряющих модулей с заголовками ядра. Есть сообщения, что у VMWare имеются проблемы с полноэкранным режимом. По требовательности к ресурсам мало отличается от QEMU, потребляя много оперативной памяти и процессорного времени. Возможности те же: безопасная среда для эмуляции гостевых ОС. Плюс графический интерфейс для создания виртуальных машин.
Плюсы: более быстрая эмуляция гостевых ОС, есть графический интерфейс для создания виртуальных машин.
Минусы: закрытые проприетарные модули потенциально могут вывести хост-ОС из стабильного состояния.
Ссылки:
http://www.vmware.com/
http://www.nixp.ru/news/6914
http://software.newsforge.com/print.pl?sid=05/04/27/186203
VmWare in Ubuntu


4.4 VirtualBox
opensource, GPL.
VirtualBox - так же виртуальная машина x86, основана на наработках QEMU. Отличается простым графическим интерфейсом и весьма высокой скоростью эмуляции (часто быстрее QEMU) и поддержкой периферии (USB, сеть, FireWire). Точность эмуляции ниже, чем у QEMU (невозможно запускать многие ОС, например BeOS/Haiku, MenuetOS, Syllable).
Есть guest additions, которые позволяют очень нужные вещи, а именно копи-паст с хост-системы в гостевую (clipboard sharing) и незаметный захват мыши.
Плюсы: простая установка и настройка, возможно расширение функционала плагинами, широкая поддержка периферии, в ряде случаев быстрее QEMU.
Минусы: при интенсивном использовании графический интерфейс мешает, точность эмуляции менее распространённых ОС не высока.
Ссылки:
http://www.virtualbox.org/
Работа и впечатления


4.4 KVM - Kernel-based Virtual Machine
opensource, GPL.
KVM - это решение полной виртуализации, хотя сам по себе это модуль ядра Linux. Для работы требуется модифицированная версия QEMU. Для работы требуется поддержка виртуализации процессором.
Плюсы: модуль ускорителя в ядре, простая установка.
Минусы: требуется поддержка виртуализации процессором.
Ссылки:
http://kvm.qumranet.com/kvmwiki
http://inf.by/linux/211/


5. Гипервизоры
opensource, GPL.
XEN - гипервизор, позволяет запускать гостевую ОС как процесс ядра в хост-системе. Отличается очень низкими накладными расходами (от 2 до 8% потери производительности гостевой ОС), защитой хост-ОС, а так же использованием технологий виртуализации современных процессоров. Однако для того, чтобы использовать его возможности, требуется патч на ядро не только хост-ОС, но и гостевой ОС, что делает запуск проприетарных систем внутри очень непростым делом.
Плюсы: потенциально наибольшая достижимая скорость работы гостевой ОС, ниже требования к ресурсам хост-ОС.
Минусы: весьма нетривиальная установка - требуется патч на ядро гостевой ОС.
Ссылки:
http://www.cl.cam.ac.uk/Research/SRG/netos/xen/
http://wiki.xensource.com/xenwiki/XenFaq
http://www.howtoforge.com/book/print/1169
http://xgu.ru/xen/manual/


6. Виртуализация на уровне операционной системы
opensource, GPL.
Open VZ это технология «лёгкой» виртуализации, позволяющая на одной аппаратной системе держать несколько различных версий Linux с одним ядром (поддерживающим ovz и содержащимся, как правило, на небольшом корне с ограниченным доступом по ssh и без других сервисов). В отличие от «тяжёлых» вариантов вроде Xen, Qemu или VMware, накладные расходы обычно составляют единицы процентов.
Ссылки:
Краткий доклад одного из авторов OpenVZ.
Читать далее

Русские буквы в EPS из gnuplot и LaTeX



23 коммент.
При использовании gnuplot и LaTeX под Linux могут возникнуть проблемы с переносом документов в альтернативные операционные системы. Но это всё решаемо.

Постановка проблемы
Первое: при построении графиков в gnuplot на экране и в dvi-файле они выглядят нормально, а при конвертации в PDF русские буквы на gnuplot-графике исчезают. Возникает вопрос: "как правильно в гнуплоте использовать кириллические шрифты?"

Второе: в документе LaTeX русские буквы отображаются нормально, однако при выделении и копировании текста из PDF-документа вставляется какой-то мусор. А нужно, чтобы из PDF, созданного LaTeX, можно было бы скопировать и вставить текст на русском.


Решение проблемы с русскими шрифтами в gnuplot
Возникает проблема, в частности, потому, что в PostScript файле часто пишется нечто вроде:

   /Helvetica findfont

что говорит принтеру (или просмотрщику) искать такой шрифт (Helvetica) в системе. Его может не оказаться, и поэтому вместо русских букв можно увидеть пустые места.

Решение сводится к тому, что gnuplot нужно заставить использовать Type1 шрифт, который гарантированно и корректно отображается и конвертируется в PostScript-файл. Это, например, может быть NimbusSanL, который ставится с OpenOffice.org. Этот шрифт имеет все варианты начертаний, так что хорошо будет смотреться в любых графиках.

Можно поэкспериментировать, поискав в системе все файлы с расширениями *.pfa и *.pfb и попробовать их в работе.

Теперь как подключить правильный кириллический шрифт к gnuplot. Для этого нужно все упоминания о шрифтах заменить на имя шрифта Type1. Например, пусть это будет шрифт NimbusSanL-Regu, который мы будем использовать везде в графике.

Для этого в заголовке следует добавить:
set terminal postscript 'NimbusSanL-Regu' eps enhanced solid
Если вы в подписях к осям используете шрифт другого размера, не забудьте добавить упоминание о новом шрифте и туда:
set xlabel "Величина экспозиции, отн.ед." font "NimbusSanL-Regu,18"
Всё, после этого ваши графики, созданные в гнуплоте, будут правильно переводиться в PDF и читаться на любых, даже самых альтернативных, системах.

Ссылки
На правильную идею натолкнула эта ссылка, хотя и на английском, а так же Анонимный комментарий здесь и вот этот текст.



Решение проблемы с копированием русского текста из LaTeX-документа
Это результат наших совместных поисков с уважаемым товарищем . Его вариант, прекрасно описанный тут, я на всякий случай продублирую сюда:
Подготовленные по шаблонам TeX документы выглядят очень красиво и профессионально с минимумом усилий на вёрстку за счёт разделения стиля и содержимого. Используется масса шрифтов и PDF-файл получается большим. Вопрос на $100. Единственный способ делать правильные PDF в TeX, который мне удалось освоить, заключается в использовании пакета cmap. А это автоматически означает что для создания PDF можно использовать только PDFLaTeX, но не dvitopdf. Это, в свою очередь, означает невозможность использования векторных рисунков в формате eps напрямую. Я нашел следующее решение...

В Debian cmap находится в пакете tetex-extra. Чтобы подключить cmap надо использовать в документе TeX заголовок следующего вида:

\RequirePackage{cmap}
\RequirePackage[cp1251]{inputenc}
\RequirePackage[TS1,T2A]{fontenc}
\RequirePackage[english,russian]{babel}

Причем именно в таком порядке: cmap первый. Иначе работать не будет!

Все. Теперь, если делать PDF с помощью PDFLaTeX, русский будет в порядке.

Это всё хорошо, но мне нужен драйвер dvipdf, который делает dvi-файл сначала - на этом работает критичный для меня способ перегона документов из LaTeX в ЗлоWord. А описанный выше способ с драйвером dvips не работает.

Мой вариант ответа на вопрос на $100 заключается в том, чтобы использовать шрифты из пакета scalable-cyrfonts-tex - Scalable Cyrillic fonts for TeX в Debian. Для этого они, естественно, были сразу же установлены. После этого в тело документа, сразу же после его начала, было вставлено вот это:
\begin{document}
\usefont{T2A}{ftm}{m}{sl}

После этого документ будет оформлен шрифтом Times New Roman, и это убивает сразу двух зайцев: русский текст можно копировать из документа в самых альтернативных системах, и документ оформлен именно Times, что имеет решающее значение в разного рода консервативных издательствах. В установленном пакете шрифтов много, о чём можно осведомиться в заботливо приложенном мейнтейнером пакета Readme-файле /usr/share/doc/scalable-cyrfonts-tex/README.Debian
This package makes the following font families available to TeX:

ftm -- Free Times
fhv -- Free Helvetian
fcr -- Free Courier
fag -- Free Avant Garde
fbk -- Free Bookman
fnc -- Free Schoollbook
fpl -- Free Paladin
fta -- Teams
fsj -- OldSlavic

For example you can change to the medium series slanted shape Teams font by the following command:

\usefont{T2A}{fta}{m}{sl}
Всё-таки порой читать мануалы к файлу весьма полезно для здоровья :-)
Кроме того, я использую dvipdfmx для перевода полученного dvi-файла в PDF. Полученный PDF отображается везде красиво и корректно, и из него можно выдрать текст. Оставшиеся aux и bbl-файлы требуется для перевода текста в ЗлоСистемы и ЗлоОфис при помощи команды:
latex2rtf -F -M12 -i russian -a file.aux -b file.bbl file.tex

Это ранее описывалось тут.
Читать далее

Настройка VPN в Linux с ZNet/Net-by-Net в Дебиан Линукс



16 коммент.
Не так давно пришлось заниматься настройкой VPN Linux в Debian GNU/Linux (хотя VPN в Ubuntu настраивается так же). Так как форум ZNet/Net-by-Net извне недоступен, выкладываю это здесь. Хотя настройка vpn под linux дело не хитрое, но был один секретный бубен, в который надо было стукнуть. Он таился в дебрях обсуждений на ixbt и был найден мной в процессе обдумывания сакраментального вопроса "что делать!?".

Поднимаем Интернет
Настройка VPN в Linux отдалённо напоминает настройку GPRS - копание в сторону ppp и связанных с ним утилит. Нужно установить пакеты pptp linux:
aptitude install pptp-linux
После этого создаём файл /etc/ppp/peers/Znet и правим его содержимое до следующего вида:
name мой_логин
remotename PPTP
pty "pptp vpn.znet --nolaunchpppd"
lock
noauth
mtu 1372
mru 1372
lcp-echo-failure 10
Заменяем мой_логин на нормальный логин и обращаем внимание на выделенные полужирным строки. Мне пришлось ради них ковыряться Аллах знает где на форумах iXBT - только после этого всё заработало (по умолчанию стоит 1378)!

Если оставить значение по умолчанию, будете получать такие матюги:

Jun 18 04:05:02 Resolventa pppd[3450]: sent [LCP ConfReq id=0x1 ]
Jun 18 04:05:02 Resolventa pptp[3456]: anon log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 7 'Outgoing-Call-Request'
Jun 18 04:05:02 Resolventa pptp[3456]: anon log[ctrlp_disp:pptp_ctrl.c:857]: Received Outgoing Call Reply.
Jun 18 04:05:02 Resolventa pptp[3456]: anon log[ctrlp_disp:pptp_ctrl.c:896]: Outgoing call established ta pppd[3450]: rcvd [LCP ConfReq id=0x1 ]
Jun 18 04:05:02 Resolventa pppd[3450]: sent [LCP ConfAck id=0x1 ]
Jun 18 04:05:02 Resolventa pppd[3450]: rcvd [LCP ConfRej id=0x1 ]
Jun 18 04:05:02 Resolventa pppd[3450]: sent [LCP ConfReq id=0x2 ]
Jun 18 04:05:02 Resolventa pppd[3450]: rcvd [LCP ConfAck id=0x2 ]
Jun 18 04:05:02 Resolventa pppd[3450]: sent [LCP EchoReq id=0x0 magic=0x93be06c8]
Jun 18 04:05:02 Resolventa pppd[3450]: rcvd [LCP EchoReq id=0x0 magic=0x2244c55a]
Jun 18 04:05:02 Resolventa pppd[3450]: sent [LCP EchoRep id=0x0 magic=0x93be06c8]
Jun 18 04:05:02 Resolventa pppd[3450]: rcvd [CHAP Challenge id=0xa4 , name = "vpn1"]
Jun 18 04:05:02 Resolventa pppd[3450]: sent [CHAP Response id=0xa4 <0a52e6cd7d20afcd0c1861afbffae990>, name = "MZR9Kexm"]
Jun 18 04:05:02 Resolventa pppd[3450]: rcvd [LCP EchoRep id=0x0 magic=0x2244c55a]
Jun 18 04:05:02 Resolventa pppd[3450]: rcvd [CHAP Success id=0xa4 ""]
Jun 18 04:05:02 Resolventa pppd[3450]: CHAP authentication succeeded
Jun 18 04:05:02 Resolventa pppd[3450]: CHAP authentication succeeded
Jun 18 04:05:02 Resolventa pppd[3450]: sent [IPCP ConfReq id=0x1 ]
Jun 18 04:05:02 Resolventa pppd[3450]: rcvd [IPCP ConfReq id=0x1 ]
Jun 18 04:05:02 Resolventa pppd[3450]: sent [IPCP ConfAck id=0x1 ]
Jun 18 04:05:02 Resolventa pppd[3450]: rcvd [IPCP ConfRej id=0x1 ]
Jun 18 04:05:02 Resolventa pppd[3450]: sent [IPCP ConfReq id=0x2 ]
Jun 18 04:05:02 Resolventa pppd[3450]: rcvd [IPCP ConfNak id=0x2 ]
Jun 18 04:05:02 Resolventa pppd[3450]: sent [IPCP ConfReq id=0x3 ]
Jun 18 04:05:02 Resolventa pppd[3450]: rcvd [IPCP ConfAck id=0x3 ]
Jun 18 04:05:02 Resolventa pppd[3450]: Cannot determine ethernet address for proxy ARP
Jun 18 04:05:02 Resolventa pppd[3450]: local IP address 10.10.252.102
Jun 18 04:05:02 Resolventa pppd[3450]: remote IP address 10.10.0.20
Jun 18 04:05:02 Resolventa pppd[3450]: Script /etc/ppp/ip-up started (pid 3457)
Jun 18 04:05:02 Resolventa pppd[3450]: Script /etc/ppp/ip-up finished (pid 3457), status = 0x0

Далее редактируете файл /etc/ppp/chap-secrets, вписав в него следущие строки:
# Secrets for authentication using CHAP
# client server secret IP addresses

мой_логин мой_пароль
Разделитель - пробел. Настройка сетевого интерфейса - присваиваем своей сетевой карте выданный провайдером IP-адрес в файле /etc/network/interfaces:
# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.ХХХ.ХХХ
netmask 255.255.255.0
gateway 192.168.ХХХ.1

Вместо ХХХ подставляем числа из договора. Теперь прописываем адреса DNS-серверов в /etc/resolv.conf (если его нет - создаём от рута touch /etc/resolv.conf):
nameserver 192.168.0.8
nameserver 192.168.0.9
Это ещё не всё: нужно прописать роутинги. Вот она, тайна Золотого Ключика:
ip r add 192.168.0.0/16 via 192.168.XX.1
ip r del default
ip r add default dev ppp0
Вместо ХХ подставить число, которое вы найдёте в договоре. После этого таблица роутинга должна выглядеть примерно так:

# route

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.10.0.20 * 255.255.255.255 UH 0 0 0 ppp0
192.168.157.0 * 255.255.255.0 U 0 0 0 eth0
192.168.0.0 gw-1-157.znet 255.255.0.0 UG 0 0 0 eth0
default * 0.0.0.0 U 0 0 0 ppp0
default gw-1-157.znet 0.0.0.0 UG 0 0 0 eth0

Готово - соединяемся с провайдером:
pppd call Znet
После этого всё должно работать.

Ссылки:

К сожалению, внутренний форум Znet
/Net-by-Net не доступен извне, но раздел Linux там есть и местные аксакалы отвечают быстро и очень грамотно. За что им огромное спасибо.
Читать далее

Обживая Nokia N800...



38 коммент.
Приложений по умолчанию в N800 очень мало: броузер, xpdf, установщик приложений и сильно урезанный просмотрщик видео\аудио без поддержки mp3. Конечно, этого мало - это восполняется портированными приложениями из многочисленных репозиториев. После некоторых усилий, можно выстроить весьма навороченную систему.


Набор консольного джигита
Самурай без коня и меча - не самурай вообще
(с) Хагакуре
Какой же это Дебиан, если в нём нет консоли? Естественно, сразу идём сюда и ставим xterm и gainroot. После этого нужно установить пароль для рута - он обязательно потребуется. Запускаем xterm и пишем:
sudo gainroot
После чего:
passwd
Главное этот пароль не забыть - а то потом будут проблемы с подключением по ssh.

Сразу скажу: чем больше репозиториев вы добавите, тем меньше проблем с зависимостями и больше софта можно поставить. Просто замечательная коллекция репозиториев есть здесь.



Работаем дальше - доводим до ума свежую таблетку нормальными консольными возможностями. Это очень полезно, если есть какая-нибудь упрямая программа, не желающая освобождать ресурсы. Команды ps и kill вам быстро помогут с ней расправиться. Ну и копировать что-то часто проще командой, а не тырканьем в не самый удобный файловый менеджер. В общем, всё как всегда - перед вами натуральный Дебиан, в чём он быстро сознаётся:
BusyBox v1.1.3 (Debian 3:1.1.3-3.osso17)
Built-in shell (ash) Enter 'help' for a list of built-in commands.
и на команды отзывается (не забываем, что нажатие на экранную TAB работает ожидаемо - автодополнение в силе):
# uname -a
Linux Nokia-N800-10 2.6.18-omap1 #2 Wed Mar 7 15:36:09 EET 2007 armv6l unknown
Отлично, но этого мало. Лично я сразу же поставил себе Midnight Commander, к которому так привык. Выглядит на мелком экране с клавиатурой немного коряво, зато работает прекрасно и душу греет:


Работать в консоли с экранной клавиатуры - дело не самое лучшее, и кроме того, хочется управлять планшеткой удалённо. Ставим SSH - да, не только клиент, но и сервер. Это пакеты openssh-client и openssh-server.

У меня был странный глюк: пакет openssh-server при установке поставился не до конца, судя по прогресс-бару. То есть он дошёл до конца и замер. Никаких изменений в течении минут 10 - и я решил перезагрузить таблетку. Всё загрузилось нормально и ssh-server работает.
Если беспроводная сеть у вас настроена и есть другая машина с WiFi - сейчас мы на планшетку зайдём. Пароль рута ещё не забыли на N800, который ставили? Тогда подключаемся:

# ssh root@10.106.146.2
root@10.106.146.2's password:
Warning: No xauth data; using fake authentication data for X11 forwarding.


BusyBox v1.1.3 (Debian 3:1.1.3-3.osso17) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

Nokia-N800-10:~#

Вот вы и рут на таблетке. Можно запустить MC (если он установлен) и прогуляться по каталогам. Их содержимое несколько отличается от десктопного варианта: сильно сокращён /proc, пустой /boot и так далее.

Кстати, обратный вариант тоже действует - можно с планшетки управлять своим десктопом. Жаль, нет FUSE в том ядре, а то подмонтировать кусок файловой системы с десктопа через SSHFS было бы неплохо.


Работа с документами
Портированных приложений хватит для работы с текстом.

Создание и редактирование текстов
Дальше можно поставить ViM в качестве основного текстового редактора. Emacs портированным пока не видел.

docreader
Можно поставить antiword отсюда и docreader из репозитория maemo. Докридер без антиворда работать не будет, но его в зависимостях почему-то не тянет. Пришлось искать и скачивать отдельно.
Интерфейс docreader минималистичен: открыть и сохранить вордовый документ. Но с задачей своей справляется - текст документа просмотреть можно.

abiword и gnumeric
Сладкая парочка из GNOME Office портирована сюда и работает хорошо. GNUmeric - лучше, abiword - хуже. Абиворд пока страдает падучей болезнью, но работает намного лучше докридера - открывает тексты с форматированием, рисунками и даже исправлениями.
С кириллицей дружит, главное, чтобы не было в документе экзотических шрифтов, чем любят развлекаться пользователи альтернативных ОС. О стабильности абиворда свидетельствует тот факт, что при попытке сделать скриншот пытается сожрать все ресурсы и в конце концов его приходится вырубать.

Это его единственный скриншот, который мне удалось сделать с нескольких попыток. Потом пришлось орудовать рутовым kill для того, чтобы выдрать его из памяти.

GNUmeric оказался более покладист и не сопротивлялся моим попыткам его сфотографировать. Открыл кусок прайс-листа, русские шрифты отображает нормально.

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


Чтение книг
Здесь всё довольно просто - есть Evince для чтения PDF и DjVu, есть FBreader для чтения книжек и SDict в качестве очень приличного словаря.

PDF и DjVu
Шатный xpdf - приложение, конечно, лаконичное, но уж больно медленное. Поэтому сразу ставим нормальный Evince. Здесь советуют сразу поставить:
Список пакетов для установки:
Evince 0.9, для DjVu: libdjvulibre,
Сначала стоит поставить библиотеку для DjVU, а потом сам Evince. После этого можно читать разные pdf-ки и djvu-шки в полноэкранном режиме.

Сначала может притормаживать и текст может быть весь в пикселях - я так понял, используется двухпроходное масштабирование. После этого текст и картинки будут чёткие и удобные для чтения. Могут сильно притормаживать при открытии PDF-документы, созданные в LaTeX. Но зато потом они будут смотреться изумительно.
Вот это то, что мне действительно нравится в N800 - можно комфортно и нормально читать PDF и DjVu документы и книги. И этого так не хватало в пальме.

SDict

Вот здесь вышел по началу небольшой тупик. На самом деле, нужно ставить просмотрщик для словарей, а не сам StarDict. То ли я не понял, то ли ссылки вели не туда... В общем, ищем Sdict Viewer и ставим его.
После этого заходим на http://sdict.ru/ и скачиваем нужные словари. Закидываем их в один из каталогов:
/media/mmc1/stardict/dic/
/media/mmc2/stardict/dic/
~/stardict/dic/
Лучше кидать на карточку, так как словари очень большие (десятки мегабайт).
Если всё было сделано правильно, получаем очень хорошие словари в кармане:

Словарные статьи написаны очень прилично, есть транскрипция и словарные примеры.

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




Мультимедиа
Здесь всё ещё проще: приложений немного, и почти все они хорошо знакомы. В качестве видеоплеера использую свой любимый с десктопа Mplayer.

Музыку играет Kagu Media Player. У него весьма замороченный интерфейс, хотя после пятой рюмкипривычки можно понять, как в этом лабиринте, скажем, переместиться в середину трека. К попытке снять скриншот он отнёсся крайне негативно.

Изображения просматривает небольшая, но грамотно сделанная утилита Mirage. Простой интерфейс и приятное исполнение.

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

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


Специализированный софт - математика

Конечно, получить Линукс в кармане и не воспользоваться всей мощью его репозитория - не по мне. Чтобы иметь возможность в пути что-то поправить или посчитать, поставил среду численных расчётов GNU/Octave (аналог MATLAB). Ну что, Фурье-преобразование оно считает, матрицы обрабатывает - можно работать. Правда, обсчитывать изображения, с которыми я работаю, на планшетке слишком жестоко - 3800х2500 она может и не потянуть.


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

Кроме того, я поставил утилиту для построения графиков GNUplot, которой пользуюсь для построения графиков, а так же maemoTeX, который есть порт LaTeX под n770/n800.

Так же был поставлен калькулятор, имитирующий HP 42C. Довольно мощная вещь, осталось только с его интерфейсом разобраться. Пока роль калькулятора выполняет Octave.

Так что по части инженерных приложений в репозиториях полный порядок.

Резюме
Cофта после недолгого подбора вполне достаточно, и его возможностей хватает, чтобы перекрыть всё, что я делал раньше на Пальме. Пальм, естественно, никуда не делся и активно используется - PIM-приложения на n800 откровенно слабые. Но в остальном софта много, и самое главное - не надо рыться в гугле в поисках кряков и взломов. Всё есть в репозитории, готовое для употребления :-)
Читать далее

Простое шифрование WiFi соединения для Nokia N800



2 коммент.
Незащищённое беспроводное соедение по WiFi да ещё с выходом в Интернет допустимо только в глухой тайге. Хотя бы минимальное шифрование должно присутствовать - и N800 его поддерживает. Настраивается оно очень просто.

Да, WEP-алгоритм известен своей ненадёжностью и подверженностью взлому. И тем не менее, лучше что-то, чем совсем ничего.


На стороне десктопа с WiFi
Нужно создать ключ шифрования, лучше это сделать так, как советуют тут:
dd if=/dev/random bs=1 count=5 2>/dev/null | xxd -ps
Получаем что-то вроде
c276246d65
Теперь это наш WEP-ключ. Осталось сообщить его карте
iwconfig eth3 key c276246d65 mode Ad-Hoc channel 1 essid virens
Где essid нужно поправить под свой случай. Чтобы не набирать его каждый раз, полезно сделать скрипт типа:
#! /bin/sh
iwconfig eth3 key
c276246d65 mode Ad-Hoc channel 1 essid virens
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING --out-interface eth1 -j MASQUERADE

Остальное из поста про простую сеть в силе.

Так же можно добавить ключ в /etc/network/interfaces:

# File: /etc/network/interfaces
#

# The primary network interface
auto eth1
iface eth1 inet static
address 192.168.1.100
netmask 255.255.255.0
wireless-key c276246d65
wireless-essid virens
Перезапускаем сетевую подсистему:
# /etc/init.d/networking restart
И видим при запросе sudo iwconfig:

eth3      IEEE 802.11g  ESSID:"virens"
          Mode:Ad-Hoc  Frequency:2.412 GHz  Cell: 02:15:00:52:15:B7
          Bit Rate:54 Mb/s   Tx-Power=20 dBm   Sensitivity=8/0
          Retry limit:7   RTS thr:off   Fragment thr:off
          Encryption key:c276-246d-65   Security mode:open
          Power Management:off
          Link Quality=67/100  Signal level=-60 dBm  Noise level=-85 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0



На стороне N800
В настройка соединения указываем "Метод безопасности" WEP и вводим полученный на десктопе ключ. Всё, после этого подключение производится по защищённому и зашифрованному соединению.

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

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



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 в целом. Эта статья также многое поможет прояснить.
Читать далее