пятница, 15 мая 2015 г.

Простой скрипт для управления OpenSSL и создания своего центра сертификации.

Настройка почтового сервера
DOVECOT + POSTFIX + OPENSSL + MySQL

Часть 0. Подготовительная — настройка OpenSSL и генерация сертификатов.

В этой заметке я расскажу о том, как настроить на своем сервере почтовый сервер. Все действия происходят на сервере Ubuntu 10.04 Server, в среде виртуализации под управлением OpenVZ.
За основу я взял статью «SSL HOWTO», и автоматизировал процесс с помощью perl скрипта.
root@poligon:~# lsb_release -d -r -c   
Description: Ubuntu 10.04 LTS
Release: 10.04
Codename: lucid
root@poligon:~# uname -a
Linux poligon 2.6.18-194.8.1.el5.028stab070.2 #1 SMP Tue Jul 6 15:26:41 MSD 2010 i686 GNU/Linux
Я не буду много рассказывать о том, зачем и как пользоваться SSL, частично об этом можно прочитать по ссылке выше. Мною был написан скрипт, который по возможности автоматизирует процесс создания сертификатов на основе этой статьи. Это особенно полезно, если у вас несколько разных доменов, использующих шифрование. Zip-архив со скриптом можно скачать

Файл конфигурации для OpenSSL
 
[ ca ]
 
default_ca       = CA_default     # Название секции, в которой содержатся данные о центре сертификации
 
[ CA_default ]
 
#output_password          = $ENV::KEY_PASS # Поидее, пароль можно тоже передавать через переменные среды, но у меня как то не вышло.
dir       = .       # Рабочая директория
certs   = $dir/certs       # Папка для сертификатов
database  = $dir/index.db    # База Данных для сертификатов
new_certs_dir    = $dir/pemcerts       # Хранилище для pem сертификатов
certificate      = $dir/ca/rootCA.crt      # Путь к корневому сертификату
serial    = $dir/serial.db      # Файл с текущим серийным номером
private_key      = $dir/ca/rootCA.key    # Путь к ключу корневого сертификата
 
default_days     = 3650     # На сколько подписываем сертификаты
default_crl_days = 30      # Время до следующего CRL
default_md       = md5    # Какую md используем
Preserve  = no      # Сохранять ли последовательность DN (Distinguished Name)
policy    = policy_match   # Секция, содержащая политику подписи
 
# For the CA policy
 
[ policy_match ]
countryName  = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName  = supplied
emailAddress  = optional
 
[ req ]
 
default_bits     = 4096 # Сложность шифра
distinguished_name      = req_distinguished_name # Секция,задающая DN получателя сертификата
#output_password         = $ENV::KEY_PASS
 
[ req_distinguished_name ]
 
countryName      = Country Name (2 letter code) # Страна 
countryName_default      = RU    # По умолчанию - Россия
countryName_min   = 2    # 2 минимум
countryName_max   = 2    # 2 максимум
stateOrProvinceName      = State or Province Name (full name) # Страна или штат, полное название 
stateOrProvinceName_default = Russia   # Россия
localityName     = Locality Name (eg, city)  # Расположение (например, город)
localityName_default     = Moscow   # Дефолт сити
organizationName       = Organization Name (eg, company) # Название организации
organizationName_default = ScayTrase Personal  # Поменяйте на свое
organizationalUnitName   = Organizational Unit Name (eg, section) # Подразделение организации
organizationalUnitName_default = Security Team   # Тут тоже поменяйте
commonName       = [Sub]Domain Name  # В commonName надо записать имя домена. Именно его будут сверять при просмотре сертификата, например, браузером.
commonName_default       = $ENV::KEY_COMMON  # Имя домена передаем через переменные среды, через скрипт
commonName_max   = 64    # Максимум 64 символа, у меня длинных доменов не было
emailAddress     = Email Address   # еМыло
emailAddress_default     = pavel.batanov@scaytrase.ru # Поменяйте на свое
emailAddress_max         = 40    # Максимальная длина еМыла
 
[ v3_ca]
 
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer:always
basicConstraints = CA:true
Сам скрипт автоматизации для работы с OpenSSL
#!/usr/bin/perl -w
#########################################
# Павел Батанов (С) 2010 год.  #
# Распространяется как есть, без каких  #
# либо гарантий.   #
# Если у вас есть какие либо пожелания  #
# или предложения по модификации этого  #
# скрипта - пишите    #
# pavel.batanov@scaytrase.ru  #
#########################################
 
($#ARGV > -1) || die 
"Usage:\n
 --rs <DOMAIN> Request and sign domain.crt using rootCA.crt created with --ca option or other way.\n
 --ca   Request and sign rootCA.crt - root certificate for signing other.\n
 --prepare Create neccessary folders.\n
 --usage  Display text about how to use this scripit.\n
";
 
# Подпись сертификата 
if ($ARGV[0] =~ /--rs/)
{
 ($#ARGV > 0) || die "Provide Domain Name"; # Завершить работу, если не был передн домен на подпись
 $domain_name = $ARGV[1]; # Используем второй параметр, как имя домена. Здесь нет проверок и защиты от дурака, только кавычки в вызове функции
 $request_config = "./config.ini"; # Путь к конфигурационному файлу с настройками
 $ENV{'KEY_COMMON'} = $domain_name; # Передача параметра домена в конфигурационный файл через переменные среды ( Посмотрите конф. файл )
 # Команда запроса сертификата на подпись 
 $request = "openssl req -new -nodes -out \"$domain_name.csr\" -keyout \"$domain_name.key\" -config $request_config"; 
 system($request) && die ("\nCertificate $domain_name request failed"); # Попытка выполнить команду
 # Команад подписи запроса с помощью коренвого сертификата
 $sign = "openssl ca -batch -out \"$domain_name.crt\" -config $request_config -infiles \"$domain_name.csr\" ";
 # Попытка подписать запрос
 system($sign) && die ("\nCertificate $domain_name sign failed");
 # В случае успеха перемещаем результаты по папкам
 system("mv $domain_name.crt certs/"); # Сам сертификат, публичная информация, можно передавать другим лицам
 system("mv $domain_name.csr csr/");  # Файл запроса сертификата. Нужен, когда время действия сертификата или корневого сертификата истечет, 
      # и надо будет снова подписать запрос.
 system("mv $domain_name.key keys/"); # Ключ сертификата. Приватная информация, в отличие от самого файла сертификата
 exit(0);
}
 
# Генерация корневого сертификата
if ($ARGV[0] =~ /--ca/)
{
 $ca_config = "./config.ini"; # Конфигурационный файл
 $days = "3650"; # Создаем сертификат на 3650 дней
 $ENV{'KEY_COMMON'} = 'poligon.scaytrase.ru'; # Общее имя для сертификата. Я указал тут имя своего главного домена. Можно указать название организации. Это имя будет отображаться в программах, как организация, подписавшая сертификат.
 # Команда генерации корневого сертификата
 $ca = "openssl req -new -x509 -extensions v3_ca -keyout ca/rootCA.key -out ca/rootCA.crt -days $days -config $ca_config";
 system($ca) && die ("CA request failed"); # Попытка выполнить команду
 exit(0);
}
 
# Создание необходимых файлов и директорий
if ($ARGV[0] =~ /--prepare/)
{
 system ("mkdir ./ca"); # Директория корневого сертификата
 system ("mkdir ./certs"); # Директория готовых сертификатов
 system ("mkdir ./pemcerts"); # Директория для сертификатов в формате pem
 system ("mkdir ./keys"); # Директория для ключей сертификатов
 system ("mkdir ./csr"); # Директория для файлов запроса
 system ("touch index.db"); # Индексный файл. Своеобразная база данных.
 system ("touch serial.db"); # Файл с последним номером
 system ("echo \"01\" > serial.db"); # Первый сертификат будет иметь номер 01
 exit(0);
}
 
# Переподписывание сертификатов
#if ($ARGV[0] =~ /--resign/)
#{
# ($#ARGV > 0) || die "Provide Domain Name"; # Завершить работу, если не был передн домен на подпись
# $domain_name = $ARGV[1]; # Используем второй параметр, как имя домена. Здесь нет проверок и защиты от дурака, только кавычки в вызове функции
# $request_config = "./config.ini"; # Путь к конфигурационному файлу с настройками
# $ENV{'KEY_COMMON'} = $domain_name; # Передача параметра домена в конфигурационный файл через переменные среды ( Посмотрите конф. файл )
 
# $sign = "openssl ca -batch -out \"$domain_name.crt\" -config ./$request_config -infiles \"csr/$domain_name.csr\" ";
 # Попытка подписать запрос
# system($sign) && die ("\nCertificate $domain_name sign failed");
 # В случае успеха перемещаем результаты по папкам
# system("mv $domain_name.crt certs/"); # Сам сертификат, публичная информация, можно передавать другим лицам
# system("mv $domain_name.csr csr/");  # Файл запроса сертификата. Нужен, когда время действия сертификата или корневого сертификата истечет, 
      # и надо будет снова подписать запрос.
# system("mv $domain_name.key keys/"); # Ключ сертификата. Приватная информация, в отличие от самого файла сертификата
# exit(0);
#}
 
# Хелп по вызову
if ($ARGV[0] =~ /--usage/)
{
 print STDOUT "\nЭтот скрипт автоматизирует процесс запроса, генерации и подписи сертификатов на основе самоподписанного корневого сертификата, который можно сгенерировать им же. Используйте вызов --prepare для того чтобы подготовить нужные файлы и папки для генерации, затем --ca для создания главного коренвого сертификата. После этого вы можете создать сертификат для каждого уникального домена (CommonName) с помощью опции --rs <domainname>";
 print STDOUT "\n";
 exit(0);
}
 
die 
"Usage:\n
 --rs <DOMAIN> Request and sign domain.crt using rootCA.crt created with --ca option or other way.\n
 --ca   Request and sign rootCA.crt - root certificate for signing other.\n
 --prepare Create neccessary folders.\n
 --usage  Display text about how to use this scripit.\n
";
Буду рад советам и замечаниям по разделу.
Если кто модифицирует код в сторону повышения качества\функционала — поделитесь обратно, если не жалко.


Автор:

понедельник, 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