30 мая 2008 г.

обнуление счетчиков Brother-7420Rс

небольшой tip пользователям Brother принтеров, в особенности МФУ-шки 7420R. Для того, чтобы после заправки картриджа или замены светодрама девайс не ругался по прежнему, что де у меня все плохо (он рассчитывает степень износа драма и количество оставшегося тонера по количеству распечатанных страниц), нужно ему эти счетчики обнулить. После этого принтер с чистой памятью работает дальше. Делается это следующим образом:
  • вырубаем девайс;
  • зажимаем кнопку Menu/Set и врубаем устройство обратно;
  • помигав всеми тремя лампочками и экранчиком, устройство будет ждать ввода команды сервисного меню
  • вводим 81 -> выдается сообщение RESET DRUM COUNT. Жмем Start. Появляется RESET LIFE COUNT. Снова старт.
  • выходим из сей менюхи набором 96, или 98, или 99
  • выключаем/включаем девайс.
Все ;) До следующей заправки курим.

21 мая 2008 г.

Обретая потерянный конвейер

Не люблю Gnome. С "unix-детства" по природе KDE-шник. Но холивар по сему поводу разводить не есть моя задача. Да и место не то - любой никс-форум достаточно открыть. Однако стоит записать вот что.
С гномом мне сейчас периодически работать приходится, и вот наткнулся я на странный баг, или фичу ;). Если в свойствах раскладки клавиатуры используются английская и русская раскадки, русская стоит умолчальной и в списке первой, то в эмуляторе консоли (любом) хрен ты напишешь конвейер, то есть |. В принципе логично, что его нельзя написать в русской раскладке, ибо у нас нет такого символа, но в английской то есть! А без конвейера жить невозможно в bash.
Решение простейшее - нужно просто поменять местами раскладки в вышеуказанных свойствах. Умолчальную галочку изменять не нужно, она может оставаться на русской раскладке, однако английская должна быть в списке первой. Тогда и конвейер есть, и русский язык при входе в систему наличествует.

15 мая 2008 г.

VirtualBox HOW-TO - Строим мосты

Сегодня мы поговорим о работе локалки в виртуальном окружении VirtualBox. Вводные слова на предмет "как я докатился до жизни такой" можно поглядеть здесь. С сетью здесь не так все гладко как в vmware. Если там уж нат, то нат, работает как часы сразу же после инсталляции. Гостевая ОС тут же начинает видеть Хост-систему, а то и дальше, в зависимости уже от настроек последней. Если мост (юзается отдельный ифейс), буть добр, в гостевой ОС пропиши требуемый ип, если он в вашей сети не выдается динамически, и работай. в VirtualBox'e не так все user-friendly. NAT здесь убогий донельзя. НА каждый ифейс выдается диапазон 10.0.x.0, где x=2,3,4.... Шлюзом становится нечто под адресом 10.0.x.15, оно же DHCP. Как со всем этим выйти во внешнюю относительно гостевой ОС сеть - непонятно, ибо по умолчанию никакх интерфейсов VBox не создает. А вручную чтой-то не попробовал. К тому же в руководстве что то блеется по поводу проброса нужных портов во "внешний мир". В общем, если NAT-вопрос допилю, то отдельный man будет иметь место.
Сейчас же речь пойдет о Host Interface Networking and Bridging, попросту о мостовом соединении гостевой и хостовой ОС. Здесь все более-менее понять можно, хотя до меня и не с первого раза осенило на предмет "как, бля, это запустить??". Поехали ;)
Эксурса в теорию не провожу ввиду того, что теория эта отлично изложена в User Manual, доступного для скачивания на той же странице, где и сам дистрибутив. Поэтому или мне тут безоговорочно верим, или идем читать ;)
Для работы моста в linux-системе требуется доступ пользователя, от имени которого будет запущен VBox, к туннельному устройству /dev/net/tun . С правами мучаться незачем, поэтому
delayer@inspire:~> ls -l /dev/net/tun
crw-rw-rw- 1 root root 10, 200 Окт 7 2007 /dev/net/tun
delayer@inspire:~> su
Пароль:
inspire:/home/delayer # chown root.vboxusers /dev/net/tun
То бишь всех пользователей, что будут рулить виртмашинами, пихаем в группу vboxusers. На собственность root'a посягать незачем.
Пару слов о том, что вообще престоит сделать.
Мост в VBox можно сделать постоянными (появляющимися при загрузке hostОS) - permanent, и динамическими, живущими только до ребута - dynamic. Я думаю, понятен момент, что мост создается на базе физического сетевого устройства, например eth0. Далее создается виртуальное устройство vbox0 (1,2,3...), которое будет нами включено в мост (bridge) с eth0. Управление vbox-интерфейсами осуществляется с помощью трех утилит:
  • VBoxAddIF, которая создает перманентные TAP ифейсы
# VBoxAddIF vbox0 user bridge0
где user - тот, кто будет это ифейс юзать (в моем случае пользователь virtual), а bridge0 - мостовой интерфейс, созданный ранее;
  • VBoxDeleteIF, которая, соответственно, делит созданные ранее vboxX устройства
# VBoxDeleteIF vbox0
  • VBoxTunctl - с ее помощью можно создавать/удалять временные (dynamic) интерфейсы
# VBoxTunctl -t vbox0 -u user ## создали
# VBoxTunctl -d vbox0 ## удалили

Теперь чуть больше частности.
В качестве hostOS будет openSuSE. Для создания моста нам потребуется пакетик bridge-utils, поэтому его нужно установить =)
# yast2 --install bridge-utils
Для того, чтобы можно было управлять мостовым интерфейсом через ifup/ifdown, требуется создать конфиг-файл для bridge0 (естественно с правами root'a) и внести туда следующие изменения:
создать конфиг файл для ифейса моста /etc/sysconfig/network/ifcfg-bridge0 c примерно таким текстом
inspire:/# vi /etc/sysconfig/network/ifcfg-bridge0
BOOTPROTO='static' #IP-адрес задается статически
#DHCLIENT_TIMEOUT=20 # если выбрана DHCP-раздача, раскомментить
BROADCAST='' # оставляем на
MTU='' # усмотрение ОС
NAME='bridge interface' # произвольное имя интерфейса
BRIDGE='yes' # ифейс выполняет функции моста
BRIDGE_PORTS='wlan0' # "моститься" будем на базе wlan0
IPADDR='169.254.0.1' # IP-адрес
NETMASK='255.255.255.0' # маска подсети (в моем случае я просто
# беру параметры настроек wlan0
REMOTE_IPADDR=''
STARTMODE='auto' # интерфейс поднимается при старте hostOS
USERCONTROL='no' # контроль осуществляется системой
То бишь мы указываем, что наш интерфейс будет иметь статический адрес такой-то, маску такую-то (если подразумевается DHCP, то BOOTPROTO='dhcp' это будет bridge-интферфейс, стартующий при запуске системы. А дальше ifdown wlan0 && ifup bridge0.
В моей системе wlan0 - беспроводной интерфейс, на котором висит DHCP-сервер, раздающий адреса для подключаемых в режиме ad-hoc пользователей. Так как вновь появившийся bridge0 взял на себя все параметры wlan0 (сам wlan0 запускается без адреса, маски и так далее, см. ifconfig), то и DHCP-сервер пришлось переконфигурировать на прослушивание brigde0. В этом двойная выгода - и wi-fiподключения не остались без адресов, и все создаваемые vboxX интерфейсы (а соответственно и внутренние интерфейсы гостевых ОС виртуальной машины) видят DHCP, тем самым могут без проблем получить адрес. После этого они будут находиться в раных условиях с wi-fi подключениями - в моем случае это маршрутизация как внутри локалки, так и сразу в интернет. Ну разве не сказка? ;)
Однако, отвлеклись. Далее создается хост-интерфейс vbox0 согласно вышеизложенной теории
inspire:/# VBoxAddIF vbox0 virtual bridge0
После этого он аттачится к вирт машине или консольно
inspire:/# VBoxManage modifyvm "Debian_4.0_r0" -hostifdev1 vbox0
или графически
Машина - Свойства - Сеть - Включить Адаптер, и в поле Имя интерфейса впаять vbox0
Все, стартуем виртуальную машину, запускаем там любой конфигуратор сети и говорим имеющемуся там сетевому интерфейсу получить данные по DHCP. Или выставляем статически, исходя из IP-конфигурации brigde0 (в том плане, чтобы они друг друга видели).
Каждая гостевая ОС использует свой vboxX интерфейс, поэтому если машин несколько, то насоздавать виртуальных интерфейсов следует согласно потребностям. Bridge0 дублировать не нужно.

11 мая 2008 г.

NX@Etersoft on Debian HOW-TO

Для многих задач наиболее актуальным, а зачасту и единственным, является решение терминальной работы приложения, которое разработано по принципу клиент-серверной архитектуры. Если речь идет о nix-сервере, то резонным встает вопрос о терминальном сервере. В принципе удаленный доступ можно организовать с помощью разным протоколов: ssh, vnc, rdp, nx... У каждого есть свои преимущества и недостатки, а также соотвествующая область применения. Далее будет рассмотрена установка и базовая настройка FreeNX сервера с наработками от компании Etersoft - RX@Etersoft, на базе дистрибутива Debian 4.0_r0. Цепляться к нему будем удаленно из openSuSE10.3 с помощью NX-клиента от компании NoMachine.
Почему решение от Etersoft'a? Уж не знаю что они допилили по сравнению с авторской реализацией, однако обещается (разработчиком естественно) корректная работа с рендерингом кириллических шрифтов. При использовании обычного freenx'а шрифты (замечено на многих win-приложениях - WinRAR, 1С, etc) накладываются друг на друга и получается каша. Если отключить рендеринг на стороне клиента (винды то бишь), то резко возрастает обмен трафиком и тормозится работа - вследсвие того что все фонты начинают передаваться bitmap'ами, что нехило по размеру. Решением спецы с Etersoft'a предлагают свой пакет NX'a. С ним и будем работать.
Качаем отсель собранные для нашего дистриба пакеты (freenx_0.7.2-1_i386.deb и nx_3.1.0-1_i386.deb). Затем устанавливаем их, перейдя в соответствующий каталог.
interra:/home/delayer/# cd .\!/rx
dpkg -i *.deb
Так же уже должен стоять пакет openssh-server. Если нет, то следует установить и его.
apt-get install openssh-server
В принципе все - далее займемся конфигурацией.
Для успешной авторизации клиентов нам нужны ключи. Их созданием занимается утилита nxkeygen
interra:/home/delayer/!/rx# nxkeygen
Unique key generated; your users must install
/var/lib/nxserver/home/.ssh/client.id_dsa.key
on their computers.
Далее этот файлик нам пригодится для пользовательских машин, сей ключ мы импортируем nx-клинентам для успешной авторизации на сервере.
Создаем пользователя (или пользователей =)) в системе любым удобным методом, например с помощью adduser.
Запускаем собственный инсталлер сервера, который произведет его настройку и запуск. На "выхлопе" получим примерно следующее:
interra:/home/delayer/!/rx# nxsetup
------> You did select no action.
FreeNX guesses that you want to _install_ the server.
Type "y" to abort the installation at this point in time.
"N" is the default and continues installation.
Use "/usr/bin/nxsetup --help" to get more detailed help hints.

Do you want to abort now? [y/N] n
------> It is recommended that you use the NoMachine key for
easier setup. If you answer "y", FreeNX creates a custom
KeyPair and expects you to setup your clients manually.
"N" is default and uses the NoMachine key for installation.

Do you want to use your own custom KeyPair? [y/N] nSetting up /etc/nxserver ...done
Generating public/private dsa key pair.
Your identification has been saved in /etc/nxserver/users.id_dsa.
Your public key has been saved in /etc/nxserver/users.id_dsa.pub.
The key fingerprint is:
81:a9:42:ea:97:59:51:41:c3:e4:f0:63:29:cc:d8:10 root@interra
Setting up /var/lib/nxserver/db ...done
Setting up /var/log/nxserver.log ...done
Setting up known_hosts and authorized_keys ...done
Setting up permissions ...done
Setting up cups nxipp backend ...done

----> Testing your nxserver configuration ...
Warning: Could not find nxdesktop in /usr/bin. RDP sessions won't work.
Warning: Could not find nxviewer in /usr/bin. VNC sessions won't work.
Warning: "/usr/lib/cups/backend/smb" is not executable.
Users will not be able to enable printing.
Warning: Invalid value "DEFAULT_X_SESSION=/etc/X11/xdm/Xsession"
Users might not be able to request a default X session.
Warning: Invalid value "COMMAND_START_KDE=startkde"
Users will not be able to request a KDE session.
Warning: Invalid value "COMMAND_START_CDE=cdwm"
Users will not be able to request a CDE session.
Warning: Invalid value "COMMAND_SMBMOUNT=smbmount". You'll not be able to use SAMBA.
Warning: Invalid value "COMMAND_SMBUMOUNT=smbumount". You'll not be able to use SAMBA.
Error: expect necessary for /usr/bin/nxnode-login could not be found in '/usr/bin/expect'. Please install it or change nxnode-login accordingly.

Errors occured during config check.
Please correct the configuration file.
На сообщения об опасности особого внимания обращать не стоит, часть из них, что ругается на Invalid value, есть следствие того, что указанные переменные не определены ввиду отсутствия установленных компонентов (CUPS, samba), остальные уведомляют, что не могут найти некоторые компоненты nx-пакета. Однако ни RDP, ни VNC протокол мы использовать не будем, поэтому нам это не вредит ничуть %).
По поводу второго вопроса (с первым я думаю все ясно), связанного с KeyPair, выбираем вариант использования ключей специально для NoMachine, который и будет использоваться в качестве клиента. Хотя по сути, если мы создаем ключ заново nxkeygen'ом, а затем его импортируем клиентам, то смысл ответа n в принципе то теряется. Но подумал я об этом только сейчас, когда уже все работает ;). Так что по уму стоит поставить y, если мы хотим использовать свои ключи, сгенеренные на этой системе, и n, если планируется работать с NoMachine nx-клиентом и его дефолтными ключами. Тогда этап отработки nxkeygen'a выпадает.
Теперь зарегистриуем пользователя для nx-соединения через nxserver. Это делается через примерно следующий диалог:
interra:/# nxserver --adduser delayer
NX> 100 NXSERVER - Version 2.1.0-72-SVN OS (GPL)
NX> 1000 NXNODE - Version 2.1.0-72-SVN OS (GPL)
NX> 716 Public key added to: /home/delayer/.ssh/authorized_keys
NX> 1001 Bye.
NX> 999 Bye
interra:/var/lib/nxserver/home/.ssh# nxserver --passwd delayer
NX> 100 NXSERVER - Version 2.1.0-72-SVN OS (GPL)
New password:
Password changed.
NX> 999 Bye
Для надежности перезапустим nxserver
interra:/home/delayer/!/rx# nxserver --restart
Eсли пользователя нет в ОС, то nxserver вернет ошибку, так как при регистрации используется домашний каталог пользователя.
После этого на стороне клиента настраиваем NX-клиент, в данном примере от NoMachine - http://www.nomachine.com/download-client-linux.php, доступны сборки как для deb-, так и для rpm-орентированных дистрибутивов, ну и tarball тоже имеется. Поддерживаются linux, BSD, MacOS, Win системы.
Создав подключение (пояснение не привожу, так как считаю что ничег осложного в этом нет, все исключительно user friendly), импортируем сохраненный ранее ключ. Вот так: Configure -
General -> Key... -> Import -> /path/to/dsa-key -> Save
Все, проверяем подключение.
Если для секурности есть желание изменить ssh порт, то это делается в /etc/ssh/sshd_config, меняя значение Port. Аналогично изменяется директива SHHD_PORT на желаемое значение в /etc/nxserver/node.conf. Там же стоит изменить уровень логирования с дефолтного 0 на 2 или 4 ( опция NX_LOG_LEVEL). Подробности прямо в конфигурационном файле. Это полезно при начальной настройке и обкатке. Впоследствии несложно отключить и рестартнуть nxserver
interra:/# nxserver --restart
После перезагрузки самой системы freenx поднимается сам, благодаря init-скриптам.

8 мая 2008 г.

enlarge your Speeddial

Еще один классный, найденный на просторах Сети Opera-ный трюк. Если тебе нравится Speed Dial (то ты знаешь что это такое и обяснения излишни), то возможно. ты не раз задавался(лась) вопросом - а как бы побольше быстрозапускаемых страничек налабать? Настройки оперы, включая about:config хранят нордическое молчание.. Но выход есть. И вот он. Для тех кому чтить лень, а хочется действовать, делаем так
delayer@inspire:~/.opera> echo -e "[Size]\nRows=3\nColumns=5\n" >> ~/.opera/speeddial.ini
где цифры - это желаемое количество строк и столбцов с иконками соответственно. Правда говорят, что при большом их количестве браузер начинает притормаживать, так что не переусердствуй ;)