пятница, 30 сентября 2011 г.

программный RAID1 с загрузкой под grub2 (Fedora14)

Монтируем диск для хранения образа диска
#mkdir /mnt/sdc
#mount /dev/sdc1 /mnt/sdc
Снимаем образ с диска с инфой
#dd if=/dev/sda conv=sync,noerror bs=32M | gzip -9cf > /mnt/sdc/sda.dd-image.gz
Где bs устанавливаем равную кэшу диска (в моём случае 32 Mb)

Разворачиваем образ из архива
#gunzip -c /mnt/sdc/sda.dd-image.gz | dd bs=32M of=/dev/sda
(В моём случае 500 гигабайт - ~100 минут)

Прогресс смотрим следующим образом, в соседней консоли узнаем pid процесса dd:
#ps -A |grep dd
Затем смотрим сам прогресс:
#watch -n10 kill -USR1 `ps -o pid -C dd|tail -n1`
------------------------------------------------------------------------------------------
#/dev/sda - диск с информацией
#/dev/sdb - диск зеркало
Что бы убрать с диска метадату аппаратного массива необходимо загрузившись с liveCD Выполнить следующие комманды:
#dmraid -r
(покажет список дисков у которых присутствуют метаданные массива)
#dmraid -rE /dev/sda
(собственно затирание метаданных)

Если есть остатки программного массива, их можно затереть следующим образом:
Для начала отмонтируйте и остановите массив:
# umount /dev/md0
# mdadm -S /dev/md0
Затем необходимо затереть superblock каждого из составляющих массива:
# mdadm --zero-superblock /dev/sda1
# mdadm --zero-superblock /dev/sda2
и так далее по всем разделам включенным в массивы
Если действие выше не помогло, то затираем так:
# dd if=/dev/zero of=/dev/sda1 bs=512 count=1
# dd if=/dev/zero of=/dev/sda2 bs=512 count=1
Загружаемся с /dev/sda и устанавливаем grub2 в качестве загрузчика. И обновляенм ядро (при необходимости):
# yum install grub2
# grub2-install /dev/sda
#yum erase kernel kernel-PAE grub
#yum install dracut dracut-tools kernel-PAE
Создаем через fdisk идентичные разделы, или копируем структуру первого диска /dev/sda:
#sfdisk -d /dev/sda | sfdisk --force /dev/sdb
#grub2-install /dev/sdb
В fdisk выставляем для всех разделов диска /dev/sdb тип fd ( raid autodetect)

Создаем массив для разделов, НЕ подключая туда пока раздел с информацией (sda). Если используется версия GRUB2 < 1.98, то дописываем в строку создания массива параметр --metadata=0.9 .
#mdadm --create /dev/md1 --level=1 --metadata=0.9 --raid-devices=2 missing /dev/sdb1 (это /boot)
#mdadm --create /dev/md2 --level=1 --metadata=0.9 --raid-devices=2 missing /dev/sdb2 (это /)
#mdadm --create /dev/md3 --level=1 --metadata=0.9 --raid-devices=2 missing /dev/sdb3 (swap)
#mdadm --create /dev/md4 --level=1 --metadata=0.9 --raid-devices=2 missing /dev/sdb4 (это /var)
Проверяем как создались диски
#cat /proc/mdstat
Форматируем свеже-созданные разделы
#mkfs.ext4 /dev/md1
#mkfs.ext4 /dev/md2
#mkswap -f /dev/md3
#mkfs.ext4 /dev/md4
Правим файл mdadm.conf
#cp /usr/share/doc/mdadm-3.1.3/mdadm.conf-example /etc/mdadm.conf
#mdadm --examine --scan >> /etc/mdadm.conf
Удаляем в содержимом файла /etc/sysconfig/grub ссылку на массив

Удаляем файл /boot/grub2/device.map
#rm /boot/grub2/device.map
Изменяем файл fstab
для начала узнаем UUID дисков в массиве и для удобства копируем их в /etc/fstab
#blkid /dev/md1 >>/etc/fstab
#blkid /dev/md2 >>/etc/fstab
#blkid /dev/md3 >>/etc/fstab
#blkid /dev/md4 >>/etc/fstab
Копируем записи загрузки в fstab и комментируем старые записи.
В незакомментированных записях правим параметры загрузки на UUID соответствующих дисков.
Должно получиться что-то вроде этого:
UUID=09e79cff-323b-4645-a8d4-630172cfedaf / ext4 defaults 1 1
UUID=0f316921-b794-492c-8fc2-8d71827145b5 /boot ext4 defaults 1 2
UUID=75ed9f59-a61c-4379-a124-af0b5dfd0a61 /var ext4 defaults 1 2
UUID=6f724829-50e2-4670-a939-747706b2d4d2 swap swap defaults 0 0
В файле /etc/mtab так же правим данные разделов на соответствующие /dev/md* .

далее обновляем initamfs. Так как стандартный пакет не может автоматически собрать mdraid создаем свой собственный вариант initramfs`а
#dracut --modules mdraid --omit dmraid --mdadmconf --force /boot/dracut/mdraid.img версия_ядра
Версию ядра можно списать по аналогии результату команды uname -r , только для нового ядра. Так происходит, потому что мы находимся еще на старом,
а не на свеже установленном ядре. в моем случае версия ядра была 2.6.35.14-96.fc14.i686.PAE.

и объединяем его со стандартным
#dracut-catimages /boot/mdraidadv.img /boot/initramfs-2.6.35.14-96.fc14.i686.PAE.img
По пути /etc/grub.d создаем файл 09_mdraid
#cp /etc/grub.d/40_custom /etc/grub.d/09_raid
со следующим содержимым:
menuentry "MDRAID and INITRAMFS" --class gnu-linux --class gnu --class os {
set gfxpayload=keep
insmod mdraid
insmod ext2
set root='(md1)'
echo Loading Linux 2.6.35.14-96.fc14.i686.PAE ...
linux /vmlinuz-2.6.35.14-96.fc14.i686.PAE root=/dev/md2 ro quiet KEYTABLE=ru SYSFONT=ter-k14n LANG=ru_RU.UTF-8
echo Loading initial ramdisk ...
initrd /mdraidadv.img
}
Строка "KEYTABLE=ru SYSFONT=ter-k14n LANG=ru_RU.UTF-8" необходима для лечения квадратиков вместо русских букв. Для удобства её можно скопировать из результата команды dracut-gencmdline
Так же изменяем в файле /lib/udev/rules.d/10-console.rules строку
KERNEL=="tty0", RUN+="/lib/udev/console_init %k"
на
KERNEL=="tty*", RUN+="/lib/udev/console_init %k"
Далее смотрим в /boot/grub2/grub.conf
root в этой переменной указывается путь, где grub ищет сам себя:
set root = '(md1)'
в строке search указываем путь до раздела загрузки меняя UUID, который ранее получили и прописали в fstab
search --no-floppy --fs-uuid --set 0f316921-b794-492c-8fc2-8d71827145b5
Пересобираем конфиг GRUB`а 2
#grub2-mkconfig >> /boot/grub2/grub2.conf
На всякий случай для отладки включаем шелл dracut`а. Для этого в файле /boot/grub2/grub.conf в конце строки загрузки ядра
можно дописать "console=tty0 rdshell" без кавычек.
------------------------------------------------------------------------------------------
Загружаемся с LiveCD
монтируем диск sda в /mnt/sda а массив md в /mnt/md
#mkdir /mnt/sda
#mkdir /mnt/md

#mount /dev/md2 /mnt/md
#mkdir /mnt/md/boot
#mkdir /mnt/md/var
#mount /dev/md1 /mnt/md/boot
#mount /dev/md4 /mnt/md/var

#mount /dev/sda2 /mnt/sda
#mount /dev/sda1 /mnt/sda/boot
#mount /dev/sda4 /mnt/sda/var
Копируем данные с sda на md
#cp -dpRx /mnt/sda/* /mnt/md
(~30 минут)
------------------------------------------------------------------------------------------
Загружаемся с массива
#reboot
В fdisk выставляем для всех разделов диска /dev/sda тип fd ( raid autodetect)

подключаем диски устройства /dev/sda в массив
mdadm --add /dev/md1 /dev/sda1
mdadm --add /dev/md2 /dev/sda2
mdadm --add /dev/md3 /dev/sda3
mdadm --add /dev/md4 /dev/sda4
и напоследок ещё раз делаем
#grub2-install /dev/sda
#grub2-install /dev/sdb

суббота, 11 июня 2011 г.

Настройка обработки Magnet ссылок на deluge

Источник: http://welinux.ru/post/2235/

Магнет-ссылки предназначены для указания на ресурсы, доступные к загрузке через p2p сети. Такие ссылки в основном идентифицируют файлы не по их расположению или имени, а по содержанию, точнее, по хеш-коду.

При клике по такой ссылке google chrome передаёт эту ссылку утилите xdg-open, которая в свою очередь передаёт ссылку конечной программе. Но вряд ли xdg-open точно знает какая программа должна обрабатывать magnet-ссылку и у меня, например, xdg-open передавала ссылку x-www-browser, коим в моей системе является google-chrome. Сейчас я расскажу вам как научить xdg-open открывать magnet-ссылки тем, чем нужно.

Для этого открываем его для редактирования

sudo gedit /usr/bin/xdg-open

Далее идем в самый конец файла и видим строки:

case "$DE" in
kde)
open_kde "$url"
;;
gnome)
open_gnome "$url"
;;
xfce)
open_xfce "$url"
;;
generic)
open_generic "$url"
;;
*)
exit_failure_operation_impossible "no method available for opening '$url'"
;;
esac

Понятно, что для open_xfce соответствует то, что команда будет выполняться в xfce, для open_kde то, что в kde и т.д. При необходимости ненужные DE можно стереть. Теперь нужно добавить условие, которое будет выполняться, если переданная ссылка magnet. Ниже приведен пример для всех DE и torrent клиента deluge.

case "$DE" in
kde)
if (echo $url | grep '^magnet') then
deluge "$url"
else
open_kde "$url"
fi
;;
gnome)
if (echo $url | grep '^magnet') then
deluge "$url"
else
open_gnome "$url"
fi
;;
xfce)
if (echo $url | grep '^magnet') then
deluge "$url"
else
open_xfce "$url"
fi
;;
generic)
if (echo $url | grep '^magnet') then
deluge "$url"
else
open_generic "$url"
fi
;;
*)
exit_failure_operation_impossible "no method available for opening '$url'"
;;
esac

Естественно, что вместо deluge вы можете подставить любую программу.
Как я уже сказал ненужные DE можно удалить и для openbox вышепреведённый код можно заменить на:

if (echo $url | grep '^magnet') then
deluge "$url"
else
open_generic "$url"
fi

среда, 2 марта 2011 г.

Увеличение количества одновременно открытых окон в XP

Для увеличения одновременно открытых окон в XP открываем ветку регистра:
HLKM/System/CurrentControlSet/Control/Session Manager/SubSystems

И заменяем в ключе Windows часть строки
"SharedSection=1024,3072"
на
SharedSection=5120,6400,512

Перезагружаемся и пользуемся.

пятница, 24 декабря 2010 г.

1С + postgresql на Fedora

Вообще замечательно это описано на этом ресурсе
Это надо сделать сразу:
В /etc/sysctl.conf прописать:
kernel.shmmax=1073741824
kernel.shmall=2097152
Обновить командой:
sudo sysctl -p
Перейти в директорию с RPM пакетами платформы 1С и установить её командой:
$ sudo rpm -i *.rpm
Starting 1C:Enterprise 8.2 server: OK
Далее, скачиваем исходники с сайта 1С и разворачиваем пакет:
$ rpm -ihv postgresql-8.4.3-3.1C.src.rpm
Устанавливаем необходимые приложения для компиляции базы:
$ sudo yum install rpm-build gcc make glibc-devel bison flex python-devel tcl-devel readline-devel zlib-devel openssl-devel krb5-devel e2fsprogs-devel gettext pam-devel openldap-devel icu libicu libicu-devel
Также необходимо исправить параметр уровня подгона патча, на RHEL он равен 2, но в новой rpm системе его предполагается установить в 0, а поскольку Fedora – есть тестовая платформа для RHEL, то тут уже все новое работает в тестовом режиме. Для этого открываем файл /usr/lib/rpm/macros находим в нем строчку
%_default_patch_fuzz 0
и заменяем ее на
%_default_patch_fuzz 2
Если мы этого не сделаем устанавливаемые патчи будут обрабатываться новыми скриптами и совсем не правильно.
Создаём символьные ссылки:
sudo ln -s /opt/1C/v8.2/i386/libicudata.so.40 /usr/local/lib/libicudata.so.34
sudo ln -s /opt/1C/v8.2/i386/libicui18n.so.40 /usr/local/lib/libicui18n.so.34
sudo ln -s /opt/1C/v8.2/i386/libicuuc.so.40 /usr/local/lib/libicuuc.so.34
Сами файлы *.so.40 (или какие там будут) следует взять из /opt/1C/v8.2/i386/ (появится после установки 1C).
Перед компиляцией так же комментируем тест timestampz из postgresql-8.4.1C.spec,
что бы избежать ошибки на этапе тестирования при компиляции:
# %patch2 -p1
После этого запускаем компиляцию
$ rpmbuild -ba /home/Юзер_из_под_которого_компилировали/rpmbuild/SPECS/postgresql-8.4.1C.spec
Затем перходим в папку
/home/Юзер_из_под_которого_компилировали/rpmbuild/RPMS/i386/
и устанавливаем postgresql:
sudo rpm -i *.rpm
Так же символьные ссылки *.so.34 надо скопировать по пути /usr/lib/pgsql/:
sudo cp /usr/local/lib/libicudata.so.34 /usr/lib/pgsql/
sudo cp /usr/local/lib/libicui18n.so.34 /usr/lib/pgsql/
sudo cp /usr/local/lib/libicuuc.so.34 /usr/lib/pgsql/

четверг, 28 октября 2010 г.

Gnome переключение раскладок

/etc/X11/xorg.conf.d/10-evdev.conf

Ссылка раз
Ссылка два

Section "InputClass"
Identifier "evdev pointer catchall"
MatchIsPointer "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection

Section "InputClass"
Identifier "evdev keyboard catchall"
MatchIsKeyboard "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection

Section "InputClass"
Identifier "evdev touchpad catchall"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Driver "synaptics"
EndSection

Section "InputClass"
Identifier "evdev tablet catchall"
MatchIsTablet "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection

Section "InputClass"
Identifier "evdev touchscreen catchall"
MatchIsTouchscreen "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection

вот этого достаточно чтобы все работало
раскладку клавиатуры можно прописать в нём же

Section "InputClass"
Identifier "Keyboard Defaults"
MatchIsKeyboard "yes"
Option "XkbLayout" "us,ru(winkeys)"
Option "XkbOptions" "terminate:ctrl_alt_bksp,grp:lwin_toggle,grp_led:scroll"
EndSection

среда, 15 сентября 2010 г.

После обновления Х перестали работать мышь и клава.

пересобрать
xf86-input-evdev

Trac + subversion под windows c доменной авторизацией

источник на апгрей трака
источник на мануал создания ключей для https

Мой поток сознания и примеры

 Обновлял с версии Trac-11 до Trac-12.
Необходимы следующие пакеты:
Считаем что сам Subversion уже установлен.

svn-python-1.6.6.win32-py2.6.exe
setuptools-0.6c11.win32-py2.6.exe (Набор инструментов для Python)
pywin32-214.win32-py2.6.exe (Сам Python)
pysqlite-2.6.0.win32-py2.6.exe (SQLite)
mod_python-3.3.2-dev-20080819.win32-py2.6.exe (Модуль питон для apache 2.2)
Genshi-0.6.win32.exe (Обработка файлов HTML и XML)
Babel-0.9.5.win32.exe (для руссификации)
Trac-0.12.win32.exe (Сам Trac)

Если обновляем trac на новую версию, то необходимо удалить старую версию трака и Genshi и залить  новые.
В случае руссификации перед установкой трака необходимо установить модуль Babel.


Для использования файла с правами доступа на просмотр/изменения  хранилища SVN, необходимо в trac.ini в секции [trac] установить параметры
authz_file = T:\repository\conf\svnaccess.conf
permission_policies = AuthzSourcePolicy, DefaultPermissionPolicy, LegacyAttachmentPolicy
При чем AuthzSourcePolicy должен стоять первым.

Вроде всё остальное считаем настроенным.

httpd.conf
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
LoadModule python_module modules/mod_python.so


в httpd-ssl.conf:

------Начало  httpd-ssl.conf -------
Listen 443
AddType application/x-x509-ca-cert    .crt
AddType application/x-pkcs7-crl    .crl
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:C:/Program Files/Apache Software Foundation/Apache2.2/logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300
SSLMutex default

    Alias /trac/chrome/common "C:/Program Files/Python/Lib/site-packages/trac/htdocs/"
    <Directory "C:/Program Files/Python/Lib/site-packages/trac/htdocs/">
      Order allow,deny
      Allow from all
    </Directory>

<VirtualHost *:443>
    ServerName bs:443
    ServerAdmin admin@bitza.lan
    ErrorLog "C:/Program Files/Apache Software Foundation/Apache2.2/logs/SVN-error.log"
    TransferLog "C:/Program Files/Apache Software Foundation/Apache2.2/logs/SVN-access.log"

    SSLEngine On
    SSLCipherSuite ALL

    SSLCertificateFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/server.crt"
    SSLCertificateKeyFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/server.key"

    <Location />
        DAV svn
        SVNPath "T:\repository"
   
        AuthName "Subversion repositories"
        AuthzSVNAccessFile "T:\repository\conf\svnaccess.conf"
        SSLRequireSSL
   
        AuthType SSPI
        SSPIAuth On
        SSPIAuthoritative On
        SSPIDomain bitza
##        SSPIOmitDomain on
        SSPIUsernameCase lower
        SSPIPerRequestAuth on
        SSPIOfferBasic On
   
        Require valid-user
    </Location>
    <Location /test>
        DAV svn
        SVNPath "T:\repository\test"
   
        AuthName "Subversion repositories"
        AuthzSVNAccessFile "T:\repository\test\conf\svnaccess.conf"
        SSLRequireSSL
   
        AuthType SSPI
        SSPIAuth On
        SSPIAuthoritative On
        SSPIDomain bitza
##        SSPIOmitDomain on
        SSPIUsernameCase lower
        SSPIPerRequestAuth on
        SSPIOfferBasic On
   
        Require valid-user
    </Location>
</VirtualHost>
------Конец  httpd-ssl.conf -------

В httpd-vhosts.conf

------ Начало httpd-vhosts.conf -------
 NameVirtualHost *:80
<VirtualHost *:80>
SSLEngine off
    DocumentRoot "D:/www/OCSInventory/ocsreports"
    ServerName OCS
    ErrorLog "logs/OCS-error.log"
    CustomLog "logs/OCS-access.log" common
</VirtualHost>

<VirtualHost *:80>
SSLEngine off
    DocumentRoot "D:/www/bs"
    ServerName bs
    ErrorLog "logs/BS-error.log"
    CustomLog "logs/BS-access.log" common
    <Location /phpmyadmin>
        Order deny,allow
        Allow from all
    </Location>

        <Location /trac>
            SetHandler mod_python
            PythonHandler trac.web.modpython_frontend
            PythonOption TracEnvParentDir "T:/trac-projects"
            PythonOption TracUriRoot /trac
            AuthName "авторизация в trac-projects"
            AuthType SSPI
            SSPIAuth On
        SSPIDomain bitza
            SSPIAuthoritative On
            SSPIOfferBasic On
#        SSPIOmitDomain On
    SSPIUsernameCase lower
    SSPIPerRequestAuth on

            Require group "bitza\Domain Admins" "bitza\Developers"
        </Location>
</VirtualHost>

------ Конец httpd-vhosts.conf -------