вторник, 14 августа 2012 г.

Памятка о XenServer

Для работы почты и бэкапов, после установки нужно сделать:

nano /etc/ssmtp/ssmtp.conf
... root=postmaster mailhub=mail01.gov.local
rewriteDomain=cavi.ru
hostname=xs-venus.gov.local
FromLineOverride=YES
...

mkdir /mnt/backup

export EDITOR=nano

crontab -e 
...
00 21 * * * perl /root/xenbackup-ng/xenbackup.pl xs-venus-everyday
...
crontab -l

вторник, 27 марта 2012 г.

Создание и развёртывание образа системы при помощи ImageX

В моем случае я решил, что самым простым вариантом будет использование стандартного диска установки в качестве WinPE + ImageX и образ на сетевой шаре.

Для начала нужно где-то взять сам ImageX и положить его на сетевую шару:
copy "%ProgramFiles%\Windows AIK\Tools\x86\imagex.exe" \\nas01\install$\fast_deploy\

После чего устанавливаем систему, ставим всё что нужно и проводим подготовку к снятию образа:
%SystemRoot%\system32\sysprep\sysprep.exe /oobe /generalize /shutdown

Вставляем самый обычный установочный диск Windows 7 и загружаемся с него. После того как загрузились нажимаем Shift+F10 и попадаем в консоль.

Для того, чтобы заработала сеть надо провести инициализацию:
wpeinit

Монтируем сетевую шару:
net use y: \\nas01\install$\fast_deploy

Снимаем образ системы:
y:\imagex.exe /capture c: y:\fdw7.wim "Windows 7 Professional SP1 Custom" "Windows7+Updates+Programs+Office+AV" /compress maximum


Для развёртывания образа надо, опять же, загрузиться с установочного диска, нажать Shift+F10, чтобы попасть в консоль.

Провести инициализацию:
wpeinit

Смонтировать сетевую шару:
net use y: \\nas01\install$\fast_deploy

Создаём раздел под систему (очень внимательно, если раздел уже есть, ничего создавать не надо):
diskpart
select disk 0
create partition primary size=32768
select partition 1
active
format fs=NTFS label="SYSTEM" quick
assign letter=c
exit


Разворачиваем образ:
y:\imagex /apply y:\fdw7.wim 1 c:

Правим загрузочную запись:
c:\windows\system32\bcdboot c:\windows /s c:

Перезагружаемся и через пару минут система готова к эксплуатации.


Создание настроенного образа операционной системы
BOOTMGR is missing - Repairing a Windows 7 or 2008 R2 image after VM deployment
Построение стандартного образа Windows 7. Пошаговое руководство
Параметры командной строки ImageX
Cинтаксис команд Sysprep
Параметры командной строки DiskPart

вторник, 14 февраля 2012 г.

Kiosk - Ubuntu 11.10 + Firefox

Ubuntu 11.10 Minimal ISO i386
Скорее всего после установки нас ждёт чёрный экран и мерцающий курсор. Если это действительно так, то Ctrl+Alt+F1 и мы попадаем в консоль.

Чиним стартовый экран:
sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT=\"quiet splash\"/GRUB_CMDLINE_LINUX_DEFAULT=\"\"/g' /etc/default/grub

Это нужно если уж совсем всё плохо (мне не понадобилось):
echo "GRUB_GFXPAYLOAD_LINUX=text">>/ect/default/grub

sudo update-grub



apt-get update
apt-get install xserver-xorg-core xinit fluxbox rungetty firefox openssh-server

Добавляем пользователя:
adduser kiosk

Делаем нашему пользовател автовход:
sed -i 's/exec \/sbin\/getty -8 38400 tty1/exec \/sbin\/rungetty tty1 --autologin kiosk/g' /etc/init/tty1.conf

Разрешаем запуск X'ов:
sed -i 's/allowed_users=console/allowed_users=anybody/g' /etc/X11/Xwrapper.config

Логинимся под пользователем:
su - kiosk

Добавляем автозапуск X'ов:
echo 'if [ -z "$DISPLAY" ] && [ $(tty) = /dev/tty1 ]; then
while true
do
startx --
sleep 10
done
fi'>> ~/.bash_profile


startx

Выходим из X'ов.

Добавляем в автозапуск менеджера окон браузер:
nano ~/.fluxbox/startup
...
firefox &
...


echo "
session.screen0.rootCommand: sh ~/.fluxbox/autostart.sh" >>~/.fluxbox/init


mv ~/.fluxbox/keys ~/.fluxbox/keys.orig; touch ~/.fluxbox/keys

Дополнения для Firefox:
https://addons.mozilla.org/ru/firefox/addon/autoauth/
https://addons.mozilla.org/ru/firefox/addon/reset-kiosk/
https://addons.mozilla.org/ru/firefox/addon/r-kiosk/

вторник, 7 февраля 2012 г.

Small tips для ZFS

Полные права группе "Все" (дальше права можно разрулить из вкладки "Безопасность"):
/usr/bin/chmod -R A=everyone@:rwxpdDaARWcCos:fd:allow /tank/folder

Компрессия на папку:
zfs set compression=gzip-9 tank/folder

пятница, 11 ноября 2011 г.

XenServer 6.0 local storage на software raid10

Для работы с разделами с GPT нужен parted. В XenServer по умолчанию он не установлен.

# yum install --enablerepo=base parted

Создаем разделы на дисках. Единицы измерения обязательно в секторах, чтобы потом не было проблем с выравниваем. Отступ 4 мегабайта, размер раздела кратен также 4-м мегабайтам, т.к. размер PE для LVM по умолчанию 4 мегабайта.

# parted /dev/sdc unit s mkpart primary 8192 976773120 set 1 raid on
# parted /dev/sdd unit s mkpart primary 8192 976773120 set 1 raid on
# parted /dev/sde unit s mkpart primary 8192 976773120 set 1 raid on
# parted /dev/sdf unit s mkpart primary 8192 976773120 set 1 raid on


Создаем массив:

# mdadm --create /dev/md_d0 --raid-devices=4 --chunk=64 --level=raid10 /dev/sd[cdef]1

Смотрим что получилось:
# cat /proc/mdstat
Personalities : [raid10]
md_d0 : active raid10 sdf1[3] sde1[2] sdd1[1] sdc1[0]
976764800 blocks 64K chunks 2 near-copies [4/4] [UUUU]
[==============>......] resync = 74.8% (730963776/976764800) finish=27.7min speed=147488K/sec



Узнаем UUID нашего хоста:
# xe host-list
uuid ( RO) : e6cf026c-e065-40a6-a768-a6518b20c1a6
name-label ( RW): xs
name-description ( RW): Default install of XenServer


Создаем хранилище:
# xe sr-create content-type="local SR" host-uuid=e6cf026c-e065-40a6-a768-a6518b20c1a6 type=lvm device-config:device=/dev/md_d0 shared=false name-label="LocalSoftwareRAID10"

Смотрим что получилось:
# pvdisplay
--- Physical volume ---
PV Name /dev/sda3
VG Name VG_XenStorage-514f2baa-da16-9677-d2b6-76620462516a
PV Size 66.53 GB / not usable 10.06 MB
Allocatable yes
PE Size (KByte) 4096
Total PE 17029
Free PE 17028
Allocated PE 1
PV UUID 1Prm9U-onYg-fE0I-B7MF-N2ib-MVHJ-hsC0Nk

--- Physical volume ---
PV Name /dev/md_d0
VG Name VG_XenStorage-32feadcd-0785-7df4-768b-7971b6b417c4
PV Size 931.51 GB / not usable 8.38 MB
Allocatable yes
PE Size (KByte) 4096
Total PE 238465
Free PE 238464
Allocated PE 1
PV UUID InJ5E4-idcZ-u71c-h2SX-Bqj0-O4Ho-VsMDmz


Пользуемся.

четверг, 27 октября 2011 г.

Смена источника пакетов в pfSense 2.0

# setenv PACKAGESITE ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.2-release/Latest/
# pkg_add -r redir

вторник, 30 августа 2011 г.

Установка USB/IP на Ubuntu Server 11.04

Серверная часть



Ставим пакет:
$ sudo apt-get install usbip

Добавляем необходимые модули ядра в автозапуск:
$ sudo nano /etc/modules
...
usbip
usbip_common_mod
...


Добавляем демона в автозапуск:
$ sudo cp /etc/init.d/skeleton /etc/init.d/usbipd
$ sudo nano /etc/init.d/usbipd
...
DESC="USBIP daemon"
NAME=usbipd
...
DAEMON_ARGS="-D"
...

$ sudo chmod 755 /etc/init.d/usbipd
$ sudo update-rc.d usbipd defaults

Перезагрузимся (хотя это и не обязательно, т.к. можно вручную запустить модули и демона)
$ sudo shutdown -r now

Чтобы посмотреть какие модули загружены в системе:
$ lsmod

Чтобы посмотреть текущие процессы:
$ ps aux


Подсоединяем наше устройство и смотрим какой у него Vendor/Device ID:
$ lsusb

Теперь по этому Vendor/Device ID выясняем позицию на шине:
$ sudo usbip_bind_driver --list

Даем доступ к устройству:
$ sudo usbip_bind_driver --usbip 3-1



Клиентская часть (Windows)



Качаем клиента - http://sourceforge.net/projects/usbip/files/usbip_windows/
Распаковываем в удобное место. Устанавливаем вручную драйвер.

Смотрим какие устройства доступны на нашем сервере:
C:\usbip\usbip.exe -l <server_ip>

Подключаем нужное устройство:
C:\usbip\usbip.exe -a <server_ip> <USB-ID>

Можно сделать этого службу. Качаем - http://runasservice.com/Download/. Кладем в определенную папку, где программа будет теперь жить. После чего создаем сервис:
C:\>C:\RunAsService\runasservice.exe install "USBIPKey" "C:\USBIP\usbip.exe" "-a <server_ip> <USB-ID>"

Та реализация была "неочень". Появилась идейка получше:


Для автоматизации подключения устройств в "Планировщике заданий" каждые 5 минут запускается скрипт, который проверяет запущены ли нужные соединения.

Для отправки команд на сервер понадобится plink.exe из состава PuTTY.



На сервере, чтобы sudo не спрашивал пароль, нужно поправить файл sudoers:
$ sudo visudo
...
usbadmin ALL=NOPASSWD:/usr/sbin/usbip_bind_driver


Запись лучше добавлять в самый конец, т.к. приоритет у правил по порядку следования.

Сам скрипт на PowerShell:

#usbip client autoconnect script
#v 0.2.1

$usbipExePath = "C:\usbip\usbip.exe"
$plinkExePath = "C:\usbip\plink.exe"
$usbServerIp = "192.168.16.61"
$usbDevices = @("3-1")

$processes = Get-WmiObject Win32_Process -Filter "Name like '%usbip%'" | select-Object CommandLine

foreach ($device in $usbDevices) {
$deviceIsConnected = $false
foreach ($process in $processes) {
if ($process -match " -a $usbServerIp $device") {
$deviceIsConnected = $true
}
}
if ($deviceIsConnected -eq $false) {
#reexport device on USBIP-host
[Diagnostics.Process]::Start("$plinkExePath","-ssh -pw pa$$w0rd usbadmin@$usbServerIp sudo usbip_bind_driver --other $device;sudo usbip_bind_driver --usbip $device")
Start-Sleep -Seconds 10
#reconnect device on USBIP-client
[Diagnostics.Process]::Start("$usbipExePath","-a $usbServerIp $device")
}
}