Update Seagate firmware from Linux

Нашел тут вчера пару Seagate Barracuda 7200.12 (ST31000528AS). Тех самых, на которых надо обязательно обновлять прошивку. И задался вопросом как бы ее обновить.

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

Итак, вам понадобятся:

  1. Файл с новой прошивкой
  2. Утилита hdparm
  3. Готовность к тому, что диск в результате будет испорчен

Прошивка:

Скачиваем iso с сайта Seagate (в моем случае это был Barracuda12-ALL-CC49.iso), вытаскиваем из него RAM-образ (у меня он назывался PH-CC49.ima), монтируем его как loop-устройство и находим в нем архив с прошивками LOD.zip

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

А вот для Seagate Barracuda ES.2 история была чуть другая. Я скачал файл ES2SN06C-1D2DMoose.iso, но в нем была только какая-то ненужная ерунда, а прошивка была интегрирована в загрузочный образ. Так что мне потребовалось вначале вытащить загрузочный образ командой geteltorito ES2SN06C-1D2DMoose.iso > boot.img и уже в нем обнаружился 1D2DSN06.LOD.

В ряде мест упоминалось, что прошивку можно залить при помощи утилиты sg_write_buffer, но у меня это не заработало. Зато сработала команда hdparm --fwdownload

Была прошивка:

# smartctl -a /dev/sdb
Model Family:     Seagate Barracuda 7200.12
Device Model:     ST31000528AS
Firmware Version: CC38

Заливаем новую:

# hdparm --fwdownload PHCC494H.LOD /dev/sdb

Выключаем компьютер по питанию (перезагрузки недостаточно), включаем назад:

# smartctl -a /dev/sdb
Model Family:     Seagate Barracuda 7200.12
Device Model:     ST31000528AS
Firmware Version: CC49

Всё получилось!

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

 

And one more time for Google spider =)

You can update Seagate HDD firmware from Linux with hdparm command.

First you should find the propper firmware in LOD format (E.g. dowload iso from vendor site, get .IMA image from it, and extract LOD.ZIP archive with firmwares from that image.)

If you don’t see image file in .iso, you can try to extract it from ElTorito boot, like I did for my Seagate Barracuda ES.2:
geteltorito ES2SN06C-1D2DMoose.iso > boot.img

And inside this boot.img I found 1D2DSN06.LOD.

Then upload firmware into hdd with

# hdparm --fwdownload <firmware.LOD> /dev/<HDD>

That’s it!

Ремонт Sigma EF-500 DG ST

Как-то я решил купить себе внешнюю вспышку для зеркалки. В то время Nikon SB-600 стоил около 6 тысяч, а аналогичная по мощности (но попроще по электронике) Sigma EF-500 DG ST стоила 3,5.

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

  • Во-первых, iTTL в ней довольно посредственный. То есть она вроде как управляется с камеры, но переодически ошибается (чаще всего недосвечивает, хотя изредка и наоборот).
  • Во-вторых, в ней нет режима iTTL-BL, приходится в ручную выставлять бОльшую мощность на камере.
  • Ну и в-третьих, она у меня сдохла меньше чем через год.

В общем купил я себе тогда Nikon SB-600 и не пожалел.

С тех пор года 3 прошло, нашел вчера Сигму в ящике и решил-таки глянуть что с ней. Оказалось оторвался проводок между платой и двигащейся лампой. Судя по обилию сообщений в интернетах про “оторванный белый проводок” это у них родовая болезнь. Ну в общем вот краткая инструкция по разборке и ремонту этой вспышки.

Для ремонта понадобятся:

  • часовая крестовая отвертка;
  • часовая (или просто небольшая) плоская отвертка;
  • паяльник;
  • небольшой гибкий проводок (многопроволочная жила, лучше медный);
  • руки.

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

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

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

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

Половина корпуса снимается, и можно посмотреть, что же там внутри:

У меня оторвался вот этот белый проводок от красной катушки:

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

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

Собираем вспышку в обратном порядке.

PS Никому вспышка не нужна? Sigma EF-500 DG ST for Nikon. Состояние – почти новая =)

Авангард интернет-банкинг vs. Linux

Upd: Более неактуально, там теперь полностью джава.

Садись, малыш, сегодня я расскажу тебе как пользоваться интернет-банкингом Авангарда в Линуксе.

Итак ты являешься клиентом банка Авангард. У тебя должны быть:

  • логин и пароль от интернет-банкинга;
  • карточка с одноразовыми паролями;
  • флэшка с ключом ЭЦП.

С первыми двумя пунктами всё просто: логин с паролем позволяют зайти в веб-интерфейс и получить любую информацию. Если требуется выполнить типовой платеж, то раз в сеанс будет запрошен одноразовый пароль с карточки. Самое интересное происходит в ситуации, когда требуется выполнить какое-либо действие, которое по законодательству требует твоей подписи. Например, хочется открыть вклад. Или поменять какой-нибудь лимит для карточки. Или перевести миллионы в другой банк. Казалось бы надо идти в офис и там писать заявление, но не всё так страшно: в нашей самой лучшей на свете стране есть закон об Электронных Цифровых Подписях и Авангард как раз одну такую ЭЦП с православным ГОСТовским криптоключем внутри тебе сгенерировал.

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

Для того, чтобы проверить работу цифровой подписи можно попробовать изменить какой-нибудь лимит на закладке “Справочники/Лимиты по картам”.

Во-первых, для работы ЭЦП требуется java-plugin. Не знаю, как там с icedtea (или как там оно зовется), хотя вроде где-то писали, что и он работает, но я не стал оригинальничать и поставил java-plugin от некогда славной фирмы SUN (пакет sun-java6-plugin).

И ничего не заработало. Честно сказать, я это заметил еще месяца полтора назад, что не работают у меня java-апплеты, но списал это на то, что где-то прописалась какая альтернативная джава из gcj или еще какого проекта, и забил. А тут занялся вопросом серьезно – сносил, переставлял… Ничего не помогает. Вместо апплета выдает окошко с надписью “Error. Click for detail”, по клику на которое вызывается java-console с текстом о Class not found и прочих эксепшнах, но главное с ключевой строчкой: “Caused by: java.net.ConnectException: Network is unreachable”

Небольшое расследование вывело на следующую проблему: #560238. Если коротко, то суть ее состоит в том, что Marco d’Itri добавил в пакет netbase установку sysctl’я ломающего некоторый “кривой” софт. Не будем сейчас обсуждать Марко и его маму, равно как кривость сановской джавы и информационность RFC 3493. Просто факт остается фактом. Сейчас сановская джава не сможет подключиться к сети при установленном net.ipv6.bindv6only=1

Так что первым нашим шагом будет открытие /etc/sysctl.d/bindv6only.conf и установку там net.ipv6.bindv6only в значение 0. После чего стоит сказать “/etc/init.d/procps start” Ну это всё пока что актуально только на Debian Squeeze, остальным повезло. (Пока?)

Теперь апплет-таки запускается и, если тебе особенно повезло, радостно сообщает: “Обнаружение программы… Err” с очень содержательным пояснением: “Ошибка обнаружения/скачивания программы шифрования: invalid stream header: 0D0A0D0A”

Тут всё просто и очевидно (да, это сарказм): открываешь настройки IceWeasel/FireFox и разрешаешь там “Third-party cookies”. Они там в разных версиях в по разному называются/находятся, так что проще всего открыть “about:config” и там поставить значение переменной network.cookie.cookieBehavior в 0. Кстати эта проблема, наверняка должна проявляться и под виндой.

Едем дальше: аппет сообщает “Ошибка выполнения программы подписи  : Cannot run program “c:\avn_ib/avn_cc.exe”: java.io.IOException: error=13, Permission denied”. Если посмотреть в домашний каталог пользователя (а именно он является текущим для java-приложений, запускаемых из браузера), то мы радостно обнаружим там каталог “c:\avn_ib” внутри которого действительно есть неисполняемый файл avn_cc.exe

Как ты уже догадался, гений русских программистов бесконечен. Java-апплет всего-лишь является троян-дропперомзагрузчиком для настоящей боевой криптографии. Которая написана, естественно под винду. Ну тут всё просто. Он хочет запускать этот бинарник? Нет проблем! Чтобы работали виндовые программы, ставим wine. Чтобы бинарник можно было запускать напрямую, ставим binfmt-support. (Вообще он рекомендуется вайном, но мало ли, у тебя он не стоит. Ну и в других дистрибутивах пакет может называться иначе, ты уж сам разберись, главное чтобы работал прямой запуск виндовых прог: не только “wine prog.exe”, но и просто “./prog.exe”) Дальше, понятно, надо сделать бинарник avn_cc.exe исполняемым.

Нет, это еще не всё. Теперь апплет выдает нам не менее экзистенциальное “Ошибка выполнения программы подписи: ret 2 команда <c:\avn_ib/avn_cc.exe c:\avn_ib/avn_clb_sign.in>” Надо немного подумать: чтобы бинарник можно было запустить из вайна, он должен быть доступен внутри виндового окружения. А какой путь сейчас у этого бинарника? Правильно Z:\home\user\c:\avn_ib\avn_cc.exe В общем не бывает таких путей в виндовсе. Решаем всё просто:

mv ~/c:\\avn_ib ~/.wine/drive_c/avn_ib&&ln -s ~/.wine/drive_c/avn_ib ~/c:\\avn_ib

Пробуем еще раз… О чудо! Крипто-хрень спрашивает нас где лежит приватный ключик. Ну теперь достаточно воткнуть флэшку с ключом, примонтировать и оно всё само подпишет.

Велик русский Левша. Умеет подковать англицкую джаву.

PS А Авангард и его интернет-банкинг действительно хорош. Ну и MasterCard.Metro у него по самым адекватным тарифам. В общем рекомендую. Кстати, обещают подружиться до конца года(?) с московским наземным транспортом и питерской подземкой.

Сбыча мечт

История изменений для конфигов в /etc? С возможностью откатов? И минимумом лишних телодвижений?

Встречайте etckeeper!

Короткая инструкция:

# etckeeper init

инициализирует репозиторий git. После этого

# cd /etc; git commit -m "Initial commit"

для первого чек-ина. И всё. Можно использовать. Можно пользоваться всеми прелестями git’а для клонирования настроек, merge коммитов между репозиториями и прочего. Пакет использует хуки APT для автоматического коммита после установки/обновления/удаления пакетов, а так же metastore для хранения владельца/прав доступа для файлов.

ЗЫ Пока только в sid. Сейчас сделаю бэкпорт для Etch. Уж больно вкусно.
ЗЗЫ Бэкпорт сделал, лежит в репозитории. Кто будет ставить: потребуется еще бэкпортнутый metastore и git-core, из того же репозитория.

Настраиваем печать в Linux

Итак задача:

Есть разнородная сеть, состоящая из нескольких виндовых машин, и нескольких линуксовых. К нескольким виндовым машинам и нескольким линуксовым подключены принтеры. Как настроить это все хозяйство, чтобы печать работала со всех машин на все принтеры максимально прозрачно?

Continue reading “Настраиваем печать в Linux”

reprepro – управление репозиторием deb пакетов

Вчера заменил систему управления deb-репозиторием.

До этого использовал mini-dinstall, но к нему были некоторые претензии: собственная структура каталогов (а не стандартный pool+dists), невозможность ведения нескольких секций в рамках одного дистрибутива, невозможность просто перенести пакет из одного репозитория в другой (например из unstable в testing) и прочие мелочи.

Хотелось чего-нибудь более функционального, и я, похоже, нашел решение: это reprepro.

Continue reading “reprepro – управление репозиторием deb пакетов”

Установка и настройка SpamAssassin

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

Статью про СпамАссассин решил восстановить. В несколько сокращенном варианте (сейчас уже только ленивый не знает что это такое и зачем он нужен) и с поправками на мои нынешние настройки.

Continue reading “Установка и настройка SpamAssassin”

IDS своими руками

Меня-таки достали постоянные брутфосы на ssh, проводимые с зомбоящиков. Раньше я замечал эти атаки благодаря logcheck, который присылал мне на почту все аномалии, и затем блокировал адреса руками в файрволе. И меня даже раздражало не то, что приходится что-то делать самому (в конце концов, говорить “iptables -A INPUT -s чего-нибудь -j DROP” даже приятно 🙂 ), сколько то, что заблокировать можно было бы прямо вначале атаки, а я это делал или уже после, или где-то в середине.

Upd: найдено более универсальное средство, см. ниже.
Continue reading “IDS своими руками”