25 декабря 2011 г.

Автомонтирование NTFS

Понадобилось мне автоматически монтировать NTFS при загрузке системы. Немного погуглив, наткнулся на хорошую инструкцию на сайте Убунтология.орг, которой и хочу поделиться.

Устанавливаем драйвер ntfs-3g:
$ sudo apt-get install ntfs-3g ntfs-config

Для автомонтирования при загрузке нужно отредактировать файл /etc/fstab. Но сначала нужно узнать идентификатор устройства и UUID раздела. Идентификатор устройства узнаем командой
$ mount

В моем случае это /dev/sda2. Теперь нужно узнать UUID диска:
$ sudo blkid

В моем случае UUID=363C991F3C98DAE7. Почему мы используем UUID вместо привычного /dev/sd**? Дело в том, что при подключении дополнительных носителей или при смене их местами (или еще по какой-либо загадочной причине) идентификатор устройства может меняться, тогда как UUID останется прежним.

Теперь нужно создать директорию, куда будем монтировать. Например в папке /media:
$ sudo mkdir /media/share/

Открываем файл fstab:
$ sudo nano /etc/fstab

И дописываем в конец файла строки для монтирования нашего ntfs-раздела:

UUID=363C991F3C98DAE7 /media/share/ ntfs-3g users,defaults,umask=0 0 0

Рассмотрю параметры строки монтирования подробнее:

/media/share/ – директория для монтирования. Она должна существовать и быть пустой, иначе ничего не получится;
ntfs-3g – это файловая система ntfs; для cd и dvd приводов это iso9660, udf, для FAT32 – vfat;
users – позволяет членам группы user (т.е. пользователям системы) монтировать и отмонтировать раздел
noexec – запрещает запуск исполняемых файлов с диска
auto – автоматическое монтирование раздела при загрузке системы (можно не указывать, срабатывает по умолчанию)
noauto – не монтировать раздел при старте системы
ro – с раздела можно будет читать, а писать нельзя
rw – можно и писать и читать
locale=ru_RU.UTF-8 – определение кодировки файловой системы

Два нуля в конце – это не удивление, а тоже полезные параметры. Первый из них читает dump-utility. Если 0 – резервная копия раздела делаться не будет. И 1 заставит делать резервную копию раздела. Второй ноль говорит о приоритете раздела во время проверки дисков. 1 – приоритет высочайший (чаще всего для рутового раздела), 2 – нормальный приоритет и 0 – проверка на данном разделе не требуется.

В принципе этого достаточно для нормальной работы ntfs-раздела.

Runtu LXDE 10.04, автоматическое включение эффектов OpenBox

Чтобы эффекты OpenBox автоматически включались в Runtu LXDE после загрузки системы, открываем скрипт ~/.config/openbox/autostart.sh и добавляем строку: xcompmgr-runtu --startstop &

Идём в Меню - Параметры - Автозагрузка программ, два раза тыкаем "Визуальные эффекты" и ставим галочку "активировать", ОК - Сохранить - Закрыть.

7 ноября 2011 г.

НеДебиан и вечное лето

А вот как вручную изменить часовой пояс (в системах, где нету dpkg-reconfigure и tzdata).

0. Входим в систему как root.

1. На всякий случай перемещаем куда-нибудь файл с текущими настройками часового пояса:
# mv /etc/localtime /etc/localtime-old

2. Создаём символическую ссылку на нужный нам timezone:
# ln -sf /usr/share/zoneinfo/Etc/GMT-4 /etc/localtime
(опять же, вместо GMT+4 надо выбрать GMT-4, и наоборот)

3. Всё. Проверяем текущий часовой пояс командой date, и поправляем при необходимости время.

Теперь мы в часовом поясе GMT+4, а на летнее время часы переводиться не будут.

5 ноября 2011 г.

Дебиан и вечное лето

В связи с отменой перехода на зимнее время появилась необходимость изменить часовой пояс (Московское время теперь круглый год GMT+4), а также отменить автоматический переход на летнее время.

В Дебиане (а также ему подобных системах) это делается так:
sudo dpkg-reconfigure tzdata

Здесь нужно выбрать Etc/GMT-4 (это пример для московского времени, нужно выбрать свой часовой пояс). Заметьте, что для пояса GMT+4 нужно выбирать не GMT+4, а GMT-4.

Тем самым мы навечно оказываемся в поясе GMT+4, а демон NTP будет прибавлять по 4 часа к Гринвичу при синхронизации часов.

Изменение таймаута меню загрузчика GRUB

Применимо к Debian/Ubuntu и т.п.

В файле /etc/default/grub меняем значение параметра GRUB_TIMEOUT на желаемое число секунд. Сохраняем, а затем запускаем команду update-grub с правами суперпользователя, чтобы обновить конфигурацию grub.

24 августа 2011 г.

Пакетное конвертирование FLAC в MP3

Понадобилось мне несколько альбомов, состоящих из FLAC треков, конвертировать в MP3 треки. Чтобы вручную сначала не разжимать флак, а потом кодировать мп3 и заново набивать теги, использую скрипт, найденный на сайте archlinux, который автоматизирует данный процесс. Этот скрипт я допилил под себя (mp3 кодируется с постоянным битрейтом (CBR) 320kbps, к тому же битрейт можно указать ключом -b). Кодируются все треки *.flac, находящиеся в текущей директории, сохраняя имена файлов и ID3 теги.
#!/bin/bash
# flac-tracks-to-mp3

# Usage: flac-tracks-to-mp3 [-b BITRATE]

if [ "$1" ] && [ "$2" ] && [ "$1" = "-b" ]
then
BITRATE=$2
else
BITRATE=320
fi

for a in *.flac

do

OUTF=`echo "$a" | sed s/\.flac$/.mp3/g`

ARTIST=`metaflac "$a" --show-tag=ARTIST | sed s/.*=//g`
TITLE=`metaflac "$a" --show-tag=TITLE | sed s/.*=//g`
ALBUM=`metaflac "$a" --show-tag=ALBUM | sed s/.*=//g`
GENRE=`metaflac "$a" --show-tag=GENRE | sed s/.*=//g`
TRACKNUMBER=`metaflac "$a" --show-tag=TRACKNUMBER | sed s/.*=//g`
DATE=`metaflac "$a" --show-tag=DATE | sed s/.*=//g`

# flac:
# -c: write output to stdout
# -d: decode

flac -c -d "$a" | lame --noreplaygain -b $BITRATE --add-id3v2 --pad-id3v2 --ignore-tag-errors --tt "$TITLE" --tn "${TRACKNUMBER:-0}" --ta "$ARTIST" --tl "$ALBUM" --ty "$DATE" --tg "${GENRE:-12}" - "$OUTF"

done

Ureadahead main process terminated with status 5...

Давно заметил, что после установки какого-то пакета на свою Ubuntu 10.10, при загрузке стала появляться ошибка:
init: ureadhead main process (PID) terminated with status 5.

Немного погуглив, нашёл решение. Помогло выполнение следующей команды:
sudo sed -i 's+^start on starting mountall+start on mounted MOUNTPOINT=/var+' /etc/init/ureadahead.conf

25 июня 2011 г.

Проблема с samba и testparm

Столкнулся с проблемой - при попытке расшарить папку появляется ошибка testparm. Нашёл небольшое обсуждение на русскоязычном форуме Ubuntu. Не знаю, решили обсуждающие проблему, или нет. Во всяком случае ключевым для меня был последний пост в этой теме от пользователя Mam(O)n. После удаления пакета samba4-common-bin в системе вообще не стало testparm, и она (система) посоветовала установить samba-common-bin. После чего проблема и решилась.
sudo apt-get remove samba4-common-bin
sudo apt-get install samba-common-bin

14 июня 2011 г.

Настройка МФУ Brother DCP-115C

На сайте производителя советуют использовать драйвера для MFC-210C. Качаем их. Ставим и убеждаемся, что они корректно не ставятся / не работают. На убунтовском форуме советуют перед установкой драйвера установить пакет csh, да и при установке в консоли появляется ошибка ****** ERROR: csh is required. ******

Устанавливаем csh:
sudo apt-get install csh

У меня (на 10.10) вылезла ошибка
touch: невозможно выполнить touch для `/usr/share/cups/model/brmfc210c_cups.ppd': Нет такого файла или каталога

поэтому сначала я создал каталог:
sudo mkdir /usr/share/cups/model/

Затем ставим драйвера, сначала lpr, затем cupswrapper:
sudo dpkg -i mfc210clpr-1.0.2-1.i386.deb
sudo dpkg -i cupswrapperMFC210C-1.0.2-3.i386.deb


После этого принтер определяется как MFC210C и отлично работает!
Осталось настроить на нём сканер. Опять идём на сайт производителя и смотрим драйвер. Для нашего сканера это brscan2. Скачиваем и ставим.

Для работы сканера в 64-битной системе необходимо сделать следующее:

6. FOR 64 bits!: The scan of the DCP-115c only will work after write these lines in terminal:

sudo cp /usr/lib64/libbrscandec2.so.1.0.0 /usr/lib/x86_64-linux-gnu/
sudo cp /usr/lib64/libbrcolm2.so.1.0.1 /usr/lib/x86_64-linux-gnu/
sudo cp /usr/lib64/libbrcolm2.so /usr/lib/x86_64-linux-gnu/
sudo cp /usr/lib64/libbrscandec2.so.1 /usr/lib/x86_64-linux-gnu/
sudo cp /usr/lib64/libbrscandec2.so /usr/lib/x86_64-linux-gnu/
sudo cp /usr/lib64/libbrcolm2.so.1 /usr/lib/x86_64-linux-gnu/
sudo cp /usr/lib64/sane/libsane-brother2.so.1.0.7 /usr/lib/x86_64-linux-gnu/sane/
sudo cp /usr/lib64/sane/libsane-brother2.so.1 /usr/lib/x86_64-linux-gnu/sane/
sudo cp /usr/lib64/sane/libsane-brother2.so /usr/lib/x86_64-linux-gnu/sane/

http://forum.ubuntu-fr.org/viewtopic.php?id=889791

(UPDATED 4 янв 2019: в современных системах нужно копировать библиотеки в /usr/lib/x86_64-linux-gnu/ и /usr/lib/x86_64-linux-gnu/sane/ вместо /usr/lib/ и /usr/lib/sane/ соответственно.)

Сканирует, но только от рута... Чтобы сканировал не от рута:

- В Ubuntu 10.10+ решается установкой пакета brother-udev-rule-type1-1.0.0-1.all.deb.
Скачать пакет + инструкции для других ОС: https://support.brother.com/g/s/id/linux/en/instruction_scn1c.html?c=us_ot&lang=en&comple=on&redirect=on.

- В Ubuntu 9.10-12.10 нужно прописать правило udev:

sudo gedit /lib/udev/rules.d/40-libsane.rules
(в Debian Wheezy у меня /lib/udev/rules.d/60-libsane.rules)
и перед LABEL="libsane_usb_rules_end" добавляем по аналогии:

# Dell 1600n
ATTRS{idVendor}=="413c", ATTRS{idProduct}=="5250", ENV{libsane_matched}="yes"
# Brother DCP-115C
ATTRS{idVendor}=="04f9", ATTRS{idProduct}=="018c", ENV{libsane_matched}="yes"


VendorId и ProductId можно проверить по lsusb:
Bus 003 Device 002: ID 04f9:018c Brother Industries, Ltd DCP-115C


Перезагружаемся, проверяем от юзера.

Вот ещё хороший мануал, сохраню на всякий случай.

И драйвера, пожалуй, отзеркалю. В архиве (tar.gz, 2МБ) все пакеты с brother.com под данный принтер и сканер.



И ещё по теме:

Официальная инструкция по настройке сканера:
http://welcome.solutions.brother.com/bsc/public_s/id/linux/en/instruction_scn1a.html (http://www.peeep.us/f0c16cef)

Ещё хорошая инструкция:
http://manoftherambla.wordpress.com/2012/06/17/install-brother-dcp-115c-printer-in-lubuntu-12-04/ (http://www.peeep.us/dfc1d674)

И форумы:
http://ubuntuforums.org/showthread.php?t=1592489 (http://www.peeep.us/fcaa5871)
https://www.kubuntuforums.net/showthread.php?60589-Brother-DCP-115C-scanner-not-identified-in-Kubuntu-12-10-64-bit
http://forum.ubuntu-fr.org/viewtopic.php?id=889791 (http://www.peeep.us/35db75d4)

13 июня 2011 г.

Как закодировать музыку в FLAC

Устанавливаем пакет flac:
# apt-get install flac

Кодируем:
$ flac --best audio.wav

--best означает наивысший уровень сжатия.
Уровень сжатия определяется ключами -0 ... -8 или
--compression-level-0 ... --compression-level-8.
Ключ --best – синоним --compression-level-8.
По умолчанию уровень сжатия 5.

Чтобы раскодировать FLAC, запускаем flac с ключом -d:
$ flac -d audio.flac

Подробнее о FLAC читаем:
man flac

Как закодировать музыку в MP3

Чтобы закодировать музыку в mp3, устанавливаем утилиту lame:
# apt-get install lame

Кодируем:
$ lame sound.wav

Ключ -b указывает битрейт, по умолчанию 128kbps:
$ lame -b 320 sound.wav

12 июня 2011 г.

Как скопировать музыку с Audio CD в WAVE

Используем утилиту cdparanoia. Если она не установлена, устанавливаем:
# apt-get install cdparanoia

Копируем все треки в отдельные wav-файлы:
$ cdparanoia -BZ

Ключ Z отключает функции корректировки. Если диск потертый и заезженный, этот ключ можно убрать, тогда команда будет выглядеть так:
$ cdparanoia -B

Копируем весь диск в один файл:
$ cdparanoia -Z "[::]-" CDImage.wav

Копируем с 3-го по 5-ый треки:
$ cdparanoia -BZ "3-5"

15 января 2011 г.

PyICQt - транспорт ICQ в ejabberd

Я уже рассказывал, как установить jabber-сервер ejabberd. Теперь попробуем прикрутить к нему ICQ-транспорт, чтобы общаться с пользователями аськи из своего джаббер-клиента.

Прикручивать будем icq-транспорт PyICQt.

Установка транспорта

Для начала скачаем и распакуем PyICQt:

  cd /opt
  wget http://pyicqt.googlecode.com/files/pyicqt-0.8.1.1.tar.gz  
  tar -xzvf  pyicqt-0.8.1.1.tar.gz
  ln -s pyicqt-0.8.1.1 pyicqt

Зависимости: (см. файл /opt/pyicqt/INSTALL)
— Python (>= 2.2.0)
— Twisted (www.twistedmatrix.com)
— optional: epoll (>= 0.4)

Установка зависимостей

В системе должны быть установлены Python (>= 2.2.0) и написанный на нем фреймворк Twisted.

Установка:
Для Fedora:  sudo yum install python-twisted
Для Ubuntu:  sudo apt-get install python-twisted

Настройка взаимодействия PyICQt и ejabberd

В секцию «listen» файла ejabberd.cfg (допустим, в ее начало) добавляем cтрочку:
{5347, ejabberd_service, [{host, "icq.test.ru", [{password, "secret"}]}]},

Создаем файл /opt/pyicqt/config.xml с таким содержимым:

<pyicqt>
<jid>icq.test.ru</jid>
<spooldir>./spool</spooldir>
<pid>./pyicqt.pid</pid>
<mainServer>test.ru</mainServer>
<mainServerJID>test.ru</mainServerJID>
<port>5347</port>
<secret>secret</secret>
<encoding>cp1251</encoding>
<icqServer>login.icq.com</icqServer>
<icqPort>443</icqPort>
<admins>
<jid>admin@test.ru</jid>
</admins>
<disableAvatars/>
<reactor>epoll</reactor>
<usemd5auth/>
</pyicqt>

Перезапускаем ejabberd и стартуем транспорт:
ejabberdctl restart
python /opt/pyicqt/PyICQt.py > /opt/pyicqt/log 2>&1 &

На всякий случай можно посмотреть, стартовал ли процесс и все ли чисто в логе:
cat /opt/pyicqt/log
ps ax |grep py

Это все!
Теперь можно в вашем любимом клиенте сделать «Service Discovery», опросить сервер test.ru, найти icq.test.ru и зарегистрироваться с указанием UIN и пароля.

P.S. Мой сервер не смог соединиться с icq-сервером по доменному имени, поэтому в /opt/pyicqt/config.xml в директиве icqServer я тупо указал IP-адрес сервера login.icq.com:
<icqServer>64.12.202.116</icqServer>

Хабрахабр: Установка Ejabberd + PyICQt в Linux
OpenNET: Установка ejabberd и транспорта в icq-сеть. Руководство к действию.

7 января 2011 г.

Jabber-сервер ejabberd под Ubuntu

Компьютер под управлением Ubuntu 10.10. Пробуем установить Jabber-сервер.

Ставить будем сервер ejabberd.

Устанавливаем пакет ejabberd из репозитария:
apt-get install ejabberd

Редактируем конфиг сервера - /etc/ejabberd/ejabberd.cfg.

Указанный пользователь будет записан в администраторы сервера:
{acl, admin, {user, "andrew" }}.

Хост, на котором будет работать сервер:
{host, "test.ru"}.

Ejabberd с версии 0.9 поддерживает виртуальный хостинг, так что хостов может быть много. Если нужно поддерживать несколько хостов, используйте опцию hosts.

Язык, на котором будут выдаваться сообщения сервера:
{language, "ru"}.

Проверяем, чтобы нужные порты были открыты:

  [{5222, ejabberd_c2s,     [{access, c2s},
  % это соединение клиент-сервер, достаточно для организации нешифрованных соединений.
  
  {5269, ejabberd_s2s_in,
  % соединение сервер-сервер, для общения с клиентами других серверов.
  
  {5280, ejabberd_http,
  % веб-интерфейс

Чтобы разрешить пользователям самостоятельно регистрироваться в системе, находим строчку
{access, register, [{deny, all}]}.
и меняем deny на allow
{access, register, [{allow, all}]}.

Пробуем перезапустить (или запустить) сервер.
/etc/init.d/ejabberd restart

Смотрим лог /var/log/ejabberd/ejabberd.log (возможно, /var/log/ejabberd/sasl.log).

Если всё нормально, регистрируем пользователей.

  ejabberctl
    Usage: ejabberdctl node command
    command:
      ...
      register user server password -- register a user
      ...

Регистрируем пользователя, которого указали как админа (andrew).
ejabberdctl register andrew test.ru password

Заходим браузером по адресу http://localhost:5280/admin, вводим полный JID администратора (andrew@test.ru) и пароль и администрируем.

Для Windows есть простой jabber-клиент jajc, под Ubuntu можно использовать Empathy, для мобильников есть клиент Bombus.


Ссылки по теме:

Обсуждение на русскоязычном форуме Ubuntu
Подробная инструкция на lissyara.su: ejabberd + mysql + icq transport
Установка ejabberd на Gentoo Linux
Записки старого сисадмина: если не получается зарегистрировать администратора
Установка и настройка сервера jabberd