понедельник, 18 ноября 2013 г.

Защита флешки от записи новых файлов

Защита флешки от записи новых файлов

Продолжаю развивать тему о защите флешек от вирусов (ранее мною публиковались материалы AUTOSTOP — скрипт для защиты флешки от autorun-вирусов и Panda USB and AutoRun Vaccine — лекарство от autorun-вирусов на флешке — там главным образом речь шла о защите флешки от записи на нее вредоносного файла autorun.inf). Тема интересна тем, что зачистка вирусов на компьютере — это борьба со следствием, а предохранение флешки от вирусов — это меры, направленные на устранение причины.

Защита флешки от записи новых файлов осуществляется путем определения свободного пространства на ней, с последующим полным его заполнением, используя утилиту fsutil. Такой метод отлично подходит, например, для защиты загрузочных флешек (имеющих файл autorun.inf), которые невозможно защитить созданием одноименного каталога AUTORUN.INF.

image
Далее следует описание метода, его анализ, и способ полной автоматизации.

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

Способ


В оригинале для создания такого файла используется команда:

fsutil file createnew <filename> <length>

Fsutil является служебной программой командной строки. Для использования программы fsutil необходимо войти в систему с помощью учетной записи администратор или члена группы администраторов.

Такой способ, как выяснилось в результате тестирования, имеет 2 минуса:
  1. FAT32 имеет ограничение на размер файла (2^32 байт, т.е. 4 гигабайта). Соответственно, мало заполненную информацией флешку размером 8 гигабайт (такие флешки сегодня не так уж редки) и больше таким образом уже не защитить
  2. Создание больших файлов занимает несколько минут времени. А если понадобилось удалить защитный файл, дописать что-то на флешку, а потом снова выставить защиту? Снова теряется время на создание большого файла


В моем же автоматизированном варианте используется следующий код (его нужно оформить в виде bat-файла, переписать на флешку и запустить оттуда), свободный от перечисленных недостатков:

@echo off
setlocal enabledelayedexpansion
set /a sizofile=1024 * 1024 * 1024
for /l %%K in (1,1,256) do (
for /f "tokens=3" %%J in ('dir %~d0 /-C') do (set freespace=%%J)
if !freespace! EQU 0 goto ready
if !freespace! GTR !sizofile! (
call :getime
fsutil file createnew "%~d0\[ 1024 Mb ] !randtime!" !sizofile!
) else (
for /l %%K in (1,1,5) do (
for /f "tokens=3" %%J in ('dir %~d0 /-C') do (set freespace=%%J)
set /a sizofilemb=!sizofile! / 1024 /1024 / 2
set /a sizofile=!sizofile! / 2
if !freespace! GEQ 67108864 (
if !freespace! GEQ !sizofile! (
call :getime
fsutil file createnew "%~d0\[ !sizofilemb! Mb ] !randtime!" !sizofile!
)
) else (
if !freespace! EQU 0 goto ready
call :getime
fsutil file createnew "%~d0\[ 1-63 Mb ] !randtime!" !freespace!
goto :EOF
)
)
)
)

:getime
set randtime=!time:~-10!
set randtime=!randtime::=!
set randtime=!randtime:,=!
exit /b


Логика работы кода следующая:
  • определяется количество свободного пространства на флешке
  • если свободного пространства больше 1Gb — создаем файлы размером 1Gb до тех пор, пока это условие выполняется
  • Когда свободного пространства меньше 1 гигабайта — последовательно пытаемся создать файлы размером 512Mb, 256Mb, 128Mb, 64Mb и последний файл размером от 1 до 63Mb


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

[ 1-63 Mb ] 7344296
[ 64 Mb ] 7343581
[ 256 Mb ] 6050959
[ 512 Mb ] 6043075
[ 1024 Mb ] 2341570
[ 1024 Mb ] 2353157


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

Анализ


Строго говоря, такой метод нельзя считать полным аналогом аппаратного переключателя «read-only», имеющегося на некоторых видах флешек. Даже если флешка защищена от записи новых файлов описанным методом, вирус имеет возможность создать файл autorun.inf на флешке — но вот записать что-либо в этот файл уже не сможет.

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

Таким образом, считать такой способ защитой от записи можно только в контексте невозможности создания на флешке непустых новых файлов. Что однако, как показывает практика, является серьезной мерой защиты от autorun-вирусов. Как говорилось выше, этот метод отлично подходит для защиты загрузочных флешек (имеющих файл autorun.inf), которые невозможно защитить созданием одноименного каталога AUTORUN.INF, а также для флешек с личным набором необходимого программного обеспечения, подключаемого к чужим компьютерам.

Хочется сказать еще несколько слов о пресловутой надежности защиты, обеспечиваемой аппаратным переключателем «Read-only». Имел место такой случай.

В фотоаппарате жены (Canon А610) нет возможности показа индикатора заряда батареи. Я нашел альтернативную прошивку, имеющую такую функцию. Записал ее на карту памяти. В инструкции к прошивке говорися, что для того, чтобы она грузилась автоматом (а не руками запускалась после включения фотоаппарата), необходимо переключатель на карте памяти перевести в положение «Заблокировано». Я несколько раз перечитал этот пункт — уж не ошибся ли. Нет — все верно. Ставлю переключатель в положение «Lock», заряжаю карту в фотоаппарат, предчувствуя что сейчас он выругается о невозможности записи, и… И ничего такого не происходит — все снятые кадры прекрасно сохраняются на карту памяти, а неудачные кадры без проблем можно удалить. Выводы делайте самостоятельно.


Конкретная реализация


Код для самостоятельного создания bat-файла приведен выше. Но наиболее удобно использовать новую версию 2.4 моего скрипта AUTOSTOP

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

PS — напомню что защиту флешки методом прав NTFS никто не отменял, но бывают случаи, когда ее применение по каким-то причинам нежелательно.

PPS — спасибо Elroir за помощь в написании кода.

воскресенье, 17 ноября 2013 г.

автоматическое монтирование подключаемых устройств через udev

автоматическое монтирование подключаемых устройств через udev

Задача автоматического монтирования флешек решается довольно просто в KDE или GNOME — эти среды можно настроить так, что они сами всё смонтируют, откроют файловый менеджер и покажут значок в трее. Но что делать, если у вас только консоль или стоит, например, awesome? Или вы не хотите разбираться с конкретным DE, а ищите универсальное решение?

Независимое от DE решение есть — udev.
Создаём новый файл /etc/udev/rules.d/automount.rules со следующим содержанием:
ACTION=="add" KERNEL=="sd[c-z][0-9]" RUN+="/bin/mkdir -p /mnt/%E{ID_VENDOR}_%E{ID_MODEL}_%n"
ACTION=="add" KERNEL=="sd[c-z][0-9]" RUN+="/bin/mount -o uid=1000 /dev/%k /mnt/%E{ID_VENDOR}_%E{ID_MODEL}_%n"
ACTION=="remove" KERNEL=="sd[c-z][0-9]" RUN+="/bin/rmdir /mnt/%E{ID_VENDOR}_%E{ID_MODEL}_%n"

Укажем udev-у, что появилось новое правило:
sudo udevadm control --reload-rules

Результат
Вставляю флешку и вижу каталог /mnt/KINGMAX_Flash_Disk_1, в котором содержимое флешки. Размонтирую и вынимаю — каталог пропал.

Замечания
1. KERNEL==«sd[c-z][0-9]» — значит, что будет срабатывать на все устройства вида /dev/sdc1 /dev/sdc2, /dev/sdg7. У меня 2 жестких диска: sda и sdb, поэтому я начал regex с «с».
2. mount -o uid=1000 — зашит id пользователя, который будет owner-ом. Если у вас не стандартный, то подправьте (проверка id -u). Конечно, можно действовать через группы и маски, но я выбрал наиболее простое решение.

umount
Проблему размонтирования (нужны права суперпользователя) я решил так:
1. sudo visudo
2. добавить строчку %wheel ALL= NOPASSWD: /bin/umount

upd
Как заметил darkk, ID_VENDOR="; /bin/rm -rf /;" — потенциальная дыра в безопасности, поэтому лучше перестраховаться в ущерб наглядности:
ACTION=="add" KERNEL=="sd[c-z][0-9]" RUN+="/bin/mkdir -p /mnt/%k"
ACTION=="add" KERNEL=="sd[c-z][0-9]" RUN+="/bin/mount -o uid=1000 /dev/%k /mnt/%k"
ACTION=="remove" KERNEL=="sd[c-z][0-9]" RUN+="/bin/rmdir /mnt/%k"

понедельник, 11 ноября 2013 г.

хром предлагает сохранять пароли, но все равно каждый раз спрашивает пароль и снова предлагает его сохранить

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

1. закройте хром
2. нажмите <Win>+<R>
3. вставьте команду и подтвердите ее выполнение:
cmd /cren "%localappdata%\Google\Chrome\User Data\Default\Login Data" *.bak
4. зайдите в хром

п.с. спасибо hitmanhunter за решение, я просто немножко упростил выполнение оного



http://otvety.google.ru/otvety/thread?tid=07a5bdb71a655f75

16.09.13
GetNight

суббота, 9 ноября 2013 г.

UpGrade Asus K40Ij или дурная голова ногам покоя не даёт!

UpGrade Asus K40Ij или дурная голова ногам покоя не даёт!

aalexej 27.02.2011 Статьи 12524
Часто при выборе нового мобильного телефона или ноутбука (компьютера) мы оказываемся в жёстких финансовых рамках, в результате чего не всегда получаем желаемое.… Да и если прагматично подойти к выбору, т.е. чётко сформулировать потребности и спектр решаемых задач будущего ноутбука, то можно приобрести сбалансированную по производительности модель в умеренную сумму.
Мой первый ноутбук был приобретён в декабре 2009 года. Это была не дорогая модель Asus K40Ij (Intel Celeron dual-core T3000-1,8GHz; Intel GMA X4500; 2048 DDR2; 250Gb;Wi-Fi: 802.11;LAN: 10/100/1000; 1.3 Mpix). В круг его задач входило доступ в Internet, видео в дороге, написание дипломной работы, настройка и планирование WiFi сетей и прочие мелкие потребности. Со всеми перечисленными задачи он прекрасно справлялся, каких-либо проблем не доставлял, работал под управлением разных ОС (Windows XP, 7, Linux).
Но, как я уже говорил, со временем и у меня наступил момент через два года эксплуатации, когда «дурная голова стала не давать покоя ногам»… А тут ещё на работе под конец года премию хорошую дали, так что, как говорится: «Сам Бог велел…».
В начале меня немного озадачило, а что вообще можно «апгрейдить», ведь бук бюджетный, графика интегрированная…???!!!
Исходя из имеющейся конфигурации стал почитывать различную информацию, знакомиться с ценами на комплектующие…
Оперативная память особых сомнений не вызвала… к имеющимся 2 Гб добавил лишь 1 Гб, тем более планка таковой уже имелась… Почему 1Гб а не 2Гб? Поясню: исходил из того что ОС будет использовать 32-х разрядная, планка памяти уже есть, да и в игры на нем не играть, а для повседневных задач для XP 3Гб вполне хватит…
Видео – вопрос отпал сам собой, т.к. она интегрированная…
Жёсткий диск – пока устраивал, свободного места ещё навалом. Да и хотелось SSD, с более высокими показателями чтения и записи по сравнению с HDD. Ведь время от времени бук эксплуатируется в дороге, что как вы понимаете не на пользу обычным жёстким дискам. Но цены пока ещё для меня не приемлемы, так что данная затея отложена до лучших времён!
Центральный процессор !!! А почему бы и нет!! Ведь и найти по более менее приемлемым ценам найти можно, да и более производительный проц никому ещё не помешал!!!
Весь процесс разбил на этапы:
  1. Изучение характеристик Chipset материнской платы (интересовала частота системной шины, поддерживаемые процессоры).
  2. Изучение характеристик установленного процессора и подбор нового (частота, объём кэша второго уровня, сокет, максимальное тепловыделение).
  3. Изучение рынка «бучных» процессоров (предложение, цены).
  4. Приобретение и установка.
В итоге получилось:
Системная логика материнской платы представлена набором микросхем Intel® GL40 (Рис.1). Частота системной шины составила 667Мгц, максимально поддерживаемый объём оперативной памяти 4 Гб.
UpGrade Asus K40Ij или дурная голова ногам покоя не даёт!
Рис.1
При анализе совместимых процессоров, мягко говоря, расстроился. Сами видите выбирать то особо не из чего (Рис.2).
UpGrade Asus K40Ij или дурная голова ногам покоя не даёт!
Рис.2
На тот момент на ноутбуке был установлен процессор Intel Т3000 (1Мб кэш, 2,0 Ггц, 800Мгц системной шины)(Рис.3).
UpGrade Asus K40Ij или дурная голова ногам покоя не даёт!
Рис.3
Однако меня мучили сомнения - «стартанёт» ли вообще ноутбук с процессорами отличными от рекомендованных Intel??!! Ведь исходя из информации Intel, установленный chipset толком ничего не поддерживает. Но в тот период у меня появилась возможно провести эксперимент, попробовать запустить на ноутбуке процессор Т6600 (Рис.4). И о чудо! С первого раза нормальный старт и работа ОС!!!
UpGrade Asus K40Ij или дурная голова ногам покоя не даёт!
Рис.4
Продолжая знакомиться с продукцией Intel, моё внимание привлекли процессоры серии T7000 иТ9000 (Рис. 5 и 6). Среди указанных серий как раз были модели тепловой пакет которых был аналогичен установленному процессору, подходила и частота системной шины и сокет.
UpGrade Asus K40Ij или дурная голова ногам покоя не даёт!
Рис.5

UpGrade Asus K40Ij или дурная голова ногам покоя не даёт!
Рис.6

Выделив ряд моделей, стал искать, где можно приобрести, какие вообще цены. Сравнив цены, основные характеристики процессоров – выбрал б/у Т7500. Связавшись с продавцом, уточнив нюансы доставки и оплаты, проверив расположение ключа (Рис.7), приобрёли успешно установил.
UpGrade Asus K40Ij или дурная голова ногам покоя не даёт!
Рис.7

UpGrade Asus K40Ij или дурная голова ногам покоя не даёт!

Теперь моя голова успокоилась... Но на долго ли?!
P.S. Не привожу сравнительный анализ старого и установленного процессоров, прирост производительности, поскольку знающие люди и так понимают разницу между Celeron Dual-Core и полноценным Core 2 Duo, дополнительных 400 Мгц тактовой частоты и 3 Мб кэша 2-го уровня! И никакого разгона!!!

понедельник, 4 ноября 2013 г.

Решение проблемы „Видеодрайвер перестал отвечать и был успешно восстановлен”

Решение проблемы „Видеодрайвер перестал отвечать и был успешно восстановлен”

Решение проблемы „Видеодрайвер перестал отвечать и был успешно восстановлен” (“Display driver has stopped working and has recovered”)

Знаю, что многие пользователи Vista и Windows7 x86/x64 сталкивались с подобным сообщением. Проблема переползла и в Windows8, не потеряв актуальности.
Обычно это происходит во время игры, работы какого-то 3д приложения или просмотре видео, но бывает, что и буквально “на пустом месте”, просто во время набора текста или серфинга по интернету. Я предлагаю решение этой проблемы, которое неоднократно помогало мне и другим. Заодно - тут собраны и другие варианты решений, пожалуй, полнее не видел нигде.(Обновление статьи 20 декабря 2012).


После такого зависания вы увидите в трее сообщение "Atikmdag has stopped responding and has successfully recovered" для ATI, "nvlddmkm has stopped responding and has successfully recovered" для nVidia или  "igfx has stopped responding and has successfully recovered" для intel  (на руссом - "Atikmdag (или nvlddmkm, или igfx)  перестал отвечать и был успешно восстановлен").

Понятно, что перезапуск видеодрайвера вызывается каким-то событием, но проблема плавающая, единой причины срабатывания триггера остановки не известно, подобное сообщение может быть вызвано целой кучей причин, любая из которых приводит к увеличению задержки ответа драйвера. Зато прекрасно известно, какой механизм отвечает за такое поведение системы. Имя механизму- Timeout Detection and Recovery (TDR). Вкратце, это система восстановления после программных ошибок, избавляющая от необходимости перезагрузки компьютера в случае такой ошибки. Завязана она на драйверную модель, введённую в Vista и успешно использующуюся в Windows 7 и 8, и она действительно помогает избежать ситуаций, которые в случае с более ранними версиями Windows практически однозначно приводили к зависанию компьютера или BSOD и необходимости перезагрузки, с потерей всех несохранённых данных. В абсолютном большинстве случаев работа TDR  пользователю не заметна, но в некоторых случаях получается такая вот „несостыковочка”. Это не проблема только лишь Windows (ведь как раз со стороны операционки «всё честно отработало»), это проблема также и производителей драйверов. И nvidia, и ati неоднократно заявляли, что «работают над следующей версией драйвера, в которой эта проблема будет устранена», но воз и ныне там, ситуация с момента выхода windows 7 и до сегодняшнего дня не изменилась. Скорее всего, кардинальных изменений они уже и не внесут - это может только нарушить сам принцип работы такого механизма.

Ниже я собрал возможные решения этой проблемы, среди которых есть и редко встречающиеся или описываемые.
  1. Обновление драйвера видеокарты до последней версии, либо наоборот, смена его на более старую версию.  Более старые версии подходят для видеокарт, которые уже не получают новых возможностей от установки нового драйвера, а просто поддерживаются им.
  2. Обновление DirectX на последнюю возможную версию. Помогает откровенно редко, иногда помогает переустановка DX9, который может устанавливаться автоматически вместе с играми дополнительно к уже встроенноу DX10 семёрки.
  3. Изменение параметров сглаживания (antialiasing ) в настройках панели управления видеодрайвером. Конфликт может возникнуть, когда, например, в настройках игры выставлено сглаживание, а в настройках драйвера-оно принудительно отключено или стоит режим «замещение настроек приложения». Настройки подбираются индивидуально к каждому компьютеру.
  4. Отключение TDR в реестре или изменение времени её срабатывания. Ниже об этом способе написано подробнее.
  5. В комментариях подсказали ещё один вариант решения, но он подходит только для некоторых видеокарт. Это прошивка более новой версии bios вашей видеокарты. Подходит такой вариант для видеокарт, которые продаются с изначально завышенными, относительно стандартных референсных от ATI или nVidia, частотами (на них обычно есть маркировка overclocked). У подсказавшего этот вариант- это видеокарта от Gigabyte, 560Ti.
  6. Не решение, скорее workaround ("обходной способ")- запуск видеофайла в плеере и сворачивание плеера.
  7. Ещё один вариант из комментариев, который, как и запуск видео, относится к "обходному пути", а не решению проблемы по сути, но может помочь -этоотключение Aero. смысл этого способа в том, что при включенном Aero в Windows для отрисовки интерфейса используется видеокарта, а если отключить его -то процессор, как в любой предыдущей версии Windows. Т.е. по сути, вы просто выключаете приложение, использующее ресурсы видеокарты. Вероятно, что при включении каких-нибудь игр всё вернётся.
  8. Опять же, из комментариев: можно чуть-чуть снизить частоту видеокарты немного, работающий вариант - это снижение всего на 1%, что не будет сказываться на производительности, но может решить проблемы "выбивания" драйвера. Сюда же отнесу и рекомендацию по увеличению напряжения на GPUна один шаг. Похоже, что корень проблемы в данном случае лежит там же, где и при перепрошивке видеобиоса.
  9. Если проблема возникает только при работе браузера (в интернете), велик шанс, что виноват flash player. В таком случае можно либо а) попробовать обновить flash-плеер c сайта Adobe, либо б)попробовать отключить аппаратное ускорение флеша (правой кнопокй на флеш-ролике, убрать галочку с "использовать аппаратное ускорение" ("use hardware acceleration")
  10. Ещё один вариант,из комментариев - "скачал nvidia inspector 1.9.6.5 открыл программу там есть такой пункт driver version и далее показывает версию дрова видюхи после него есть маленький значок (в виде гаечного ключа) кликните по нему и откроется новая окна та м найдите пункт power throttle, потом измените значение на SET_POWER_THROTTLE_FOR_PCIe_COMPLIANCE_ON и все можете забыть о прблеме)". Автор комментария только не написал, что изначально там параметр SET_POWER_THROTTLE_FOR_PCIe_COMPLIANCE_OFF, и надо не забыть нажать apply для применения изменения. 
Я не рассматриваю тут варианты исправления, связанные с неисправным железом- например, недостаточной мощностью блока питания, если у вас стационарный компьютер,  или отваливащимся видеочипом. Такие случаи требуют индивидуального изучения и проверки железа, а проблема перезагрзуки драйвера тут - всего лишь один симптом.
    Варианты 1 и 2 -это обычные и очевидные действия при проблемах с графикой и видео. Вариант 3 помогает, когда зависание драйвера наблюдается в играх и 3д-приложениях, а так же при включенном сглаживании в видеоплеерах при воспроизведении видео с помощью плеера, использующего VMR7/9 и 3д-поверхности. Вариант 5 - помогает только некоторым видеокартам на настольных компьютерах, и никогда не поможет на ноутбуках. Вариант 6 - не даёт драйверу ни секунды простоя, таким образом действуя на его "желание" зависнуть. В таком варианте предпочтительно, чтоб плеер декодировал видео средствами видеокарты, а не процессора. Вариант 8- по сути, просто отключение приложения, использующего видеокарту для отрисовки интерфейса, а потому -не может быть полноценным решением. Вариант 9 - встречается на системах, которые редко обновляются: flash довольно часто обновляется, и каждыый раз победно рапротует об исправленном миллионе ошибок. Суть 10-го варианта - в изменении напряжения для соотвествия стандартам pcie, но как оно работает точно- я не знаю, описания этого механизма я не нашёл.

    В некоторых случаях ошибка „Видеодрайвер перестал отвечать и был успешно восстановлен” (“Display driver has stopped working and has recovered”) может проявляться и после применения всех вышеуказанных фиксов, и после переустановки системы по-новой, и вообще всегда. Это может указывать на уже физические проблемы-перегрев видеокарты, либо выход видеокарты из строя. Конечно, это самая нежелательная ситуация, но такое бывает. Проверить, кроме как установив точно такую же видеокарту, больше никак не получится.

    Вариант 4 рассмотрю поподробнее, т.к. это решение упоминается значительно реже, а по действенности - среди первых. Итак, что нужно сделать. Запускаем редактор реестра, идём в ветку HKLM\System\CurrentControlSet\Control\GraphicsDrivers , и ищем там два ключа – TdrLevel и TdrDelay (если их там нет- а их скорее всего нет-то их нужно создать, тип REG_DWORD , не забудьте «десятичная система счисления» при редактировании параметра; значения описаны ниже). TdrLevel –собственно настройка восстановления. Стандартно имеет значение «3», соответствующее состоянию „TdrLevelRecover – Recover on timeout”, т.е. „восстановление по таймауту”. Выставляем значение „0”, соответствующее „TdrLevelOff – Detection disabled”, т.е. „детектирование отключено”. TdrDelay –установка времени задержки , т.е. реагирования на „безответность” драйвера. Стандартное значение –„2”, это время в секундах. Выставляем от 3х и больше, можно выявить необходимую задержку опытным путём, или сразу забабахать, например,”10” Полагаю, понятно, что в случае, если TdrLevel выставлен в «отключено», изменять время задержки (TdrDelay) смысле уже нет. Я бы рекомендовал начинать с увеличения времени вместо отключения-всё-таки сама по себе система восстановления вполне заслуживает того, чтобы жить, и может действительно спасти вам несохраненные данные в случае проблем с драйвером и необходимости экстренной перезагрузки.
    После внесения изменений не забываем перезагружать компьютер, ключи реестра дадут эффект только после рестарта системы. Небольшая оговорка – этот способ поможет, если проблема с драйвером действительно лежит только в плоскости программного решения, и если для восстановления работоспособности драйвера не нужен «пинок», рестарт его. В других случаях – выключение этого параметра может привести к зависанию компьютера на момент, когда такая ситуация должна проявиться, так же, как это было на XP. Если после использования этого решения компьютер стал зависать там, где раньше выскакивало сообщение – то этоn вариант решения не для вас.

    Статья от microsoft.com о TDR, на английском языке- находится здесь. Там описание всех ключей этой ветви реестра, но остальные, кроме описанных выше, не нужны. Как видите, эти ключи предназначены «for testing purposes only», но раз они есть, а другого внятного однозначного решения нет- пользуемся и радуемся, если помогло.

    Полезные ссылки по теме:
    P.S. - изучая данную проблему, я многократно натыкался на решения вроде удаления каких-то особых обновлений, снятия одной планки памяти, чистки реестра, удаления видеодрайвера вообще (чтоб установился только стандартный-а фиг с ним, с aero и с 3д графикой), и прочего, что никак, кроме как БРЕДОМ, я назвать не могу. Решение проблемы- это когда система остаётся полностью работоспособной. Только таким принципом я и руководствуюсь всегда. А иначе- это не решение, и даже не костыль. Можно в таком случае предложить сменить компьютер вообще- тот же уровень "решения". Зачем стричь ногти газонокосилкой?!

    P.S.S - спасибо всем, кто предлагает свои варианты! Могу с уверенностью сказать, что на данный момент эта статья (в частности, благодаря и вам)- это самый полный перечень действительно работающих фиксов!

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




    http://slovelissimo.blogspot.ru/2010/11/blog-post.html#.UnebF_nxpw0

    воскресенье, 27 октября 2013 г.

    Настройка Принт-сервера на примере TL-WR842ND и HP LJ 1020 с использованием p910nd

    Настройка Принт-сервера на примере TL-WR842ND и HP LJ 1020 с использованием p910nd

    Версия прошивки OpenWrt: OpenWrt Attitude Adjustment 12.09-rc1 / LuCI 0.11 Branch (0.11+svn9425)
    Устанавливаем необходимые для работы принт-сервера пакеты и редактор nano, для комфортного редактирования файлов конфигурации
    opkg update
    opkg install kmod-usb-printer usbutils p910nd nano
    Многие принтеры от Hewlett Packard для печати требуют особый набор команд (прошивку), которые необходимо загружать до начала печати. Всем известный Олег, выложил некоторые прошивки на своем сайте. Посмотреть названия файлов можно по ссылке http://oleg.wl500g.info/hplj Нам нужен драйвер от HP 1020 - выбираем sihp1020.dl (А для МФУ hp M1005, например нужен sihp1005.dl) Переходим в каталог, где будем хранить прошивку и загружаем ее
    cd /usr/lib/
    wget http://oleg.wl500g.info/hplj/sihp1020.dl
    Для того чтобы загрузка прошивки происходила автоматически, при каждом подключении принтера создадим файл
    nano /etc/hotplug.d/usb/20-printer
    В который добавим следующую информацию
    #!/bin/sh
    FIRMWARE="/usr/lib/sihp1020.dl"
    DEVICE=/dev/usb/lp0
    LOGFILE=/var/log/printer
    if [ "$PRODUCT" = "3f0/2b17/100" -a "$ACTION" = "add" ]
    then
          for i in $(seq 30); do
                  if [ -c $DEVICE ]; then
                          echo "$(date) : Sending firmware to printer." > $LOGFILE
                          cat $FIRMWARE > $DEVICE
                          echo "$(date) : done." >> $LOGFILE
                          exit
                  fi
                  sleep 1
          done
    fi
    Обратите внимание на запись 3f0/2b17 - это VID и PID принтера HP LJ 1020 (Первые нули удаляются 03f0). У другой модели, они будут другие. Узнать можно например из панели управления в Windows ну или подключив принтер к роутеру и набрав команду:
    lsusb -v | grep ID
    Откуда и получите эти данные:
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 001 Device 002: ID 03f0:3b17 Hewlett-Packard LaserJet M1005 MFP
    Следующие две команды найдены на польском форуме, истинное значение мне пока не ясно. У меня пару раз без них не работало :-)
    uci set p910nd.@p910nd[0].enabled=1
    uci commit p910nd
    Открываем файл конфигурации p910nd
    nano /etc/config/p910nd
    где меняем один параметр - вместо /dev/lp0 пишем /dev/usb/lp0
    config p910nd
          option device        /dev/usb/lp0
          option port          0   
          option bidirectional 1
          option enabled       1
    Открываем в файрволе доступ к принтеру из сети по порту 9100, для этого редактирум файл конфигурации файрвола
    nano /etc/config/firewall
    В самый конец дописываем следующие строки
    # Allow printer                            
    config rule                                
          option src lan                     
          option proto tcp                   
          option dest_port 9100              
          option target ACCEPT
    Настройка почти закончена… Осталось только включить демона принт-сервера в автозагрузку и перезагрузить роутер
    /etc/init.d/p910nd enable
    reboot

    пятница, 25 октября 2013 г.

    Добавляем swap в Linux

    Добавляем swap в Linux

    Tuesday, June 3rd, 2008
    Вообще-то сервак свопить не должен, иначе это уже не сервак, а хз что. Но бывает и не сервак, да и мало ли вдруг надо добавить свопа, всенепременно. Ну чтож добавим:
    Создаем файл, в данном примере 2Gb:
    # dd if=/dev/zero of=/swapfile bs=1024 count=2097152
    Далее форматируем его:
    # mkswap /swapfile
    И добавляем:
    # swapon /swapfile
    После чего можем увидеть своп в списке /proc/swap. Обратная процедура также несложна:
    # swapoff /swapfile


    http://root.blogz.name/tag/swapon/

    понедельник, 21 октября 2013 г.

    OpenWRT — сборка из исходников прошивки

    Написал Денис Юрьев в 05.10.2013
    Во-первых меня уже долгое время напрягал тот факт, что доступно уже давно ядро версии 3.*, а в dd-wrt для моего устройства (Dlink DIR-320) до сих пор ядро версии 2.4.
    Во-вторых вытекает сразу из первого — кривая поддержка ntfs, до сих пор ничего не ясно с поддержкой ext4 ну и еще куча всего странного и непонятного
    В-третьих недавно я Вам рассказал про модуль для ядра Linux — zRam, загорелся таким вот способом несколько решить проблему с нехваткой оперативной памяти в DD-WRT и как думаете что произошло? Конечно же, для DD-WRT этого модуля в принципе не существует.
    UPD 05.10.2013: с момента написания статьи изменилась немного логика первых этапов сборки прошивки. Внес необходимые изменения, исправил недочеты.

    Порывшись в инете я узнал, что в OpenWRT уже есть возможность использовать zRam, собрать прошивку для Dlink DIR320 с ядром третьей версии.
    Возможно просто всё это не документировано касательно DD-WRT, но изобретать велосипед у меня времени особо нет. Воспользуюсь доступной в обилии на многих языках документацией по OpenWRT и соберу себе ту прошивку, которая нужна конкретно мне.

    Сборка OpenWRT

    Для сборки первым делом понадобится операционная система семейства Linux. В моем случае это Ubuntu Linux 13.04 64bit.

    Подготовка к установке — получение исходных кодов OpenWRT и необходимых пакетов

    Итак, приступим.
    1. Устанавливаем Subversion
    denis@denis-pc:~$ sudo apt-get install subversion
    2. Так же в ходе получения исходников пакетов и патчей нам понадобится пакет git
    denis@denis-pc:~$ sudo apt-get install git
    3. Получаем исходники OpenWRT
    Стабильная версия с версией ядра 2.6.*:
    denis@denis-pc:~$ svn co svn://svn.openwrt.org/openwrt/branches/backfire openwrt
    Стабильная версия с версией ядра 3.*
    denis@denis-pc:~$ svn co svn://svn.openwrt.org/openwrt/branches/attitude_adjustment openwrt
    Тестовая версия:
    denis@denis-pc:~$ svn co svn://svn.openwrt.org/openwrt/trunk/ openwrt
    Я выбрал последний вариант, так как там доступен модуль zRam
    Получив исходники, переходим в каталог, где они лежат:
    cd ~/openwrt
    4. Теперь надо еще получить пакеты и патчи, доступные для сборки:
    ./scripts/feeds update -a
    ./scripts/feeds install -a
    5. Доустанавливаем необходимые для сборки пакеты. Для этого проверяем чего еще не хватает:
    make prereq
    Collecting package info: done
    Checking 'working-make'... ok.
    Checking 'case-sensitive-fs'... ok.
    Checking 'getopt'... ok.
    Checking 'fileutils'... ok.
    Checking 'working-gcc'... ok.
    Checking 'working-g++'... failed.
    Checking 'ncurses'... failed.
    Checking 'zlib'... failed.
    Checking 'gawk'... failed.
    Checking 'unzip'... ok.
    Checking 'bzip2'... ok.
    Checking 'perl'... ok.
    Checking '/usr/bin/python2.7'... ok.
    Checking 'wget'... ok.
    Checking 'git'... ok.
    Checking 'gnutar'... ok.
    Checking 'svn'... ok.
    Checking 'gnu-find'... ok.
    Checking 'getopt-extended'... ok.
    Checking 'non-root'... ok.
    В моем случае:
    sudo apt-get install g++ libncurses5-dev zlib1g-dev gawk
    Примечание: очень часто неопытные пользователи при компиляции не могут найти откуда устанавливать пакет ncurses (ncurses-devncurses-devel и т.д.), который требует команда make — решение проблемы в установке пакета libncurses5-dev
    6. Если всё необходимое установлено, то мы увидим следующую картину:
    конфигурирование пакетов и модулей ядра OpenWRT
    Псевдографическое меню конфигурирование пакетов и модулей ядра прошивки OpenWRT
    Примечание: в данном конфигураторе сборки прошивки используются стандартные для linux-систем условные обозначения:
    < > — отключено
    <M> — включено, компиляция модулем. (В случае OpenWRT — отдельным *.ipk — файлов, для доустановки после прошивки)
    <*> — включено, пакет будет «запакован» в прошивку
    Первым делом указываем тип процессора.
    У DLink DIR-320 rev. A1 это Broadcom BCM5354KFBG, он же BCM95354
    Итак открываем TargetSystem и там выбираем Broadcom BCM947xx/953xx.
    Выбор типа процессора при сборке OpenWRT
    Выбираем тип процессора при сборке OpenWRT — Broadcom BCM947xx/953xx
    7. Компиляция пакетов для сборки прошивки.
    Это пункт необязательный, но настаиваю на его выполнении.
    Дело в том, что если вы пропустите сборку пакетов для компиляции прошивки OpenWRT, то она произойдет при первой компиляции самой прошивки.
    Однако потом будет труднее выявить ошибку — что не хочет собираться, инструменты для компиляции или сама прошивка.
    Внимание: чтобы потом не пересобирать эти инструменты — убедитесь, что в предыдущем пункте правильно выбрали тип процессора устройства.
    make tools/install && make toolchain/install
    Команда выполняется достаточно долго, есть время попить чай или прибраться в комнате:-D

    Настройка пакетов и модулей ядра OpenWRT

    Выполним команду:
    make menuconfig
    В итоге в терминале вы увидите снова псевдографическое меню для настройки сборки OpenWRT с уже выбранным процессором.
    Теперь выбираем профиль Target Profile и там выбираем Broadcom SoC, b44 Ethernet, BCM43xx WiFi (b43, default) — это позволит сэкономить пару десятков килобайт в размере нашей будущей прошивки, исключив ненужные драйвера ethernet-контролеров.
    сборка OpenWRT - выбор профиля
    Выбираем профиль для нашего устройства DLink DIR-320 rev. A1/A2 — 
    Broadcom SoC, b44 Ethernet, BCM43xx WiFi (b43, default)
    Теперь подключаем модули ядра.
    Для этого открываем пункт в главном меню Kernel modules
    Выбор модулей для OpenWRT
    Выбираем пункт Kernel Modules в главном меню конфигурации сборки прошивки OpenWRT
    Для начала надо настроить модуль поддержки WiFi нашего устройства — kmod-b43
    Для этого выбираем пункт Wireless Drivers
    Настройка параметров драйверов wireless при сборке openwrt
    Выбор пункта Wireless Drivers
    В открывшемся меню отключаем ненужный в нашем случае модуль kmod-b43legacy и переходим к настройке модуля kmod-b43
    настройка модуля kmod-b43
    Отключаем модуль kmod-b43legancy и переходим к настройке модуля kmod-b43
    Отключим ненужный функционал модуля kmod-b43, чтобы сэкономить несколько сотен килобайт, что позволит включить в прошивку веб-интерфейс.
    Для этого выпоняем следующие действия:
    Значение параметра Core revisions to include выставляем равным 13
    Значение параметра PHY types to include выставляем равным LP
    Отключаем пункты Enable support for PIO transfer modeEnable support for N-PHYs,Enable support for HT-PHYs.
    В итоге должна получиться примерно следующая картина:
    настройка kmod-b43 openwrt
    Настройка модуля kmod-b43 для маршрутизатора DLink DIR-320 rev. A1/A2
    Теперь выбираем раздел USB support для подключения поддержки USB-устройств
    Выбор модулей ядра OpenWRT, отвечающих за поддержку USB-устройств
    Выбираем раздел USB support для выбора модулей ядра OpenWRT, отвечающих за поддержку USB-устройств
    Я буду подключать только внешний USB-диск, для этого я выбираю
    kmod-usb-core — поддержка спецификации USB ядром
    kmod-usb-brcm47xx — поддержка USB-устройств процессором маршрутизатора
    kmod-usb2 — поддержка USB версии 2.0
    kmod-ohci — поддержка USB-хабов
    kmod-usb-storage — поддержка USB-дисков
    Выбираем необходимые нам модули ядра OpenWRT
    Выбираем необходимые нам модули ядра OpenWRT для поддержки USB-носителей
    Подключим нужные нам модули поддержки файловых систем.
    В списке категорий подключаемых модулей ядра выберем раздел Filesystems
    OpenWRT подключение поддержки файловых систем
    Подключение поддержки файловых систем в OpenWRT
    И выберем модуль ядра kmod-fs-ext4. Этот модуль обеспечит поддержку файловых систем ext2ext3 и ext4. Его необходимо выбрать, если планируете устанавливатьSamba-сервер или торрент-клиент Transmission, ну или любые пакеты.
    Так же, если вам критична поддержка других файловых систем, то вы можете выбратьkmod-fs-ntfs для поддержки NTFS или kmod-fs-vfat для поддержки файловой системыFAT32.
    Включение поддержки ext2, ext3, ext4 в OpenWRT
    Включение модуля ядра kmod-fs-ext4 для поддержки файловых систем ext2ext3 и ext4 вOpenWRT
    Теперь настало время подключить поддержку zRam.
    Напомню, этот модуль я хочу использовать для экономии оперативной памяти маршрутизатора путем монтирования в виртуальное сжатое блочное устройство раздела подкачки swap.
    Для автоматизации этого процесса в OpenWRT уже есть готовый скрипт zram-swap. Включив его в состав прошивки вы автоматизируете весь этот процесс.
    Для этого выбираем в главном меню конфигуратора прошивки пункт Base system
    Подключение базовых элементов прошивки OpenWRT
    Выбираем пункт Base system в главном меню конфигурации сборки прошивки OpenWRT
    И в конце открывшегося списка отмечаем для установки zram-swap
    Включаем в состав прошивки OpenWRT поддержку zRam и скрипт для монтирования раздела подкачки в zRam
    Выбираем компонент zram-swap
    Скорее всего это лишь частично решит проблему с нехваткой памяти, так что без раздела подкачки на внешнем устройстве нам не обойтись. Но для этого необходимо будет монтировать его с пониженным приоритетом, чтобы маршрутизатор старался использовать максимально swap в виртуальном устройстве zram
    Для этого нам необходимо не забыть включить подключение раздела подкачки с указанием приоритета.
    Там же в Base system ищем пакет busybox и выбираем его нажатием клавишей Enter:
    OpenWRT - пакет busybox
    Выбор пакета Busybox
    Откроется конфигурация пакета busybox, котором выберем раздел Linux System Utilities
    OpenWRT - linux system utilities
    Выбираем категорию Linux System Utilities
    и в нём включим поддержку swaponoff, а так же приоритет для разделов подкачкиSupport priority option -p
    OpenWRT swapon swapoff
    Включаем поддержку команд swapon и swapoff и приоритет разделов подкачки
    Для удобного монтирования разделов на подключаемых носителях нам так же понадобится пакет block-mount, который можно включить в состав нашей будущей прошивки в всё том же разделе Base system
    Включение пакета block-mount в состав прошивки openwrt
    Включаем пакет block-mount в состав прошивки OpenWRT
    Теперь остается подключить web-интерфейс LuCI. Сразу же скажу, что данный веб-интерфейс намного лучше продуман разработчиками, нежели веб-интерфейс DD-WRT.
    Итак, возвращаемся в главное меню конфигуратора OpenWRT и выбираем пункт LuCI
    Включение web-интерфейса LuCI в прошивку OpenWRT
    Включаем web-интерфейса LuCI в прошивку OpenWRT
    Выбираем первый пункт Collections и в открывшемся меню выбираем luci
    luci в прошивке openwrt
    luci в прошивке openwrtВключаем основную часть web-интерфейса LuCI в состав прошивки OpenWRT
    Если Вы испытываете проблемы с английским языком, или же просто хотите видеть родной язык в Web-интерфейсе, тогда выбирайте пятый пункт в настройках пакета LuCI— Translations
    Там вы сможете выбрать как русский (luci-i18n-russian), так и украинский (luci-i18n-ukrainian) языки
    выбор русской локали в веб-интерфейсе openwrt
    выбор русской локали в веб-интерфейсе openwrtДобавление русской локализации для веб-интерфейса LuCI
    На этом конфигурацию прошивки можно закончить. Выходим из конфигуратора, соглашаемся с предложением сохранить новую конфигурацию.

    Компиляция прошивки OpenWRT

    Приступаем к самой сборке
    make -j4 V=s
    Параметр -j4 указывает во сколько потоков выполнять сборку для ускорения процесса. Укажите на один поток больше, чем количество ядер вашего процессора. Если же у вас процессор с поддержкой Hyper-threading, то укажите равное количеству виртуальных ядер (потоков).
    Готовый файл прошивки будет носить имя openwrt-brcm47xx-squashfs.trx и найдете его в папке bin в каталоге с исходниками прошивки
    Процесс компиляции исходников занимает, в зависимости от вычислительных способностей вашего компьютера, от 20 минут до нескольких часов.

    Устанавливаем на DIR-320 прошивку OpenWRT

    В итоге в каталоге с исходниками появится папка bin/brcm47xx (если вы собирали для маршрутизатора с процессором серии brcm47xx)
    В папке будет куча готовых прошивок. Для DIR-320 файл прошивки называется openwrt-brcm47xx-squashfs.trx
    Если Вы ранее не пользовались альтернативными прошивками и впервые будете прошивать своё устройство, то процесс точно такой же, как установка прошивки DD-WRT на DIR-320.
    Если же у Вас уже установлена прошивка DD-WRT, то можете смело обновляться через веб-интерфейс, только не забудьте указать, что необходимо сбросить настройки на заводские.

    Первый взгляд на OpenWRT

    Как только все установится по адресу 192.168.1.1 будет доступен веб-интерфейсOpenWRT LuCI, который сразу же предложит установить пароль пользователю root. Указываем пароль, и перед нами во всей своей красе предстает веб-интерфейс. Вот небольшой его кусок.
    Веб-интерфейс LuCI OpenWRT
    Главная страница web-интерфейса LuCI прошивки OpenWRT
    Как Вы можете заметить, файл подкачки в zram сразу же подхватился и его объем равен половине памяти устройства. Ну что ж, цель достигнута.

    PS

    Статью я эту писал параллельно с экспериментами не менее недели. Главной проблемой был ограниченный объем энергонезависимой памяти устройства и желание запихать необходимый минимум «инструментов» в те самые 3.69 Mb, доступные для прошивки. Моя прошивка в итоге имеет объем 3.63 Mb. И это еще при оставленной поддержки ipv6, выпиливать которую не так и сложно, но рассмотрю этот момент в следующей статье.
    В следующих статьях рассмотрю возможности новой для меня прошивки и протестирую, дает ли пользу использование zRam.
    Оставайтесь на связи.