- PVSM.RU - https://www.pvsm.ru -

SATA-контроллер, смазанная фотография и конкурс

SATA контроллер, смазанная фотография и конкурсНесколько дней назад, на форуме KolibriOS [1] зарегистрировался англоязычный пользователь с ником mdickie [2], и пожаловался, что в его ноутбуке Dell Latitude C640 не работает мышь: board.kolibrios.org/viewtopic.php?f=4&t=2389 [3]. Так как недавно у нас появилась поддержка USB [4] (в частности, USB-мышей), то наш основатель Mario_Z [5] логично предположил, что mdickie использует какую-то старую версию, и посоветовал ему скачать последнюю ночную сборку и проверить на ней [6].

Предположение Mario_Z [5] оказалось верным — в ночной сборке мышь заработала, но сломалось что-то другое [7]:

It works with the latest build,
Thanks
EDIT: It freezes slower.

К сожалению, пользователь был немногословен (либо английский — не его родной язык [8]), поэтому некоторое время мы выясняли, что же именно не так [9], задавая наводящие вопросы, пока картина не прояснилась:

I mean it needs a little more time to freeze the mouse.
Oh yes, the whole system freezes. The Keyboard and the clock aren't working.

Здесь уже я догадался [10], что причиной зависания, скорее всего, является драйвер SATA IDE, который в настоящий момент разрабатывает Mario_Z [5]. На данный момент, в KolibriOS есть родной драйвер только для контроллера PATA, а поддержка контроллера SATA в режиме IDE осуществляется только через BIOS, что вносит 2 ограничения:

  1. Доступ к дискам через «костыль» BIOS очень медленный, поэтому фильм с такого диска в KolibriOS не посмотришь — будет идти рывками. Скорость копирования файлов тоже неприемлемая — можно пообедать, пока копируется большой файл.
  2. Некоторые диски без драйвера вообще никак не видны в системе.

Ввиду этого, на сегодняшний момент у нас пишутся 2 драйвера SATA (параллельно):

Оба драйвера имеют одну неприятную особенность — наглухо подвешивать систему в случае любой нештатной ситуации — и тогда требуются логи, чтобы увидеть конфигурацию дисков и попытаться узнать причину зависания. Именно это и произошло у mdickie, и поэтому я попросил его приложить логи. Естественно, при зависании всей системы скопировать логи прямо из KolibriOS в текстовый файл не получится, и в таких случаях мы просим сфотографировать лог с экрана монитора на смартфон или фотоаппарат, и выложить фото на нашем форуме. И здесь мы переходим ко второй части статьи.

Для записи лога в текстовый файл (наподобие dmesg [13] в Linux) у нас есть утилита BOARD, которая также выводит последние несколько строк лога в своём окне. При зависании системы, видимой части лога обычно недостаточно, а скопировать весь файл не представляется возможным, как я уже говорил выше. Остаётся только дублировать весь лог на экран, а потом его фотографировать, и для таких целей у нас на стартовом экране существует опция:

SATA контроллер, смазанная фотография и конкурс

Сам функционал для дублирования лога на экран написала CleverMouse [14], но я могу гордиться тем, что моих знаний ассемблера хватило, чтобы оформить этот функционал как опцию для стартового экрана* (до этого, требовалась ручная перекомпиляция ядра KolibriOS, чтобы включить или отключить этот функционал, что зачастую слишком сложно для новых пользователей проекта).

* Мы часто неофициально называем этот экран "синим экраном" по аналогии с Windows, но, естественно, никакой связи с BSOD ("Blue Screen of Death [15]" /"Синий экран смерти [16]") наш стартовый экран не имеет (кроме цвета). Даже скорее, он является полной противоположностью синего экрана Windows — там синий экран возвещает о «конце жизни», а у нас — наоборот, о начале :-)

Итак, я попросил mdickie включить опцию C на «синем экране» и приложить получившийся лог [10]. Что он и сделал, только вместо фотографии, он переписал текст вручную [17]:

========= tmpdisk 0.45 ========
trying to add disk
10% of free RAM will be used, new Disksize: 50MB
operation completed successfully
K: Attach Interrupt 11 Handler 80BA2F04

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

Так как я сам уже сталкивался с подобной проблемой неоднократно, то нашёл решение — отключение запуска всех программ, кроме ядра, гарантированно не затирает лог на экране. В KolibriOS есть свой аналог автозагрузки Windows, или /etc/init.d Linux: после загрузки ядра, оно запускает программу LAUNCHER, которая читает из файла AUTORUN.DAT [18] по одной строке, и запускает прописанные там программы (с опциональными параметрами). Причём, в KolibriOS и сам рабочий стол, и иконки, и фоновая картинка — запускаются именно из AUTORUN.DAT [18], а не являются частью ядра. Таким образом, всё что было нужно, это добавить на стартовом экране возможность отключить вызов LAUNCHER после загрузки ядра. Воодушевлённый тем, что я смог добавить опцию дублирования лога на экран, я добавил и опцию отключения LAUNCHER (под буквой D на фото синего экрана выше).

Поэтому я попросил юзера одновременно включить дублирование лога на экран и отключить загрузку LAUNCHER [19]:

Unfortunately it's only part of the log, so it won't help us.

Please turn on option C and simultaneously turn off option D on blue screen. This will boot KolibriOS without starting the desktop at all, but only display the debug log. Please try to make a photo this time. Don't worry about small font — we should be able to understand it. The mouse should still move, so first of all, try to move it for a longer time and see that it doesn't get stuck (let us know if it still does).

Эта просьба наконец-то увенчалась успехом — нам была представлена фотография полного лога [20] (ниже я привожу её в уменьшенном размере):

SATA контроллер, смазанная фотография и конкурс

Пользователь меня предупреждал, что фотография выглядит плохо, но я самонадеянно написал ему (перевод с английского выше): "Не бойся насчёт мелкого шрифта — мы сможем его разобрать". Взглянув на фото, я понял, что недооценил умение пользователя делать плохие фото (либо переоценил свои возможности их разбирать) — фотография была конкретно «смазана», так что разобрать что-то было практически невозможно. Я советовал пользователю, как попытаться решить проблему зависания [21] (и получить текстовый лог, вместо смазанного фото), но ему это, видимо, надоело, и он решил подождать, пока KolibriOS станет более стабильной [22].

Итак, рассчитывать на получение ещё какой-либо информации от этого пользователя не приходилось, а проблему зависания решить очень желательно (но для этого нужно получить чёткую фотографию лога). И тут я вспомнил про программы восстановления смазанных изображений (одну из них — SmartDeblur [23] — автор даже [24] рекламировал [25] несколько раз на Хабре).

Я скачал для пробы 2 версии SmartDeblur (последнюю бесплатную и последнюю платную с trial-version), а также найденную в интернете программу Blurity, открыто считающую себя лучше SmartDeblur в разделе сравнения [26]:

Поигравшись с ручными настройками и воспользовавшись методом автоматического улучшения там, где он был, я так и не смог получить нормального результата. Самое лучшее фото, что у меня вышло, было получено с помощью ручной подстройки в SmartDeblur v.2.2 со следующими параметрами:

SATA контроллер, смазанная фотография и конкурс

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

SATA контроллер, смазанная фотография и конкурс

Поэтому я решил объявить конкурс — любой читатель Хабра может попытаться улучшить оригинальную смазанную фотографию [30] с помощью любой программы восстановления смазанных изображений (необязательно пользоваться одной из тех, что я привёл — я уверен, что есть ещё много других). Выложить улучшенную фотографию можно либо в комментариях к этому посту, либо на нашем форуме в оригинальной ветке [3], до 17 сентября 2013 года 24:00 по Гринвичу. К фотографии нужно приложить инструкцию (лучше скриншот), какой программой, какой версией и какими настройками пользоваться, чтобы добиться такого результата.

Лучшие 10 фотографий, по мнению разработчиков KolibriOS, будут выставлены на голосование на Хабре. Автор фотографии, набравшей больше всего голосов, будет награждён фирменными флешкой и футболкой с логотипом KolibriOS (включая пересылку на указанный победителем адрес). Удачи!

Бонус — приз в 1000 рублей тому, кто первым правильно подскажет Mario_Z [5], как решить проблему зависания: board.kolibrios.org/viewtopic.php?f=1&t=2343&start=120#p51072 [31] (само решение необязательно; достаточна только подсказка). Подсказки можно писать как здесь в комментариях, так и на нашем форуме [11].

Автор: yogev_ezra

Источник [32]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/zhelezo/42986

Ссылки в тексте:

[1] форуме KolibriOS: http://board.kolibrios.org/

[2] mdickie: http://board.kolibrios.org/memberlist.php?mode=viewprofile&u=5900

[3] board.kolibrios.org/viewtopic.php?f=4&t=2389: http://board.kolibrios.org/viewtopic.php?f=4&t=2389

[4] недавно у нас появилась поддержка USB: http://habrahabr.ru/company/kolibrios/blog/181309/

[5] Mario_Z: http://habrahabr.ru/users/mario_z/

[6] скачать последнюю ночную сборку и проверить на ней: http://board.kolibrios.org/viewtopic.php?f=4&t=2389#p51091

[7] но сломалось что-то другое: http://board.kolibrios.org/viewtopic.php?f=4&t=2389#p51098

[8] либо английский — не его родной язык: http://habrahabr.ru/company/kolibrios/blog/182170/

[9] мы выясняли, что же именно не так: http://board.kolibrios.org/viewtopic.php?f=4&t=2389#p51101

[10] догадался: http://board.kolibrios.org/viewtopic.php?f=4&t=2389#p51154

[11] board.kolibrios.org/viewtopic.php?f=1&t=2343: http://board.kolibrios.org/viewtopic.php?f=1&t=2343

[12] board.kolibrios.org/viewtopic.php?f=31&t=2152: http://board.kolibrios.org/viewtopic.php?f=31&t=2152

[13] dmesg: http://en.wikipedia.org/wiki/Dmesg

[14] CleverMouse: http://habrahabr.ru/users/clevermouse/

[15] Blue Screen of Death: http://en.wikipedia.org/wiki/Blue_Screen_of_Death

[16] Синий экран смерти: http://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BD%D0%B8%D0%B9_%D1%8D%D0%BA%D1%80%D0%B0%D0%BD_%D1%81%D0%BC%D0%B5%D1%80%D1%82%D0%B8

[17] вместо фотографии, он переписал текст вручную: http://board.kolibrios.org/viewtopic.php?f=4&t=2389#p51155

[18] AUTORUN.DAT: http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdata%2Feng%2Fautorun.dat

[19] одновременно включить дублирование лога на экран и отключить загрузку LAUNCHER: http://board.kolibrios.org/viewtopic.php?f=4&t=2389#p51156

[20] фотография полного лога: http://board.kolibrios.org/viewtopic.php?f=4&t=2389#p51157

[21] советовал пользователю, как попытаться решить проблему зависания: http://board.kolibrios.org/viewtopic.php?f=4&t=2389&start=15#p51163

[22] решил подождать, пока KolibriOS станет более стабильной: http://board.kolibrios.org/viewtopic.php?f=4&t=2389&start=15#p51205

[23] SmartDeblur: http://smartdeblur.net/

[24] даже: http://habrahabr.ru/post/175717/

[25] рекламировал: http://habrahabr.ru/post/180393/

[26] разделе сравнения: https://www.blurity.com/features

[27] github.com/Y-Vladimir/SmartDeblur: https://github.com/Y-Vladimir/SmartDeblur

[28] smartdeblur.net/download.html: http://smartdeblur.net/download.html

[29] www.blurity.com/download: https://www.blurity.com/download

[30] оригинальную смазанную фотографию: http://board.kolibrios.org/download/file.php?id=5109

[31] board.kolibrios.org/viewtopic.php?f=1&t=2343&start=120#p51072: http://board.kolibrios.org/viewtopic.php?f=1&t=2343&start=120#p51072

[32] Источник: http://habrahabr.ru/post/192558/