22 мая 2008 г.

VMWare server в Ubuntu 8.04

У меня возникла задача написать кроссплатформенный код, а непосредственно, чтоб работал и под Windows и под Mac OS. Среду разработки я выбрал Qt, так как его код легко компилируется на этих платформах, захотелось покопаться в чем-то новом для себя, да и еще заказчик сделал акцент на этом языке.
Проблемой для меня стало тестирование моего кода под Mac OS, так как нет возможности «пощюпать» настоящий Mac. Да, можно конечно было поставить еще одну систему (так называемую «хакинтош»), но мне б пришлось переразбивать свой винт, что меня совсем не устраивает. Поэтому выбор пал на виртуальную машину. С выбором ПО виртуальной машины вопросы отпали почти сразу, после большого кол-ва ссылок на образы виртуалок под VMWare server. Установка самого VMWare оказалась не тривиальной (sudo apt-get...), далее приводится установка VMWare server для Ubuntu 8.04 взятая с:

Небольшое руководство по установке продукта VMware Server на последнюю версию Ubuntu. Так же представлено решение проблемы с компиляцией модуля vmmon.
Установим необходимые пакеты
Код:
aptitude install build-essential linux-headers-`uname -r` xinetd

Скачайте дистрибутив VMware server по адресу http://register.vmware.com. По ссылке необходима регистрация, но она займет у вас пару минут, после чего вы получите серийный номер (или несколько если вам надо) для дистрибутива программы, и возможность скачать архив с самой программой.
Запустим установку:
tar -vxzf VMware-server-1.0.5-80187.tar.gz
cd vmware-server-distrib
./vmware-install.pl

Когда вы дойдете до пункта принятия лицензионного соглашения и напишите yes прервите установку и проделайте описаное ниже.
Необходимо скачать патч исправляющий ошибки сборки модулей, он доступен по ссылке http://vmkernelnewbies.googlegroups.com.
Распакуйте и примените патч:
tar -zxf vmware-any-any-update-116.tgz
cd vmware-any-any-update-116
./runme.pl

Далее завершим настройку VMware:
vmware-config.pl


Затем выполните команду:
cp /lib/libgcc_s.so.1 /usr/lib/vmware/lib/libgcc_s.so.1/libgcc_s.so.1

Теперь можно запускать VMware либо командой vmware либо из меню Программы > Прочее > VMware server console
На этом установка завершена, но например у меня возникли проблемы при сборке модуля vmmon.
В исходных кодах допущена небольшая ошибка исправить которую можно выполнив несколько простых операций с файлами которые я приведу ниже
Ошибка:
include /asm/bitops_32.h:9:2: error: #error only
can be included directly, and vmmon-only compile fails

Решение ошибки:
Отредактировать исходный код файла модуля:
cd /usr/lib/vmware/modules/source
cp vmmon.tar vmmon.tar.orig
tar xvf vmmon.tar
cd vmmon-only/include/
vim vcpuset.h
Перейдите к линии 74 и измените строку: #include “asm/bitops.h” на: #include “linux/bitops.h”
rm vmmon.tar
tar cvf vmmon.tar vmmon-only/
rm -rf vmmon-only/
vmware-config.pl

После выполненных действий с файлами модуль скомпилировался нормально и установка завершилась как следует.


У меня проблемм с vmmon небыло.
Следующим шагом было — поиск подходящего образа виртуальной системы, их в сети довольно много. У меня со второго образа все запустилось (и то, потому, что первый я скачал из-за невнимательности для 64-битной архитектуры, хотя третий скачанный не пошел).
ЗЫ: Образы брал с torrents.ru, thepiratebay.org и www.mininova.org

15 мая 2008 г.

Nautilus: пиктрограммы для файлов Open Office.

В Nautilus-e хорошо то, что о содержании файла можно догадываться не только по его названию, но и по пиктограме файла, будь то картинка, pdf-документ, или фильм. Мне не понятно, почему разработчики не включили и предпросмотр файлов Open Office.
Я расскажу, как это сделать.

Для начала нужно создать файл ooo2-thumbnailer в папке /usr/bin содержащий:
#!/usr/bin/python

import zipfile
import sys
import gnomevfs

inURL=gnomevfs.get_local_path_from_uri(sys.argv[1])
outURL=sys.argv[2]

zip=zipfile.ZipFile(inURL,mode="r")
picture=zip.read("Thumbnails/thumbnail.png")
thumbnail=open(outURL,"w")
thumbnail.write(picture)
thumbnail.write("/n")
zip.close()
thumbnail.close()


используйте для этого ваш любимый текстовый редактор, но учтите, что он должен быть запущен из-под пользователя root.
Далее добавляем ему атрибут на запуск:
$ sudo chmod +x /usr/bin/ooo2-thumbnailer

Создаем еще один файл ooo2.schemas в папке /usr/share/gconf/schemas содержащий:

<gconfschemafile>
<schemalist>

<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.text/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.text/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.text/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.text/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.spreadsheet/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.spreadsheet/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.spreadsheet/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.spreadsheet/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>
<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.graphics/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.graphics/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.graphics/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.graphics/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>
<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.formula/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.formula/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.formula/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.formula/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>
<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.presentation/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.presentation/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.presentation/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.presentation/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.writer/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.writer/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.writer/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.writer/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.calc/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.calc/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.calc/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.calc/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.draw/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.draw/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.draw/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.draw/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>

<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.math/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.math/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.math/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.math/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>
<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.impress/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.impress/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.impress/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.impress/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>

</schemalist>
</gconfschemafile>


теперь заставляем gnome прочитать этот файл:
$ sudo gconftool-2 --install-schema-file /usr/share/gconf/schemas/ooo2.schemas

и перезапускаем nautilus:
$ killall -9 nautilus

Conky: мониторинг системы

Conky является мощным и довольно просто настраиваемым монитором для XWindow.
Установка для Debian/Ubuntu:
$ sudo apt-get install conky

Для работы программы необходим конфигурационный файл ~/.conkyrc. Можно его создать и с нуля, но проще взять готовый и отредактировать под свои нужды и вкус.
Файл конфигурации состоит из двух частей.
- глобальные настройки, это такие, как размещение на экране рабочего стола, шрифт, обрамления, размер и т.д. Полный список тут.
- вывод элементов мониторинга с заданной (update_interval) частотой, это те которые идут после тега TEXT, все переменные которыми оперирует программа задаются в этой секции.
Перед названием переменной необходим знак $. Например, если мы хотим вывести версию ядра то пишем после $kernel. Список переменных можно посмотреть тут.
Также Conky представляют интерфейс для запуска внешних скриптов с помощью переменных семейства exec (exec,execbar,execgraph,execp,execi).
А вот тут есть несколько скриншотов а также файлы конфигов (.conkyrc) к ним.

2 мая 2008 г.

Установка Linux не записывая дистрибутив на CD/DVD

Интересную статью нашел в просторах инета. Ох, нашел бы я ее пару дней назад, не пришлось мне б бегать в магазин за болванкой. Эта статья, мой первый опыт перевода.

После скачивания дистрибутива Linux с интернета вам необходимо записать его на DVD или CD чтоб проинсталировать. Вообшем, эти диски необходимы только один раз, и после инсталляции становятся ненужными, тем более, что почти каждый дистрибутив обновляется каждые 6 месяцев. Итак, если вы хотите обновляться к новым версиям, то у вас соберется куча CD, которые вам фактично уже не нужны. Какое нерациональное использование CD. Но, используя маленький трюк вы сможете установить любой дистрибутив Linux с вашего жесткого диска без записи его на CD или DVD. Необходимым условием является установленная система на вашем компьютере. Это очевидно, поскольку если вы не сможете загрузиться, то и не сможете проинсталлировать, поскольку предполагаться, что у вас нет установочного диска с Linux. Тут описывается трюк с Microsoft Windows как уже проинсталлированой системой.
Почти все Linux-овые инсталляции используют два файла для загрузки компьютера: ядро Linux, и загрузочную корневую файловую систему, которая содержит минимальный набор директорий, которые монтируются перед тем, как будет смонтирована настоящая корневая файловая система /. Эту файловую систему называют Ram disk (initrd). Мы будем использовать эти два файла, чтоб загрузить ОС на наш компьтер. Теперь опишем полностью процедуру.

1. Сперва нужно скопировать ISO файлы Linux-а на ваш жесткий диск. Убедитесь, что раздел на жестком диске отформатирован как FAT32, если конечно, ваш дистрибутив не имеет поддержки чтения/записи с NTFS разделов. Некоторые дистрибутивы требуют ISO-файл в корне раздела. Если вы скопируете его в папку, установщик может не найти его.
2. Используйте WinRAR для открытия ISO файла (не разархивируя его). Распакуйте два файла, про которые говорилось выше. Эти файлы можно найти в папке isolinux. Разные дистрибутивы могут содержать их в другом месте, вам необходимо найти их. Эти два файла могут иметь разные имена в разных дистрибутивах. Файлы которые нужно распаковать из архива (файл ядра обозначен зеленым цветом, Ram disk обозначен красным цветом):
Fedora: vmlinuz и initrd.img
Suse: linux и initrd
Mandriva: vmlinuz и all.rdz
Ubuntu: vmlinuz и initrd.gz
Gentoo: gentoo и gentoo.igz
Knoppix: vmlinuz и initrd.img
Slackware: bzImage и initrd.img
Debian: vmlinuz и initrd.gz
3. Распакуйте эти два файла в папку c:\boot (вы должны будете создать каталог 'boot')
4. Теперь скачайте файл grub4dos. Распакуйте его в папку 'boot' и файл 'grldr' из скачаного архива. Внутри директории 'boot' есть директория 'grub'; скопируйте директорию 'grub' в c:\boot. Скопируйте файл "grldr" в c:\.
5. Откройте c:\boot\grub\menu.lst и добавьте следующие строки. (Учтите, что hd0 есть первый ваш жесткий диск. Если у вас больше одного жесткого диска, то они будут называться соответственно hd1, hd2 и т.д. Замените hd0 правильным названием если у вас windows установлена на другом жестком диске). Замените Linux_kernel и Ram_disk соответствующими названиями файлами описанными выше (вы их скопировали в c:\boot).
title Install Linux
kernel (hd0,0)/boot/Linux_kernel
initrd (hd0,0)/boot/Ram_disk

6. Теперь вы должны добавить grub в файл c:\boot.ini. Открыть boot.ini можно переходя Start->Run и там вписать c:\boot.ini. Если Windows не позволяет вам его модифицировать, то зайдите на вкладку Advanced из Control Panel->System. Под Startup and Recovery нажмите Settings и тогда на System Startup нажмите Edit. Откройте boot.ini и добавьте эту строчку в конец файла.
C:\grldr=”Start GRUB”

7. Теперь вы готовы инсталлировать Linux. Перезагрузите компьютер и из меню загрузки выберете "Start GRUB". Это загрузит GRUB. Из меню grub-а выберете "Install Linux". Во время инсталляции вас спросят про источник инсталляции. Выберете жесткий диск и тогда выберете раздел на нем, на который вы скопировали ISO-файл. Иногда нужно указать полный путь и точное название файла ISO. Так, что запишите заранее это перед инсталляцией.
Я непосредственно протестировал это с Fedora, Suse и Mandriva и это работало без проблем. Я не сомневаюсь, что это будет работать и с другими дистрибутивами.

Update: dougfractal добавил, что такой способ можно провернуть и из проинсталлированого Linux. Он делал так:

В терминале введите команды:
sudo mkdir /distro
sudo chmod `whoami`:`whoami`
cp MYLINUX.iso /distro/distro.iso

Распакуйте Linux_kernel и Ram_disk в /distro

добавте в файл /boot/grub/menu.lst строки:
#ADD NEW ENTRY#
title Install Linux
root (hdX,X)
kernel /distro/Linux_kernel
initrd /distro/Ram_disk

Перезагрузите компьютер и виберете "Install Linux" из меню grub.