13 февраля 2013 г.

Настройка принтера HP LaserJet 1018 в Linux

В моём случае, в роли ОС выступает Debian Sid, соответственно, все команды будут приведены именно для этой операционной системы.

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

Ключевую информацию, я получил с форума сообщества Альт Линукс вот из этой темы: HP Laser Jet 1018 [решено]

Пользователь xenar пишет:

Все таки поборол я этот принтер, а для идущих следом следующие рекомендации:
1) Прошивку надо класть в /var/lib/foo2zjs/firmware/ а не в /usr/share/foo2zjs/firmware/
2) При установке принтера дается на выбор два варианта, нужно использовать тот при котором путь к устройству начинается с usb:/hp/LaserXXXXXX
Этот вариант будет рабочий.
3) Модуль usblp можно не грузить, так как он все равно толком не работает.

В принципе, если не вдаваться в подробности, это все


Опираясь на эти слова, составлю следующий алгоритм:

1. Устанавливаем драйвер foo2zjs и подчищаем всё лишнее.
# apt-get install foo2zjs

Вместе с этим открытым драйвером менеджер поставит кучу лишнего и, в частности, проприетарный драйвер. Значит, это лишнее надо удалить. Делаем это цепочкой команд:
# apt-get remove hplip hplip-data printer-driver-hpcups printer-driver-hpijs
# apt-get purge hplip hplip-data printer-driver-hpcups printer-driver-hpijs
# apt-get autoremove

2. Скачиваем прошивку для принтера и ложим её в нужную папку.

Скачиваем:
$ wget http://foo2zjs.rkkda.com/firmware/sihp1018.tar.gz

Распаковываем:
$ tar -xzf sihp1018.tar.gz
$ ls -l | grep 1018
-rw-r--r--  1 user user   129092 Май  2  2006 sihp1018.img
-rw-r--r--  1 user user    70544 Май  1  2010 sihp1018.tar.gz

Конвертируем:
$ arm2hpdl sihp1018.img > sihp1018.dl

Создаём папку  /var/lib/foo2zjs/firmware/
# mkdir /var/lib/foo2zjs
# mkdir /var/lib/foo2zjs/firmware

Копируем в неё прошивку:
# cp sihp1018.dl /var/lib/foo2zjs/firmware/

3. Запрещаем загрузку модуля usblp.

Для этого создаём соответствующий файл в /etc/modprobe.d/
# echo "blacklist usblp" > /etc/modprobe.d/usblp-blacklist.conf

4. Перегружаемся.

5. Включаем принтер. Убеждаемся, что lsusb его видит.

6. Открываем браузер и настраиваем принтер через CUPS (http://127.0.0.1:631).

При выборе устройства учитываем то, что "нужно использовать тот вариант, при котором путь к устройству начинается с usb:/hp/LaserXXXXXX"

В качестве драйвера устанавливаем рекомендуемый для этой модели
HP LaserJet 1018 Foomatic/foo2zjs-z1 (recommended)


7. Перегружаемся. После перезагрузки возможно потребуется выключить/включить принтер.

Всё. После проведения этих операций, данное устройство у меня начало печатать.

21 октября 2012 г.

Раскрашиваем логи и выводим их на первую консоль

Возникла у нас, двух админов, давеча на работе необходимость сделать одну штуку. А именно, организовать на паре компов динамический вывод логов в первую консоль (она же /dev/tty1). А дабы это выглядело не так скучно, захотелось, чтобы логи эти выводились в цвете.
И если первая задача довольно проста --- всего делов, исправить /etc/rsyslog.conf, то вторая уже вызвала небольшие затруднения. Но краткое гугление и использование метода научного тыка позволили эту проблему решить. И, как следствие, хочу представить вам результат.
Итак...


Задача:

Организовать вывод логов на первую (ну или любую другую) консоль, сделать так, чтобы эти логи были раскрашены, ну и, естественно, чтобы это дело срабатывало автоматически и не требовало авторизации пользователя.


Решение:

1. Раскрашиваем логи

Для этого, как оказалось, существует специальная утилита, и называется она ccze.
Как написано в её описании.
CCZE is a robust and modular log coloriser, with plugins for apm, exim, fetchmail, httpd, postfix, procmail, squid, syslog, ulogd, vsftpd, xferlog and more.

Устанавливаем её самым обычным для Debian'a способом:
# apt-get install ccze

Теперь, если возникнет необходимость вывести цветной на экран цветной лог, просто перенаправляем его на эту утилиту через конвейер:
# tail -f -n 20 /var/log/messages | ccze

Вуаля. На экране уже не скучные белые (или как там у вас настроен терминал) строчки, а "буйство красок".



2. Настраиваем rsyslog

В принципе, если вам нужно выводить что-то определённое, этот шаг можно пропустить. Нам же требовалось выводить на экран всё и вся, так что пришлось поднастроить rsyslog. На самом деле, вся настройка сводится к добавлению в файл /etc/rsyslog.conf одной строчки. Вот она, выделена оранжевым:
#
# First some standard log files.  Log by facility.
#
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
#cron.*                         /var/log/cron.log
*.*                             /var/log/messages
daemon.*                        -/var/log/daemon.log
kern.*                          -/var/log/kern.log
lpr.*                           -/var/log/lpr.log
mail.*                          -/var/log/mail.log
user.*                          -/var/log/user.log

Теперь все возможные сообщения будут валиться в файл /var/log/messages.

3. Пишем скрипт 

Собственно сам скрипт крайне прост.
#!/bin/sh -e

while true
do 
        tail -f /var/log/messages | ccze >> /dev/tty1
done

Здесь мы непрерывно читаем последние строки файла /var/log/messages, перенаправляем их на ccze, а уже с него на первую консоль.
Назовём этот скрипт, например, /usr/local/bin/colorlog.
Не забываем сделать его исполняемым:
# chmod a+x /usr/local/bin/colorlog

4. Прописываем скрипт в /etc/rc.local

#!/bin/sh -e
#
# rc.local
#
. /usr/local/bin/colorlog & 
exit 0

Вот и всё. Теперь, после перезагрузки компьютера на первую консоль начнёт сыпаться множество ярко раскрашенных сообщений обо всём, что творится с компьютером.

15 февраля 2012 г.

Включение автомонтирования USB Flash в Debian Wheezy/Sid

Начиная с Wheezy, в Debian (по крайней мере при использовании XFCE4 и Thunar) возникла одна проблема. При установке в качестве дисплейного менеджера чего-либо кроме GDM и KDM (например XDM или SLIM), перестали автоматом монтироваться USB Flash, да и выключение/перезагрузка из главного меню XFCE тоже не активны (прав нету). Хотя sudo mount и sudo shutdown работают как часы.
Как пишут в интернете, произошло сие прискорбное событие из-за того, что разработчики начали использовать связку из ConsoleKit и PolicyKit. И если разрабы KDM и GDM изменили свои менеджеры соответствующим образом, то господа, занимающиеся XDM, поленились это сделать.
Нет, можно поставить и KDM/GDM, но ведь они в Debian'e тянут за собой дикое количество зачастую малополезных библиотек и тому подобного "мусора". Ещё можно поиграться с правами на shutdown и mount (через sudo, естественно), написать своё меню, сделать свой скрипт для монтирования и т.д. Но изобретать велосипед, если честно, было неохота и просто лень, так что пришлось залезть во всезнающий Google и чуть менее всезнающий Яndex. Перекопав там кучу ссылок, я пришёл к описанному ниже рецепту.
Сразу скажу что, возможно, первые пункты ни на что не влияют, но у меня они уже были сделаны, а удалять их и проверять опять же лень. (Вот надо будет настроить так ещё один комп, тогда и проверю.)

Вначале приведу ссылки, которыми я пользовался.

1. Список рассылки с сайта derkeiler.com
Здесь лежит основная часть решения, и поблагодарить за неё стоит некоего товарища с ником Brian.

From: Jesse Sheidlower
Date: Wed, 12 Oct 2011 05:53:10 -0400

I'm running XFCE 4.8 on Debian Testing, with everything up to date; I'm
using xdm as my display manager. Any attempt by a non-root user to mount
a USB device in Thunar fails with the message "Mount Failed: Failed to
mount "[device]" Not Authorized". I do have Thunar set to mount
removable media automatically.

This seems to have been a problem from the start of 4.8; there's quite a
bit of discussion of this for Arch Linux and Slackware, but I can't find
anything useful for Debian. It seems to be an issue with ConsoleKit, but
the solutions for Arch don't really apply for Debian as the setup is
different. There was a discussion of this in the Debian forum when 4.8
came out at http://forums.debian.net/viewtopic.php?f=20&t=63088&start=60
but there was no clean answer.

A related problem is that I am not able to restart or shut down using
the graphical tools; here's a recent discussion of this on the XFCE
forum from a Debian Testing user:
http://forum.xfce.org/viewtopic.php?id=6343 This also seems to depend on
a ConsoleKit permissions issue. I don't particularly care about this
myself, as it's easy enough to do this from the commandline; I'm
mentioning it only as a parallel.

I'd be grateful for any suggestions. This does seriously affect the
usability of the system, and it's getting very frustrating; I'd think
that the ability of a regular user to hotplug removable media should be
an important thing to have working.

Thanks.


From: Brian
Date: Wed, 12 Oct 2011 12:20:27 +0100

On Wed 12 Oct 2011 at 05:53:10 -0400, Jesse Sheidlower wrote:

I'm running XFCE 4.8 on Debian Testing, with everything up to date; I'm
using xdm as my display manager. Any attempt by a non-root user to mount
a USB device in Thunar fails with the message "Mount Failed: Failed to
mount "[device]" Not Authorized". I do have Thunar set to mount
removable media automatically.

This seems to have been a problem from the start of 4.8; there's quite a
bit of discussion of this for Arch Linux and Slackware, but I can't find
anything useful for Debian. It seems to be an issue with ConsoleKit, but
the solutions for Arch don't really apply for Debian as the setup is
different. There was a discussion of this in the Debian forum when 4.8
came out at http://forums.debian.net/viewtopic.php?f=20&t=63088&start=60
but there was no clean answer.


The root cause is indeed consolekit. Have a try with this:

In /etc/pam.d/common-session insert the line

session optional pam_loginuid.co

just before

session optional pam_ck_connector.so nox11

Log out and log in again. Or reboot. This works on my machines (and
should solve your restart/shut down problem also) but there is a plan B
if needed.


From: Jesse Sheidlower
Date: Wed, 12 Oct 2011 08:10:09 -0400

On Wed, Oct 12, 2011 at 12:20:27PM +0100, Brian wrote:

On Wed 12 Oct 2011 at 05:53:10 -0400, Jesse Sheidlower wrote:

I'm running XFCE 4.8 on Debian Testing, with everything up to date; I'm
using xdm as my display manager. Any attempt by a non-root user to mount
a USB device in Thunar fails with the message "Mount Failed: Failed to
mount "[device]" Not Authorized". I do have Thunar set to mount
removable media automatically.

This seems to have been a problem from the start of 4.8; there's quite a
bit of discussion of this for Arch Linux and Slackware, but I can't find
anything useful for Debian. It seems to be an issue with ConsoleKit, but
the solutions for Arch don't really apply for Debian as the setup is
different. There was a discussion of this in the Debian forum when 4.8
came out at http://forums.debian.net/viewtopic.php?f=20&t=63088&start=60
but there was no clean answer.


The root cause is indeed consolekit. Have a try with this:

In /etc/pam.d/common-session insert the line

session optional pam_loginuid.co


(I assume this was meant to be "pam_loginuid.so")

just before

session optional pam_ck_connector.so nox11

Log out and log in again. Or reboot. This works on my machines (and
should solve your restart/shut down problem also) but there is a plan B
if needed.


I'm afraid I need Plan B. Making this change and rebooting had no effect
on USB-device mounting or on the restart/shutdown display.

Thanks.


From: Brian
Date: Wed, 12 Oct 2011 13:51:15 +0100

On Wed 12 Oct 2011 at 08:10:09 -0400, Jesse Sheidlower wrote:

(I assume this was meant to be "pam_loginuid.so")


Yes.

I'm afraid I need Plan B. Making this change and rebooting had no effect
on USB-device mounting or on the restart/shutdown display.


Create /etc/polkit-1/localauthority/50-local.d/consolekit.pkla with the
contents:

[restart]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.restart
ResultAny=yes

[stop]
Identity=unix-user:brian
Action=org.freedesktop.consolekit.system.stop
ResultAny=yes

In the same directory have udisks.pkla containing:

[udisks]
Identity=unix-user:*
Action=org.freedesktop.udisks*
ResultAny=yes


From: Jesse Sheidlower
Date: Wed, 12 Oct 2011 22:09:53 -0400

On Wed, Oct 12, 2011 at 01:51:15PM +0100, Brian wrote:

On Wed 12 Oct 2011 at 08:10:09 -0400, Jesse Sheidlower wrote:

(I assume this was meant to be "pam_loginuid.so")


Yes.

I'm afraid I need Plan B. Making this change and rebooting had no effect
on USB-device mounting or on the restart/shutdown display.


Create /etc/polkit-1/localauthority/50-local.d/consolekit.pkla with the
contents:

[restart]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.restart
ResultAny=yes

[stop]
Identity=unix-user:brian


Took me a bit to figure out why "restart" worked by "shutdown" didn't,
until I realized that I'm not "brian"...

Action=org.freedesktop.consolekit.system.stop
ResultAny=yes

In the same directory have udisks.pkla containing:

[udisks]
Identity=unix-user:*
Action=org.freedesktop.udisks*
ResultAny=yes


OK, this works. Whew. Thank you _very_ much indeed.

What is the overall view of this issue? Is this a bug? Is your solution
the right one? Should it be fed back to the XFCE team? From my
perspective, this should Just Work, and the user shouldn't be expected
to figure out a solution like this....

Really, thanks.

2. ArchLinux Wiki раздел про запуск XFCE.



Ну а теперь само решение:

Вот мы на исходной: XFCE (или какой-нибудь WM) стоит, установлен Thunar (конечно же вместе с пакетом thunar-volman), а в качестве DM стоит XDM (или DM вообще не стоит, а запуск X'ов осуществляется старым добрым startx).
XFCE (WM) запущен, запущен Thunar в режиме демона (и настроен на автомонтирование), втыкаем флешку, а нам говорят: "Mount Failed: Failed to mount "[device]" Not Authorized" Мол, обломись --- прав у тебя нету.

В этом случае делаем так:

1. Прописываем как запускать WM:

Для этого создаём файл ~/.xinitrc с содержимым:

#!/bin/bash
exec ck-launch-session startxfce4

Делаем его исполняемым:

$ chmod u+x ~/.xinitrc


2. Прописываем загрузку библиотеки:

В файл /etc/pam.d/common-session перед строкой

session optional pam_ck_connector.so nox11

вставляем строку

session optional pam_loginuid.so


3. Прописываем права:

Создаём файл /etc/polkit-1/localauthority/50-local.d/consolekit.pkla с содержимым (вместо username вписываем своё имя пользователя или *):

[restart]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.restart
ResultAny=yes

[stop]
Identity=unix-user:username
Action=org.freedesktop.consolekit.system.stop
ResultAny=yes

Создаём файл /etc/polkit-1/localauthority/50-local.d/udisks.pkla с содержимым:

[udisks]
Identity=unix-user:*
Action=org.freedesktop.udisks*
ResultAny=yes


4. Перезагружаемся.


Вот и всё. Теперь у нас работает и автомонтирование флешек и выключение/перезагрузка из главного меню XFCE.

7 июня 2011 г.

Яркость экрана ввода пароля GDM

После того, как я поставил на свой ноутбук графический дисплейный менеджер GDM (он же GNOME Display Manager), чтобы удобно переключаться между оконными менеджерами (обычно пользуюсь IceWM, но решил параллельно поставить Fluxbox, GNOME и KDE --- чисто понастраивать и поиграться), возникла одна проблема. При загрузке экрана ввода пароля, в случае, когда ноутбук работает от сети, яркость экрана сбрасывается на максимум. Функциональными клавишами она, конечно, выставляется, но лишь до следующей перезагрузки.

Решение я нашел на http://ubuntuforums.org/ вот в этой теме: GDM Brightness

Приведу два основных сообщения:

Вопрос: от 31 июля 2009
redsky1302
My laptop running jaunty has some curious brightness behaviour that I hope you guys can help me with. During the boot sequence, the initial brightness from bios all the way to GRUB is fine. However, during the ubuntu splash (the one with the status bar), the brightness suddenly goes to maximum and remains that way. When I log in, the brightness goes down to 5% (as I set it that way in the Power Management utility). If I log out, the brightness of the login screen correctly remains at 5%. My question is: Is there a way for me to set the initial brightness of ubuntu? I don't like that sudden surge of brightness during the boot sequence till I log in.

Ответ: от 4 мая 2010
swmail
To set the initial brightness of gdm you can use the command:
gksudo -u gdm dbus-launch gconf-editor

and set the key /apps/gnome-power-manager/backlight/brightness_ac to value 0..100

Те, кто знает английский и ОС Linux с окружением рабочего стола GNOME, наверно уже все поняли. Для остальных распишу подробнее.

В общих словах: нам надо установить яркость экрана ноутбука при работе от сети от имени пользователя gdm. Теперь рассмотрим как это сделать.

Во-первых нам нужны утилиты gksu (если запускаем из терминала, можно использовать просто sudo) и gconf-editor. Если Вы изначально ставили GNOME в полной конфигурации, то обе эти утилиты у Вас наверняка есть. Если же Вы ставили только базовый набор GNOME'а или, как и я, используете какой-то оконный менеджер, то их надо доустановить. Для этого можно воспользоваться пакетным менеджером Synaptic (или центром приложений Ubuntu) или утилитами aptitude и apt-get через терминал (речь, естественно, идет об операционных системах семейства Debian Linux, в других ОС используйте свои пакетные менеджеры). С первым вариантом вопросов возникнуть не должно: ищем в поиске эти пакеты и устанавливаем их. Поэтому, приведу команды для второго варианта:

Проверяем установлены ли эти утилиты:
$ aptitude search gconf-editor gksu | grep "i "

Если видим что-то вроде этого:
i   gconf-editor                    - редактор системы настроек GConf       
i A gksu - графическая оболочка к su
i A libgksu2-0 - library providing su and sudo functionalit

то эти утилиты уже у Вас установлены. Если же нет, то ставим их командой:
$ sudo apt-get install gconf-editor gksu

Запускаем gconf-editor от имени пользователя gdm следующей командой:
$ gksudo -u gdm dbus-launch gconf-editor

Вводим свой пароль, если потребуется, и получим на экране вот такое окно:


Теперь установим ключ /apps/gnome-power-manager/backlight/brightness_ac в нужное нам значение от 0 (минимальная яркость) до 100 (максимальная яркость). Я ставлю 40. На скриншоте показано где этот ключ находится.


Ну вот и все. Сохраняем, перезагружаемся и радуемся нормальной яркости экрана ввода пароля.

3 апреля 2011 г.

Русский язык в gnuplot (терминал postscript)

Проблема: При использовании терминала postscript gnuplot не желает читать русские символы в кодировке UTF-8.

Решение:

Посмотрим как все это безобразие с UTF-8 в терминале postscript выглядит на практике. Для этого я использую тест Этана Меррита, оригинальный текст которого лежит здесь.
#! /usr/bin/gnuplot -persist

set terminal postscript eps enhanced
set output "test.ps"
set encoding utf8

set label 100 at screen 0.5, 0.95 center
set label 100 "Dump all 7-bit characters and a selection of UTF-8 unicode characters\nCharacters that are missing from your current font will not appear in the output below\nOnly a portion of the characters on a unicode page are dumped"
#
set border 0
unset xtics
unset ytics
#
set label 101 "page 0 (Latin1)" at screen 0.05, 0.80
set label 102 "0020-0040:" at screen 0.05, 0.75
set label 103 "0041-0060:" at screen 0.05, 0.70
set label 104 "0061-007E:" at screen 0.05, 0.65
set label 105 "" at screen 0.05, 0.60
set label 106 "page 1:" at screen 0.05, 0.50
set label 107 "page 3:" at screen 0.05, 0.45
set label 108 "page 4:" at screen 0.05, 0.40
set label 109 "pages 33,34:" at screen 0.05, 0.35
set label 110 "pages 37,38:" at screen 0.05, 0.30
set label 111 "Japanese:" at screen 0.05, 0.25
set label 112 "Hebrew:" at screen 0.05, 0.20
#
set label 1 at screen 0.2, 0.80
set label 2 at screen 0.2, 0.75
set label 3 at screen 0.2, 0.70
set label 4 at screen 0.2, 0.65
set label 5 at screen 0.2, 0.60
set label 6 at screen 0.2, 0.50
set label 7 at screen 0.2, 0.45
set label 8 at screen 0.2, 0.40
set label 9 at screen 0.2, 0.35
set label 10 at screen 0.2, 0.30
set label 11 at screen 0.2, 0.25
set label 12 at screen 0.2, 0.20
#
#set label 1 "\001\002\003\004\005\006\007\010\011 \013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040"
set label 2 "\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100"
set label 3 "\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140"
set label 4 "\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177"
set label 5 "¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿" . "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑñòóôõö÷øùúûüýþÿ"
set label 6 "ĀāĂ㥹ĆćĈĉĊċČ茜ŜŝŞşŠšŴŵŶŷŸŹźŻżŽž"
set label 7 "αβγδεζηθικλμνξοπρςστυφχψωϑϖ"
set label 8 "абвгдежзийклмнопрстуфхцчшщъыьэюяѐёђѓєѕіїјљњћќѝўџ"
set label 9 "ℎℏℋℓℛÅ∀∂∃∇∈∋√∞∧∨∩∪∫⊂⊃⊆⊇⊥⊗⊙"
set label 10 "◎▲△▼▽☉☿♀♁♂♃♄♅♆♇♈♉♊♋♌♍♎♏♐♑"
set label 11 "日本語フォント かな 漢字"
set label 12 "אבגדהוזחטיךכלםמןנסעףפץצקרשת"
#
set xrange [-1:1]
set yrange [-1:1]
plot -10 notitle


Как вы можете видеть, в тесте присутствуют как стандартные символы ASCII, так и символы в кодировке UTF-8 (в частности греческие и, наиболее нам интересные, русские).
Посмотрим, что получилось при запуске этого теста.


Получилось полное безобразие. Нет ни русского, ни греческого. О японском и иврите и говорить не приходится.

Решение, после долгих поисков, я нашел вот здесь. Пользователь Michael пишет:

> Для eps я использую // For eps I use:
> set terminal postscript eps enhanced color dashed adobeglyphnames

То есть, получается, что достаточно добавить в описание терминала опцию adobeglyphnames.

Добавляем:
#! /usr/bin/gnuplot -persist
set terminal postscript eps enhanced adobeglyphnames
set output "test.ps"
set encoding utf8

И проверяем:


Опа! У нас есть русский! К сожалению, остальные символы все-таки придется добавлять через {/Symbol __}

Но вообще, если есть необходимость использовать UTF-8, то лучше всего не использовать костыли, а взять какой-нибудь терминал, который поддерживает эту кодировку. Например pdfcairo.
Попробуем:
#! /usr/bin/gnuplot -persist
set terminal pdfcairo enhanced font "Helvetica,5"
set output "test.pdf"
set encoding utf8


Смотрим, что получилось:


А получилось великолепно. Есть и русский, и греческий, и, даже, иврит с японским и математическими символами. Так что лично я пока перехожу на pdfcairo. Благо PDF можно без проблем перегнать хоть в рисунок хоть в PS/EPS при помощи imagemagick.

31 марта 2011 г.

Кириллица cp1251 на флешке с FAT32

Проблема: При монтировании флешки, отформатированной как FAT16/FAT32, имена файлов, записанные кириллицей в кодировке cp1251, отображаются некоей абракадаброй.

Решение я нашел на форуме Русскоязычное сообщество Ubuntu Linux в теме KDE4 и кириллица смонтированных дисков. Поэтому за этот рецепт стоит сказать огромное спасибо товарищам romeg и NoOne с этого форума.

Собственно, само решение:

Все действия выполняются от имени суперпользователя (root).

1) Создаем файл /sbin/mount.mvfat
#!/bin/bash

dev=$1
mpoint=$(echo $2 | sed -e 's/\ /\\\\ /')
shift
shift
eval mount -t vfat $dev $mpoint $@,quiet,iocharset=utf8,codepage=1251,showexec,umask=0,flush


2) Делаем его исполняемым:
# chmod +x /sbin/mount.mvfat


3) Создаем файл /etc/hal/fdi/policy/10_my_fsops.fdi
<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
    <device>
        <match key="volume.fstype" string="vfat">
            <match key="@block.storage_device:storage.hotpluggable" bool="true">
                <merge key="volume.fstype" type="string">mvfat</merge>
                <merge key="volume.policy.mount_filesystem" type="string">mvfat</merge>
                <merge key="volume.mount.valid_options" type="strlist">utf8</merge>
                <merge key="volume.mount.valid_options" type="strlist">shortname=</merge>
                <merge key="volume.mount.valid_options" type="strlist">codepage=</merge>
                <merge key="volume.mount.valid_options" type="strlist">iocharset=</merge>
                <merge key="volume.mount.valid_options" type="strlist">umask=</merge>
                <merge key="volume.mount.valid_options" type="strlist">dmask=</merge>
                <merge key="volume.mount.valid_options" type="strlist">fmask=</merge>
                <merge key="volume.mount.valid_options" type="strlist">uid=</merge>
                <merge key="volume.mount.valid_options" type="strlist">flush</merge>
            </match>
        </match>
    </device>

</deviceinfo>


Все! После этого, кириллица на флешке отображается правильно.

20 января 2011 г.

Настройка переключения раскладок в Ubuntu 10.04/10.10

Предисловие: В Ubuntu по умолчанию в качестве окружения рабочего стола используется Gnome (или KDE/Xfce, если вы используете KUbuntu/XUbuntu соответственно). В этих окружениях есть соответствующие апплеты, отвечающие за переключение раскладок и отображение где-нибудь на панели текущей раскладки. А вот если вы, как и я, устанавливаете Ubuntu с диска Alternate как "голую" консоль, а затем накатывате на нее какой-нибудь оконный менеджер (IceWM, OpenBox, FluxBox или какой-то еще из множества WM), то перед вами обязательно встанет проблема настройки переключения раскладок и отображения индикатора текущей раскладки. Этому и посвящен этот пост.


Настройка переключения раскладок:

В ОС Debian Linux для настройки параметров переключения раскладок необходимо править файл /etc/X11/xorg.conf. Что там надо написать написано к примеру здесь и здесь.
В Ubuntu по-умолчанию xorg.conf нет. Его можно создать, но параметры клавиатуры он почему-то у меня оттуда не берет. Ну и ладно, обойдемся и без него. Благо в Ubuntu он как правило и не нужен.

Для установки параметров клавиатуры в Ubuntu 10.04 используется улилита setxkbmap из пакета x11-xkb-utils.

Чтобы установить параметры клавиатуры прописываем в файл автозагрузки следующую команду:

setxkbmap -rules "evdev" -layout "us,ru" -variant "," -option "grp:caps_toggle,terminate:ctrl_alt_bksp"


Данная команда устанавливает английскую-американскую (us) и русскую (ru) раскладки. Переключение раскладок осуществляется клавишей CapsLock (сам CapsLock теперь активируется комбинацией Shift+CapsLock). Световой индикатор CapsLock'а теперь указывает на использование второй раскладки (в нашем случае --- это русская раскладка). Комбинация Ctrl+Alt+Backspace используется для закрытия X-server'a (по умолчанию в Ubuntu 10 эта возможность отключена).

Утилита setxkbmap должна запускаться от имени суперпользователя. Есть два решения:

  1. Прописываем в файл sudoers права на выполнение для этой программы /usr/bin/setxkbmap без пароля и запускаем ее через sudo

  2. Устанавливаем для утилиты бит SUID и прописываем всех пользователей в группу admin (пользователь, созданный при установке системы, уже находится в этой группе)
    # chmod u+s /usr/bin/setxkbmap
    # usermod -a -G admin username


Теперь у нас работает глобальное (для всей системы) переключение раскладок и даже есть индикатор активной раскладки в виде светодиода CapsLock. Но если вы используете более двух раскладок (например английскую, русскую и украинскую) или вам просто неудобно использовать световой индикатор, и вы хотите привычный индикатор на панели задач или в трее, то вам нужен индикатор текущей раскладки. Я в качестве индикатора раскладок использую xxkb, поэтому буду рассказывать именно про него.


Настройка индикатора/переключателя раскладок xxkb:

Вначале, как водится, надо этот xxkb установить:
# apt-get install xxkb


Теперь настроим его так, чтобы индикатор отображался в только в трее. Я при настройке использовал вот этот материал: ссылка. Но там, как оказалось, верно не все.

Чтобы все работало, как описано выше, приведите файл /etc/X11/app-defaults/XXkb к следующему виду (строки, не приведенные в листинге, остаются без изменения):
XXkb.image.path: /usr/share/xxkb

XXkb.mainwindow.enable: yes
XXkb.mainwindow.geometry: 15x15+985-31
XXkb.mainwindow.image.1: en15.xpm
XXkb.mainwindow.image.2: ru15.xpm
XXkb.mainwindow.image.3: su15.xpm
XXkb.mainwindow.image.4:
XXkb.mainwindow.label.font: -misc-*-r-*-20-*

XXkb.mainwindow.type: tray
! possible values - normal, top, tray, wmaker

XXkb.button.enable: no


Теперь прописывайте команду запуска xxkb в автозапуск вашего WM и наслаждайтесь работой.

Все.

10 декабря 2010 г.

Настройка принтера Canon LBP-800 в Ubuntu 10

Задача: Есть принтер Canon LBP-800. Надо подключить его к компьютеру с ОС Ubuntu 10.

Примечание: Ссылки на скачивание пакетов и соотв. команды приведены для версии x86_64.

Решение:

Пункт 1: Устанавливаем CUPS.

В Ubuntu установить CUPS можно из Synaptic, натыкав мышкой в нужные пакеты, а можно и из командной строки:
sudo apt-get install cups


Пункт 2: Доустанавливаем пакеты, необходимые для установки драйвера.

Для установки драйвера необходимы пакеты libcups2, libcups2-dev, libcupsys2, libcupsys2-dev, cupsys.

Вот здесь и появляется маленькая проблема: пакеты libcupsys2, начиная с Ubuntu 10.04 были переименованы в libcups2. Поэтому надо либо пересобирать драйвер, либо поставить эти пакеты от предыдущей версии Ubuntu (например от Hardy), что я и сделал. Сами пакеты можно найти на сайте http://packages.ubuntu.com/

Вначале ставим libcups2 (скорее всего поставится при установке cups) и libcups2-dev:
sudo apt-get install libcups2 libcups2-dev

Теперь ставим cupsys. В Ubuntu 10.04 он лежит в репозитории, поэтому ставим его командой:
sudo apt-get install cupsys

В Ubuntu 10.10 этого пакета нет. Скачиваем его отдельно и устанавливаем.

Ссылка на скачивание cupsys

sudo dpkg -i cupsys_1.4.3-1ubuntu1.3_all.deb

Теперь ставим libcupsys2 и libcupsys2-dev.

Ссылка на скачивание libcupsys2
Ссылка на скачивание libcupsys2-dev

sudo dpkg -i libcupsys2_1.3.7-1ubuntu3.12_amd64.deb
sudo dpkg -i libcupsys2-dev_1.3.7-1ubuntu3.12_amd64.deb


Пункт 3: Скачиваем драйвер с сайта Canon и устанавливаем его.

Canon CAPT Printer Driver for Linux

Распаковываем его и устанавливаем. В архиве два пакета
cndrvcups-common_2.00-2_i386.deb и
cndrvcups-capt_2.00-2_i386.deb.
В таком порядке их и ставим.
sudo dpkg --force-architecture -i cndrvcups-common_2.00-2_i386.deb
sudo dpkg --force-architecture -i cndrvcups-capt_2.00-2_i386.deb


Пункт 4: Настраиваем CUPS.

В любом удобном браузере набираем http://127.0.0.1:631 и при настройке принтера указываем ему использовать драйвер Canon LBP1120 CAPT ver.1.5.

Все. Наш Canon LBP-800 работает с Ubuntu 10.04/10.10.

3 декабря 2010 г.

Автозапуск в IceWM

Про автозапуск в IceWM есть замечательная статья virens'a:

Автозапуск приложений в IceWM: IceWM autostart

В ней все описано достаточно подробно и интересно, поэтому здесь я напишу эдакую краткую заметку.

Скрипт автозапуска представляет из себя файл ~/.icewm/startup, в который прописываются команды запуска программ, завершающиеся символом '&'.

Не знаю как в других ОС семейства GNU/Linux, а в Ubuntu 10.04/10.10 есть особенность: если просто прописать в автозапуск несколько программ из тех, что должны прописываться в трей, например так:

#!/bin/bash

xxkb &
volumeicon &
pidgin &
xpad &

exit 0

_EOF_

то на "рабочем столе" появляется некое черное окошко (судя по всему это окно icewmtray), при скрытии/закрытии которого исчезает трей.

Видимо, когда несколько программ пытаются "залезть" в трей, что-то "глючит", и он "выбрасывается" в отдельное окно.

Чтобы решить эту проблему, я запускаю эти программы последовательно, с промежутком в 1 секунду. Вот таким образом:

sh -c "sleep 2s && xxkb" &

Здесь запускается программа xxkb с задержкой 2 секунды.

Ну и в конце приведу свой скрипт автозапуска:

#!/bin/bash

# Настройка раскладки и переключения языков
xmodmap "/home/vlss/.Xmodmap"
sudo setxkbmap -rules "evdev" -layout "us,ru" -variant "," -option "grp:caps_toggle,terminate:ctrl_alt_bksp,compose:ralt"
# Запускаем tilda
tilda &
# Запускаем xxkb
sh -c "sleep 2s && xxkb" &
# Запускаем conky
sh -c "sleep 5s && conky -c ~/.conkyrc1 -d -q" &
#
sh -c "sleep 4s && volumeicon" &
#
thunar --daemon &
#
sh -c "sleep 3s && pidgin" &
#
sh -c "sleep 7s && xpad" &
#
exit 0

_EOF_

1 декабря 2010 г.

Исправить документ MS Office Word 95

Проблема: Есть документ MS Word 95 на русском языке. В 2003 Word'е его содержимое отображается абракадаброй или прямоугольниками (в зависимости от шрифта).

Задача: Привести документ к читаемому виду.

Решение:

В главном меню выбрать "Сервис" --> "Исправить поврежденный текст".

В появившемся окне:

Язык документа: русский (Россия)
Применить к: всему документу

Жмем "ОК", затем подтверждаем использование шрифта Arial (по крайней мере у меня он предлагает Arial). Когда программа отработает, мы получим читаемый документ, который можно свободно использовать в MS Word 2003.

4 ноября 2010 г.

Надстрочная транскрипция в LaTeX

Задача: Над словом на английском языке надписать его транскрипцию.

Решение:

Определяем новую команду:

\newcommand*{\transcr}[2]{\ensuremath{\stackrel{\text{[#2]}}{\text{#1}}}}

Используем ее следующим образом:

\transcr{слово}{транскрипция слова символами Unicode}

Например:

\transcr{demonstrably}{'demənstrəblɪ}