Ну собственно subj. Страницы открывает долго и печально.
Помогла установка нативной поддержки mysql
aptitude install libmysqld-dev
gem install mysql
четверг, 22 декабря 2011 г.
воскресенье, 11 декабря 2011 г.
LWP и https
Для реализации защищенного протокола средствами LWP нужен модуль для perl Net::SSLeay
Но он не соберется без libssl-dev
Поэтому ставим
sudo aptitude install libssl-dev
Еще имеен смысл доустановить модуль для perl LWP::Protocol::https
Но он не соберется без libssl-dev
Поэтому ставим
sudo aptitude install libssl-dev
Еще имеен смысл доустановить модуль для perl LWP::Protocol::https
среда, 30 ноября 2011 г.
LDAP, настройка репликация Delta-syncrepl
Репликация Delta-syncrepl
Для понимания вопроса читаем здесь
http://www.openldap.org/doc/admin24/replication.html#Delta-syncrepl
Везде приведен домен для примера dc=example,dc=com - необходимо подставить свои значения
На мастере
** проверяем файла /etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif
на наличие следующих строк
olcDbIndex: entryCSN eq
olcDbIndex: entryUUID eq
если их нет, то создадим
ldapmodify -Y EXTERNAL -H ldapi:///
** создаем нужные подкаталоги
** добавим загрузку необходимых модулей syncprov и accesslog
ldapmodify -Y EXTERNAL -H ldapi:///
** создадим дополнительную базу для accesslog
ldapadd -Y EXTERNAL -H ldapi:///
** добавим syncprov в БД Accesslog.
ldapmodify -Y EXTERNAL -H ldapi:///
** добавим syncprov в основную БД
ldapmodify -Y EXTERNAL -H ldapi:///
** добавим определения accesslog для основной БД
ldapadd -Y EXTERNAL -H ldapi:///
** создаем нового юзера "replicator" для репликации
ldapadd -W -x -D 'cn=admin,dc=example,dc=com' -H ldap://127.0.0.1
где значение userPassword можно получить с помощью команды slappasswd -h {MD5}
** задаем права на чтение replicator
ldapmodify -Y EXTERNAL -H ldapi:///
ldapmodify -Y EXTERNAL -H ldapi:///
На слэйве
** добавим нужный индекс
ldapmodify -Y EXTERNAL -H ldapi:///
** настроим репликацию
_master_server_ = url или ip мастер-сервера LDAP
ldapmodify -Y EXTERNAL -H ldapi:///
Проверка
В простейшем случае делаем изменение на мастере и следом просматриваем на слэйве
ldapsearch -Y EXTERNAL -H ldapi:///
и сравниваем результат измнененного поля.
Для понимания вопроса читаем здесь
http://www.openldap.org/doc/admin24/replication.html#Delta-syncrepl
Везде приведен домен для примера dc=example,dc=com - необходимо подставить свои значения
На мастере
** проверяем файла /etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif
на наличие следующих строк
olcDbIndex: entryCSN eq
olcDbIndex: entryUUID eq
если их нет, то создадим
ldapmodify -Y EXTERNAL -H ldapi:///
dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: entryCSN eq
-
add: olcDbIndex
olcDbIndex: entryUUID eq
** создаем нужные подкаталоги
sudo -u openldap mkdir /var/lib/ldap/accesslog
sudo -u openldap cp /var/lib/ldap/DB_CONFIG /var/lib/ldap/accesslog/
** добавим загрузку необходимых модулей syncprov и accesslog
ldapmodify -Y EXTERNAL -H ldapi:///
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: syncprov
-
add: olcModuleLoad
olcModuleLoad: accesslog
** создадим дополнительную базу для accesslog
ldapadd -Y EXTERNAL -H ldapi:///
dn: olcDatabase={2}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap/accesslog
olcSuffix: cn=accesslog
olcRootDN: cn=admin,dc=example,dc=com
olcDbIndex: default eq
olcDbIndex: entryCSN,objectClass,reqEnd,reqResult,reqStart
** добавим syncprov в БД Accesslog.
ldapmodify -Y EXTERNAL -H ldapi:///
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpNoPresent: TRUE
olcSpReloadHint: TRUE
** добавим syncprov в основную БД
ldapmodify -Y EXTERNAL -H ldapi:///
dn: olcOverlay=syncprov,olcDatabase={1}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpNoPresent: TRUE
** добавим определения accesslog для основной БД
ldapadd -Y EXTERNAL -H ldapi:///
dn: olcOverlay=accesslog,olcDatabase={1}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcAccessLogConfig
olcOverlay: accesslog
olcAccessLogDB: cn=accesslog
olcAccessLogOps: writes
olcAccessLogSuccess: TRUE
# Сканировать БД accesslog каждый день, и удалять записи старше 7 дней
olcAccessLogPurge: 07+00:00 01+00:00
** создаем нового юзера "replicator" для репликации
ldapadd -W -x -D 'cn=admin,dc=example,dc=com' -H ldap://127.0.0.1
dn: cn=replicator, dc=example, dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: replicator
description: sync replication user
userPassword: SECRET
где значение userPassword можно получить с помощью команды slappasswd -h {MD5}
** задаем права на чтение replicator
ldapmodify -Y EXTERNAL -H ldapi:///
dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: to * by dn="cn=replicator,dc=example,dc=com" read
ldapmodify -Y EXTERNAL -H ldapi:///
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: to * by dn="cn=replicator,dc=example,dc=com" read
На слэйве
** добавим нужный индекс
ldapmodify -Y EXTERNAL -H ldapi:///
dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: entryUUID eq
** настроим репликацию
_master_server_ = url или ip мастер-сервера LDAP
ldapmodify -Y EXTERNAL -H ldapi:///
dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=0 provider=ldaps://_master_server_:636 bindmethod=simple binddn="cn=replicator,dc=example,dc=com" credentials=SECRET searchbase="dc=example,dc=com" logbase="cn=accesslog" logfilter="(&(objectClass=auditWriteObject)(reqResult=0))" schemachecking=on type=refreshAndPersist retry="60 +" syncdata=accesslog tls_reqcert=never
-
add: olcUpdateRef
olcUpdateRef: ldap://_master_server_
Проверка
В простейшем случае делаем изменение на мастере и следом просматриваем на слэйве
ldapsearch -Y EXTERNAL -H ldapi:///
и сравниваем результат измнененного поля.
вторник, 29 ноября 2011 г.
Debian, LDAP перенос на другой сервер
На новом (целевом) серевере установим:
aptitude install slapd ldap-utils
ну и если надо, можно поставить так же migrationtools
запросит ввести пароль для админа - в дальнейшем все равно поменяем, можно не запоминать особо
На исходном сервере стопим ldap и снимаем бэкап.
/etc/init.d/slapd stop
slapcat -v -l backup.ldif
/etc/init.d/slapd start
А так же tar все настройки /etc/ldap и /etc/default/slapd
tar -cvjf ldap.tar.bz2 /etc/ldap/ /etc/default/slapd
Все это перетаскиваем на новый (целевой) сервер и идем в обратном порядке
/etc/init.d/slapd stop - стопим сервер
распаковываем и заменяем оригинальный /etc/ldap (проверить права и т.п.)
на /etc/ldap/slapd.d должны быть права у openldap
rm -f /var/lib/ldap/* -- чистим базу
sudo -u openldap slapadd -v -c -l backup.ldif
sudo -u openldap slapindex -v
/etc/init.d/slapd start
aptitude install slapd ldap-utils
ну и если надо, можно поставить так же migrationtools
запросит ввести пароль для админа - в дальнейшем все равно поменяем, можно не запоминать особо
На исходном сервере стопим ldap и снимаем бэкап.
/etc/init.d/slapd stop
slapcat -v -l backup.ldif
/etc/init.d/slapd start
А так же tar все настройки /etc/ldap и /etc/default/slapd
tar -cvjf ldap.tar.bz2 /etc/ldap/ /etc/default/slapd
Все это перетаскиваем на новый (целевой) сервер и идем в обратном порядке
/etc/init.d/slapd stop - стопим сервер
распаковываем и заменяем оригинальный /etc/ldap (проверить права и т.п.)
на /etc/ldap/slapd.d должны быть права у openldap
rm -f /var/lib/ldap/* -- чистим базу
sudo -u openldap slapadd -v -c -l backup.ldif
sudo -u openldap slapindex -v
/etc/init.d/slapd start
понедельник, 28 ноября 2011 г.
Ldap - бэкап и восстановление
Бэкап примерно так:
Восстановление:
/etc/init.d/slapd stop
rm -f /var/lib/ldap/* -- чистим базу
sudo -u openldap slapadd -v -c -l backup.ldif
sudo -u openldap slapindex -v
/etc/init.d/slapd start
/etc/init.d/slapd stop
slapcat -v -l backup.ldif
/etc/init.d/slapd start
Восстановление:
/etc/init.d/slapd stop
rm -f /var/lib/ldap/* -- чистим базу
sudo -u openldap slapadd -v -c -l backup.ldif
sudo -u openldap slapindex -v
/etc/init.d/slapd start
понедельник, 21 ноября 2011 г.
mysqldump и ошибка 1016
Если при выполнении дампа базы с помощью mysqldump получили ошибку вида:
mysqldump: Got error: 1016: Can’t open file: ‘.....’ (errno: 24) when using LOCK TABLES
можно попробовать добавить (увеличить) в /etc/my.cnf
open-files-limit=32000
mysqldump: Got error: 1016: Can’t open file: ‘.....’ (errno: 24) when using LOCK TABLES
можно попробовать добавить (увеличить) в /etc/my.cnf
open-files-limit=32000
суббота, 19 ноября 2011 г.
Mysql и несколько экземпляров на одном сервере.
Потребности в такой установке могут быть весьма различны, а вот этапы настройки вполне одинаковые.
Будем использовать mysqld_multi - программа для управления множеством серверов MySQL.
Для понимания процесса читаем доки.
http://dev.mysql.com/doc/refman/5.0/en/mysqld-multi.html
http://mysql.ru/docs/man/mysqld_multi.html
Создаем каталог для multi mysql, к примеру /var/lib/mysql_multi/
и в нем подкаталоги 01,02...nn
Выставим нужные права на них и собственника.
chmod 755 /var/lib/mysql_multi -R
chown mysql:mysql /var/lib/mysql_multi -R
Создадим в my.cnf нужные разделы (см. ссылки выше) со своими путями к файлам
[mysqld_multi]
mysqld = /usr/local/bin/mysqld_safe
mysqladmin = /usr/local/bin/mysqladmin
user = multi_admin
password = multipass
к примеру для экземпляра #2
[mysqld2]
socket = /var/run/mysqld/mysqld2.sock
port = 3312
pid-file = /var/run/mysqld/mysqld2.pid
datadir = /var/lib/mysql_multi/02
language = /usr/share/mysql/english
user = mysql
** Перед запуском сервера mysql необходимо создать структуру в целевом каталоге:
mysql_install_db --user=mysql --datadir=/var/lib/mysql_multi/02
** Запуск нужного экземпляра сервера:
mysqld_multi start 2
** проверитм подключение:
mysql --socket=/var/run/mysqld/mysqld2.sock
или
mysql --host=127.0.0.1 --port=3312
НЕ ИСПОЛЬЗУЙТЕ "localhost" вместо "127.0.0.1"! Иначе вместо подключения к нужному порту будет задействован сокет по умолчанию. А это будет совсем не тот экземпляр сервера, который вы хотели.
** установим пароль рута:
mysqladmin --socket=/var/run/mysqld/mysqld2.sock -u root password 'new-password'
или
mysqladmin --host=127.0.0.1 --port=3312 -u root password 'new-password'
Так же создадим пользователя mulit_admin и права для выключения сервера mysql для всех экземпляров сервера:
GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';
к примеру так:
echo "GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';" | mysql --host=127.0.0.1 --port=3312 -u root -p'password'
ну и соответственно в разделе my.cnf [mysqld_multi] надо внести те же значения
user = multi_admin
password = multipass
Собственно, пока все. Т.е. теперь запустить экземпляры сервера mysql можно командой
mysqld_multi start 2,4,5
остановить аналогично
mysqld_multi stop 2,4,5
Будем использовать mysqld_multi - программа для управления множеством серверов MySQL.
Для понимания процесса читаем доки.
http://dev.mysql.com/doc/refman/5.0/en/mysqld-multi.html
http://mysql.ru/docs/man/mysqld_multi.html
Создаем каталог для multi mysql, к примеру /var/lib/mysql_multi/
и в нем подкаталоги 01,02...nn
Выставим нужные права на них и собственника.
chmod 755 /var/lib/mysql_multi -R
chown mysql:mysql /var/lib/mysql_multi -R
Создадим в my.cnf нужные разделы (см. ссылки выше) со своими путями к файлам
[mysqld_multi]
mysqld = /usr/local/bin/mysqld_safe
mysqladmin = /usr/local/bin/mysqladmin
user = multi_admin
password = multipass
к примеру для экземпляра #2
[mysqld2]
socket = /var/run/mysqld/mysqld2.sock
port = 3312
pid-file = /var/run/mysqld/mysqld2.pid
datadir = /var/lib/mysql_multi/02
language = /usr/share/mysql/english
user = mysql
** Перед запуском сервера mysql необходимо создать структуру в целевом каталоге:
mysql_install_db --user=mysql --datadir=/var/lib/mysql_multi/02
** Запуск нужного экземпляра сервера:
mysqld_multi start 2
** проверитм подключение:
mysql --socket=/var/run/mysqld/mysqld2.sock
или
mysql --host=127.0.0.1 --port=3312
НЕ ИСПОЛЬЗУЙТЕ "localhost" вместо "127.0.0.1"! Иначе вместо подключения к нужному порту будет задействован сокет по умолчанию. А это будет совсем не тот экземпляр сервера, который вы хотели.
** установим пароль рута:
mysqladmin --socket=/var/run/mysqld/mysqld2.sock -u root password 'new-password'
или
mysqladmin --host=127.0.0.1 --port=3312 -u root password 'new-password'
Так же создадим пользователя mulit_admin и права для выключения сервера mysql для всех экземпляров сервера:
GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';
к примеру так:
echo "GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';" | mysql --host=127.0.0.1 --port=3312 -u root -p'password'
ну и соответственно в разделе my.cnf [mysqld_multi] надо внести те же значения
user = multi_admin
password = multipass
Собственно, пока все. Т.е. теперь запустить экземпляры сервера mysql можно командой
mysqld_multi start 2,4,5
остановить аналогично
mysqld_multi stop 2,4,5
среда, 16 ноября 2011 г.
Bacula и резервное копирование
Это пока эскиз статьи.
Нужны как минимум три компонента на бэкап-сервере director, sd, fd.
aptitude install bacula-common
aptitude install bacula-director-common
aptitude install bacula-director-mysql
на этом этапе будет создана настройка mysql базы для bacula
aptitude install bacula-client
aptitude install bacula-server
aptitude install bacula-sd - storage-демн
aptitude install bacula-sd-mysql
На backup сервере в /usr/share/bacula-director лежат скрипты для задания привилегий, создания базы и создания таблиц в ней (если автоматом при установке пакета bacula-director-common не создалось все, что нужно)
grant_mysql_privileges
create_mysql_database
make_mysql_tables
=============================================================
На клиенте достаточно установить bacula-fd
и довести конфиг /etc/bacula/bacula-fd.conf до вида:
Затем /etc/init.d/bacula-fd restart
Нужны как минимум три компонента на бэкап-сервере director, sd, fd.
aptitude install bacula-common
aptitude install bacula-director-common
aptitude install bacula-director-mysql
на этом этапе будет создана настройка mysql базы для bacula
aptitude install bacula-client
aptitude install bacula-server
aptitude install bacula-sd - storage-демн
aptitude install bacula-sd-mysql
На backup сервере в /usr/share/bacula-director лежат скрипты для задания привилегий, создания базы и создания таблиц в ней (если автоматом при установке пакета bacula-director-common не создалось все, что нужно)
grant_mysql_privileges
create_mysql_database
make_mysql_tables
=============================================================
На клиенте достаточно установить bacula-fd
и довести конфиг /etc/bacula/bacula-fd.conf до вида:
Director {
Name = backup-dir
Password = "..."
}
Director {
Name = backup-mon
Password = "..."
Monitor = yes
}
FileDaemon {
Name = _domain_-fd
FDport = 9102
WorkingDirectory = /var/lib/bacula
Pid Directory = /var/run/bacula
Maximum Concurrent Jobs = 20
}
Messages {
Name = Standard
director = backup-dir = all, !skipped, !restored
}
Затем /etc/init.d/bacula-fd restart
суббота, 12 ноября 2011 г.
Debian и кодеки
Не хватает в системе кодеков divx и т.п.
Для начала добавим строки в /etc/apt/sources.list
deb http://www.debian-multimedia.org/ stable main non-free
deb-src http://www.debian-multimedia.org/ stable main non-free
затем
aptitude update
aptitude install w32codecs
Для начала добавим строки в /etc/apt/sources.list
deb http://www.debian-multimedia.org/ stable main non-free
deb-src http://www.debian-multimedia.org/ stable main non-free
затем
aptitude update
aptitude install w32codecs
Debian, pcmanfm и отстутсвие иконок
Хороший файл-менеджер, но иконки нужно отдельно устанавливать и немного настраивать.
aptitude install tango-icon-theme
затем редактируем файл ~/.gtkrc-2.0 или /etc/gtk-2.0/gtkrc и добавляем в него строку:
gtk-icon-theme-name = "Tango"
на этом все.
aptitude install tango-icon-theme
затем редактируем файл ~/.gtkrc-2.0 или /etc/gtk-2.0/gtkrc и добавляем в него строку:
gtk-icon-theme-name = "Tango"
на этом все.
пятница, 11 ноября 2011 г.
Доступ к интернету через VPN тунель
Докатились таки власти до попытки контроля трафика и контента.
Поднять туннель не слишком сложно. Нужен сервер за границей, пойдет и полудохлый VPS - желательно с неограниченным трафиком (ну либо достаточно большим).
Прочитать можно тут настройка OpenVPN
Итак подняли - в результате на сервере где-то в иностранном интернете появится дополнительный сетевой интерфейс tun0 с ip 10.8.0.1.
У Вас на компьютере будет что-то вроде tun0 с ip 10.8.0.5
На сервере
по минимуму (лучше конечно нормально настроить файрвол):
* включаем форвардинг
echo "1" > /proc/sys/net/ipv4/ip_forward
* настраиваем SNAT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 0/0 -j SNAT --to-source _ip_сервера_
Теперь сервер будет перенаправлять запросы из подсети 10.8.0.0 на внешние сети и при получении ответа заворачивать обратно в туннель.
На клиенте
* маршрут на ваш сервер через шлюз провайдера
route add -host _ip_сервера_ gw _ip_шлюза_провайдера_ eth0
(вместо eth0 может быть ppp0 и т.п.)
* маршрут на подсеть туннеля
route add -net 10.8.0.0 netmask 255.255.255.0 dev tun0
* убиваем маршрут по умолчанию от провайдера
route del default gw _ip_шлюза_провайдера_ eth0
(вместо eth0 может быть ppp0 и т.п.)
* устанавливаем шлюз по умолчанию на наш туннель
route add default gw 10.8.0.1 tun0
Естественно, все это лучше завернуть в скрипты. Да и сами конфиги туннеля настроить так, что бы они выдавали часть настроек сами.
Поднять туннель не слишком сложно. Нужен сервер за границей, пойдет и полудохлый VPS - желательно с неограниченным трафиком (ну либо достаточно большим).
Прочитать можно тут настройка OpenVPN
Итак подняли - в результате на сервере где-то в иностранном интернете появится дополнительный сетевой интерфейс tun0 с ip 10.8.0.1.
У Вас на компьютере будет что-то вроде tun0 с ip 10.8.0.5
На сервере
по минимуму (лучше конечно нормально настроить файрвол):
* включаем форвардинг
echo "1" > /proc/sys/net/ipv4/ip_forward
* настраиваем SNAT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 0/0 -j SNAT --to-source _ip_сервера_
Теперь сервер будет перенаправлять запросы из подсети 10.8.0.0 на внешние сети и при получении ответа заворачивать обратно в туннель.
На клиенте
* маршрут на ваш сервер через шлюз провайдера
route add -host _ip_сервера_ gw _ip_шлюза_провайдера_ eth0
(вместо eth0 может быть ppp0 и т.п.)
* маршрут на подсеть туннеля
route add -net 10.8.0.0 netmask 255.255.255.0 dev tun0
* убиваем маршрут по умолчанию от провайдера
route del default gw _ip_шлюза_провайдера_ eth0
(вместо eth0 может быть ppp0 и т.п.)
* устанавливаем шлюз по умолчанию на наш туннель
route add default gw 10.8.0.1 tun0
Естественно, все это лучше завернуть в скрипты. Да и сами конфиги туннеля настроить так, что бы они выдавали часть настроек сами.
Exim4 и ошибка при установке - Не удалось выполнить оперативную настройку 'exim4-daemon-light'
Дебиан не перестает удивлять. При попытке установить exim4 вывалиось что-то вроде
Не удалось выполнить оперативную настройку 'exim4-daemon-light'
(could not perform immediate configuration on 'exim4-daemon-light')
Все решение заключается в порядке установки
вначале ставим
apt-get install exim4-base exim4-config
затем
apt-get install exim4-daemon-light
Оригинально, однако работает контроль пакетов. Куда уж старой доброй Slackware до таких высот.
Не удалось выполнить оперативную настройку 'exim4-daemon-light'
(could not perform immediate configuration on 'exim4-daemon-light')
Все решение заключается в порядке установки
вначале ставим
apt-get install exim4-base exim4-config
затем
apt-get install exim4-daemon-light
Оригинально, однако работает контроль пакетов. Куда уж старой доброй Slackware до таких высот.
четверг, 10 ноября 2011 г.
Настройка OpenVPN
Настройка сервера.
Установим
aptitude install openvpn
Копируем файлики для генерации ключей и немного поднастроим:
cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /etc/openvpn/easy-rsa
если нужно, то редактируем строки в конце файла /etc/openvpn/easy-rsa/vars (страна, город и т.д.)
mkdir /etc/openvpn/easy-rsa/keys
touch /etc/openvpn/easy-rsa/keys/index.txt
echo "00">/etc/openvpn/easy-rsa/keys/serial
cd /etc/openvpn/easy-rsa
source ./vars
chmod 700 ./vars
Создаём личный ключ и сертификат центра сертификации, на основе которых будут сертифицироваться прочие выдаваемые ключи:
./build-ca
Генерация ключей происходит в папке /etc/openvpn/easy-rsa. Перед каждым сеансом генерации ключей не забываем загружать переменные:
source ./vars
Генерируем ключ сервера:
./build-key-server server
Генерация сертификата и личного ключа клиента
source ./vars
./build-key computer2
Создаём параметр DH (Алгоритм Диффи — Хеллмана):
./build-dh
Генерируем TLS ключ:
openvpn --genkey --secret /etc/openvpn/easy-rsa/keys/ta.key
Настройка openvpn сервера
делаем отдельную папку keys в папке openvpn и копируем туда необходимые для работы сервера файлы:
mkdir /etc/openvpn/keys
cd /etc/openvpn/easy-rsa/keys/
cp ca.crt ca.key /etc/openvpn/keys/
mv server.crt server.key dh1024.pem ta.key /etc/openvpn/keys/
Запросы на генерацию сертификата можно удалить:
rm server.csr
Копируем примерный файл настройки сервера openvpn (а можно просто создать):
gzip -cd /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz >> /etc/openvpn/server.conf
Примерное содержание server.cong
# адрес на котором слушать входящие запросы.
# закоментированно, значит на всех
;local a.b.c.d
port 1194
proto udp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
tls-auth keys/ta.key 0
cipher BF-CBC
comp-lzo
max-clients 30
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3
Собственно говоря, на этом и все. Можно настроить выдачу шлюза по умолчанию и пр. редактируя server.conf
Есть вероятность, что tun на сервере не запущен
modprobe tun
Запускаем /etc/init.d/openvpn start и смотрим в лог /var/log/openvpn-status.log все ли нормально.
Проверяем вывод ifconfig. Должен появиться дополнительный интерфейс tun0 со своим ip
================================
Настройка клиента
Установим
aptitude install openvpn
Скопируем в папку с секьюрными правами файлы ca.crt computer2.key computer2.crt
к примеру в /etc/openvpn/keys/
затем в /etc/openvpn создадим конфиг _domain_.conf (удобно хранить названия домена, конфигов может быть несколько на разные сервера)
За основу можно взять /usr/share/doc/openvpn/examples/sample-config-files/client.conf
client
remote _domain_ 1194
proto udp
ca /etc/openvpn/keys/ca.crt
key /etc/openvpn/keys/computer2.key
cert /etc/openvpn/keys/computer2.crt
daemon
dev tun
Есть вероятность, что tun на клиенте не запущен
modprobe tun
Запуск клиента производится командой вида
openvpn --config /etc/openvpn/_domain_.conf
Проверяем вывод ifconfig. Должен появиться дополнительный интерфейс tun0 со своим ip
Установим
aptitude install openvpn
Копируем файлики для генерации ключей и немного поднастроим:
cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /etc/openvpn/easy-rsa
если нужно, то редактируем строки в конце файла /etc/openvpn/easy-rsa/vars (страна, город и т.д.)
mkdir /etc/openvpn/easy-rsa/keys
touch /etc/openvpn/easy-rsa/keys/index.txt
echo "00">/etc/openvpn/easy-rsa/keys/serial
cd /etc/openvpn/easy-rsa
source ./vars
chmod 700 ./vars
Создаём личный ключ и сертификат центра сертификации, на основе которых будут сертифицироваться прочие выдаваемые ключи:
./build-ca
Генерация ключей происходит в папке /etc/openvpn/easy-rsa. Перед каждым сеансом генерации ключей не забываем загружать переменные:
source ./vars
Генерируем ключ сервера:
./build-key-server server
Генерация сертификата и личного ключа клиента
source ./vars
./build-key computer2
Создаём параметр DH (Алгоритм Диффи — Хеллмана):
./build-dh
Генерируем TLS ключ:
openvpn --genkey --secret /etc/openvpn/easy-rsa/keys/ta.key
Настройка openvpn сервера
делаем отдельную папку keys в папке openvpn и копируем туда необходимые для работы сервера файлы:
mkdir /etc/openvpn/keys
cd /etc/openvpn/easy-rsa/keys/
cp ca.crt ca.key /etc/openvpn/keys/
mv server.crt server.key dh1024.pem ta.key /etc/openvpn/keys/
Запросы на генерацию сертификата можно удалить:
rm server.csr
Копируем примерный файл настройки сервера openvpn (а можно просто создать):
gzip -cd /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz >> /etc/openvpn/server.conf
Примерное содержание server.cong
# адрес на котором слушать входящие запросы.
# закоментированно, значит на всех
;local a.b.c.d
port 1194
proto udp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
tls-auth keys/ta.key 0
cipher BF-CBC
comp-lzo
max-clients 30
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3
Собственно говоря, на этом и все. Можно настроить выдачу шлюза по умолчанию и пр. редактируя server.conf
Есть вероятность, что tun на сервере не запущен
modprobe tun
Запускаем /etc/init.d/openvpn start и смотрим в лог /var/log/openvpn-status.log все ли нормально.
Проверяем вывод ifconfig. Должен появиться дополнительный интерфейс tun0 со своим ip
================================
Настройка клиента
Установим
aptitude install openvpn
Скопируем в папку с секьюрными правами файлы ca.crt computer2.key computer2.crt
к примеру в /etc/openvpn/keys/
затем в /etc/openvpn создадим конфиг _domain_.conf (удобно хранить названия домена, конфигов может быть несколько на разные сервера)
За основу можно взять /usr/share/doc/openvpn/examples/sample-config-files/client.conf
client
remote _domain_ 1194
proto udp
ca /etc/openvpn/keys/ca.crt
key /etc/openvpn/keys/computer2.key
cert /etc/openvpn/keys/computer2.crt
daemon
dev tun
Есть вероятность, что tun на клиенте не запущен
modprobe tun
Запуск клиента производится командой вида
openvpn --config /etc/openvpn/_domain_.conf
Проверяем вывод ifconfig. Должен появиться дополнительный интерфейс tun0 со своим ip
среда, 2 ноября 2011 г.
Тест "скорости" канала интернета.
Если надо потестить скорость инета можно воспользоваться http://www.thinkbroadband.com/download.html
Доступны к скачке файлы от 5M до 1G и канал у них довольно широкий
http://download.thinkbroadband.com/1GB.zip
http://download.thinkbroadband.com/512MB.zip
http://download.thinkbroadband.com/200MB.zip
http://download.thinkbroadband.com/100MB.zip
http://download.thinkbroadband.com/50MB.zip
http://download.thinkbroadband.com/20MB.zip
http://download.thinkbroadband.com/10MB.zip
http://download.thinkbroadband.com/5MB.zip
Доступны к скачке файлы от 5M до 1G и канал у них довольно широкий
http://download.thinkbroadband.com/1GB.zip
http://download.thinkbroadband.com/512MB.zip
http://download.thinkbroadband.com/200MB.zip
http://download.thinkbroadband.com/100MB.zip
http://download.thinkbroadband.com/50MB.zip
http://download.thinkbroadband.com/20MB.zip
http://download.thinkbroadband.com/10MB.zip
http://download.thinkbroadband.com/5MB.zip
четверг, 20 октября 2011 г.
Redmine и удаление плагинов - дубль 2
Сначала все бэкапим:
mysqldump -u -p > ~/redmine_`date +%d-%m-%y`.sql
tar -cPzf ~/redmine-`date +%d-%m-%y`.tgz _rails_root_
Переходим в директорию, где у нас установлен Redmine (RAILS_ROOT) (/usr/share/redmine) и выполняем следующие команды:
rake db:migrate:plugin NAME=_plugin_name_ VERSION=0 RAILS_ENV=production
ruby script/plugin remove _plugin_name_
После второй команды появится сообщение:
svn: '_rails_root_/vendor/plugins' is not a working copy
это не важно.
Перезапускаем Apache
mysqldump -u
tar -cPzf ~/redmine-`date +%d-%m-%y`.tgz _rails_root_
Переходим в директорию, где у нас установлен Redmine (RAILS_ROOT) (/usr/share/redmine) и выполняем следующие команды:
rake db:migrate:plugin NAME=_plugin_name_ VERSION=0 RAILS_ENV=production
ruby script/plugin remove _plugin_name_
После второй команды появится сообщение:
svn: '_rails_root_/vendor/plugins' is not a working copy
это не важно.
Перезапускаем Apache
вторник, 18 октября 2011 г.
Debian и установка Graphite
Graphite
sudo aptitude install python-whisper
sudo aptitude install python-django
sudo aptitude install python-django-tagging
sudo aptitude install python-twisted
sudo aptitude install python-cairo
aptitude install python-simplejson
* Качаем исходники:
https://launchpad.net/graphite
wget http://launchpad.net/graphite/0.9/0.9.9/+download/whisper-0.9.9.tar.gz
wget http://launchpad.net/graphite/0.9/0.9.9/+download/carbon-0.9.9.tar.gz
wget http://launchpad.net/graphite/0.9/0.9.9/+download/graphite-web-0.9.9.tar.gz
* распаковываем и инсталлируем каждый пакет
sudo python2.6 setup.py install
создаст каталог /opt/graphite/ и в него установит.
В /opt/graphite/conf копируем:
cp carbon.conf.example carbon.conf
cp storage-schemas.conf.example storage-schemas.conf
подредактировать storage-schemas.conf
cp graphite.wsgi.example graphite.wsgi
* Создаем базу и заоодно root для django
cd /opt/graphite/webapp/graphite
sudo python manage.py syncdb
* Меняем права на базу, что бы апач мог получить доступ
sudo chown -R www-data:www-data /opt/graphite/storage/
* для апача модуль python
sudo aptitude install libapache2-mod-python
sudo aptitude install libapache2-mod-wsgi
* копируем из исходников пример настройки апача examples/example-graphite-vhost.conf
а в нем видим такую строку WSGISocketPrefix /etc/httpd/wsgi/
а у нас вообще нет каталогоа httpd - а есть apache2 (Debian) - делаем
mkdir /etc/apache2/wsgi
и меняем в конфиге на WSGISocketPrefix /etc/apache2/wsgi/
* собственно перезапускаем апач и смотрим, что получилось.
* для отладки включим вывод в лог debug
cd /opt/graphite/webapp/graphite
cp local_settings.py.example local_settings.py
находим и раскомментируем
DEBUG = True
* Запускаем Carbon (сборщик данных)
cd /opt/graphite/
./bin/carbon-cache.py start
sudo aptitude install python-whisper
sudo aptitude install python-django
sudo aptitude install python-django-tagging
sudo aptitude install python-twisted
sudo aptitude install python-cairo
aptitude install python-simplejson
* Качаем исходники:
https://launchpad.net/graphite
wget http://launchpad.net/graphite/0.9/0.9.9/+download/whisper-0.9.9.tar.gz
wget http://launchpad.net/graphite/0.9/0.9.9/+download/carbon-0.9.9.tar.gz
wget http://launchpad.net/graphite/0.9/0.9.9/+download/graphite-web-0.9.9.tar.gz
* распаковываем и инсталлируем каждый пакет
sudo python2.6 setup.py install
создаст каталог /opt/graphite/ и в него установит.
В /opt/graphite/conf копируем:
cp carbon.conf.example carbon.conf
cp storage-schemas.conf.example storage-schemas.conf
подредактировать storage-schemas.conf
cp graphite.wsgi.example graphite.wsgi
* Создаем базу и заоодно root для django
cd /opt/graphite/webapp/graphite
sudo python manage.py syncdb
* Меняем права на базу, что бы апач мог получить доступ
sudo chown -R www-data:www-data /opt/graphite/storage/
* для апача модуль python
sudo aptitude install libapache2-mod-python
sudo aptitude install libapache2-mod-wsgi
* копируем из исходников пример настройки апача examples/example-graphite-vhost.conf
а в нем видим такую строку WSGISocketPrefix /etc/httpd/wsgi/
а у нас вообще нет каталогоа httpd - а есть apache2 (Debian) - делаем
mkdir /etc/apache2/wsgi
и меняем в конфиге на WSGISocketPrefix /etc/apache2/wsgi/
* собственно перезапускаем апач и смотрим, что получилось.
* для отладки включим вывод в лог debug
cd /opt/graphite/webapp/graphite
cp local_settings.py.example local_settings.py
находим и раскомментируем
DEBUG = True
* Запускаем Carbon (сборщик данных)
cd /opt/graphite/
./bin/carbon-cache.py start
среда, 5 октября 2011 г.
1Wire и OWServer
OWServer - вроде драйвера между 1Wire и программами.
OWFS - может монтировать значения девайсов шины в виде файловой системы, вроде /sys /proc
Сайт проекта http://owfs.org
Для сборки потребовался еще libfuse-dev
И вот что самое тупое в owserver
При использовании простого адаптера для последовательного порта, она почти 2 минуты пытается найти на нем адаптер на DS2480. И лишь после этого согласно инструкции "переключается" на работу с простейшим адаптером. Поэтому или имейте терпение, или патчите код
module/owlib/src/ow_ds9097U.c
на предмет уменьшения значения повторов #define DS9097U_INIT_CYCLES 10
так, поставив 1 - получим ДВЕ проверки ~ около 10 секунд.
OWFS - может монтировать значения девайсов шины в виде файловой системы, вроде /sys /proc
Сайт проекта http://owfs.org
Для сборки потребовался еще libfuse-dev
И вот что самое тупое в owserver
При использовании простого адаптера для последовательного порта, она почти 2 минуты пытается найти на нем адаптер на DS2480. И лишь после этого согласно инструкции "переключается" на работу с простейшим адаптером. Поэтому или имейте терпение, или патчите код
module/owlib/src/ow_ds9097U.c
на предмет уменьшения значения повторов #define DS9097U_INIT_CYCLES 10
так, поставив 1 - получим ДВЕ проверки ~ около 10 секунд.
1Wire и DS1820
Есть простейший адаптер на FT232R и одном транзисторе для 1Wire. Нужно получить температуру.
Ставим пакет digitemp
Запускаем
digitemp_DS9097 -i -s /dev/ttyUSB0
на выходе что-то вроде:
Turning off all DS2409 Couplers
.
Searching the 1-Wire LAN
10BBEC6C010800A0 : DS1820/DS18S20/DS1920 Temperature Sensor
ROM #0 : 10BBEC6C010800A0
Wrote .digitemprc
Значит нашли нужный адаптер и термометр.
Теперь берем с него температуру:
digitemp_DS9097 -a -s /dev/ttyUSB
в выводе нас интересует строчка:
Oct 05 14:40:28 Sensor 0 C: 21.25 F: 70.25
можно "отсеч" лишний вывод командой вида
digitemp_DS9097 -a -s /dev/ttyUSB0 -q -o "%.1C"
выведет цифры температуры по Цельсию.
если датчиков несколько, добавляем параметр -t 0 (0-n) номер датчика
Ставим пакет digitemp
Запускаем
digitemp_DS9097 -i -s /dev/ttyUSB0
на выходе что-то вроде:
Turning off all DS2409 Couplers
.
Searching the 1-Wire LAN
10BBEC6C010800A0 : DS1820/DS18S20/DS1920 Temperature Sensor
ROM #0 : 10BBEC6C010800A0
Wrote .digitemprc
Значит нашли нужный адаптер и термометр.
Теперь берем с него температуру:
digitemp_DS9097 -a -s /dev/ttyUSB
в выводе нас интересует строчка:
Oct 05 14:40:28 Sensor 0 C: 21.25 F: 70.25
можно "отсеч" лишний вывод командой вида
digitemp_DS9097 -a -s /dev/ttyUSB0 -q -o "%.1C"
выведет цифры температуры по Цельсию.
если датчиков несколько, добавляем параметр -t 0 (0-n) номер датчика
четверг, 29 сентября 2011 г.
Хостинг в Европе.
Сохраню на память, может пригодится.
https://inceptionhosting.com/
xen виртуализация, адекватный саппорт. 14 дней возврат денег. Частые промо-акции и скидки.
Понравилось!
http://www.cinfu.com/
Пока все хорошо. быстро организовали доступ. Скидка для нового пользователя 50%!
www.rapidovps.com
Самый тупой сапорт. Отвечают иногда через 5-7 дней. Не делают то, что нужно. Был на сервере сбой и потребовалась переустановка ОС (подозреваю, липовая), они тихонько подсунули сервер ступенькой ниже. Памяти в два раза меньше и хард меньший в два раза. В общем, ну их. Не понравилось.
https://inceptionhosting.com/
xen виртуализация, адекватный саппорт. 14 дней возврат денег. Частые промо-акции и скидки.
Понравилось!
http://www.cinfu.com/
Пока все хорошо. быстро организовали доступ. Скидка для нового пользователя 50%!
www.rapidovps.com
Самый тупой сапорт. Отвечают иногда через 5-7 дней. Не делают то, что нужно. Был на сервере сбой и потребовалась переустановка ОС (подозреваю, липовая), они тихонько подсунули сервер ступенькой ниже. Памяти в два раза меньше и хард меньший в два раза. В общем, ну их. Не понравилось.
вторник, 27 сентября 2011 г.
Thunderbird и ошибка с библиотекой libdbus-glib-1.so.2
Как обычно трабла в версии библиотек - 32 против 64 бит.
При запуске Thunderbird выдало что-то вроде:
/thunderbird-bin: error while loading shared libraries: libdbus-glib-1.so.2: cannot open shared object file: No such file or directory
Одно из решений, установить ia32-libs-gtk
Второе, если у Вас ОС 64бита, пойти http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/ выбрать там нужную версию и linux-x86_64/ с правильным языком и установить.
При запуске Thunderbird выдало что-то вроде:
/thunderbird-bin: error while loading shared libraries: libdbus-glib-1.so.2: cannot open shared object file: No such file or directory
Одно из решений, установить ia32-libs-gtk
Второе, если у Вас ОС 64бита, пойти http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/ выбрать там нужную версию и linux-x86_64/ с правильным языком и установить.
понедельник, 26 сентября 2011 г.
Apache и предупреждение при рестарте
На свежем debin 6 при рестарте апача получили предупреждение:
Restarting web server: apache2apache2: Could not reliably determine the server's fully qualified domain name, using --ip-- for ServerName
... waiting apache2: Could not reliably determine the server's fully qualified domain name, using --ip-- for ServerName
Решается довольно просто - в файл /etc/apache2/apache2.conf добавляем строку
ServerName *
или вместо звездочки ваш сервер.
Restarting web server: apache2apache2: Could not reliably determine the server's fully qualified domain name, using --ip-- for ServerName
... waiting apache2: Could not reliably determine the server's fully qualified domain name, using --ip-- for ServerName
Решается довольно просто - в файл /etc/apache2/apache2.conf добавляем строку
ServerName *
или вместо звездочки ваш сервер.
воскресенье, 18 сентября 2011 г.
Debian и nagios
Проблема известная, но повторяется раз от раза при каждой установке.
Error: Could not stat() command file '/var/lib/nagios3/rw/nagios.cmd'!
Выполняем:
sudo /etc/init.d/nagios3 stop
sudo dpkg-statoverride --update --add nagios www-data 2710 /var/lib/nagios3/rw
sudo dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3
sudo /etc/init.d/nagios3 start
Error: Could not stat() command file '/var/lib/nagios3/rw/nagios.cmd'!
Выполняем:
sudo /etc/init.d/nagios3 stop
sudo dpkg-statoverride --update --add nagios www-data 2710 /var/lib/nagios3/rw
sudo dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3
sudo /etc/init.d/nagios3 start
суббота, 17 сентября 2011 г.
Postfixadmin, exim и dovecot
Итак:
В postfixadmin не получалось добавить алиас для отправки копии письма на другой адрес, своего рода forward. Выдавало что-то вроде
This email address already exists, please choose a different one!
Как оказалось, alias надо добавлять вовсе не "глобально". Для начала надо было изменить в конфиге config.inc.php два параметра:
$CONF['alias_control'] = 'YES';
$CONF['alias_control_admin'] = 'YES';
после этого в списке Mailboxes появиться ссылка Alias, пройдя по которой и можно задать списко ящиков, каждый в новую строку. Они затем отобразятся в поле To = "Mailbox и ваш доп.ящик"
================================
Теперь добавим авторизацию для dovecot.
В /etc/dovecot/dovecot.conf в секции "auth default"
Пароли будем забирать из базы postfixadmin - имя базы, юзер = mail
# SQL database
passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
а настройки юзеров будут статические.
userdb static {
args = uid=vmail gid=vmail home=/home/vmail/%u
}
т.е. папки юзеров будут создаваться от имени vmail в /home/vmail/юзер
socket listen {
client { # демон авторизации, его будет использовать exim
path = /var/run/dovecot/auth-client
mode = 0666
}
master { #для локальной досавки - LDA
path = /var/run/dovecot/auth-master
mode = 0666
}
}
И сама локальныя доставка, т.е. exim будет почту передавать dovecot, что бы тот распихал ее по реальным папкам в ящиках.
protocol lda {
postmaster_address = postmaster@example.com
auth_socket_path = /var/run/dovecot/auth-master
}
В /etc/dovecot/dovecot-sql.conf
connect = host=localhost dbname=mail user=mail password=mailnew
default_pass_scheme = plain <- пароль в открытом виде, на боевой системе не допустимо!
password_query = SELECT `username` as `user`, `password` FROM `mailbox` WHERE `username` = '%n@%d' AND `active`='1'
Теперь про exim
Авторизация с использованием dovecot
Создаем /etc/exim4/conf.d/auth/05_dovecot_login
dovecot_login:
driver = dovecot
public_name = LOGIN
server_socket = /var/run/dovecot/auth-client
# setting server_set_id might break several headers in mails sent by authenticated smtp. So be careful.
server_set_id = $auth1
dovecot_plain:
driver = dovecot
public_name = PLAIN
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth1
Настройка подключения к базе mysql - понадобиться для форвардинга
добавим в /etc/exim4/conf.d/main/02_exim4-config_options
hide mysql_servers = localhost/mail/mail/mailnewzulu145:/etc/exim4/conf.d/main
настроим, что локальную доставку LDA
редактируем /etc/exim4/conf.d/router/900_exim4-config_local_user (хотя можно сделать и новый)
local_user:
debug_print = "R: local_user for $local_part@$domain"
driver = accept
domains = +local_domains
transport = dovecot_virtual_delivery
cannot_route_message = Unknown user
настроим траспорт
создадим /etc/exim4/conf.d//transport/05-exim4-config_transport_dovecot
dovecot_virtual_delivery:
driver = pipe
debug_print = "T: dovecot_virtual_delivery for $local_part@$domain"
command = /usr/lib/dovecot/deliver -d $local_part@$domain -f $sender_address
# v1.1+: command = /usr/local/libexec/dovecot/deliver -d $local_part@$domain -f $sender_address -a $original_local_part@$original_domain
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
log_output
user = vmail
temp_errors = 64 : 69 : 70: 71 : 72 : 73 : 74 : 75 : 78
Теперь forward - переадресацию - что бы информация бралась из базы postfixadmin
приведем /etc/exim4/conf.d/router/600_exim4-config_userforward к виду
userforward:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT goto FROM alias \
WHERE address='${local_part}@${domain}' AND domain='${domain}'}}
В postfixadmin не получалось добавить алиас для отправки копии письма на другой адрес, своего рода forward. Выдавало что-то вроде
This email address already exists, please choose a different one!
Как оказалось, alias надо добавлять вовсе не "глобально". Для начала надо было изменить в конфиге config.inc.php два параметра:
$CONF['alias_control'] = 'YES';
$CONF['alias_control_admin'] = 'YES';
после этого в списке Mailboxes появиться ссылка Alias, пройдя по которой и можно задать списко ящиков, каждый в новую строку. Они затем отобразятся в поле To = "Mailbox и ваш доп.ящик"
================================
Теперь добавим авторизацию для dovecot.
В /etc/dovecot/dovecot.conf в секции "auth default"
Пароли будем забирать из базы postfixadmin - имя базы, юзер = mail
# SQL database
passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
а настройки юзеров будут статические.
userdb static {
args = uid=vmail gid=vmail home=/home/vmail/%u
}
т.е. папки юзеров будут создаваться от имени vmail в /home/vmail/юзер
socket listen {
client { # демон авторизации, его будет использовать exim
path = /var/run/dovecot/auth-client
mode = 0666
}
master { #для локальной досавки - LDA
path = /var/run/dovecot/auth-master
mode = 0666
}
}
И сама локальныя доставка, т.е. exim будет почту передавать dovecot, что бы тот распихал ее по реальным папкам в ящиках.
protocol lda {
postmaster_address = postmaster@example.com
auth_socket_path = /var/run/dovecot/auth-master
}
В /etc/dovecot/dovecot-sql.conf
connect = host=localhost dbname=mail user=mail password=mailnew
default_pass_scheme = plain <- пароль в открытом виде, на боевой системе не допустимо!
password_query = SELECT `username` as `user`, `password` FROM `mailbox` WHERE `username` = '%n@%d' AND `active`='1'
Теперь про exim
Авторизация с использованием dovecot
Создаем /etc/exim4/conf.d/auth/05_dovecot_login
dovecot_login:
driver = dovecot
public_name = LOGIN
server_socket = /var/run/dovecot/auth-client
# setting server_set_id might break several headers in mails sent by authenticated smtp. So be careful.
server_set_id = $auth1
dovecot_plain:
driver = dovecot
public_name = PLAIN
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth1
Настройка подключения к базе mysql - понадобиться для форвардинга
добавим в /etc/exim4/conf.d/main/02_exim4-config_options
hide mysql_servers = localhost/mail/mail/mailnewzulu145:/etc/exim4/conf.d/main
настроим, что локальную доставку LDA
редактируем /etc/exim4/conf.d/router/900_exim4-config_local_user (хотя можно сделать и новый)
local_user:
debug_print = "R: local_user for $local_part@$domain"
driver = accept
domains = +local_domains
transport = dovecot_virtual_delivery
cannot_route_message = Unknown user
настроим траспорт
создадим /etc/exim4/conf.d//transport/05-exim4-config_transport_dovecot
dovecot_virtual_delivery:
driver = pipe
debug_print = "T: dovecot_virtual_delivery for $local_part@$domain"
command = /usr/lib/dovecot/deliver -d $local_part@$domain -f $sender_address
# v1.1+: command = /usr/local/libexec/dovecot/deliver -d $local_part@$domain -f $sender_address -a $original_local_part@$original_domain
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
log_output
user = vmail
temp_errors = 64 : 69 : 70: 71 : 72 : 73 : 74 : 75 : 78
Теперь forward - переадресацию - что бы информация бралась из базы postfixadmin
приведем /etc/exim4/conf.d/router/600_exim4-config_userforward к виду
userforward:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT goto FROM alias \
WHERE address='${local_part}@${domain}' AND domain='${domain}'}}
среда, 14 сентября 2011 г.
Redmine и не работающий форум.
Не люблю ruby!
Поставили плагины-модули, перестали работать форумы.
Как оказалось, из-за кривого плангина - redmine_autohie
Удаление:
rake db:migrate:plugin NAME=redmine_autohier VERSION=0 RAILS_ENV=production
ruby script/plugin remove redmine_autohier
Поставили плагины-модули, перестали работать форумы.
Как оказалось, из-за кривого плангина - redmine_autohie
Удаление:
rake db:migrate:plugin NAME=redmine_autohier VERSION=0 RAILS_ENV=production
ruby script/plugin remove redmine_autohier
Ruby и обновление
При обновлении redmine попалась такая ошибка:
(in /usr/share/redmine)
Missing the i18n 0.4.2 gem. Please `gem install -v=0.4.2 i18n`
На попытку установить:
$ sudo gem install -v=0.4.2 i18n
ругнулось так:
ERROR: could not find gem i18n locally or in a repository
В общем пришлось обновлять ruby:
sudo gem install rubygems-update
cd /var/lib/gems/1.8/gems/rubygems-update-*
sudo ruby setup.rb
(in /usr/share/redmine)
Missing the i18n 0.4.2 gem. Please `gem install -v=0.4.2 i18n`
На попытку установить:
$ sudo gem install -v=0.4.2 i18n
ругнулось так:
ERROR: could not find gem i18n locally or in a repository
В общем пришлось обновлять ruby:
sudo gem install rubygems-update
cd /var/lib/gems/1.8/gems/rubygems-update-*
sudo ruby setup.rb
понедельник, 5 сентября 2011 г.
Настройка vsftp
Устанавливаем vsftpd и libpam-pwdfile
Добавляем в начало /etc/pam.d/vsftpd стрки:
auth sufficient /lib/security/pam_pwdfile.so pwdfile=/etc/vsftpd/passwd
account sufficient /lib/security/pam_permit.so
Создаем папку, переносим в нее конфиг и делаем симлинк
mkdir /etc/vsftpd
mv /etc/vsftpd.conf /etc/vsftpd
ln -s /etc/vsftpd/vsftpd.conf /etc/vsftpd.conf
В папку с конфигами будет файл - userlist
каталог users с настройками конкретных юзеров
и файл passwd с паролями юзеров
Меняем
anonymous_enable=NO
write_enable=YES
userlist_file=/etc/vsftpd/userlist
user_config_dir=/etc/vsftpd/users/
virtual_use_local_privs=YES
guest_enable=YES
guest_username=www-data
userlist_enable=YES
userlist_deny=NO
Теперь добавляем юзера (к примеру roma):
добавляем его в список файла userlist
затем создаем пароль в файле passwd через
htpasswd ./passwd roma
вводим пароль
Создаем файл ./users/roma
и помещаем в него необходимые настройки для этого юзера
chroot_local_user=YES
local_root="путь_к_папке_юзера"
guest_username="юзер"
где guest_username - от имени какого сист. юзера будет работать данный логин - к примеру - www-data
Добавляем в начало /etc/pam.d/vsftpd стрки:
auth sufficient /lib/security/pam_pwdfile.so pwdfile=/etc/vsftpd/passwd
account sufficient /lib/security/pam_permit.so
Создаем папку, переносим в нее конфиг и делаем симлинк
mkdir /etc/vsftpd
mv /etc/vsftpd.conf /etc/vsftpd
ln -s /etc/vsftpd/vsftpd.conf /etc/vsftpd.conf
В папку с конфигами будет файл - userlist
каталог users с настройками конкретных юзеров
и файл passwd с паролями юзеров
Меняем
anonymous_enable=NO
write_enable=YES
userlist_file=/etc/vsftpd/userlist
user_config_dir=/etc/vsftpd/users/
virtual_use_local_privs=YES
guest_enable=YES
guest_username=www-data
userlist_enable=YES
userlist_deny=NO
Теперь добавляем юзера (к примеру roma):
добавляем его в список файла userlist
затем создаем пароль в файле passwd через
htpasswd ./passwd roma
вводим пароль
Создаем файл ./users/roma
и помещаем в него необходимые настройки для этого юзера
chroot_local_user=YES
local_root="путь_к_папке_юзера"
guest_username="юзер"
где guest_username - от имени какого сист. юзера будет работать данный логин - к примеру - www-data
воскресенье, 28 августа 2011 г.
Debian и bluetooth 2
Разрабы пакета Bluez опять поменяли формат конфигов. Так что инет полон устаревшей инфы на тему настройки bluetooth адаптеров. Так теперь hcid.conf устарел, и более не нужен. И pin теперь задается посредством bluetooth-agent, а не /etc/bluetooth/pin.
Проверяем, что адаптер вообще работает.
/usr/sbin/hciconfig
hci0: Type: BR/EDR Bus: USB
BD Address: 00:13:65:72:50:E9 ACL MTU: 1021:8 SCO MTU: 48:10
UP RUNNING PSCAN <<-----------
RX bytes:732 acl:0 sco:0 events:28 errors:0
TX bytes:113 acl:0 sco:0 commands:25 errors:0
нас интересует строчка вида "UP RUNNING PSCAN", если адаптер не поднялся будет "DOWN"
Далее сканируем на предмет телефона:
hcitool scan
Scanning ...
5C:5C:A9:6D:8B:3D U8500
Нашли, МАС адрес запомнили.
Иногда адаптеры запускаются в режиме "невидимости" - снова включить "видимость" можно
dbus-send --system --dest=org.bluez /org/bluez/hci0 org.bluez.Adapter.SetMode string:discoverable
или так
hciconfig hci0 piscan
после соединения и пин-кода лучше опять отключить.
hciconfig hci0 noscan
Запрос на соединение и пин код
bluetooth-agent "пин" "МАС"
т.е. что-то вроде
bluetooth-agent 1234 5C:5C:A9:6D:8B:3D
На телефоне тоже выскочит предложение ввести код. Вводим (иногда время ввода ограничено) и устройства с этого момента "спарены"
http://wiki.debian.org/BluetoothUser
Осуществляем проверку надежности передачи пакетов между компьютером и телефоном:
l2ping 00:0F:DE:82:22:87
Просмотр сервисов запущенных на телефоне (зачастую требуется доп. программки вроде Astro и модуля для него bluetooth - который реализует ObexFTP).
sdptool browse
Итак Astro с запущенным модулем bluetooth (с включенной опцией OBEX FTP Server) создал доп. канал:
Service Name: ASTRO_Bluetooth_FTP
Service RecHandle: 0x10007
Service Class ID List:
UUID 128: 00001106-0000-1000-8000-00805f9b34fb
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 16
Монтируем этот канал
obexfs -b "МАС" -B "канал" /media/android
т.е. что-то вроде этого
obexfs -b 5C:5C:A9:7D:8B:3D -B 16 /media/android
и можно теперь использовать /media/android как обычный раздел, копировать, удалять и т.д.
Проверяем, что адаптер вообще работает.
/usr/sbin/hciconfig
hci0: Type: BR/EDR Bus: USB
BD Address: 00:13:65:72:50:E9 ACL MTU: 1021:8 SCO MTU: 48:10
UP RUNNING PSCAN <<-----------
RX bytes:732 acl:0 sco:0 events:28 errors:0
TX bytes:113 acl:0 sco:0 commands:25 errors:0
нас интересует строчка вида "UP RUNNING PSCAN", если адаптер не поднялся будет "DOWN"
Далее сканируем на предмет телефона:
hcitool scan
Scanning ...
5C:5C:A9:6D:8B:3D U8500
Нашли, МАС адрес запомнили.
Иногда адаптеры запускаются в режиме "невидимости" - снова включить "видимость" можно
dbus-send --system --dest=org.bluez /org/bluez/hci0 org.bluez.Adapter.SetMode string:discoverable
или так
hciconfig hci0 piscan
после соединения и пин-кода лучше опять отключить.
hciconfig hci0 noscan
Запрос на соединение и пин код
bluetooth-agent "пин" "МАС"
т.е. что-то вроде
bluetooth-agent 1234 5C:5C:A9:6D:8B:3D
На телефоне тоже выскочит предложение ввести код. Вводим (иногда время ввода ограничено) и устройства с этого момента "спарены"
http://wiki.debian.org/BluetoothUser
Осуществляем проверку надежности передачи пакетов между компьютером и телефоном:
l2ping 00:0F:DE:82:22:87
Просмотр сервисов запущенных на телефоне (зачастую требуется доп. программки вроде Astro и модуля для него bluetooth - который реализует ObexFTP).
sdptool browse
Итак Astro с запущенным модулем bluetooth (с включенной опцией OBEX FTP Server) создал доп. канал:
Service Name: ASTRO_Bluetooth_FTP
Service RecHandle: 0x10007
Service Class ID List:
UUID 128: 00001106-0000-1000-8000-00805f9b34fb
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 16
Монтируем этот канал
obexfs -b "МАС" -B "канал" /media/android
т.е. что-то вроде этого
obexfs -b 5C:5C:A9:7D:8B:3D -B 16 /media/android
и можно теперь использовать /media/android как обычный раздел, копировать, удалять и т.д.
вторник, 23 августа 2011 г.
Debian, Synaptics Touchpad
При старте иксов touchpad гонял курсор как обычная мышка, но отказывался "кликать" коротком нажатии на touchpad.
А всего-то оказалось надо было запустить мышиный драйвер с параметром proto=imps
Для проверки можно из консоли выполнить команды:
modprobe -r psmouse
modprobe psmouse proto=imps
Если все заработало, то можно создать файл touchpad.conf в /etc/modprobe.d/ и поместить в него:
options psmouse proto=imps
Есть правда и другой путь - установить пакет gpointing-device-settings или gsynaptics
Тогда доступны станут прокрутки при касании двумя пальцами (мультитач) и тап в качестве клика.
Для настройки надо запустить gpointing-device-settings и выбирать что приглянется
Про ноут есть немного описания - http://www.fi.muni.cz/~kas/c1020/#touchpad
А всего-то оказалось надо было запустить мышиный драйвер с параметром proto=imps
Для проверки можно из консоли выполнить команды:
modprobe -r psmouse
modprobe psmouse proto=imps
Если все заработало, то можно создать файл touchpad.conf в /etc/modprobe.d/ и поместить в него:
options psmouse proto=imps
Есть правда и другой путь - установить пакет gpointing-device-settings или gsynaptics
Тогда доступны станут прокрутки при касании двумя пальцами (мультитач) и тап в качестве клика.
Для настройки надо запустить gpointing-device-settings и выбирать что приглянется
Про ноут есть немного описания - http://www.fi.muni.cz/~kas/c1020/#touchpad
Debian и список репозиториев
Добавляем в /etc/apt/sources.list
deb ftp://ftp.ru.debian.org/debian/ stable main contrib non-free
deb-src ftp://ftp.ru.debian.org/debian/ stable main contrib non-free
и апдейтим
apt-get update
deb ftp://ftp.ru.debian.org/debian/ stable main contrib non-free
deb-src ftp://ftp.ru.debian.org/debian/ stable main contrib non-free
и апдейтим
apt-get update
понедельник, 22 августа 2011 г.
Debian и MongoDB
добавляем ключ
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
добавляем репозиторий
deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen
sudo apt-get update
sudo apt-get install mongodb-10gen
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
добавляем репозиторий
deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen
sudo apt-get update
sudo apt-get install mongodb-10gen
воскресенье, 21 августа 2011 г.
Оптический привод и ошибка Sense Key : Medium Error [current] and Unhandled sense code
Если при монтировании оптических дисков полезли следующие ошибки
Unhandled sense code
Sense Key : Medium Error [current]
пофиксить можно
sudo hdparm -E 0 /dev/sr[01]
Unhandled sense code
Sense Key : Medium Error [current]
пофиксить можно
sudo hdparm -E 0 /dev/sr[01]
вторник, 16 августа 2011 г.
Git - установка и настройка
ставим git и gitosis
Настройка git-сервера
Выполняем инициализацию gitosis-admin репозитория (на сервере):
$ sudo -H -u gitosis gitosis-init < /путь/к/файлу/id_rsa.pub
где id_rsa.pub - ваш публичный кюч.
В ответ будет выдано что-то вроде:
Initialized empty Git repository in /srv/gitosis/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /srv/gitosis/repositories/gitosis-admin.git/
разрешаем выполнение post-update хука:
$ sudo chmod +x /srv/gitosis/repositories/gitosis-admin.git/hooks/post-update
Клонируем конфиги gitosis на локальный компьютер
$ git clone gitosis@ваш_сервер:gitosis-admin.git
репозиторий в каталоге gitosis-admin, в котором в дирректории keydir лежат публичные ключи людей, которые имеют доступ к данному репозиторию.
В качестве имени файла используется его имя из открытого ключа. Что бы добавить человека нужно, просто, добавить его ключ.
файл gitosis.conf - настройка прав доступа для репозиториев
Добавляем ключи (юзеров) и редактируем конфиг на предмет прав и доступа.
затем коммитим изменения и закидываем их на сервер
$ git commit -am "grant new user ...."
$ git push origin master
Создаем и настраиваем новый репозиторий.
$ git clone gitosis@ваш_сервер:gitosis-admin.git
Редактируем gitosis.conf с добавленным репозиторием test-repo, в конфиг добавляем:
[group test-group]
writable = test-repo
members = логин1 логин2 ...
[repo test-repo]
description = Тестовый репозиторий
owner = имя
после правок делаем коммит:
$ git commit -am "Добавлен репозиторий test-repo"
и записываем изменения:
$ git push origin master
репозиторий готов и можно клонировать:
$ git clone gitosis@git.example.org:test-repo.git
да не забыть добавить хотя бы один файлик, иначе будет ругаться на ошибку.
В некоторых версиях git новые репозитории не создаются автоматически и при попытке клонировать выдается что-то вроде
fatal: 'repositories/имя-репо.git': unable to chdir or not a git archive
fatal: The remote end hung up unexpectedly
В таком случае репозиторий надо создать принудительно. есть два варианта:
1. создавать прямо на удаленном сервере
Создаем нужный каталог и в нем инициируем git
mkdir /srv/gitosis/repositories/test-repo.git
cd /srv/gitosis/repositories/test-repo.git
git init
chown gitosis.gitosis /srv/gitosis/repositories/test-repo.git -R
2. сначала создать локально, а потом залить на сервер.
mkdir test-repo
cd test-repo
git init
git remote add origin gitosis@YOUR_SERVER_HOSTNAME:test-repo.git
добавим какой-нибудь файлик и закомметим его
git push origin master:refs/heads/master
Настройка git-сервера
Выполняем инициализацию gitosis-admin репозитория (на сервере):
$ sudo -H -u gitosis gitosis-init < /путь/к/файлу/id_rsa.pub
где id_rsa.pub - ваш публичный кюч.
В ответ будет выдано что-то вроде:
Initialized empty Git repository in /srv/gitosis/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /srv/gitosis/repositories/gitosis-admin.git/
разрешаем выполнение post-update хука:
$ sudo chmod +x /srv/gitosis/repositories/gitosis-admin.git/hooks/post-update
Клонируем конфиги gitosis на локальный компьютер
$ git clone gitosis@ваш_сервер:gitosis-admin.git
репозиторий в каталоге gitosis-admin, в котором в дирректории keydir лежат публичные ключи людей, которые имеют доступ к данному репозиторию.
В качестве имени файла используется его имя из открытого ключа. Что бы добавить человека нужно, просто, добавить его ключ.
файл gitosis.conf - настройка прав доступа для репозиториев
Добавляем ключи (юзеров) и редактируем конфиг на предмет прав и доступа.
затем коммитим изменения и закидываем их на сервер
$ git commit -am "grant new user ...."
$ git push origin master
Создаем и настраиваем новый репозиторий.
$ git clone gitosis@ваш_сервер:gitosis-admin.git
Редактируем gitosis.conf с добавленным репозиторием test-repo, в конфиг добавляем:
[group test-group]
writable = test-repo
members = логин1 логин2 ...
[repo test-repo]
description = Тестовый репозиторий
owner = имя
после правок делаем коммит:
$ git commit -am "Добавлен репозиторий test-repo"
и записываем изменения:
$ git push origin master
репозиторий готов и можно клонировать:
$ git clone gitosis@git.example.org:test-repo.git
да не забыть добавить хотя бы один файлик, иначе будет ругаться на ошибку.
В некоторых версиях git новые репозитории не создаются автоматически и при попытке клонировать выдается что-то вроде
fatal: 'repositories/имя-репо.git': unable to chdir or not a git archive
fatal: The remote end hung up unexpectedly
В таком случае репозиторий надо создать принудительно. есть два варианта:
1. создавать прямо на удаленном сервере
Создаем нужный каталог и в нем инициируем git
mkdir /srv/gitosis/repositories/test-repo.git
cd /srv/gitosis/repositories/test-repo.git
git init
chown gitosis.gitosis /srv/gitosis/repositories/test-repo.git -R
2. сначала создать локально, а потом залить на сервер.
mkdir test-repo
cd test-repo
git init
git remote add origin gitosis@YOUR_SERVER_HOSTNAME:test-repo.git
добавим какой-нибудь файлик и закомметим его
git push origin master:refs/heads/master
пятница, 12 августа 2011 г.
Android SDK и Eclipse - настройка
** Устанавливаем Java - sun-java6-jre
** Устанавливаем JDK - sun-java6-jdk
** Скачать свежий SDK http://developer.android.com/sdk/index.html
Распаковать его и запусить ./tools/android
** Доустановить утилиты --
Available packages -> Android Repository -> Android SDK Platform-tools
(в нем содержится нужная утилитка adb)
На "64битной" системе утилита adb откзалась запускаться и выдала что-то вроде:
./adb: error while loading shared libraries: libncurses.so.5
для ее запуска понадобились два пакета "32битных" : lib32ncurses5 и lib32stdc++6
** Доустановить нужные SDK под конкретную версию ОС --
Available packages -> Android Repository -> SDK Platform Android x.x (x.x версия)
** Теперь установить ADT плагин в Eclipse. (если нужно донастроить прокси)
Help > Install New Software > кнопка Add > ввести "ADT Plugin" как Name и Location = "https://dl-ssl.google.com/android/eclipse/" > кнопка OK
выбираем "Developer Tools" и жмем Next и видим список компонентов, которые будут скачены - опять Next. Читаем лиценизию и соглашаемся с ней (чекбокс accept) и жмем Finish. В процессе будет что-то на счет "не доверенных" компонентов, доверяем всем.
Рестартим Eclipse.
** Указываем Eclipse путь к установленному SDK
Window->Preferences-> Android ->Browse - указываем путь к SDK.
** Устанавливаем JDK - sun-java6-jdk
** Скачать свежий SDK http://developer.android.com/sdk/index.html
Распаковать его и запусить ./tools/android
** Доустановить утилиты --
Available packages -> Android Repository -> Android SDK Platform-tools
(в нем содержится нужная утилитка adb)
На "64битной" системе утилита adb откзалась запускаться и выдала что-то вроде:
./adb: error while loading shared libraries: libncurses.so.5
для ее запуска понадобились два пакета "32битных" : lib32ncurses5 и lib32stdc++6
** Доустановить нужные SDK под конкретную версию ОС --
Available packages -> Android Repository -> SDK Platform Android x.x (x.x версия)
** Теперь установить ADT плагин в Eclipse. (если нужно донастроить прокси)
Help > Install New Software > кнопка Add > ввести "ADT Plugin" как Name и Location = "https://dl-ssl.google.com/android/eclipse/" > кнопка OK
выбираем "Developer Tools" и жмем Next и видим список компонентов, которые будут скачены - опять Next. Читаем лиценизию и соглашаемся с ней (чекбокс accept) и жмем Finish. В процессе будет что-то на счет "не доверенных" компонентов, доверяем всем.
Рестартим Eclipse.
** Указываем Eclipse путь к установленному SDK
Window->Preferences-> Android ->Browse - указываем путь к SDK.
Android 2.2 и bluetooth клавиатура.
Есть платная программа Blueinput от teksoft - если не жалко 10 евро она возможно поможет.
Если жалко:
статья на английском http://i-miss-erin.blogspot.com/2009/09/connect-bluetooth-keyboard-in-android.html
** Девайсы необходимо "спарить"
Settings->Wireless&networks->Bluetooth settigs
Включаем Bluetooth и клавиатуру (иногда на ней надо нажать еще хитрую кнопочку с обратной стороны, что бы она начала вещать на все окрестности о себе - как правило всего несколько минуть, затем если не успели - повторить нажатие)
На смарте жмем Scan for device - клавиатура должна появиться в списке Bluetooth devices
Жмем на строчку с названием клавиатуры (Bluetooth Keyboard) и вводим код - любой, к примеру 1234
ОК. Теперь этот же код набираем на клавиатуре и на жмем enter.
Состояние строки под Bluetooth Keyboard измениться на Paired but not connected
Версия для смарта, без применения компьютера
* нужен root на девайс - z4root
* нужен установленный - busybox
* нужен установленный - GScript
Качаем файлы в папку на флэшке - gscript (/mnt/sdcard/gscript)
hciconfig
hcitool
hidd
cp_blueutils.sh
В моем Huaway U8500 уже был в системе hcitool и при замене предложенным, сканирование устройств перестало корректно работать. Поэтому на всякий случай выкладываю и его.
hcitool.orgin_u8500
Если качается стандартным гугл.браузером, то все падает на флэшку в папку download, но программам к имени добавляется суффикс .bin, т.е. было hidd, скачалось hidd.bin. Т.е. надо переименовыват (отрывать у имени .bin) и копировать в нужный каталог.
Opera такими проблемами не страдает, она позволяет сразу выбрать - куда скачивать (выбираем папку gscript) и сохраняет с нормальными именами.
Затем запускаем GScript. В меню выбираем "Add script". Жмем "Load file" и выбираем cp_blueutils.sh
Проверяем, есть ли галка на "Needs SU?" - она нам нужна для рута и жмем "Save". В списке скриптов появиться cp_blueutils. Запускаем его на выполнение. На экране должны быть строки о выполнении, типа:
"copy 'hidd' to /system/xbin"
В версии Android ниже 2.2 флэшка (sdcard) монтировалась не в /mnt/sdcard, а в /sdcard
В этому случае надо в скрипте cp_blueutils.sh поправить строку вида:
cd /mnt/sdcard/gscript
отредактировать до вида:
cd /sdcard/gscript
Что бы убедиться, что все и правда скопировалось куда нужно можно еще раз запустить скрипт. На этот раз должно быть что-то вроде
"'hidd' already exists in /system/xbin"
Значит все скопировали.
Скачаем еще немного скрптов в папку gscript:
scan.sh
connect.sh
make_bbb.sh (нужен только если хотите в дальнейшем запускать connect из эмулятора терминала)
Затем запускаем GScript. В меню выбираем "Add script". Жмем "Load file" и выбираем scan.sh, затем сохраняем и запускаем его из списка. Если ничего не нашлось, попробуйте активирвоать на клавиатуре магическую кнопочку.
Должно получиться что-то вроде:
Scanning ...
00:22:43:C6:5B:B9 Bluetooth Keyboard
Запоминаем эти хх:хх:хх:хх:хх:хх цифры-буквы, это MAC адрес клавиатуры. Теперь надо в GScript добавить из файла скрипт connect.sh и в нем ИЗМЕНИТЬ строку вида
mac="00:22:43:C6:5B:B9"
на ваши цифры-буквы. Затем сохранить и выполнить.
После этого клавиатура должна заработать.
В дальнейшем запускать только скрипт connect. Остальные в принципе можно удалить, впрочем как и скачанные программы в папке gscript. Если запусить скрипт make_bbb (пердварительно отредактировав в нем MAC адрес, как и в случае со скриптом connect), то в /system/xbin/ появиться файл bbb. Т.е. теперь можно будет из эмулятора терминала набирать su и затем bbb. И клавиатура должна подключиться.
Вторая версия вышеизложенного - работа с компьютера:
--Смарт должен быть рутован (инструкций огромное множество)--
Качаем недостающие программы:
http://androidobex.googlecode.com/files/hciconfig
http://androidobex.googlecode.com/files/hcitool
http://androidobex.googlecode.com/files/hidd
Итак, вся работа будет производиться через утилиту adb которая входит в комплект SDK Android
** Необходимо подключить девайс через usb к компьютеру.
** Так же после этого включить режим отладки: ставим галку в Settings->Aplication->Development->Usb debugging (как это на русском не помню)
** Запускаем adb shell. Сразу оговорюсь, как под виндой это работает не знаю, нет ее у меня, но говорят, что как-то работает.
В ответ на запуск adb shell получаем приглашение $
Вводим "su" и enter для получения root. И вот тут внимательно смотрим на экран, так как при первом запросе su из шела появиться запрос на предоставление рута (10сек) и надо подтвердить.
Если все нормально, $ поменяется на # - root.
** Теперь надо перемонтировать раздел /system для чтения-записи (изначально он монтируется только на чтение)
Частенько разделы /system имеют отличие - system - это всего лишь точка монтирования, а сам раздел выглядит похоже на /dev/block/mtdblockх, где х - номер раздела. Вот этот номер нам и предстоит выяснить. Если бездумно копировать команды инструкций для других моделей, можно смонтировать ошибочно раздел. Ну в общем. я Вас предупредил.
Смотрим, что и куда смонитировано (символ # набирать не надо, он уже отображается на экране):
# mount
в строчках ищем что-то вроде
/dev/block/mtdblock4 /system ... - вот 4 - это и есть наш раздел. У Вас может быть другая цифра!
Перемонтируем раздел:
# mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system
# chmod 777 /system/xbin
Выходим из adb shell (или, предположительно, закрываем окно для винды)
# exit
$ exit
** Теперь надо закинуть три скачанных файлика в смарт.
adb push hidd /system/xbin
adb push hcitool /system/xbin
adb push hciconfig /system/xbin
Сделать исполняемыми:
# chmod 755 /system/xbin/hidd
# chmod 755 /system/xbin/hcitool
# chmod 755 /system/xbin/hciconfig
** Теперь пошаманим с программками. Запускаем adb shell
* Получаем root
$ su
#
* Скнируем на предмет наличия клавиатуры и ее MAC адреса (опять же, не забываем, что клавиатура доступна к обнаружению ограниченное время, если не найдется, находим на ней магическую кнопочку и нажимаем). На выходе получим что-то вроде
# hcitool scan
Scanning ...
00:22:43:C6:5B:B9 Bluetooth keyboard
~~~~~~~~~~~~~~~~~
Цифры-буквы и есть MAC адрес
* Пробуем подключить клавиатуру:
# hidd --connect 00:22:43:C6:5B:B9
Должна заработать.
Для удобства можно сделать скрипт вида (вписать свой MAC адрес):
#!/system/bin/sh
hidd --connect 00:22:43:C6:5B:B9
и сохранить в /system/xbin/bbbb
# chmod 755 /system/xbin/bbbb
Теперь открыв на смарте терминал (к примеру Better Terminal Emulator Pro) и в нем
$ su
# bbbb
Должна подключиться клавиатура
Перечитал, и в итоге получился вольный перевод англоязычной статьи. С дополнением про скрипт.
Если жалко:
статья на английском http://i-miss-erin.blogspot.com/2009/09/connect-bluetooth-keyboard-in-android.html
** Девайсы необходимо "спарить"
Settings->Wireless&networks->Bluetooth settigs
Включаем Bluetooth и клавиатуру (иногда на ней надо нажать еще хитрую кнопочку с обратной стороны, что бы она начала вещать на все окрестности о себе - как правило всего несколько минуть, затем если не успели - повторить нажатие)
На смарте жмем Scan for device - клавиатура должна появиться в списке Bluetooth devices
Жмем на строчку с названием клавиатуры (Bluetooth Keyboard) и вводим код - любой, к примеру 1234
ОК. Теперь этот же код набираем на клавиатуре и на жмем enter.
Состояние строки под Bluetooth Keyboard измениться на Paired but not connected
Версия для смарта, без применения компьютера
* нужен root на девайс - z4root
* нужен установленный - busybox
* нужен установленный - GScript
Качаем файлы в папку на флэшке - gscript (/mnt/sdcard/gscript)
hciconfig
hcitool
hidd
cp_blueutils.sh
В моем Huaway U8500 уже был в системе hcitool и при замене предложенным, сканирование устройств перестало корректно работать. Поэтому на всякий случай выкладываю и его.
hcitool.orgin_u8500
Если качается стандартным гугл.браузером, то все падает на флэшку в папку download, но программам к имени добавляется суффикс .bin, т.е. было hidd, скачалось hidd.bin. Т.е. надо переименовыват (отрывать у имени .bin) и копировать в нужный каталог.
Opera такими проблемами не страдает, она позволяет сразу выбрать - куда скачивать (выбираем папку gscript) и сохраняет с нормальными именами.
Затем запускаем GScript. В меню выбираем "Add script". Жмем "Load file" и выбираем cp_blueutils.sh
Проверяем, есть ли галка на "Needs SU?" - она нам нужна для рута и жмем "Save". В списке скриптов появиться cp_blueutils. Запускаем его на выполнение. На экране должны быть строки о выполнении, типа:
"copy 'hidd' to /system/xbin"
В версии Android ниже 2.2 флэшка (sdcard) монтировалась не в /mnt/sdcard, а в /sdcard
В этому случае надо в скрипте cp_blueutils.sh поправить строку вида:
cd /mnt/sdcard/gscript
отредактировать до вида:
cd /sdcard/gscript
Что бы убедиться, что все и правда скопировалось куда нужно можно еще раз запустить скрипт. На этот раз должно быть что-то вроде
"'hidd' already exists in /system/xbin"
Значит все скопировали.
Скачаем еще немного скрптов в папку gscript:
scan.sh
connect.sh
make_bbb.sh (нужен только если хотите в дальнейшем запускать connect из эмулятора терминала)
Затем запускаем GScript. В меню выбираем "Add script". Жмем "Load file" и выбираем scan.sh, затем сохраняем и запускаем его из списка. Если ничего не нашлось, попробуйте активирвоать на клавиатуре магическую кнопочку.
Должно получиться что-то вроде:
Scanning ...
00:22:43:C6:5B:B9 Bluetooth Keyboard
Запоминаем эти хх:хх:хх:хх:хх:хх цифры-буквы, это MAC адрес клавиатуры. Теперь надо в GScript добавить из файла скрипт connect.sh и в нем ИЗМЕНИТЬ строку вида
mac="00:22:43:C6:5B:B9"
на ваши цифры-буквы. Затем сохранить и выполнить.
После этого клавиатура должна заработать.
В дальнейшем запускать только скрипт connect. Остальные в принципе можно удалить, впрочем как и скачанные программы в папке gscript. Если запусить скрипт make_bbb (пердварительно отредактировав в нем MAC адрес, как и в случае со скриптом connect), то в /system/xbin/ появиться файл bbb. Т.е. теперь можно будет из эмулятора терминала набирать su и затем bbb. И клавиатура должна подключиться.
Вторая версия вышеизложенного - работа с компьютера:
--Смарт должен быть рутован (инструкций огромное множество)--
Качаем недостающие программы:
http://androidobex.googlecode.com/files/hciconfig
http://androidobex.googlecode.com/files/hcitool
http://androidobex.googlecode.com/files/hidd
Итак, вся работа будет производиться через утилиту adb которая входит в комплект SDK Android
** Необходимо подключить девайс через usb к компьютеру.
** Так же после этого включить режим отладки: ставим галку в Settings->Aplication->Development->Usb debugging (как это на русском не помню)
** Запускаем adb shell. Сразу оговорюсь, как под виндой это работает не знаю, нет ее у меня, но говорят, что как-то работает.
В ответ на запуск adb shell получаем приглашение $
Вводим "su" и enter для получения root. И вот тут внимательно смотрим на экран, так как при первом запросе su из шела появиться запрос на предоставление рута (10сек) и надо подтвердить.
Если все нормально, $ поменяется на # - root.
** Теперь надо перемонтировать раздел /system для чтения-записи (изначально он монтируется только на чтение)
Частенько разделы /system имеют отличие - system - это всего лишь точка монтирования, а сам раздел выглядит похоже на /dev/block/mtdblockх, где х - номер раздела. Вот этот номер нам и предстоит выяснить. Если бездумно копировать команды инструкций для других моделей, можно смонтировать ошибочно раздел. Ну в общем. я Вас предупредил.
Смотрим, что и куда смонитировано (символ # набирать не надо, он уже отображается на экране):
# mount
в строчках ищем что-то вроде
/dev/block/mtdblock4 /system ... - вот 4 - это и есть наш раздел. У Вас может быть другая цифра!
Перемонтируем раздел:
# mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system
# chmod 777 /system/xbin
Выходим из adb shell (или, предположительно, закрываем окно для винды)
# exit
$ exit
** Теперь надо закинуть три скачанных файлика в смарт.
adb push hidd /system/xbin
adb push hcitool /system/xbin
adb push hciconfig /system/xbin
Сделать исполняемыми:
# chmod 755 /system/xbin/hidd
# chmod 755 /system/xbin/hcitool
# chmod 755 /system/xbin/hciconfig
** Теперь пошаманим с программками. Запускаем adb shell
* Получаем root
$ su
#
* Скнируем на предмет наличия клавиатуры и ее MAC адреса (опять же, не забываем, что клавиатура доступна к обнаружению ограниченное время, если не найдется, находим на ней магическую кнопочку и нажимаем). На выходе получим что-то вроде
# hcitool scan
Scanning ...
00:22:43:C6:5B:B9 Bluetooth keyboard
~~~~~~~~~~~~~~~~~
Цифры-буквы и есть MAC адрес
* Пробуем подключить клавиатуру:
# hidd --connect 00:22:43:C6:5B:B9
Должна заработать.
Для удобства можно сделать скрипт вида (вписать свой MAC адрес):
#!/system/bin/sh
hidd --connect 00:22:43:C6:5B:B9
и сохранить в /system/xbin/bbbb
# chmod 755 /system/xbin/bbbb
Теперь открыв на смарте терминал (к примеру Better Terminal Emulator Pro) и в нем
$ su
# bbbb
Должна подключиться клавиатура
Перечитал, и в итоге получился вольный перевод англоязычной статьи. С дополнением про скрипт.
вторник, 9 августа 2011 г.
Debian, Bind и chroot
Подготавливаем окружение chroot
# mkdir -p /var/chroot/bind9/{etc,dev,var/cache/bind,var/run/bind/run,var/log,var/cache/bind/master,var/cache/bind/slave}
# chown -R bind:bind /var/chroot/bind9/var/*
# mknod /var/chroot/bind9/dev/null c 1 3
# mknod /var/chroot/bind9/dev/random c 1 8
# mv /etc/bind /var/chroot/bind9/etc
# ln -s /var/chroot/bind9/etc/bind /etc/bind
# ln -s /var/chroot/bind9/var/log /var/log/named
# ln -s /var/chroot/bind9/var/cache/bind/master /var/chroot/bind9/etc/bind/master
# ln -s /var/chroot/bind9/var/cache/bind/slave /var/chroot/bind9/etc/bind/slave
Создаём файл /etc/rsyslog.d/bind-chroot.conf следующего содержания
# cat /etc/rsyslog.d/bind-chroot.conf
$AddUnixListenSocket /var/chroot/bind9/dev/log
Редактируем /etc/default/bind9
# cat /etc/default/bind9
# run resolvconf?
RESOLVCONF=yes
# startup options for the server
OPTIONS="-u bind -t /var/chroot/bind9"
Для того, чтобы в логах сервера было указано правильное время с учётом часового пояса
# cp /etc/localtime /var/chroot/bind9/etc/
Что бы коректно отрабатывали скрипты запуска-остановки, надо в /etc/bind/named.conf
include "/etc/bind/rndc.key";
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
Проверить можно командой
#rndc status
Без этой доработки получали бы при остановке сервиса что-то вроде:
Stopping domain name service...: bind9rndc: connect failed: 127.0.0.1#953: connection refused
Теперь рестартуем rsyslog и стартуем bind9
# /etc/init.d/rsyslog restart
# /etc/init.d/bind9 start
# mkdir -p /var/chroot/bind9/{etc,dev,var/cache/bind,var/run/bind/run,var/log,var/cache/bind/master,var/cache/bind/slave}
# chown -R bind:bind /var/chroot/bind9/var/*
# mknod /var/chroot/bind9/dev/null c 1 3
# mknod /var/chroot/bind9/dev/random c 1 8
# mv /etc/bind /var/chroot/bind9/etc
# ln -s /var/chroot/bind9/etc/bind /etc/bind
# ln -s /var/chroot/bind9/var/log /var/log/named
# ln -s /var/chroot/bind9/var/cache/bind/master /var/chroot/bind9/etc/bind/master
# ln -s /var/chroot/bind9/var/cache/bind/slave /var/chroot/bind9/etc/bind/slave
Создаём файл /etc/rsyslog.d/bind-chroot.conf следующего содержания
# cat /etc/rsyslog.d/bind-chroot.conf
$AddUnixListenSocket /var/chroot/bind9/dev/log
Редактируем /etc/default/bind9
# cat /etc/default/bind9
# run resolvconf?
RESOLVCONF=yes
# startup options for the server
OPTIONS="-u bind -t /var/chroot/bind9"
Для того, чтобы в логах сервера было указано правильное время с учётом часового пояса
# cp /etc/localtime /var/chroot/bind9/etc/
Что бы коректно отрабатывали скрипты запуска-остановки, надо в /etc/bind/named.conf
include "/etc/bind/rndc.key";
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
Проверить можно командой
#rndc status
Без этой доработки получали бы при остановке сервиса что-то вроде:
Stopping domain name service...: bind9rndc: connect failed: 127.0.0.1#953: connection refused
Теперь рестартуем rsyslog и стартуем bind9
# /etc/init.d/rsyslog restart
# /etc/init.d/bind9 start
Mysql и переезд на новый сервер
Понадобилось скопировать пользователей и их права на новый сервер
не плохо подошла для этого утилитка mk-show-grants из пакета Maatkit
http://www.maatkit.org
mk-show-grants --separate --revoke --ask-pass > users.sql
единственный неприятный момент, требуется пароль, а когда используется > users.sql вывод приглашения перенаправляется, т.е. надо вводит "вслепую" и enter
А потом из users.sql надо удалить первую строку - Enter password:
и на целевом сервере втянуть users.sql в базу
не плохо подошла для этого утилитка mk-show-grants из пакета Maatkit
http://www.maatkit.org
mk-show-grants --separate --revoke --ask-pass > users.sql
единственный неприятный момент, требуется пароль, а когда используется > users.sql вывод приглашения перенаправляется, т.е. надо вводит "вслепую" и enter
А потом из users.sql надо удалить первую строку - Enter password:
и на целевом сервере втянуть users.sql в базу
Debian и bluetooth
apt-get install bluetooth
/etc/init.d/bluetooth start
GUI
apt-get install blueman
запускается через
blueman-manager
/etc/init.d/bluetooth start
GUI
apt-get install blueman
запускается через
blueman-manager
воскресенье, 7 августа 2011 г.
Debian и терминал
Хороший терминал rxvt-unicode
aptitude install rxvt-unicode
так же ставим шрифт
aptitude install xfonts-terminus
В .Xresources настраиваем ресурсы терминала:
URxvt.font: -*-terminus-medium-r-*-*-16-*-*-*-*-*-*-u
URxvt.scrollBar: false
URxvt.saveLines: 65535
URxvt.InternalBorder: 0
URxvt.pointerBlank: true
URxvt.loginShell: true
URxvt.background: black
URxvt.foreground: white
aptitude install rxvt-unicode
так же ставим шрифт
aptitude install xfonts-terminus
В .Xresources настраиваем ресурсы терминала:
URxvt.font: -*-terminus-medium-r-*-*-16-*-*-*-*-*-*-u
URxvt.scrollBar: false
URxvt.saveLines: 65535
URxvt.InternalBorder: 0
URxvt.pointerBlank: true
URxvt.loginShell: true
URxvt.background: black
URxvt.foreground: white
Debian и постустановка.
Поставил в экспертном режиме.
смонтировал dvd
установил иксы с легким десктопом -- aptitude install lxde
отключить загрузку иксов при старте
-- редактируем /etc/inittab в вид:
id:3:initdefault:
(т.е. запуск в runlevel 3)
-- update-rc.d gdm disable 3
Добавляем оф. репозитории в /etc/apt/sources.list
deb ftp://ftp.ru.debian.org/debian/ stable main contrib non-free
deb-src ftp://ftp.ru.debian.org/debian/ stable main contrib non-free
и апдейтим их -- aptitude update
что бы монтировать самбовые шары ставим пакет smbfs
ставим icewm и tango-icon-theme для иконок в pcmanfm (файл-менеджер)
создаем файл .xsession и в него пишем:
icewmbg &
icewm
далее, создаем файл ~/.gtkrc-2.0 и в него пишем:
gtk-icon-theme-name = "Tango"
теперь иконки должны заработать.
xxkb
и настройка
смонтировал dvd
установил иксы с легким десктопом -- aptitude install lxde
отключить загрузку иксов при старте
-- редактируем /etc/inittab в вид:
id:3:initdefault:
(т.е. запуск в runlevel 3)
-- update-rc.d gdm disable 3
Добавляем оф. репозитории в /etc/apt/sources.list
deb ftp://ftp.ru.debian.org/debian/ stable main contrib non-free
deb-src ftp://ftp.ru.debian.org/debian/ stable main contrib non-free
и апдейтим их -- aptitude update
что бы монтировать самбовые шары ставим пакет smbfs
ставим icewm и tango-icon-theme для иконок в pcmanfm (файл-менеджер)
создаем файл .xsession и в него пишем:
icewmbg &
icewm
далее, создаем файл ~/.gtkrc-2.0 и в него пишем:
gtk-icon-theme-name = "Tango"
теперь иконки должны заработать.
xxkb
и настройка
пятница, 5 августа 2011 г.
Debian и сглаживание шрифтов
Установим
aptitude install msttcorefonts
В домашнем каталоге создадим файл .fonts.conf с таким содержанием
aptitude install msttcorefonts
В домашнем каталоге создадим файл .fonts.conf с таким содержанием
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <match target="font" > <edit mode="assign" name="rgba" > <const>none</const> </edit> </match> <match target="font" > <edit mode="assign" name="hinting" > <bool>true</bool> </edit> </match> <match target="font" > <edit mode="assign" name="hintstyle" > <const>hintmedium</const> </edit> </match> <match target="font" > <edit mode="assign" name="antialias" > <bool>true</bool> </edit> </match> <match target="font" > <test compare="more_eq" name="size" qual="any" > <double>0</double> </test> <test compare="less_eq" name="size" qual="any" > <double>15</double> </test> <edit mode="assign" name="antialias" > <bool>false</bool> </edit> </match> <match target="font" > <test compare="more_eq" name="pixelsize" qual="any" > <double>0</double> </test> <test compare="less_eq" name="pixelsize" qual="any" > <double>20</double> </test> <edit mode="assign" name="antialias" > <bool>false</bool> </edit> </match> </fontconfig>
вторник, 2 августа 2011 г.
Debian и отключение иксов
Итак, хотим загружаться в консольном режиме без иксов и графики. Уж не знаю зачем так сделали, но в debian при runlevel 2-5 иксы таки грузятся. Что надо сделать, что бы исправить ситуацию:
1. Редактируем /etc/inittab в вид:
id:3:initdefault:
(т.е. запуск в runlevel 3)
2. Удаляем симлинк /etc/rc3.d/S20gdm или /etc/rc3.d/S20kdm - в зависимости, что в виде DE установлено. цифры в S20gdm могут быть другие.
Хотя правильнее будет
update-rc.d gdm3 disabe 3
1. Редактируем /etc/inittab в вид:
id:3:initdefault:
(т.е. запуск в runlevel 3)
2. Удаляем симлинк /etc/rc3.d/S20gdm или /etc/rc3.d/S20kdm - в зависимости, что в виде DE установлено. цифры в S20gdm могут быть другие.
Хотя правильнее будет
update-rc.d gdm3 disabe 3
вторник, 19 июля 2011 г.
Huaway U8500 и Android 2.2
Вышла новая версия.
Перепрошиваем, настраиваем apn и аккаунты.
Music Folder Player - простой плеер, играет файлы в каталогах, есть зацикливание трека.
Устанавливаем:
** Ставим z4root - для root
http://4pda.ru/forum/index.php?showtopic=199355
** Перенос программ на карту памяти -
App 2 SD - http://4pda.ru/forum/index.php?showtopic=212693
** С маркета move2sd enabler и move2sd
** Учет трафика
3G Watchdog - суммарный трафик - http://4pda.ru/forum/index.php?showtopic=127366
TrafficStats - кто и сколько "съел" - http://4pda.ru/forum/index.php?showtopic=183359
** Файрвол - с этого и следует начинать. Нужен root. Droid Wall
http://4pda.ru/forum/index.php?showtopic=131323
** Отключать мобильный интернет apndroid
http://4pda.ru/forum/index.php?showtopic=147639
http://www.android-info.ru/applications/apndroid-otkluchenie-mobilnogo-interneta#more-1
** Блокировка рекламы - Adfree
http://4pda.ru/forum/index.php?showtopic=128383
** Терминал - Better Terminal Emulator Magic
http://4pda.ru/forum/index.php?showtopic=148522
** SSH клиент - ConnectBot
http://4pda.ru/forum/index.php?showtopic=129287
** Root Explorer
http://4pda.ru/forum/index.php?showtopic=134840
Особенность версии 2.2 - экран не разблокируется с помощью двойного нажатия на menu.
Надо рут_эксплорером в файлике build.prop (/system) в строке:
ro.config.hw_menu_unlockscreen=false
заменить false на true. И перезагрузить.
** автоматически включает громкую связь - Up Sound Down
http://4pda.ru/forum/index.php?showtopic=169320
** напоминалка о пропущенных вызовах - Easy Reminder
http://4pda.ru/forum/index.php?showtopic=179541
** быстрый набор номера - QuickDial
http://4pda.ru/forum/index.php?showtopic=139593
** плеер аудиокниг (закладки и т.п.) MortPlayer Audio Books
http://4pda.ru/forum/index.php?showtopic=155375
** видео плеер avi и т.д. - RockPlayer Base
http://4pda.ru/forum/index.php?showtopic=174459
** аудио плеер - MortPlayer Music
http://4pda.ru/forum/index.php?showtopic=155367
** просматривать список контактов в виде контакт+мелодия - MortRing
http://4pda.ru/forum/index.php?showtopic=223852
** Пропущенные звонки на экране блокировки - Missed It!
http://4pda.ru/forum/index.php?showtopic=234434
** Контроль за автозапуском - Autostarts
http://4pda.ru/forum/index.php?showtopic=137316
** файловый менеджер - ASTRO File Manager
http://4pda.ru/forum/index.php?showtopic=121761
** файловый менеджер - SU File Manager & Terminal
http://4pda.ru/forum/index.php?showtopic=134842
** файловый менеджер - EStrongs File Explorer
http://4pda.ru/forum/index.php?showtopic=138744
** Battery Indicator
http://4pda.ru/forum/index.php?showtopic=157382
Alarm Clock Plus
Перепрошиваем, настраиваем apn и аккаунты.
Music Folder Player - простой плеер, играет файлы в каталогах, есть зацикливание трека.
Устанавливаем:
** Ставим z4root - для root
http://4pda.ru/forum/index.php?showtopic=199355
** Перенос программ на карту памяти -
App 2 SD - http://4pda.ru/forum/index.php?showtopic=212693
** С маркета move2sd enabler и move2sd
** Учет трафика
3G Watchdog - суммарный трафик - http://4pda.ru/forum/index.php?showtopic=127366
TrafficStats - кто и сколько "съел" - http://4pda.ru/forum/index.php?showtopic=183359
** Файрвол - с этого и следует начинать. Нужен root. Droid Wall
http://4pda.ru/forum/index.php?showtopic=131323
** Отключать мобильный интернет apndroid
http://4pda.ru/forum/index.php?showtopic=147639
http://www.android-info.ru/applications/apndroid-otkluchenie-mobilnogo-interneta#more-1
** Блокировка рекламы - Adfree
http://4pda.ru/forum/index.php?showtopic=128383
** Терминал - Better Terminal Emulator Magic
http://4pda.ru/forum/index.php?showtopic=148522
** SSH клиент - ConnectBot
http://4pda.ru/forum/index.php?showtopic=129287
** Root Explorer
http://4pda.ru/forum/index.php?showtopic=134840
Особенность версии 2.2 - экран не разблокируется с помощью двойного нажатия на menu.
Надо рут_эксплорером в файлике build.prop (/system) в строке:
ro.config.hw_menu_unlockscreen=false
заменить false на true. И перезагрузить.
** автоматически включает громкую связь - Up Sound Down
http://4pda.ru/forum/index.php?showtopic=169320
** напоминалка о пропущенных вызовах - Easy Reminder
http://4pda.ru/forum/index.php?showtopic=179541
** быстрый набор номера - QuickDial
http://4pda.ru/forum/index.php?showtopic=139593
** плеер аудиокниг (закладки и т.п.) MortPlayer Audio Books
http://4pda.ru/forum/index.php?showtopic=155375
** видео плеер avi и т.д. - RockPlayer Base
http://4pda.ru/forum/index.php?showtopic=174459
** аудио плеер - MortPlayer Music
http://4pda.ru/forum/index.php?showtopic=155367
** просматривать список контактов в виде контакт+мелодия - MortRing
http://4pda.ru/forum/index.php?showtopic=223852
** Пропущенные звонки на экране блокировки - Missed It!
http://4pda.ru/forum/index.php?showtopic=234434
** Контроль за автозапуском - Autostarts
http://4pda.ru/forum/index.php?showtopic=137316
** файловый менеджер - ASTRO File Manager
http://4pda.ru/forum/index.php?showtopic=121761
** файловый менеджер - SU File Manager & Terminal
http://4pda.ru/forum/index.php?showtopic=134842
** файловый менеджер - EStrongs File Explorer
http://4pda.ru/forum/index.php?showtopic=138744
** Battery Indicator
http://4pda.ru/forum/index.php?showtopic=157382
Alarm Clock Plus
четверг, 16 июня 2011 г.
Mysql изменить пароль root
Имеем три способа:
1. -------------------------------------
mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
2. -------------------------------------
mysqladmin -u root password "newpass"
3. -------------------------------------
mysql -u root
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE User = 'root';
mysql> FLUSH PRIVILEGES;
1. -------------------------------------
mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
2. -------------------------------------
mysqladmin -u root password "newpass"
3. -------------------------------------
mysql -u root
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE User = 'root';
mysql> FLUSH PRIVILEGES;
вторник, 24 мая 2011 г.
Midnight Commander и ошибка "Cannot open master side of pty"
При попытке задействовать консоль в Midnight Commander консоль не работала, выдавая сообщение:
Cannot open master side of pty: No such file or directory
решается добавлением в /etc/fstab строчки:
none /dev/pts devpts mode=0620 0 0
и затеме mount -a
Если devpts все же примонтирована, а ошибка сохраняется, возможно отсутствует файл /dev/ptmx
создадим его:
mknod /dev/ptmx c 5 2
chmod 0666 /dev/ptmx
chown root.tty /dev/ptmx
Cannot open master side of pty: No such file or directory
решается добавлением в /etc/fstab строчки:
none /dev/pts devpts mode=0620 0 0
и затеме mount -a
Если devpts все же примонтирована, а ошибка сохраняется, возможно отсутствует файл /dev/ptmx
создадим его:
mknod /dev/ptmx c 5 2
chmod 0666 /dev/ptmx
chown root.tty /dev/ptmx
vsftpd и авторизация по pam-pwdfile
Нужно доустановить нужные либы.
aptitude install libpam-pwdfile
А вот дальше во многих мануалах пишут такие строки
auth required pam_pwdfile.so pwdfile /etc/vsftpd/passwd
account required pam_permit.so
а заработало лишь с такими
auth sufficient /lib/security/pam_pwdfile.so pwdfile=/etc/vsftpd/passwd
account sufficient /lib/security/pam_permit.so
прочитано тут blog.fluge.ru/article/vsftpd
aptitude install libpam-pwdfile
А вот дальше во многих мануалах пишут такие строки
auth required pam_pwdfile.so pwdfile /etc/vsftpd/passwd
account required pam_permit.so
а заработало лишь с такими
auth sufficient /lib/security/pam_pwdfile.so pwdfile=/etc/vsftpd/passwd
account sufficient /lib/security/pam_permit.so
прочитано тут blog.fluge.ru/article/vsftpd
воскресенье, 22 мая 2011 г.
Как склеить несколько avi файлов
Понадобилось склеить несколько фрагментов видео avi
cat "список avi файлов" > temp.avi
mencoder temp.avi -oac copy -ovc copy -forceidx -o resault.avi
правда бывают и не большеие досадные глюки - mencoder не все склеенные файлы распознает. Тогда выручает
mencoder -oac copy -ovc copy -o resault.avi кусок1.avi кусок2.avi ....
cat "список avi файлов" > temp.avi
mencoder temp.avi -oac copy -ovc copy -forceidx -o resault.avi
правда бывают и не большеие досадные глюки - mencoder не все склеенные файлы распознает. Тогда выручает
mencoder -oac copy -ovc copy -o resault.avi кусок1.avi кусок2.avi ....
суббота, 30 апреля 2011 г.
Debian и timezone
Понадобилось поменять таймзону под debian. Есть много разных способов, один из них
dpkg-reconfigure tzdata
выбираем регион, город и все готово.
dpkg-reconfigure tzdata
выбираем регион, город и все готово.
четверг, 28 апреля 2011 г.
Debian, nagios, nrpe и настройка на удаленном сервере
Есть сервер с nagios. Нужно с помощью nrpe забирать с других серверов информацию об их состоянии.
Установим на удаленном сервере nrpe-сервис и базовый набор nagios-plugin'ов:
aptitude install nagios-nrpe-server
aptitude install nagios-plugins-basic (в некоторых версиях устанавливается сразу же с nagios-nrpe-server в качестве зависимостей)
Проверим, что нужный порт слушается:
netstat -an | grep 5666
должно получиться что-то вроде этого:
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN
Изменяем конфигурационный файл /etc/nagios/nrpe.cfg и перезапускаем сервис с новыми параметрами
allowed_hosts=127.0.0.1, "ip основного сервера"
/etc/init.d/nagios-nrpe-server restart
Установим на удаленном сервере nrpe-сервис и базовый набор nagios-plugin'ов:
aptitude install nagios-nrpe-server
aptitude install nagios-plugins-basic (в некоторых версиях устанавливается сразу же с nagios-nrpe-server в качестве зависимостей)
Проверим, что нужный порт слушается:
netstat -an | grep 5666
должно получиться что-то вроде этого:
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN
Изменяем конфигурационный файл /etc/nagios/nrpe.cfg и перезапускаем сервис с новыми параметрами
allowed_hosts=127.0.0.1, "ip основного сервера"
/etc/init.d/nagios-nrpe-server restart
пятница, 18 марта 2011 г.
Android и удаление системных приложений
Итак, необходимо удалить "системное" приложение. В списке к удалению его конечно же нет, на то и системное.
Рассмотрим на примере DocumentToGo - в одной из прошивок его воткнули в "системные", а следовательно обновить его версию и заодно вылечить от жадности обычным способом не выходит.
Нужен рут (root)
Оно живет в /system/app/DocumentToGo_viewer_pdf.apk
Удаляем, но просто удалить его мало. Надо еще вычистить из системы. Для этого открываем файл
/data/system/packages.xml и ищем наше приложение в параметре codePath, запоминаем, что написано в параметре name - в нашем случае com.dataviz.docstogo
и из шела даем команду:
pm uninstall com.dataviz.docstogo
После этого приложение полностью удалено. В принципе, надо бы проверить его кэш и т.п.
Рассмотрим на примере DocumentToGo - в одной из прошивок его воткнули в "системные", а следовательно обновить его версию и заодно вылечить от жадности обычным способом не выходит.
Нужен рут (root)
Оно живет в /system/app/DocumentToGo_viewer_pdf.apk
Удаляем, но просто удалить его мало. Надо еще вычистить из системы. Для этого открываем файл
/data/system/packages.xml и ищем наше приложение в параметре codePath, запоминаем, что написано в параметре name - в нашем случае com.dataviz.docstogo
и из шела даем команду:
pm uninstall com.dataviz.docstogo
После этого приложение полностью удалено. В принципе, надо бы проверить его кэш и т.п.
Debian и изменение локали
Ничего гениального, все просто:
sudo dpkg-reconfigure locales
это конечно не тру способ, но быстро и без заморочек. однако, лень наступает.
sudo dpkg-reconfigure locales
это конечно не тру способ, но быстро и без заморочек. однако, лень наступает.
debian и установка модулей perl через cpan
Собрался установить модули для perl, как обычно через cpan. И не вышло. Оказалось, что дебиан поставлен в минимальной конфигурации и gcc и make отсутствуют.
aptitude install gcc
aptitude install make
И все в порядке, cpan снова с нами!
aptitude install gcc
aptitude install make
И все в порядке, cpan снова с нами!
воскресенье, 13 марта 2011 г.
apache и предупреждение "NameVirtualHost ... has no VirtualHosts"
При создании ОТДЕЛЬНЫХ файликов для виртуальных хостов вылезло предупреждение при запуске апача (что-то вроде этого) NameVirtualHost *:80 has no VirtualHosts
А все потому, что в КАЖДОМ файлике было упоминание NameVirtualHost *
Вынес его в etc/apache2/conf.d/virtual.conf
убрал упоминание NameVirtualHost из всех файликов виртуальных хостов и предупреждение пропало.
А все потому, что в КАЖДОМ файлике было упоминание NameVirtualHost *
Вынес его в etc/apache2/conf.d/virtual.conf
убрал упоминание NameVirtualHost из всех файликов виртуальных хостов и предупреждение пропало.
Drupal6 и нормальные урлы (человекочитаемые)
Сразу до начала создания контента используем модуль PathAuto. http://drupal.org/project/pathauto
Разархивируем модуль, и помещаем его в папку sites/all/modules, которая находится в каталоге сайта (если нет папки modules, то создаем ее и не забываем про права).
для работы PathAuto необходим модуль Token.http://drupal.org/project/token
Помещаем его туда же, что и PathAuto
Далее - меню «Управление → Конструкция сайта → Модули», и активируем модули Path, PathAuto и Token. "Сохранить настройки".
настроим транслитерацию - находим в папке модуля PathAuto файл «i18n-ascii.example.txt», и переименовываем его в «i18n-ascii.txt»
Далее меню «Управление», отображение "По модулям".
в модуле Path, вкладка «Синонимы», далее «Настройки автоматических синонимов», находим и ставим галочку «Транслитерировать перед созданием синонима». Сохраняем.
Разархивируем модуль, и помещаем его в папку sites/all/modules, которая находится в каталоге сайта (если нет папки modules, то создаем ее и не забываем про права).
для работы PathAuto необходим модуль Token.http://drupal.org/project/token
Помещаем его туда же, что и PathAuto
Далее - меню «Управление → Конструкция сайта → Модули», и активируем модули Path, PathAuto и Token. "Сохранить настройки".
настроим транслитерацию - находим в папке модуля PathAuto файл «i18n-ascii.example.txt», и переименовываем его в «i18n-ascii.txt»
Далее меню «Управление», отображение "По модулям".
в модуле Path, вкладка «Синонимы», далее «Настройки автоматических синонимов», находим и ставим галочку «Транслитерировать перед созданием синонима». Сохраняем.
суббота, 12 марта 2011 г.
Debian и обновление ключей
Если при попытке обновить пакеты выдало:
W: GPG error: http://security.debian.org stable/updates Release: Следующие подписи
не могут быть проверены, так как недоступен общий ключ: NO_PUBKEY 010908312D230C5F
W: GPG error: http://ftp.debian.org testing Release: Следующие подписи не могут быть
проверены, так как недоступен общий ключ: NO_PUBKEY 010908312D230C5F
Значит надо установить ключики разработчиков:
sudo apt-get install debian-archive-keyring
После этого:
aptitude update
Но можно и проигнорировать проверку:
apt-get --allow-unauthenticated update
W: GPG error: http://security.debian.org stable/updates Release: Следующие подписи
не могут быть проверены, так как недоступен общий ключ: NO_PUBKEY 010908312D230C5F
W: GPG error: http://ftp.debian.org testing Release: Следующие подписи не могут быть
проверены, так как недоступен общий ключ: NO_PUBKEY 010908312D230C5F
Значит надо установить ключики разработчиков:
sudo apt-get install debian-archive-keyring
После этого:
aptitude update
Но можно и проигнорировать проверку:
apt-get --allow-unauthenticated update
среда, 2 марта 2011 г.
tut.by и web login required
Если при работе почтовой программы с электронной почтой от tut.by (все хуже и хуже) появилось что-то вроде "web login required Failure". Значит за что-то заблокировали на гугле (а тут.бай именно его и использует). Идем сюда https://www.google.com/a/tut.by/UnlockCaptcha
вводим имя пользователя, пароль и капчу (кривые буквы).
Все должно заработать.
вводим имя пользователя, пароль и капчу (кривые буквы).
Все должно заработать.
среда, 16 февраля 2011 г.
Сборка ffmpeg с поддержкой x264
Собираем нужные либы:
1. libfaac и libfaad качаем тут http://www.audiocoding.com/downloads.html
2. libx264 берем тут http://www.videolan.org/developers/x264.html
для него нужен
3. yasm http://www.tortall.net/projects/yasm/wiki/Download
Собираем ffmpeg
./configure --enable-libfaac --enable-libfaad --enable-gpl --enable-nonfree --enable-libx264 --enable-libxvid
можно попутно добавить и --enable-libmp3lame
сборка омрачается сообщением об ошибке:
ERROR: libx264 not found
и это не смотря на то, что libx264 установлен. В общем надо поправить в configure (где-то 2628 строка) и добавить в список библиотек явное использование -lpthread
enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 -lm -lpthread
после этого configure отработает как нужно, проверяем, что все нужные библы включены.
Ну а дальше собираем кому как удобнее.
1. libfaac и libfaad качаем тут http://www.audiocoding.com/downloads.html
2. libx264 берем тут http://www.videolan.org/developers/x264.html
для него нужен
3. yasm http://www.tortall.net/projects/yasm/wiki/Download
Собираем ffmpeg
./configure --enable-libfaac --enable-libfaad --enable-gpl --enable-nonfree --enable-libx264 --enable-libxvid
можно попутно добавить и --enable-libmp3lame
сборка омрачается сообщением об ошибке:
ERROR: libx264 not found
и это не смотря на то, что libx264 установлен. В общем надо поправить в configure (где-то 2628 строка) и добавить в список библиотек явное использование -lpthread
enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 -lm -lpthread
после этого configure отработает как нужно, проверяем, что все нужные библы включены.
Ну а дальше собираем кому как удобнее.
среда, 26 января 2011 г.
Получение и применение патча для "бинарных" файлов.
В данном случае diff не подойдет.
используем утилитку xdelta
xdelta delta "new_file" "old_file" "patch" - делает патч
xdelta patch "patch" "old_file" "new_resault_file" - применяет патч
утилита по умолчанию использует сжатие (можно отключить - параметр "-0") с использованием библиотеки zlib.
Просмотреть отличия можно с помощью
vimdiff
vbindiff
используем утилитку xdelta
xdelta delta "new_file" "old_file" "patch" - делает патч
xdelta patch "patch" "old_file" "new_resault_file" - применяет патч
утилита по умолчанию использует сжатие (можно отключить - параметр "-0") с использованием библиотеки zlib.
Просмотреть отличия можно с помощью
vimdiff
vbindiff
вторник, 25 января 2011 г.
CentOS и запуск служб
Необходимо настроить запуск к примеру службы днс named
1. Можно сделать необходимы симлинки /etc/rc.d/init.d в /etc/rc.d/rc_x_.d в соответствующие уровни запуска.
2. Можно через утилиту chkconfig (шел)
3. Можно через /usr/sbin/ntsysv (менюшка)
1. Можно сделать необходимы симлинки /etc/rc.d/init.d в /etc/rc.d/rc_x_.d в соответствующие уровни запуска.
2. Можно через утилиту chkconfig (шел)
3. Можно через /usr/sbin/ntsysv (менюшка)
суббота, 22 января 2011 г.
среда, 12 января 2011 г.
Установка пакетов в CentOS с помощью yum
украдено почти целиком отсюда http://fedoraproject.org.ru/yum
Поиск в репозиториях
Для поиска в репозиториях с помощью yum используются три команды: list, search и provides.
Самый простой способ поиска - использование команды list. Команда list просматривает названия пакетов и их версии в поисках совпадений. Например, для просмотра пакетов с названием tsclient используйте:
yum list tsclient
Команда search ищет в названии пакета и его описании указанную строку. Например, для поиска пакетов связанных с PalmPilot введите:
yum search PalmPilot
Команда provides позволяет производить поиск пакетов содержащих указанный файл. Например, для поиска пакетов содержащих libneon введите:
yum provides libneon
Все команды поиска поддерживают групповые символы ? и * (экранируйте их символом \ для корректной обработки bash). К примеру, при для поиска пакетов начинающихся на tsc введите:
yum list tsc\*
для поиска пакетов, содержащих файлы в директории /etc/httpd
yum provides /etc/httpd\*
Установка пакетов с помощью Yum
Для установки пакетов с помощью yum используется параметр install:
так, для установки tsclient введите:
yum install tsclient
Yum автоматически разрешит (если сможет) зависимости, и предложит установить их:
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
tsclient i386 0.132-6 base 247 k
Installing for dependencies:
rdesktop i386 1.4.0-2 base 107 k
Transaction Summary
=============================================================================
Install 2 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 355 k
Is this ok [y/N]:
Установка пакетов из .rpm файлов
Для установки .rpm пакета с автоматическим разрешением зависимостей используется команда localinstall. Так команда:
yum localinstall foo.rpm
автоматически найдет зависимости пакета foo.rpm в репозиториях (если сможет) и предложит их установить.
Обновление системы
Обновление системы осуществляется с помощью одной команды - update. Таким образом:
yum update
обновит всю вашу систему. А команда
yum update foo
обновит только пакет foo.
Удаление пакетов
Удаление пакетов осуществляется с помощью команды remove. Так,
yum remove foo
удалит пакет foo из системы.
Поиск в репозиториях
Для поиска в репозиториях с помощью yum используются три команды: list, search и provides.
Самый простой способ поиска - использование команды list. Команда list просматривает названия пакетов и их версии в поисках совпадений. Например, для просмотра пакетов с названием tsclient используйте:
yum list tsclient
Команда search ищет в названии пакета и его описании указанную строку. Например, для поиска пакетов связанных с PalmPilot введите:
yum search PalmPilot
Команда provides позволяет производить поиск пакетов содержащих указанный файл. Например, для поиска пакетов содержащих libneon введите:
yum provides libneon
Все команды поиска поддерживают групповые символы ? и * (экранируйте их символом \ для корректной обработки bash). К примеру, при для поиска пакетов начинающихся на tsc введите:
yum list tsc\*
для поиска пакетов, содержащих файлы в директории /etc/httpd
yum provides /etc/httpd\*
Установка пакетов с помощью Yum
Для установки пакетов с помощью yum используется параметр install:
так, для установки tsclient введите:
yum install tsclient
Yum автоматически разрешит (если сможет) зависимости, и предложит установить их:
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
tsclient i386 0.132-6 base 247 k
Installing for dependencies:
rdesktop i386 1.4.0-2 base 107 k
Transaction Summary
=============================================================================
Install 2 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 355 k
Is this ok [y/N]:
Установка пакетов из .rpm файлов
Для установки .rpm пакета с автоматическим разрешением зависимостей используется команда localinstall. Так команда:
yum localinstall foo.rpm
автоматически найдет зависимости пакета foo.rpm в репозиториях (если сможет) и предложит их установить.
Обновление системы
Обновление системы осуществляется с помощью одной команды - update. Таким образом:
yum update
обновит всю вашу систему. А команда
yum update foo
обновит только пакет foo.
Удаление пакетов
Удаление пакетов осуществляется с помощью команды remove. Так,
yum remove foo
удалит пакет foo из системы.
воскресенье, 9 января 2011 г.
Android, Huaway U8500 и перенос программ на SD карту
Сам метод можно назвать app2sd, а мануалов полно в сети (что-то вроде http://4pda.ru/forum/index.php?showtopic=187486&st=440). Разбиваем катру на два раздела - оба примари. первый фат, второй ext2 (взял 512М - пока хватает). Файлы для автоматизации дальнейших действий подходят от LG GT540. Раздел /system совпадает с нашим, а именно /dev/block/mtdblock4. Можно запустить скрипт и он все что надо - сделает, можно "ручками" через adb shell набить команды из файлика gscript/a2sd.sh (так в общем-то и делал, во избежании недоразумений). busybox - уже был, еще при рутовании поставил. Перед переносом поубирал второстепенные приложения, потом они уже ставились сразу на карту. (вообще проскакивала информация, что при установке инсталяторы смотрят цифры свободной памяти из "настроек" и конечно же они ничего не знают о переносе разделов. поэтому желательно "зачистить" свободное пространство как можно больше, на сколько правда - не проверял)
В общем - перезапуск и работает.
Если кому надо подробнее, пишите в комент, добавлю описание.
В общем - перезапуск и работает.
Если кому надо подробнее, пишите в комент, добавлю описание.
Подписаться на:
Сообщения (Atom)