понедельник, 27 июля 2009 г.

Converting a VMWare image to Xen HVM (vmdk to xen)

Данный метод применим для "холодного" переноса виртуальной машины из vmware в xen.

1) Подготавливаем для преобразования vdmk-образ:
# vmware-vdiskmanager -r vm_image.vmdk -t 0 vm_image-flattened.vmdk

2) Преобразуем в "понятный" для xen'a формат:

# qemu-img convert vm
_image-flattened.vmdk
xen_image.img

Теперь образ готов для использования в DomU (замечу, что пока только в режиме полной виртуализации).

воскресенье, 12 июля 2009 г.

Инсталляция Debian lenny из-под OpenSUSE 11.1

Подготовка debootstrap:

# mkdir -p /home/xen

# cd /home/xen
# wget http://ftp.de.debian.org/debian/pool/main/d/debootstrap/debootstrap-udeb_1.0.13_all.udeb
# ar x debootstrap-udeb_1.0.13_all.udeb
# mkdir debootstrap
# cd debootstrap
# tar xvzf ../data.tar.gz
# cp -rf ./* /

Создаем образы дисков (разделы) для установки lenny:
# dd if=/dev/zero of=/home/xen/images/debian-gw2.img bs=1M count=10000
# dd if=/dev/zero of=/home/xen/images/debian-gw2-swap.img bs=1M count=512
# mkswap /home/xen/images/debian-gw2-swap.img
Setting up swapspace version 1, size = 524284 KiB
no label, UUID=21d835eb-b323-4b61-93d9-f5c5c5208b73
# mkfs.ext3 /home/xen/images/debian-gw2.img
mke2fs 1.41.1 (01-Sep-2008)
/home/xen/images/debian-gw2.img is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
640848 inodes, 2560000 blocks
128000 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2621440000
79 block groups
32768 blocks per group, 32768 fragments per group
8112 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 36 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

# mount -o loop /home/xen/images/debian-gw2.img /mnt

Теперь:
# debootstrap sid /mnt http://ftp.us.debian.org/debian/
I: Retrieving Release

Понятно, забыли указать архитектуру, указываем:
# debootstrap --arch=i386 lenny /mnt http://ftp.us.debian.org/debian/
I: Retrieving Release
I: Retrieving Packages
I: Base system installed successfully.

Далее надо будет установить ядро поддерживающее работу с xen.
Для этого надо в каталог /mnt/root скопировать закинем linux-image-2.6.26-2-xen-686_2.6.26-17_i386.deb и linux-modules-2.6.26-2-xen-686_2.6.26-17_i386.deb (забегая в перед скажу, что нужно будет еще и зависимости к пакетам установить: initramfs-tools_0.92o_all.deb, libvolume-id0_0.125-7+lenny1_i386.deb, locales-all_2.7-18_i386.deb, klibc-utils_1.5.12-2_i386.deb, udev_0.125-7+lenny1_i386.deb, libklibc_1.5.12-2_i386.deb)
# chroot /mnt /bin/bash
# dpkg -i linux-image-2.6.26-2-xen-686_2.6.26-17_i386.deb
и т.д.

Редактируем fstab:
# vi /etc/fstab
/dev/hda1 / ext3 defaults,errors=remount-ro 0 1
Запускаем программу base-config для установки базовой системы Debian.
# base-config new

dpkg -i libc6-xen

<статья в процессе написания!>

пятница, 10 июля 2009 г.

XDMCP доступ из MS Windows

Пару раз задавали вопрос о настройке сабжа. Есть хорошая статья для начала.

Автор статьи: Kotjara
Дата: 09.09.2004

НАСТРОЙКА СЕРВЕРА XDMCP ДЛЯ WINDOWS-КЛИЕНТОВ

В этой статье описана настройка сервера удаленного доступа к графической оболочке X Window компьютеров под управлением Linux Red Hat 7.2, 8.0, Linux Fedora и Linux XP. В качестве удаленных компьютеров выступают машины под управлением Windows.
В качестве эмулятора Х Window можно взять программу Xmanager по адресу www.netsarang.com/products/xmanager.html

Настройка GDM

1. В файле /etc/X11/gdm/gdm.conf в разделе [xdmcp] замените Enable=false на Enable=true. Этим Вы снимите запрет на удаленное подключение к X серверу.
Для ленивых: в режиме Х Window жмете на кнопку в левом нижнем углу интерфейса (например, красная шляпа в Red Hat или разноцветный шар в Linux XP) > Системные параметры > Экран входа в систему. На закладке XDMCP ставите галку в окошке «Включить протокол XDMCP» (“Enable XDMCP”).
2. Для того, чтобы кириллица корректно отображалась на Windows-клиентах, закомментируйте в файле /etc/X11/fs/config строку no-listen=tcp, чтобы дать доступ удаленным машинам к серверу шрифтов.
3. Перезагрузите сервер шрифтов:
/etc/rc.d/init.d/xfs restart

В случае, если gdm не стоит по умолчанию (как в Red Hat 9.0), может использоваться сервер XDM (самый первый и простой из серверов XDMCP), либо сервер KDM. Настройка XDM и KDM описаны в литературе, но мною не тестировались.

Настройка XDM

В файле /etc/X11/xdm/xdm-config закомментируйте строку
DisplayManager.requestPort: 0
Тем самым Вы разрешите XDM серверу принимать запросы на 177 порт. Кроме этого, можете ограничить доступ к серверу, прописав нужные узлы в файле /etc/X11/xdm/Xaccess.

Настройка KDM

В файле /etc/kde/kdm/kdmrc в секции [Xdmcp] пропишите
Enable=true.
Можете ограничить доступ к серверу, прописав нужные узлы в файле /etc/kde/kdm/Xaccess.

Настройка клиента

1. Инсталлируйте Xmanager.
2. Запустите Xconfig.
3. На вкладке Xwindow в окне Window Size выставите размеры эмулированного окна (можно выставить и полноэкранный режим).
4. На вкладке XDM выберите XDM Query и в окне Host пропишите имя или IP-адрес Linux-машины.
5. На вкладке Font нажмите кнопку Add Font Server и в появившемся окне пропишите имя Linux-машины.
6. Нажмите OK и выйдите из Xconfig.
7. Запустите Xmanager.

Возможные проблемы

1. В RedHat 8.0 я столкнулся с тем, что при использовании KDE возможен запуск под одним и тем же логином лишь одного X Window (на клиенте или на сервере). Активируется лишь тот Window Manager, который запускается последним. При входах под разными логинами такого не наблюдается. Эта функция появилась в версии 8.0, по крайней мере, в 7.2 ее не наблюдалось. Нет этого глюка и в Linux XP. Если Вам удастся справиться с этой проблемой, напишите мне.
2. Если будут проблемы с брандмауэром, пропишите в /etc/sysconfig/iptables
-A INPUT -p tcp -m tcp --dport 177 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 177 -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 7100 --tcp-flags SYN,RST,ACK SYN -j REJECT --reject-with icmp-port-unreachable

Рекомендуемая литература

1. XManager FAQ (http://www.netsarang.com/products/xmg_faq.html?PHPSESSID=0d32cbfee4ce8890a86fe29ffc8a4426#faq02)
2. Р.В.Смит Сетевые средства Linux, 2003

Печать из dosemu (консоли) в 866 кодировке (и не только)

Так сказать ТУ: Есть клиенты (подключенные по XDMCP к серверу OpenSUSE 11.1) работающие с foxpro'шными программами через xdosemu, есть принтер (hp laserjet 1200) подключенный к серверу, настроенный и рабочий cups.
ТЗ: В конце рабочего дня из фоксовских программ надо печать "ведомости" на hp1200 естественно в 866 кодировке.

Приступим:
1. проверяем как правильно ли работает печать из линуксовой консоли
$lpr file.txt
lpr: Error - no default destination available.

Ага, не указан принтер по умолчанию. Идем на http://servername:631 и выбираем принтером по умолчанию hplj1200.

2. Теперь остается научиться печать русские тексты и псевдографику. Для этого будем использовать a2ps и шрифты sharatype. Готовый архив с настройками и шрифтами лежит здесь.
Качаем и дальше делаем следующее:
* Разархивируем архив.
* Скопируем файл encoding/ibm-cp866.edf в /usr/share/a2ps/encoding/
* Добавляем содержимое файла encoding.map.add к файлу /usr/share/a2ps/encoding/encoding.map
* Копируем файлы из папки afm/ в папку /usr/share/a2ps/afm/
* Копируем файлы из папки fonts/ в папку /usr/share/a2ps/fonts/
* В папке /usr/share/a2ps/afm запускаем ./make_fonts_map.sh && mv fonts.map.new fonts.map

При печати указывать кодировку 866 или ту которая нужна и поддерживается a2ps.

Пример:
$a2ps --encoding=866 file

3. Вносим изменения в /etc/dosemu/dosemu.conf
$_lpt1 = "a2ps --encoding=866 --medium=a4 -f 6.5 "

В общем-то все.

ЗЫ: Опции последнего пункта, кроме --encoding=866 не обязательны.

среда, 8 июля 2009 г.

Печать на Canon MF3228 (и не только) подключенному к Windows XP

Статья не моя, но очень пригодилась.

HOWTO - Печать на принтер под Windows из Linux БЕЗ каких-либо Linux-драйверов или PPD.

Автор Justin Yackoski - (my email address is my first name @ my last name dot name) перевод BuhCIA
Back to English
Для кого эта статья HOWTO?

Для тех, кто имеет хотя бы 1 компьютер под windows, и 1 или несколько компьютеров под linux, объединенные в сеть. Эта статья HOWTO предполагает, что принтер присоединен к компьютеру под windows, который всегда включен, и этот принтер правильно установлен под windows.
Почему Вам это может понадобиться?

Без описываемого метода Ваш принтер должен поддерживаться linux для возможности печатать из-под linux, даже если он присоединен к компьютеру с windows и Вы хотите печатать на нем по сети с помощью SMB. Между тем теоретически при наличии компьютера с Windows в сети, к которому присоединен Ваш принтер, Вы можете печатать на ЛЮБОМ принтере независимо от того, поддерживается ли он в linux. Я проверил этот метод для принтера HP LaserJet 5L (который обычным образом поддерживается под linux), и для принтера Canon imageCLASS MF3110 (который вообще НЕ поддерживается под linux в момент написания статьи). Обратите внимание, что единственное необходимое изменение в подключении принтеров - это назначение принтера по умолчанию на компьютере под windows.
Требования/допущения, относящиеся к компьютеру под Windows

* Принтер присоединен к компьютеру под windows PC и драйвер правильно установлен
* Разрешен общий доступ к файлам и принтерам на компьютере под windows
* Установлен AFPL Ghostscript по ссылке http://www.cs.wisc.edu/~ghost/ (это не требуется для опции использования Acrobat)
* Установлен GSview по ссылке http://www.cs.wisc.edu/~ghost/ (это не требуется для опции использования Acrobat)
* Установлен Adobe Acrobat по ссылке http://adobe.com (требуется только для опции использования Acrobat)
* Установлен Python по ссылке http://www.python.org/download/
* Установлены расширения Python Win32 Extensions по ссылке http://starship.python.net/crew/mhammond/win32/Downloads.htm
* Указанный принтер является принтером по умолчанию и желаемые его настройки (качество печати и т.д.) являются текущими настройками принтера
* Все должно работать с большинством вариантов windows, но я проверял только на win2000

Требования/допущения, относящиеся к компьютеру под Linux

* Установлен и правильно работает CUPS
* Установлен клиент SAMBA (smbclient)

Настройка компьютера под Windows
Общий доступ к принтерам

Компьютер под windows реально не дает общий доступ к принтеру через SMB. Вместо этого общий доступ дается к директории (папке), которая будет использоваться как папка для помещения туда данных для печати (spool/dropbox).

Во-первых, создайте пользователя с помощью Панели управления windows. В приводимом примере именем пользователя будет "print", а паролем также "print". Вам следует использовать более надежный пароль.

Во-вторых, создайте папку для общего доступа. В данном примере я использую c:\temp\spool , а имя Вашего компьютера под windows windows_pc

В-третьих, разрешите общий доступ к этой папке и дайте пользователю print полный доступ к ней

Проверьте, что Вы имеете доступ к общей папке с компьютера под linux с помощью smbclient. То есть выполните команду: smbclient //windows_pc/spool -U print и убедитесь, что вы можете выполнять поместить файл командой put в эту общую папку
Скрипт Dirwatch

Далее нам нужен скрипт dirwatch.py , который можно получить по ссылке dirwatch.py. Сохраните его где-нибудь, например, в c:\scripts\dirwatch.py. Убедитесь, что Вы переименовали его в dirwatch.py (я сначала назвал его dirwatch.txt и мой web-сервер не хотел его выполнять!) Скрипт dirwatch основан на Большом примере Тима Голдена (Tim Golden), доступном по ссылке http://tgolden.sc.sabren.com/python/win32_how_do_i/watch_directory_for_changes.html

Откройте для редактирования скрипт dirwatch.py и сделайте следующие изменения:

* Измените переменную path_to_watch (близко к началу) на Вашу общую папку. УБЕДИТЕСЬ, что обеспечили вывод всех символов \ , например, c:\temp\spool должно быть записано как "c:\\temp\\spool".
* Измените переменную cmd (близко к концу) так, чтобы путь к файлу gsprint.exe был правильным. ВНИМАНИЕ: даже если Ваш принтер черно-белый, Вы должны все же там оставить опцию -color , иначе возможны проблемы. Эта опция обеспечивает 24-битовую шкалу оттенков серого, вместо 8-битовой.

Выполните скрипт dirwatch двойным кликом мыши на нем. Откроется окно с результатом его выполнения

Проверьте скрипт dirwatch путем использования smbclient (как описано выше) для записи (PUT) и затем переименования (RENAME) файла на языке postscript (с расширением .ps) в Вашу общую папку. Если все работает правильно, этот файл .ps будет напечатан на Вашем принтере и Вы увидите результат в окне терминала python на компьютере под windows

ВНИМАНИЕ: Скрипт dirwatch только распознает файлы, когда они ПЕРЕИМЕНОВЫВАЮТСЯ, поэтому Вам обязательно нужно сначала создать файл в папке, которую Вы указали в переменной path_to_watch, а потом переименовать его.

Теперь, когда скрипт dirwatch работает, прекратите процесс выполнения этого скрипта. Переименуйте dirwatch.py в dirwatch.pyw. С расширением .pyw не будут открываться окна командной строки во время выполнения скрипта.

Выполните новый скрипт dirwatch.pyw и поместите ярлык для него в папку автозагрузки, так чтобы он выполнялся автоматически при загрузке

ВНИМАНИЕ: Если Вы когда-либо заметите, что файлы печатаются в нескольких экземплярах, возможно, что запущены 2 или более копий скрипта dirwatch.pyw . Откройте диспетчер задач и прервите выполнение лишних копий процесса pythonw.exe . Это должно решить проблему.

Теперь компьютер под Windows полностью настроен.
Настройка компьютера под Linux
Установка Distiller PPD (удалитель иусора)

Должен быть установлен Adobe distiller PPD там, где CUPS сохраняют свои PPD. Этот мусорщик distiller PPD называется ADIST5.PPD и упакован в zip-файле, доступном по ссылке http://www.adobe.com/support/downloads/273e.htm

Извлеките из архива ADIST5.PPD и поместите в папку, где CUP хранят PPD. Обычно это /usr/share/cups/model/. Вы должны также переименовать его маленькими латинскими буквами, adist5.ppd.
Скрипт winp

Скачайте скрипт winp по ссылке winp. Разрешите его выполнение и поместите его туда, где CUPS хранит свои backend скрипты, обычно это /usr/lib/cups/backend/. Скрипт winp является модификацией скрипта pdfdistiller , автор которого - Michael Goffioul

Создайте папку для очереди печати в файловой системе linux для использования скриптом winp. В приводимом примере я использую папку /var/spool/winp. Убедитесь, что есть доступ для записи в эту папку для пользователя, под которым выполняется CUPS, обычно этот пользователь входит в группу lp. Предполагая, что CUPS выполняется от имени пользователя, входящего в группу lp, этой цели можно добиться выполнением команды chgrp lp /var/spool/winp и затем chmod g+w /var/spool/winp.

ВНИМАНИЕ: Это ОТДЕЛЬНАЯ папка для очереди печати на компьютере под linux. Это не та папка общего доступа, которая находится на компьютере под windows. Это - просто некоторая локальная папка для временного размещения данных при печати

Откройте скрипт winp для редактирования и сделайте следующие изменения:

* Измените SPOOLDIR на адрес Вашей папки очереди печати, например, /var/spool/winp
* Измените SMBUSER на имя пользователя, которое Вы использовали при настройке компьютера под windows, например, print
* Измените SMBPASS на пароль вышеуказанного пользователя, использованного при настройке компьютера под windows, например, print

Перезапустите CUPS , чтобы он распознал новый скрипт winp среди скриптов backend.
Настройка принтера CUPS

Теперь создайте новый принтер CUPS, который использует этот backend-скрипт winp и сборщика мусора adobe distiller, выполнив с правами root следующую команду: lpadmin -p windows_printer -E -v winp://windows_pc/spool -m adist5.ppd Имейте в виду, что для параметра adist5.ppd малые и большие буквы различаются, так что мы предполагаем, что Вы переименовали этот файл малыми буквами. Параметр windows_printer - это имя Вашего нового принтера, и Вы должны заменить //windows_pc/spool на имя Вашего компьютера под windows и имя папки общего доступа для данных печати на этом компьютере под windows. Не забывайте winp: в начале.

Попробуйте напечатать на Ваш новый принтер CUPS. Надеюсь, он работает!. Если нет, посмотрите журнал ошибок CUPS, обычно это файл /var/log/cups/ (попробуйте изменить уровнь подробности выдачи в журнал - log level - в CUPS и перезапустить CUPS), а также посмотрите журнал winp в файле /tmp/winp.log. Одно из этих двух мест должно помочь Вам найти причину возникших проблем.
Использование вместо этого варианта adobe acrobat (необязательная опция!)

Если у Вас проблема с использованием gsprint, например, проблема с качеством печати или печать использует слишком много ресурсов процессора или памяти на Вашем компьютере с windows, то попробуйте изложенные в этом разделе инструкции.

Я обнаружил, что использование ghostscript на компьютере под windows обеспечивает несколько другое качество печати. Иногда результаты печати с использованием acrobat вызывали очень небольшие проблемы выравнивания текста, когда заполнение областей объекта печати было слегка за пределами границы печати (нужно смотреть очень внимательно, чтобы это заметить). В других случаях ghostscript был немного лучше (опять же нужно смотреть очень внимательно). Кроме того, для использования acrobat Вам нужно сначала преобразовать файл в формат PDF, что увеличит использование процессора (и увеличит шансы загрязнения текста во время преобразования). Наконец, если Вы используете acrobat в то время как кто-то печатает на принтере из-под windows, появится окно acrobat в панели задач. Оно будет свернутым и закроется само, но оно станет активным вместо того, с которым работает пользователь.

По скорости и использованию памяти Acrobat явно лучше. Я не знаю, является ли причиной обработка файлов PDF вместо бОльших по размеру файлов PS, или что-то другое. Если Ваш компьютер под windows имеет медленный процессор или малую память, то опция Acrobat может оказаться лучше для Вас.

В любом случае, если Вы предпочтете использование acrobat на Вашем компьютере под Windows, скачайте скрипт winp-pdf по ссылке winp-pdf и отредактируйте его тем же способом, как описано выше в разделе для скрипта winp. Отредактируйте также скрипт dirwatch.py и уберите знак комментария в строке с acrorc32.exe и соответственно поставьте знак комментария в строке с gsprint.exe . Также Вам нужно будет получить файл gdputil.exe по ссылке http://www.watchdirectory.net/watchDir/GdPUtil.html и поместить его в папку, входящую в системный путь path (например, в папку c:\winnt\system32).
Ограничения

* Если компьютер под windows выключен, а Вы пытаетесь печатать, то CUPS-принтер остановится самостоятельно. Вам понадобится вручную перестартовать этот принтер, когда Ваш компьютер под windows снова будет включен и доступен, с помощью интерфейса администрирования CUPS.
* Я не думаю, что исчезнет большое количество параметров настройки из компьютера под linux таких как качество печати, сортировка и т.д.
* Сетевой пользователь SMB и его пароль явно вводятся в текст скрипта winp. Было бы лучше, если они будут частью URI , использованного, когда Вы устанавливали этот принтер под CUPS. Вам придется добавить эту возможность, если Вы хотите использовать несколько принтеров с разными паролями.

вторник, 7 июля 2009 г.

iptables и любимые все админами odnoklassniki.ru 8-)

В принципе это уже наверное нафиг ни кому не надо, но сегодня на двух шлюзах пришлось прописать:

Запрет доступа к сайту через iptables:

iptables -A FORWARD -p tcp -s odnoklassniki.ru -j DROP

понедельник, 6 июля 2009 г.

MDS и lenny

Чуть запоздал с новостью, но все равно полезно.
Mandriva Directory Server появился в официальном репозитарии для lenny:

deb http://mds.mandriva.org/pub/mds/debian lenny main