11 ноября 2008 г.

Установка Mac OS на ноутбук Acer Aspire 1650

Среди многих существующих операционных систем мне больше всего хотелось «пощюпать» Mac OS, предыдуший опыт запуска этой ОС под VMWare ничего толкового мне не дал из-за жутко медленной работы эмулятора. Покупать компьютер от Apple ради этого нет причины, хорошо, что Apple производят ОС под процессоры Intel, хотя есть сборки и под процессоры AMD.
Сборки которые устанавливаются на «железо» не от компании Apple называются «Хакинтош». Вот такую сборку я и устанавливал на свой ноутбук Acer Aspire 1650. К сожаленю скриншотов я не наделал, да и незачем, руководств по установке много в интернете, да и в конце статьи дам ссылки.
Сразу скажу, что из окола десятка выкачаных мной дистрибутивов установились только 4. Но это не означает, что их поставить невозможно, просто эти 2 установились без особых "танцев с бубном". Я хотел иметь рабочюю систему быстро, и выкачать другой дистрибутив для меня было гараздо проще, чем копаться в конфигурационных файлах и эксперементирования с драйверами. Тестировал версии от Tiger 10.4.1 до Leopard 10.5.5 различных сборок: iDeneb, Kalyway, Leo4All, iATKOS, JaS.
Приступим к установке.
Мы имеем записанй на DVD исталяцию хакинтош и ноутбук Acer Aspire 1650. Везде советуют записывать образ хакинтоща на болванку на минимальной скорости, что ж не игнорируйте этого, может это еще одно причина по которой у меня не поставились нокоторые сборки.
Загружаемся с нашего DVD. Установка должна запустится автоматически. Если началась загрузка с вашего жесткого диска, то либо вы не выставили в БИОС-е загрузку с DVD-Rom либо нужно воспользоватся "командным интерпретатором" загрузки ядра Mac OS. Для этого при загрузке жмем F8 как только загрузка доходит до выбора загрузочного раздела. Немного о командах который предаставляет этот интерпретатор:
-v - вывод расширеной информации в консоль (для получения места подвисания установки)
-x - однопользовательский режим
cpus= - жесткое указание кол-ва процессоров в системе
"Graphics Mode" - разрешение графичиского режима
утановка происходит в несколько логичных шагов, не забудте отформатировать ваш раздел жесткого диска на который будете ставить систему с помошью утилиты «Disk Utilites» в «Mac OS journaled» (это на шаге выбора установочного раздела). Вам не обязательно иметь «Apple ID» для завершения установки, просто пропустите тот шаг, где его спрашивают.

PS: Итак система установлена, но грузатся только при наличии диска в DVD-ROMе. У меня первой системой стоит Ubuntu, и загрузчик grub инсталяция хакинтоша совсем не попортила. Загружаем Ubuntu и из под суперпользователя (root) редактируем файл /boot/grub/menu.lst, добавляя в него строки:

  1. title          Mac OS Leopard 10.5.5
  2. rootnoverify   (hd0,0)
  3. makeactive
  4. chainloader    +1
  5. boot

где в строке «rootnoverify (hd0,0) » число в скобках после запятой означает номер раздела на который установлена хакинтош, hd0 — номер жесткого диска (тут всегда hd0).

9 октября 2008 г.

Монтирование удаленных файловых систем по SSH и Samba

ssh
Мне в процессе работы часто приходится заходить по SSH на разные сервера. Как-то я задался вопросом: «А нельзя ли облегчить себе жизнь?». Выход был найден довольно быстро sshfs.
sshfs - это утилита, которая позволяет монтировать удаленные системы и работать с ними так, как будто это файловая система на вашем компьютере. Преимуществом утилиты является легкость в обращении и передача данных по зашищенному соединению.
Итак, приступим к установке. Запускаем терминал и вводим команду:

  1. $ sudo apt-get install sshfs

теперь, для использования sshfs вам необходимо добавить вашего пользователя в группу fuse (если нужно монтировать фс из-под другого пользователя, то добавляем и его):

  1. $ sudo usermod -a -G fuse <имя_пользователя>

Все готово, теперь можно использовать:

  1. $ sshfs <name>@192.168.102.20:/home/derand/ <mountPoint>

где:
name — имя пользователя на уделенной машине,
192.168.102.20 - IP-аддресс удаленного компьютера,
/home/derand/ - папка на удаленной машине,
mountPoint — локальная директория, в которую смнтируется удаленная файловая система (/home/derand).
Чтобы отмонтировать удаленную ситему введите:

  1. umount <mountPoint>

Для автоматического монтирования при загрузке системы нужно добавить строчку в файл /etc/fstab:

  1. sshfs#<name>@192.168.102.20:/home/derand/ <mountPoint> fuse defaults,auto 0 0


Samba
Если вам необходимо смонтировать некоторый Windows-ресурс, необходимо установить пакет smbfs:

  1. $ sudo apt-get install smbfs

монтируется командой:

  1. $ smbmount //192.168.102.10/Share <mountPoint> -o rw,iocharset=utf8,codepage=cp866,username=myname,password=mypasswd

где:
//192.168.102.10 — удаленный сервер, где расположен общедоступный Windows-ресурс,
Share — имя расшареного ресурса на нем,
mountPoint — локальная директория в которую будет монтироватся ресурс,
rw — монтирование как для чтения, так и для записи (ro — только для чтения),
iocharset=utf8 — кодировка в которой будет отображатся смонтированый ресурс на вашем компьютере
codepage=cp866 — кодировка на сервере.
Username — указывает имя пользователя(myname) для доступа на сервер, опция password указывает пароль.
Отмонтировать можно командой:

  1. $ smbumount <mountPoint>

И для автоматического монтирования ресурса при загрузке системы нужно добавить строчку в /etc/fstab:

  1. //192.168.102.10/Share &lt;mountPoint&gt; cifs auto,users,rw 0 0

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.

26 апреля 2008 г.

Ubuntu 8.04 впечатления

Буду добавлять по мере того, как буду сталкиваться с проблемами.

Клиент PSI:
Обновленный клиент не нашел SSL плагин, переустановка либы qca-tls не помогла. Поэтому апт-ом удалил с машины PSI, и поставил с исходников, которые можно скачать с официального сайта psi-im.org
$ sudo apt-get autoremove qca-tls psi


Больше ничего не замечено.

9 апреля 2008 г.

Запуск ssh-agent при старте системы

Я, например, храню свои RSA/DSA ключи в ssh-agent.
При запуске bash-а, создаеться свое окружение, и чтоб не запускать постоянно новый ssh-agent, а главное не вводить постоянно пароли к ключам (я использую ключи с паролями), можно просто экспортировать переменные окружения агента.
Небольшой скриптик, который проверяет, не запущен ли сейчас ssh-agent, и если нет... запускает его с нужными ключами:
$ cat start_sshagent.sh
#!/bin/sh

# ssh-agent runner
# RSA/DSA private key files, it`s params script

eval `cat /tmp/ssh_agent.txt`
ret=`ps $SSH_AGENT_PID|grep $SSH_AGENT_PID`
if [ -z $ret ]; then
ssh-agent > /tmp/ssh_agent.txt
eval `cat /tmp/ssh_agent.txt`
ssh-add $1
echo "new ssh-agent"
else
ret=`ssh-add -l | grep $1`
if [ -n $ret ]; then
ssh-add $1
else
echo "yet"
fi
echo "use exist ssh-agent"
fi
echo "ok"

что б он постоянно выполнялся при запуске bash, я его включил в ~/.profile
start_sshagent.sh  /home/`whoami`/.ssh/id_to_remote_ssh_server
eval `cat /tmp/ssh_agent.txt`

7 апреля 2008 г.

Краткий справочник svn (subversion)

svn checkout http://repository.url/svn/name — извлекаем файлы проекта из репозитория, сокращение: svn co;
svn update — получаем обновления из репозитория, сокращение: svn up;
svn update -r rev_num ./file_name — извлекаем ревизию файла с номером rev_num;
svn add ./file_name — добавляем файл в репозиторий (не важно текстовый или бинарный);
svn rename ./old_file_name ./new_file_name — переименовываем файл в репозитории;
svn remove ./file_name — удаляем файл/директорию из репозитория;
svn status — просматриваем локально измененные файлы, сокращение: svn st;
svn status -u — просматриваем локально измененные и изменившиеся в репозитории файлы, сокращение: svn st -u;
svn diff ./file_name — показывает локальные изменения в файле построчно;
svn diff -r rev_num1:rev_num2 ./file_name — показывает различия между ревизией rev_num1 и rev_num2 файла;
svn revert ./file_name — откатывает локальные изменения файла (выгружает из репозитория последнюю закоммиченную ревизию);
svn revert -R ./ — откатывает все локальные изменения файлов;
svn log ./file_name — список ревизий с комментариями;
svn blame ./file_name — показывает авторов изменений файла построчно, синоним: svn annotate;
svn propset svn:ignore ./file_name . — добавляем файл в список игнорируемых файлов;
svn propset svn:keywords "Id Author Date" ./file_name — установка атрибутов файла;
svn cleanup — снимает блокировки с файлов;
svn unlock http://repository.url/svn/file_name — снять блокировку файла (URL можно узнать с помощью команды svn info ./file_name | grep URL, его и нужно передавать в svn unlock);
svnadmin setlog --bypass-hooks /path/to/repository -r rev_num ./commit_text_file — заменяет текстовое описание коммита, где rev_num — номер ревизии, commit_text_file — путь к файлу, содержащему новый комментарий к коммиту;
svn help command_name — выводит помощь по команде command_name, например, «svn help update»;
svn merge -r rev_to_rollback:rev_good ./file_name — откатываем ревизию номер rev_to_rollback до ревизии rev_good, причем все изменения старше rev_to_rollback сохраняются (Например, у файла есть ревизии 11,12 и 13. Хотим откатить 12-ую ревизию, но так, что бы изменения 13-ой остались в силе. Делаем тогда так: svn merge -r 12:11 ./file_name);
svn copy http://repository.url/svn/name/trunk/ http://repository.url/svn/name/branches/new_branch_name/ — создаем ветку с названием new_branch_name из главной линии разработки;
svn merge --dry-run -r rev_num1:rev_num2 http://repository.url/svn/name/trunk/ — проверяем, что будет изменено при объединении веток, где rev_num1 — номер ревизии, когда ваша ветка была «открыта», или это м.б. номер предыдущего объединения (слияния), rev_num2 — версия главной линии разработки, с которой производим объединение. Необходимо отметить, что все изменения будут применены для директории, в которой выполнялась эта команда;
svn merge -r rev_num1:rev_num2 http://repository.url/svn/name/trunk/ — синхронизирует вашу ветку с главной линией разработки с учетом ревизий: rev_num1 — номер ревизии, когда ваша ветка была «открыта», или это м.б. номер предыдущего объединения (слияния), rev_num2 — версия главной линии разработки, с которой производим объединение. Необходимо отметить, что все изменения будут применены для директории, в которой выполнялась эта команда;
Полную документацию по subversion на русском языке можно посмотреть по ссылке «Управление версиями в subversion». Если Вы нашли ошибку на этой странице, напишите по адресу mail (at) gnuman (dot) ru.
© www.gnuman.ru

Update (22.11.2010):
Статья по работе с бранчами в svn.

4 апреля 2008 г.

Оператор Life:), телефон LG-G1800

Как я подключал мобильный телефон LG-G1800 (оператор 'Life:)')
Ubuntu 7.10 легко определяет мой телефон подключенный через USB-порт:
$ lsusb 
Bus 005 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 002: ID 0458:003a KYE Systems Corp. (Mouse Systems)
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 002: ID 0e8d:0003 #<<<< вот адресс устройства моего телефона
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000

да и появляется устройство "/dev/ttyACM0"
для подключения к оператору 'Life:)' я использую консольную утилиту pppd:
$ sudo pppd call ll

и соответственно два конфига:
/etc/ppp/peers/ll:
noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/life-gprs"
defaultroute
/dev/ttyACM0
115200
persist
# You may need these
passive
noipdefault
noproxyarp
ipcp-accept-local
#ipcp-accept-remote
#ipcp-restart 2
#ipcp-max-configure 20
#ipcp-max-failure 20
lcp-echo-failure 0
lcp-echo-interval 0
lcp-max-configure 0
lcp-max-failure 0
asyncmap 0xa0000
novj
nodeflate
nobsdcomp
usepeerdns
user ""
lock

и /etc/chatscripts/life-gprs:
ABORT 'BUSY'
ABORT 'ERROR'
ABORT 'NO ANSWER'
ABORT 'NO CARRIER'
ABORT 'NO DIAL'
'' AT
OK AT+CGDCONT=1,"IP","internet"
OK ATD*99***1#
CONNECT \d\c

Русские шрифты в wine

Коряво отображались русские символы под wine-ом.
$wine --version
wine-0.9.46

Точнее даже в самом Lotus Notes 7.0 шрифты отображались коряво (кстате установка его происходила из под винды, потом просто скопировал из 'C:\Program Files\lotus' в папку 'Program Files' wine-а). Русские шрифты подправил простой символической ссылкой папки 'c:\windows\fonts' в папку '$HOME\.wine\drive_c\windows\fonts'.

3 апреля 2008 г.

Конвертация .ape/.flac (+.cue) в .mp3/.ogg формат

Для конвертации в Ubuntu нам потребуетются библиотеки:
mac - конвертер с/в ape-формат (Monkey Audio)
  #: wget http://members.iinet.net.au/~aidanjm/mac-3.99-u4_b3-1_i386.deb
#: dpkg -i mac-3.99-u4_b3-1_i386.deb
lame - декодер mp3
 $: sudo apt-get install lame

mp3splt - обрезка mp3/ogg файлов
 $: sudo apt-get install mp3splt

oggenc - декодер ogg
 $: sudo apt-get install vorbis-tools


сам скрипт: конверта
<div class="commenthidden" id="SCRIPT-CUEAPE">
<table width="95%" cellpadding="0" cellspacing="0" border="0"><tr><td class="code-outline"><pre class="displaycode">#!/bin/bash
 
#cueape 0.1
#This script is intended to convert ape or flac + cue files to
#ogg vorbis or mp3 files, setting the tags to the correct value,
#obtained from the cue file.
#REQUIREMENTS:
# -Oggenc installed (it comes with vorbis-tools) if you want to encode into Ogg Vorbis.
# -lame installed if you want to encode into mp3
# -mac to decode ape files (Monkey's Audio)
# -flac to decode flac files.
 
#IF YOU FIND A BUG OR HAVE A SUGGESTION COMMENTO OR SIMPLY WANT TO CONTACT ME PLEASE MAIL ME TO
#rafadev_*@gmail.com REMOVING THE "_*"
#This is done to prevent spamming
 
#Copyright (C) 2006 Rafael Ponieman - Buenos Aires, Argentina
 
#This program is free software; you can redistribute it and/or
#modify it under the terms of the GNU General Public License
#as published by the Free Software Foundation; either version 2
#of the License, or (at your option) any later version.
 
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details.
 
#You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software
#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 
 
#scripted by deX
 
 
case "$1" in
*.[aA][pP][eE] | *[fF][lL][aA][cC] )
if [ ! -f "$1" ] ; then
echo "Input file $1 doesn't exist"
exit 1
fi
if [ ! -f "$2" ]; then
echo "Cue input file $2 doesn't exist"
exit 1
fi ;;
* )
echo "Error: invalid input parameters"
exit ;;
esac
 
#Testing parameters
if [ "$3" != "-m" ] && [ "$3" != "-o" ] ; then
echo -en "\033[1;31mInvalid parameters\n"
echo -en "\033[1;37m"
echo -en "Usage: cueape [input ape file] [input cue file] [parameters]\nParameters can be: -m for mp3 encoding or -o for ogg encoding.\n"
exit 1
fi
 
#Need help with this one, coudn't solve it. I need to know how to check if a
#program actually exists and is accesible
#Checking for mac
#[ -f $(which 'maca' >> /dev/null) ] || {
# echo -en "\033[1;31mYou must have mac in your PATH.\033[1;37m\nPlease install Monkey's Audio Codec\nYou can get it from http://sourceforge.net/projects/mac-port/\n"
#}
 
 
#Saving the position so as to return afterwards
olddir="$(pwd)"
 
#Going to target directory
cd "$(dirname "$1")"
 
#Checking for the output folder. If it's not there I create it
[ ! -d "Output" ] && mkdir -p "Output"
cp "$2" "Output/"
 
#Decompress
echo -en "\nCueape 0.1\n\n"
echo -en "\033[1;32mStarting conversion\n"
 
#Checking filetype by extension and decompressing
tmp="$(basename "$1")"
tmp="${tmp##*.}"
 
case "$tmp" in
[fF][lL][aA][cC] )
echo -en "\033[1;32mDecompressing FLAC file\n\n"
echo -en "\033[1;37m"
tm="$(basename "$1")"
tm="${tm%.[fF][lL][aA][cC]}"
out="$(flac "-d" "$1" -o "Output/${tm}.wav" )"
;;
[aA][pP][eE] )
echo -en "\033[1;32mDecompressing APE file\n\n"
echo -en "\033[1;37m"
tm="$(basename "$1")"
tm="${tm%.[aA][pP][eE]}"
out="$(mac "$1" "Output/${tm}.wav" "-d")"
;;
* )
echo "Error: line 99"
esac
 
cd "Output"
echo -en "\033[1;32m\nDecompression finished\n"
echo -en "\033[1;32mStarting reencoding\n\n"
echo -en "\033[1;37m"
if [ "$3" = "-o" ] ; then
#Calling oggenc. Saving output for future checking
out="$(oggenc -q 6 -o "$tm.ogg" "$tm.wav")"
echo -en "\033[1;32m\nReencoding finished\n"
echo -en "\033[1;32mSplitting\n\n"
echo -en "\033[1;37m"
out="$(mp3splt -c "$(basename "$2")" -o "@n+-+@t" "$tm.ogg")"
else
#Calling lame. Saving output for future checking
out="
$(lame --preset insane "$tm.wav" "$tm.mp3")"
echo -en "
\033[1;32m\nReencoding finished\n"
echo -en "
\033[1;32mSplitting\n\n"
echo -en "
\033[1;37m"
#Using framemode becaus this settings are for VBR
out="
$(mp3splt -f -c "$(basename "$2")" -o "@n+-+@t" "$tm.mp3")"
fi
cd "
$oldir"
echo -en "
\033[1;32m\nProcessing finished successfully\n"
echo -en "
\033[1;37m"
exit 0



Конвертирование тегов mp3 из cp1251 в UTF-8
find . -name "*.mp3" -print0 | xargs -0 mid3iconv -e CP1251 -d > ~/convert.log

24 марта 2008 г.

Каптча (swmw)

После 2 литров пива подумалось, почему не использовать написаную Димой генетическое программирование для распознания "каптчи". Ведь и генетических операторов совсем мало нужно (расширение/сужение отдельно по осям, поворот ±45 градусов и как расширение простенькие графические преобразования, типа размытия и тд), база стандартных наборов символов. Параметры найденных символов представленны в виде генов. Проблемма которую я вижу только отделение полезных пиксел от фона. Фитнес - наибольшая сопоставимость + сюда должны входить сравнимость по порядку коофициентов преобразования отдельных найденных символов.

9 марта 2008 г.

Лазерный принтер не цепляет бумагу

Принесли мне на работу принтер "Samsung ML-1210", что б он захватывал бумагу ему буквально с силой приходилось ее пихать в пасть и то он ее "сжевывал" в большинстве случаев.
При разборке принтера подумалось, что резиночка которая захватывает бумагу протерлась, или что-то того. Утолщение резиночки, путем подложки под резиночку кусочков бумаги, не оправдало никаких ожиданий, принтер как до этого не хотел кушать, так и не собирался похоже и в будущем). Заметили особенность, что если место на бумаге, которое захватывает принтер немного смочить, то аппарат с легкостью захватывает листы бумаги. Оказалось, что резиночка, со временем стерлась/потрескалась и из-за этого а не из-за меньшей толщины не цепляла бумагу.
Решили проблему простым "выворачиванием наизнамку" этой резиночки.

2 марта 2008 г.

Установка Убунту

Настройка/доставление необходимых пакетов в Убунту:
возможно я виндузятник и фаровец но без mc мне сложно:
sudo apt-get install mc 


настройки compiz-а...
sudo apt-get install compizconfig-settings-manager gnome-compiz-manager gnome-themes-extras gnome-extra-icons grub-splashimages


видео/аудио плагины и плейеры...
#: apt-get install totem-xine xine-ui gxine mplayer xmms xmms-skins mpg321 mpg123 vorbis-tools mpg123-esd gstreamer0.10-ffmpeg gstreamer0.10-plugins-ugly gstreamer0.10-plugins-ugly-multiverse gstreamer0.10-pitfdll gstreamer0.10-plugins-bad-multiverse gsfonts gsfonts-x11 libdvdnav4 qdvdauthor msttcorefonts flashplugin-nonfree sun-java6-plugin


gcc, mysql, apache, php (всякая серверная хня)...
#: apt-get install binutils cpp fetchmail flex gcc libarchive-zip-perl libc6-dev libcompress-zlib-perl libdb4.3-dev libpcre3 libpopt-dev lynx m4 make ncftp nmap openssl perl perl-modules unzip zip zlib1g-dev autoconf automake1.9 libtool bison autotools-dev g++ build-essential valgrind alien ssh openssh-server mysql-server mysql-client libmysqlclient15-dev phpmyadmin mysql-admin libapache2-mod-auth-mysql mysql-admin-common mysql-query-browser mysql-query-browser-common libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php-image-graph imagemagick php5-ldap apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert webalizer ntp ntpdate totem-xine


необходимые для компиляции «mf» библиотеки...
#: apt-get install doxygen autogen libpcre3 libpcre3-dev libpcre++-dev qca-tls subversion



ну и графические утилитки...
#: apt-get install psi conky