воскресенье, 11 ноября 2007 г.

... мы все еще живы (:

Вчера случайно обнаружил что блог недоступен. Выдавало какую-то странную 404-server not found. Сбросил настройки для custom-домена, настроил заново - вроде сейчас работает. Сколько этот бардак продолжался не знаю. Извиняюсь за неудобства.

суббота, 29 сентября 2007 г.

linuxforum.com.ua

Я думаю многие кто читает этот блог одновременно читают и linuxforum.ru, но все же скажу. Пару дней назад появилась идея создать ресурс для украинского linux-сообщества. Сейчас зачатки проекта доступны по адрессу http://linuxforum.com.ua Идет активное обсуждение того как это все должно выглядеть. Если кому интересно - wellcome. Пока что форум полностью доступен только зарегистрированным пользователям.

вторник, 18 сентября 2007 г.

fluxbox.autorun


Немного поэксперементировал с автораном в fluxbox'е. Пришел к такому виду как на картинке. Работает все очень просто. Пункты меню помеченные звездочкой - запускаются каждый раз при старте флукса, остальные - нет. При клике по пункту меню - поведение инвертируется, меню генерируется заново, уже с новыми значениями. Чтобы временно выключить/включить чего-нить не трогая при этом скрипты запуска - вполне неплохо, ИМХО.

Как это работает.
В папке ~/.fluxbox создал две новые - scripts,commands. В scripts лежат собственно скрипты автозапуска, по одному на пункт меню, соответствующий пункт меню называется именем скрипта:


diesel@beezir:~/.fluxbox$ ls -l scripts/
total 24
-rwxr-xr-x 1 diesel diesel 71 2007-09-18 08:16 feh
-rw-r--r-- 1 diesel diesel 21 2007-09-18 07:40 firefox
-rw-r--r-- 1 diesel diesel 20 2007-09-18 07:39 pidgin
-rw-r--r-- 1 diesel diesel 19 2007-09-18 07:41 torsmo
-rwxr-xr-x 1 diesel diesel 38 2007-09-18 08:15 xscreensaver
-rwxr-xr-x 1 diesel diesel 17 2007-09-18 07:40 xxkb




скрипты в моем случае в две строчки:


diesel@beezir:~/.fluxbox$ cat scripts/xxkb
#!/bin/sh
xxkb &


В commands лежат два "служебных" скрипта - один генерирует меню:

diesel@beezir:~/.fluxbox$ cat commands/generate_scripts_menu.sh
#!/bin/sh

SCRIPTDIR=$HOME/.fluxbox/scripts/;
CMDDIR=$HOME/.fluxbox/commands;
MENU=$HOME/.fluxbox/menu-autorun

echo "" > $MENU
ls "$SCRIPTDIR" | while read i; do
if [ -x "$SCRIPTDIR/$i" ]; then
echo "[exec] (*$i) { $CMDDIR/changeperm.sh $i }" >> $MENU
else
echo "[exec] ($i) { $CMDDIR/changeperm.sh $i }" >> $MENU
fi
done
echo "[exec] (autorun-gen) { $CMDDIR/generate_scripts_menu.sh }" >> $MENU


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


diesel@beezir:~/.fluxbox$ cat commands/changeperm.sh
#!/bin/bash

SCRIPTDIR=$HOME/.fluxbox/scripts
CMDDIR=$HOME/.fluxbox/commands

if [ -x "$SCRIPTDIR/$1" ]; then
chmod -x "$SCRIPTDIR/$1";
else
chmod +x "$SCRIPTDIR/$1";
fi

$CMDDIR/generate_scripts_menu.sh


соответствующее меню у меня лежит в MENU=$HOME/.fluxbox/menu-autorun, добавляется в "общеее" достаточно просто:

[submenu] (Autorun)
[include] (~/.fluxbox/menu-autorun)
[end]


ну и остается внести изменения в ~/.fluxbox/startup, чтобы файлы которые лежат в ~/.fluxbox/scripts, ежели они являются исполняемыми - запускались. Что-то типа такого:


diesel@beezir:~/.fluxbox$ grep -vE '^#' startup
exec /usr/bin/fluxbox &
fbpid=$!

sleep 1

{
wait $!
SCRIPTDIR=$HOME/.fluxbox/scripts
ls $SCRIPTDIR | while read i; do
if [ -x $SCRIPTDIR/$i ]; then
$SCRIPTDIR/$i &
fi
done
./generate_scripts_menu.sh &
}&

wait $fbpid

воскресенье, 16 сентября 2007 г.

me, Linux, etc...

Впервые о linux/unix я услышал в школе, видимо в классе десятом от одного из своих друзей. Компьютера у меня тогда еще не было - мой первый домашний компьютер появился гораздо позже, уже на третьем курсе универа - это был во всех отношениях старый PII Celeron 300 MHz, с 64 метрами оперативки и 3-гигобайтным винчестером. У Туши(это был он - кто знаком), к тому времени компьютер уже был - очень современный по тем временам Pentium III 450Mhz, и инераса ради он ставил на него всякие "экзотические" по тем временам операционки: BeOS 5, RH Linux (6.0 и 7.0). Может еще чего - уже не помню, его диски с BeOS и Linux позже перекочевали ко мне, и живы до сих пор. Тогда он рассказал что linux - это такая ось написанная в качестве курсовика каким-то финским студентом, и получившая позднее большую популярность. Позже на уроках информатики, говоря о классификации ОСей, одна из наших многочисленных учительниц - Ирина Александровна, назвала unix в разделе "сетевых ОС". Что такое "сетевые операционные системы", не смотря на одноименный труд Олиферов до сих пор понять не могу - если речь идет о системах который вообще не могу существовать без сети - то это явно не про UNIX/Linux. Eсли речь идет о системах в которых реализована поддержка работы с сетью ... дык почему тогда в классификации забывают о той же Windows NT или Netware(качество реализации объективным критерием быть не может - слишком субъективно)?. Как бы там ни было, загоревшись, Туша поставил-таки себе linux, даже купил достаточно толстую книжку по RH(книжка сейчас где-то у одной нашей знакомой валяется, надо бы забрать для истории). Хотя уже в то время говорилось о дружелюбии linux к пользователю, особого дружелюбия система не показала - традиционные проблемы с русским(мне кажется я так и не смог там их побороть), странные необычные программы(один текстовый редктор может только пищать и все портить, другой тоже очень своеобразный :) ). Вспоминается еще Туша запустивший терминал, и говорящий что-то типа "вот это консоль, в ней можно прямо писать на языке С", только ни команд ни С тогда никто из нас еще не знал(знали Pascal, которому учили в школе). "Про команды буду знать, когда прочитаю вот эту книгу" - не знаю прочитал ли ее Туша, мне кажется что на сегодня единственным благодарным читателем того описания RH был я. Короче через некоторое время интерес к linux был потерен, linux стерт с винта, а разборки с ним были отложены до лучших времен. Вот не помню только интерес к BeOS был уже после, или еще до linux'а :). Из тех времен вспоминается давняя страшная легенда о том что linux страшная система, которую если установил, то можно потом только удалить низкоуровневым форматированием винта, и то если повезет. Темное время, средневековье :). Сейчас Туша уже женатый человек с высшим образованием, занятый написанием запросов к MSSQL. Гм. хотелось бы добавить "но иногда у него все же проносится мысль, а не бросить ли все к чертям, и не заняться ли linux'ом, ведь когда-то было интересно", но ... копаться в чужих мозгах пожалуй не буду - если захочет - сам расскажет.

Потом долгое время о linux особо никто не вспоминал(у меня тогда был бОльший интерес к программированию, чем к администрированию, он остался и поныне). 11-й класс, выпускной, поступление в универ, я к своему удивлению оказался студентом в НКИ(ныне Национальный Университет Кораблестроения им. адм. Макарова) на специальности "электронные системы". "К своему удивлению" - потому что всяких транзисторов, резисторов итп терпеть не мог, и не могу, и никогда себя электронщиком не видел. Возможно это одна из причин почему практически перед дипломом я бросил универ, хотя это тема отдельной истории. Правда, много вещей оказались все-таки интересными, и не смотря на то что ни разу за все четыре года ни держал в руках паяльника, вполне неплохое представление о схемах, тех же транзисторах, резисторах, контроллерах имею, и в отличии от от нудного непонятного процесса сборки собственно разработка, проектирование, моделирование этого всего, программирование под различные контроллеры - штука достаточно интересна; и если бы кто-нить предложил поработать над разработкой встраиваемых систем, программированием под контроллеры ит.п. с радостью бы согласился - хотя и пришлось бы вспоминать все практически с нуля.

Первые два года в универе - это в основном теория, вышка, физика, химия напрягали мозг бедных студентов. На третьем курсе началось много специальных предметов и стало понятно что хорошо бы иметь дома комп. Жил я тогда уже один, денег было немного, но при помощи родителей с одной стороны, и Димыча с Фомой - с другой, был все-таки куплен мой первый Celeron, - про конфиг я рассказал в самом начале. Для W98(а позже и W2K), MS Word 2000, Orcad, EWB и пр. этой машинки вполне хватило. Года два она проработала вполне исправно, и выдержала и учебу, и мои первые експерименты с Linux'ом.

Практически сразу после покупки компьютера появилась некоторая необходимость иметь какой-никакой доступ в Internet. Обзавелся модемом - галимы^W, старый, добрый Connexant HSFi - отлично работающий под виндой, и ... ну про платные дрова от linuxant.com я думаю все слышали. Несколько ночей подряд, потратив практически все деньги которые были на счету, искал информацию для реферата про лазеры с какой-то хитрой накачкой(не помню уже даж). Yandex, при некотором упорстве, и долей везения позволяет творить чудеса. Какой-никакой материал был найден, и привращен в реферат, преподу понравилось. На счету оставались какие-то деньги, решил поискать что-то интересное. Вспомнил что в школе учительница хвалила книгу Дональда Кнута "Искусство программирования", решил найти ее. Найти оказалось гораздо проще чем реферат про лазеры - она лежала и лежит на lib.ru в каком-то странном формате ... tex. Следующий payment провайдеру был потрачен на то чтобы разобраться что такое ТеХ и с чем его едят. Так я почти до половины прочитал кнутовский The TeX Book, и введение в LaTeX, а так же получил у себя сначала работающую копию emTeX, потом MikTeX для DOS и Windows соответственно. Тут-то и вспомнился linux - во многих статьях по настройке emTeX, найденных тогда, говорилось что ТеХ есть практически в любом современном дистрибъютиве Linux, и что там русский практически не нужно прикручивать. К тому времени уже несколько универских лабораторок я успешно сверстал в LaTeX'е, и интересно было попробовать linux - систему в которой ТеХ работает нормально из-коробки.

По воле случая, Кнута я позже нашел в djvu (еще один странный формат, чем его открыть я тоже нашел сам в yandex'е, и до сих пор удивляюсь вопросам новичков не могущих найти для винды или для линукса программу которой можно прочитать эти файлы), но так практически и не осилил. Равно как и не стал собирать TeX-овые исходники с lib.ru, равно как за все время общения с linux'ом за ненадобностью ни разу ничего не сверстал в LaTeX'е, который сейчас уже практически не помню. Linux же все-таки был установлен.

Специально для эксперементов с linux планировалось купить еще один винт, пока появился подходящий кандидат, я успел пролистать книжку по RH, и где-то под Новый Год (в 28-29 декабря), не став ждать винта, подвинул винду, освободив метров 500 диска, и поставил RH7.0. Был в шоке :) что от тогдашнего Гнома, что от тогдашнего КДЕ - нормально не работающий русский, крякозябры в xmms(в котором тогда еще игрались мп3), да и вообще в большинстве Х-овы приложений, откровенно странный emacs, и убогие закосы под MS Word, как включить модем и выйти в интернет - непонятно ... и терминал в котором можно было бы печтать команды, только какие и зачем непонятно. Приложения, однако запускались достаточно быстро - это радовало, с остальным предстояло разбираться. Откопал где-то Cyrillic HOWTO Евгения Балдина, но ... рецепты с него почему-то в большинстве своем не заработали. Для себя сделал вывод - интересно, но было бы еще интересней если бы все работало как надо.

В то время натолкнулся на ЛОР - как главный сайт линуксоидов, но ничего полезного для себя к сожалению не нашел, так же нашел linuxshop.ru - тоже популярную тусовку линуксоидов, где в то время оказалось огромное колличество success stories ... типа поставил Мандрейк, несколько кликов мышки и у меня уже все работает, какая прикольная система linux, как тут все отлично настраивается "под себя", какой ужасный глюкодром винда. Эти истории, истории реальных людей которые поставили и сумели все настроить, оставляли шанс на то что все заработает когда-нибудь и у меня, подзадоривали "если у кого-то получилось, то и у тебя все получится", и помогли мне не меньше чем различные документы технического плана. Сейчас в интернете все больше диких воплей, флейма linux vs. windows, наивной философии, а вот обычных человеческих историй к сожалению достаточно мало, и в основном встречаются они на англоязычных сайтах, которые не каждый из нас имеет возможность беспроблемно читать. Жаль. Возможно моя история так же поможет кому-то не бросить все не половине пути, как когда-то linuxshop'овские помогли мне :)

Шло время, я загружался в linux послушать музыку да пораскладывать пасьянс, больше пока ничего нормально не работало. Как-то наткнулся на сайт opensource.com.ua, который торговал и торгует дисками с linux-дистрибъютивами. Назаказывал достаточно много. Первой был RH9 с этой системой я был уже знаком, но RH9 жутко тормозил на моем старенькой компе, и выполнение практически всего превращалось в слайд-шой. Потом Gentoo и FreeBSD. Инструкция по установке Gentoo была распечатана, и мне удалось практически с первого раза ее не только установить, но и запустить КДЕ, потом что-то отвалилось, разобраться с тем что именно - так и не получилось. Установка FreeBSD, которая немного отличается от установки linux снесла мне все содержимое на обоих винтах(хотя я и не сильно переживал по этому поводу), потом прочитал документацию :). Фря показалась сложнее linux'а, поэтому эксперементы с ней бросил.

В те времена меня привлекало два названия - SuSE Linux и Slackware Linux. Интерес был интуитивным, единственное что я знал - это были скромные беглые описания с линуксовых сайтов. SuSE была окружена каким-то блеском чтоли, мощным потоком новизны, который сшибает все на своем пути, хотя источник был старым и проверенным. От Slackware же веяло мудростью старых UNIX'ов, надежностью, и вывереностью. Какое-то интуитивное восприятие (гм. стиля чтоли) дистрибъютивов я сохранил и сейчас, странно но так или иначе это восприятие подтверждается и опытом работы. Как бы там ни было - была заказана сначала Slackware, а потом и SuSE.

SuSE понравилась, но SuSE 9.3 на моей машине была очень медленной, и пользоваться ей было бы проблематично, а вот слака пришлась в самый раз. Загружался, все так же играл в пасьянс в КДЕ(который действительно намного круче виндового), чуть позже нашел достаточно простое описание русификации - и оно, слава Богам! заработало. :) Системой уже можно было уже полноценно пользоваться. Вскоре разобрался с модемом. Правда дрова с linuxant'a давали всего 14.4, а старая бета иногда вешала систему намертво, и приходилось перезагружаться ресетом. Было интересно что происходит с системой когда включен звук, и она "вешается намертво", так и не узнал - когда был включен звук все работало отлично(поэтому музыка играла почти всегда). Постепенно обживался, выбирал себе программы на каждый день типа почта, браузер итп. Браузером стал есс-но firefox, ничего другого я до сих пор не терплю, разве что седьмой интернет експлорер понравился. Почтой kmail, позже Thunderbird, а под конец моего юзанья Slackware - mutt, которым пользуюсь и сейчас. IM - сначала был sim, потом gaim, которым пользуюсь и сейчас. Входе эксперементов с WM'ами приглянулся fluxbox - с одной стороны очень легкий и быстрый, для моего медленного компа это был большой плюс, по сравнению с КДЕ или не очень хорошо собранным в Слаке Гномом(в 9.1 он еще был), с другой стороны достаточно удобный как для человека по-жизни предпочитающего мышь клавиатуре(да, есть и такие среди линуксоидов).

Постоянный вялотекущий интерес к программированию, в какой-то момент ожил в интересе к языкам assembler'а, почитал несколько статей на wasm.ru, нашел рассылку Олега Калашникова, который к тому времени основал ныне здравствующий rusfaq.ru. Rusfaq в начале своего развития был просто возможностью изучающих assmebler обмениваться опытом, задавать друг-другу вопросы, помогать вновь прибывающим. Возникали естественно вопросы и по околоассемблерным вещам - администрированию ОСей, например. Так возникла удачная, на мой взгляд, идея оформить это все дело в формат, когда посетители задают вопросы, те кто может на них отвечают. Вопросы рассылаются всем желающим, с формой в которую можно вставить ответ. Почти форум, но чуть уже. К сожалению, даже на сегодня идея не доведена до логического конца - оформление этого всего в такую-себе knowledge base с хорошим поиском, системой FAQ на основе часто задаваемых вопросов и ответов итп. Взамен, сейчас портал превратился в такой себе вариант полукомерческого техсуппорта. Когда я подписался на рассылку по UNIX/Linux на русфаке заметил что на некоторые вопросы даются мягко говоря неадекватные ответы, единственным логичным решением было попробовать давать собственные ответы. Для отвечающего, ответ на вопрос к тому же дает больше пользы чем для того кто спрашивает. Не знаю принесли ли кому пользу мои ответы на русфаке - мне пользы они принесли достаточно много, кое-как утряслись базовые представления о функционировании unix-систем, много нового узнал/закрепил про shell итп. Там же познакомился с кучей интересных людей, с которыми до сих мы продолжаем неусыпно грызть гранит свободного софта(изучать в смысле). Почему как минимум три раза "эксперта с достаточно высоким статусом"(в терминологии портала) оттуда вышвыривали - тема для отдельного рассказа, об этом как-нибудь в следующий раз. Как бы там ни было, ни смотря на то что произошло, я благодарен порталу, людям с которыми я там познакомился(_vt, Max(Phoid),АЮ(skipjack),John Freeman, Disciples, john,igor87, Дядя_Андрейка и все, все все, привет!) - это был отличный опыт(и того как делать надо, и того как не стоит).

Странно, кстати, не смотря на огромное колличество публичных ответов на вопросы про linux, и на русфаке и сейчас на Линуксфоруме, у меня до сих пор не поднимается рука спросить чего-то самому. Иногда, конечно спрашиваю у друзей и знакомых входе общения, но это немного другое. Все-таки видимо подействовали на меня знаменитые "Как правильно задавать вопросы" и "Как стать хэкером", прочитанные еще во время первых экспериментов. Я никогда не старался следовать этим документам специально, но недавно прочитав понял что так или иначе следую. Дух свободного софта, видимо.

Дальше вобщем-то рассказывать особо нечего. Подключился к интернету через локальную сеть, в сети было несколько человек тоже так или иначе связанных с открытым софтом. Благодаря одному из них - человеку с ником kors :) - я установил дебиан в первый раз(какой-то woody), потом было еще несколько пробных установок, уже вышедшего sarge, после которых Debian и стал основной системой. Устроился на работу связанную с linux - там уже достаточно много про shell, perl, сейчас вот еще взялся воскрешать в памяти забытый python. Чем дальше в лес, тем лучше ощущается что лес большой, красивый, интересный, неизведанный, и стоит потрудится чтобы найти дорогу домой.

Вот такая вот странная история. Не знаю даже почему мне захотелось ее рассказать.

суббота, 11 августа 2007 г.

screen tips

Многим часто приходится иметь дело с работой на удаленных серверах по ssh. При этом могут возникать самые разные проблемы с соединением и есть вероятность того что результат долгой и напряженной работы будет потерян из-за банального дисконнекта. Хорошо иметь возможность подключатся и отключатся от удаленных хостов, сохраняя терминальные сессии. В этом, а так же во многом другом может помочь почти "классическая" утилита screen. Скорее всего screen уже установлен на вашей linux-машине(если нет - самое время установить), и на серверах с которыми вы собираетесь работать.

Итак, начинаем работу. Запустить новый screen можно(как ни странно), просто командой screen без параметров:

diesel@debian:~$ screen

При этом, в зависимости от настроек screen в вашей системе либо просто появится приглашение шелла, либо "экран приветствия", нажав SPACE или ENTER в котором вы так же попадете в shell. Вроде бы ничего не обычного, кроме того что этот shell будет уже запущен "внутри" screen'а.

Для того чтобы выйти из screen'а(выйти а не отстоединится) достаточно выйти из всех открытых в нем оболочек, либо же нажать комбинацию клавиш Ctl-a \, и ответить "y" на вопрос "действительно ли вы хотите выйти".

Отсоединится от текущего скрина, не закрывая и не завершая сессии можно комбинацией Ctrl-a d.

Если на машине уже есть запущенная screen-сессия, и вы хотите подсоединится к ней, то
1) если сессия одна, достаточно просто команды:

diesel@debian:~$ screen -x

2) если сессий несколько, то:
посмотреть список запущенных screen'ов можно командой screen -ls:

diesel@debian:~$ screen -ls
There are screens on:
2762.pts-0.debian (Detached)
2743.pts-0.debian (Detached)
2 Sockets in /var/run/screen/S-diesel.

diesel@debian:~$

выбираем нужный нам screen, и присоединяемся к нему:

screen -x 2762.pts-0.debian

Названия сессий по-умолчанию малоинформативны - просто номера процессов, если есть желание запустить и использовать несколько screen-сессий для разных задач можно придумать более вменяемые названия. Придумываем название, затем запускаем новый screen вот таким образом:

diesel@debian:~$ screen -S "job1"

где job1 - это название нашей "именнованной" сессии. Теперь в -ls мы увидим гораздо более понятное:

diesel@debian:~$ screen -ls
There are screens on:
2762.pts-0.debian (Detached)
2795.job1 (Detached)
2743.pts-0.debian (Detached)
3 Sockets in /var/run/screen/S-diesel.

и сможем подсоединиться к сессии job1 просто указав ее имя:

diesel@debian:~$ screen -x job1


Как вы уже поняли, сессии сохраняются даже в то время когда вы отключны от сервера, и все что в них запущено продолжает выполнятся. Впрочем, на этом возможности screen'а не исчерпываются.
Иногда при работе по ssh очень хочется чтобы было открыто сразу несколько терминалов, при этом коннектится несколько раз облом - особенно если коннектится нужно через несколько серверов. В этом тоже может помочь screen. Просто нажмите Ctrl - a c и откроется еще один шелл. Перемещатся между открытыми шеллами можно либо через Ctrl - a <Цифра>, где <Цифра> - номер открытого шелла начиная с нуля, либо Ctrl - a n/Ctrl - a p - вперед назад. Получить список открытых "окон" - консолей(и переключится на нужную), можно комбинацией клавиш Ctrl - a "; чтобы задать нормальное имя(а не просто скучный "bash") для какого-нить окна, перейдите в него и нажмите Ctrl - a A (регистр имеет значение), затем в появившемся приглашении введите имя.
Если открыто несколько окон полезной может быть возможность следить за активностью в каком-то из них. Например если вы запустили "долгоиграющую" команду и интересно узнать когда она завершится. Переходим в окно с этой командой, жмем Ctrl - a m, видим надпись типа такой: "Window 0 (bash) is now being monitored for all activity". Когда что-то в окне изменится screen подаст звуковой сигнал, а в списке окон после номера появится символ "@".

Конфигурируется screen с помощью файла ~/.screenrc, в вашем домашнем каталоге. Например можно написать туда вот такую абракадабру:


caption always "%{= 45}%{+b w}Screen: %n | %h %=%t %c"
hardstatus alwayslastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<"

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

Вот примерно так маленький и незаметный screen может существенно облегчить жизнь.

суббота, 28 июля 2007 г.

lftp. Usage.

Собственно subj, иногда приходится пользоваться, иногда приходится пользоваться консольными(если у кого возникнет желание поделится чем-то интересным про GUI-клиенты, You are wellcome. Из виденных мной мне не понравился ни один из них). Стоит про это знать. Консольных клиентов несколько - самый простой ftp - он есть почти везде, немного отличается в реализациях в разных системах, из более удобных продвинутых есть lftp и ncftp. Про второй пока промолчу - я им почти не пользовался, про lftp пойдет речь ниже.

1) Подключение к серверу, можно несколькими способами. Если вызываем lftp вот так:


lftp ftp.domain.com


подключается под анонимусом(anonymous) к ftp.domain.com. Можно указать логин и/или пароль при подключении:


lftp login:password@ftp.domain.com

подобная нотация будет работать для бОльшинства других в т.ч. и GUI клиентов.

Еще один способ, уже через внутреннюю команду open, в lftp. Запускаем lftp без параметров:


[vasiliy@beezir ~]$ lftp
lftp :~>

и потом уже в этой оболочке пишем:


lftp :~> open diesel@192.168.10.1
Password:
lftp diesel@192.168.10.1:~> ls


удобно если вдруг во время работы вы "вдруг" передумали и захотели подключится к другому серверу.

Стоит заметить, что lftp по-умолчанию подключается не сразу, а начинает подключатся когда ему дадут первую команду, т.е. чтобы проверить правильность логина с паролем лучше сразу же скомандывать ls.

2) Скачивание и основные команды.
Основные команды примерно такие же как в shell'е, т.е. ls, cd работают как обычно. Так же работает автодополнение всего по Табу.

Для скачивания есть несколько команд, мы посмотрим на две: mget и mirror. Через встроенный хэлп можно получить справку по обеим командам. Для того чтобы получить список вообще всех доступных команд набираем просто help, для конкретной команды - help commandname, e.g.: help mget.

mget filename позволяет скачать файл filename, опция -c как и в в wget'е позволяет "докачать" файл.

mirror dirname позволяет скачать директорию. mirror -c - докачать директорию.

О том как залить файл на сервер с помощью mput и того же mirror предлагаю разобраться самим.

3) конфигурация.
конфигурационный файл .lftprc, предсталяет собой просто команды lftp которые даются ему перед запуском. Основные установки производятся командой set (да-да, про них тоже есть в help'е). Дома у меня там пару строк, позволяющих лазить свободно на виндовые ФТП, с русскими именами файлов:


set ftp:charset cp1251
set mirror:set-permissions off
set ftp:use-telnet-iac no


а так же несколько алиасов, команд, для более быстрого набора этого дела:


alias 5.7 open 192.168.5.7
alias 5.6 open 192.168.5.6
alias 5.12 open 192.168.5.12
alias 9.87 open 192.168.9.87
alias kyvaldis open 192.168.61.193
alias localhost open 127.0.0.1

т.е. вместо того чтобы писать например open 127.0.0.1 я могу просто написать localhost.

4) advanced. У lftp несколько полезных CLI-опций, связанных с встраиванием этого всего в скрипты(вернее исполнение lftp-скриптов):

-e commands Execute given commands and don’t exit.
-f script_file Execute commands in the file and exit
-c commands Execute the given commands and exit


Вот такие основы работы с этим маленьким, простым и удобным фтп-клиентом.

четверг, 14 июня 2007 г.

Установил Solaris.

Уже достаточно давно пришли Sun'овские диски с Solaris'ом. Первая проба установить это чудо на ноут(ASUS A6M) закончилась не то чтобы неудачей - он таки установился, но и успехом это назвать можно с большой натяжкой. Часть устройств не работала, среди которых самое главное - сетевая карта, что делало дальнейшие разборки с системой карйне неудобными. С первого раза нагуглить драйверов для сетевухи тоже почему-то не получилось. Вобщем разборки с системой были отложены до лучших времен.

Лучшие времена настали достаточно неожиданно :). Вышел в свет небольшой "LiveCD" для проверки совместимости оборудования с SunSolaris 10. Вот тут: http://www.phoronix.com/scan.php?page=article&item=747&num=1 его описание, вот отсюда: http://www.sun.com/bigadmin/hcl/hcts/install_check.html его можно скачать. CD этот не просто проверяет будет ли работать устройство, но так же способе дать советы по поводу того где можно найти некоторые third-party драйвера, для устройств, поддержки которых в самом Solaris'е нет. Весит всего 50Мб.

С помощью LiveCD узнал что пока что у ноутовской звуковухи шансов заработать мало(вернее почти нет), а вот для сетевухи есть драйвера которые можно найти вот тут: http://homepage2.nifty.com/mrym3/taiyodo/eng/ - для тех у кого нет возможности загрузить CD, возможно ссылка будет полезной. Единственный непонятный недостаток CD, обнаруженный - это он вроде бы предлагает сгрузить результаты своих тестов на USB Flash, но почему-то на моих очень даже FAT-овских флэшках он не нашел FAT-системы. Пришлось искать ручку и переписывать ссылку :)

Ну раз сеть была обещана - стоило попробовать поставить еще раз :). Процесс установки достаточно простой, и даже мой никакущий после ночной смены мозк вроде бы справился. Скачал в Debian'е дрова - это архив с ихсодниками, записал архив на диск(справедливо полагая что DVD-ROM я то точно увижу из-под Соляриса, и пошел пробовать). К драйверам была достаточно точная инструкция - справился без особых проблем.

Следующим пунтком программы была настройка сети по DHCP. Нагуглил достаточно простое решение: http://solaris.reys.net/2006/04/solaris_10_dhcp_client, всего три пунтка:
1) Создать файл /etc/hostname(с именем сетевого интерфейса), у меня это:
touch /etc/hostname.gani0
про то как будет называться устройство после установки я узнал из инструкции к драйверам.
2) Создать файл /etc/dhcp:

bash-3.00$ cat /etc/dhcp.gani0
wait 60

wait 60 - время которое будет ожидаться ответ DHCP-cервера.
3) в /etc/nodename должно быть имя системы, которое будет использоваться если по DHCP оно поулчено не будет.(у меня там уже был прописан hostname указанный при установке).
И все. Перезагрузился все работало.

Далее нужно было настроить русский в Х-ах. Нагуглил несколько решений. Вот как это делал я - не знаю насколько правильно.

В /etc/X11 лежит файл .xorg.conf (именно с точкой в начале). Его скопировал в xorg.conf
cp /etc/X11/.xorg.conf /etc/X11/xorg.conf

В файле для клавиатуры прописал следующее:

Section "InputDevice"
Identifier "Keyboard0"
Driver "keyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "us,ru(winkeys)"
Option "XkbVariant" "winkeys"
Option "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll,caps:internal"
EndSection


Рестарт Х-ов - вроде все работает. (Ну т.е. работает - этот текст я пишу из Mozilla уже в Solaris). Вот такие first steps получились :)

понедельник, 28 мая 2007 г.

SuSE 10.3 alpha 4

Не так давно вышла 4-я alpha-версия грядущей SuSE 10.3. Вот несколько скриншотов, yast наконец-то обрел "Гномовское обличье", и интегрирован в Гномовский Control Cener :)





понедельник, 21 мая 2007 г.

SuSE 10.2: zypper - еще один способ установки пакетов.

Недавно промелькнула новость о том что из грядущей SuSE 10.3 будет удален ZENworks Managment Daemon(zmd). zmd, для большей части обычных пользователей - это та штука которая заставляет глубоко задуматься yast когда вы открываете диалог установки программ :) Для бОльшей же части пользователей наиболее традиционным способом установки программ является установка через соответствующий диалог yast'а. Диалог достаточно удобный и хорошо визуализирует то что вы пытаетесь сделать. Вот только если надо просто поставить xmms, или другую подобную мелочь, такой способ установки превращается в долгий и утомительный :). Вот другой способ для "мелких" установок, с помощью консольной утилиты zypper.
zypper -h выводит короткий хэлп по опциям:

 


Options:
--help, -h Help
--version,-V Output the version number
--verbose,-v Increase verbosity
--terse, -t Terse output for machine consumption
--table-style,-s Table style (integer)
--rug-compatible,-r Turn on rug compatibility
Commands:
help Help
shell, sh Accept multiple commands at once
install, in Install packages or resolvables
remove, rm Remove packages or resolvables
search, se Search for packages matching a pattern
service-list, sl List services aka installation sources
service-add, sa Add a new service
service-delete, sd Delete a service
service-rename, sr Rename a service
refresh, ref Refresh all installation sources
patch-check, pchk Check for patches
patches, pch List patches
list-updates, lu List updates
update, up Update packages
info, if Show full info for packages
patch-info Show full info for patches



На первый взгляд не много, но давайте попробуем установить что-нибудь, например в свежеустановленной SuSE не хватает "нормальной" xine-lib, способной "играть" mp3, и "показывать" все видео. Традиционным решением проблемы является добавление репозиториев от packman и установка соответствующих пакетов из этих репозиториев. За добавление репозитория у zypper отвечает команда "sa". Смотрим хэлп для нее:



beezir:~ # zypper -h sa

service-add [options] URI [alias]

Add a service (installation source) to the system.

Command options:
--repo,-r Read the URL and alias from a file (even remote)
--type,-t Type of repository (YaST, YUM, or Plaindir)
--disabled,-d Add the service as disabled
--no-refresh,-n Do not automatically refresh the metadata



ОК. типа репозитория я не знаю, остальные опции вроде еще более ненужные поэтому делаем просто:



beezir:~ # zypper sa http://packman.mirrors.skynet.be/pub/packman/suse/10.2

Determining http://packman.mirrors.skynet.be/pub/packman/suse/10.2 source type...
http://packman.mirrors.skynet.be/pub/packman/suse/10.2 is type YUM
Do you want to trust key id 45A1D0671ABD1AFB PackMan Project (signing key) fingerprint:F8875B880D518B6B8C530D1345A1D0671ABD1AFB ? [y/n]: y
Import key 45A1D0671ABD1AFB in trusted keyring? [y/n]: y
Added Installation Sources:
[x]* http://packman.mirrors.skynet.be/pub/packman/suse/10.2 (http://packman.mirrors.skynet.be/pub/packman/suse/10.2)


После выяснения типа репозитория zypper задумывается на некоторое время(я так понимаю скачивает список пакетов и прочую мета-информацию), после чего появляются вопросы касательно "доверия" этому источнику установки.

ОК. Репозиторий мы добавили. Теперь надо найти как в нем называется эта самая libxine:


beezir:~ # zypper se xine

Restoring system sources...
Parsing metadata for 20070520-174005...
Parsing metadata for 20070520-174057...
Parsing metadata for http://packman.mirrors.skynet.be/pub/packman/suse/10.2...
Parsing metadata for 20070520-174026...
S | Catalog | Type | Name | Version | Arch
--+--------------------------------------------------------+---------+---------------------------+---------------+-----
i | 20070520-174005 | package | amarok-xine | 1.4.4-28 | i586
i | 20070520-174057 | package | amarok-xine | 1.4.4-28 | i586
| http://packman.mirrors.skynet.be/pub/packman/suse/10.2 | package | gxine | 0.5.11-0.pm.0 | i686
| http://packman.mirrors.skynet.be/pub/packman/suse/10.2 | package | gxine | 0.5.11-0.pm.0 | i586
| http://packman.mirrors.skynet.be/pub/packman/suse/10.2 | package | gxine-browser-plugin | 0.5.11-0.pm.0 | i586
| http://packman.mirrors.skynet.be/pub/packman/suse/10.2 | package | gxine-browser-plugin | 0.5.11-0.pm.0 | i686
| http://packman.mirrors.skynet.be/pub/packman/suse/10.2 | package | jftpgw-xinetd | 0.13.5-0.pm.1 | i586
| 20070520-174005 | package | kdemultimedia3-video-xine | 3.5.5-30 | i586
| http://packman.mirrors.skynet.be/pub/packman/suse/10.2 | package | kdemultimedia3-video-xine | 3.5.5-31.pm.0 | i586
| 20070520-174057 | package | kdemultimedia3-video-xine | 3.5.5-30 | i586
| http://packman.mirrors.skynet.be/pub/packman/suse/10.2 | package | libxine1 | 1.1.6-0.pm.0 | i686
| http://packman.mirrors.skynet.be/pub/packman/suse/10.2 | package | libxine1 | 1.1.6-0.pm.0 | i586
....



Выбираем из таблички нужный нам libxine1, и xine-ui, и устанавливаем их.


beezir:~ # zypper in libxine1 xine-ui
Restoring system sources...
Parsing metadata for 20070520-174005...
Parsing metadata for 20070520-174057...
Parsing metadata for http://packman.mirrors.skynet.be/pub/packman/suse/10.2...
Parsing metadata for 20070520-174026...
Parsing RPM database...
Summary:
[S1:1][package]DirectFB-0.9.25-29.i586
[S3:0][package]libcaca-0.9_0.99.beta11-0.pm.0.i586
[S3:0][package]libxine1-1.1.6-0.pm.0.i686
[S3:0][package]xine-ui-0.99.5-0.pm.0.i686
[S0:0][package]xine-lib-1.1.2-39.i586
Continue? [y/n] y
Downloading: [S1:1][package]DirectFB-0.9.25-29.i586, 765.6 K(3.0 M unpacked)
Installing: [S1:1][package]DirectFB-0.9.25-29.i586
Downloading: [S3:0][package]libcaca-0.9_0.99.beta11-0.pm.0.i586, 302.5 K(1.1 M unpacked)
Installing: [S3:0][package]libcaca-0.9_0.99.beta11-0.pm.0.i586
Downloading: [S3:0][package]libxine1-1.1.6-0.pm.0.i686, 9.8 M(23.2 M unpacked)
Installing: [S3:0][package]libxine1-1.1.6-0.pm.0.i686
Downloading: [S3:0][package]xine-ui-0.99.5-0.pm.0.i686, 2.1 M(4.5 M unpacked)
Installing: [S3:0][package]xine-ui-0.99.5-0.pm.0.i686



Вот примерно так, все достаточно просто. Не смотря на что все это выполняется с присущей SuSE-шному пакетному менеджменту медлительностью, но все-равно быстрее, чем, скажем, если это делать через yast :).

Вот так в очередной раз забрел в СуСЕ :-)

среда, 2 мая 2007 г.

fluxbox & xinitrc. some new tips.

Fluxbox

Вот недавно узнал из чтения тамошней wiki - достаточно полезная штука "переназначать" некоторые дефолтные установки тем. Для чего это надо? - В темах для fluxbox часто используется шрифты в которых нет места русским символам. Соответственно включаем - и видим на месте русских букв нечто не читаемое. Хорошо если локаль для fluxbox'а какая-нить en_US.UTF-8, как у меня и проблема прежде всего касается кривых заголовков окон firefox'a, и др. программ которые хотят выставлять русские буквы в заголовок. Вот ежели вообще весь интерфейс по русски(а fluxbox русифицирован практически полностью) - вот тогда откровенно неудобно. :) Другой возможной причиной может быть желание закрепить намертво размер некоторых элементов - например панельки, например потому что значки нарисованы для 16x16 и хочется чтобы так и было. Да и вообще неинтересно заново привыкать к слишком большим, или к слишком мелким элементам.

Ок. Теперь собсно как это делается. В ~/.fluxbox/init есть параметр
session.styleOverlay: ~/.fluxbox/overlay
задает имя файла в котором будут "переназначения" устанавливаться.
Формат файла такой же как у файла тем, поэтому можно просто скопировать нужные константы из уже работающей темы, например вот так вот:

menu.frame.font: arial-9:
menu.title.font: arial-10:bold
toolbar.clock.font: arial-9:bold
toolbar.workspace.font: arial-10:bold
toolbar.iconbar.focused.font: arial-8:bold
toolbar.iconbar.unfocused.font: arial-8
window.font: arial-8


для установки шрифтов. Правда, не стоит устанавливать слишком много - иначе смысл установки новой темы потеряется :)

.xinitrc

В последнее время заинтересовался wmii, dwm и иже с ними. Не скажу что готов прямо сейчас бросится в пучину неперекрывающихся окон и табов, но когда нужно расшвырять окна исходя из конкретных заданий, и иметь возможность быстро переключатся между заданиями + когда не нужно видеть список окон, но хочется видеть максимально все окна и быстро перескакивать между ними(= фокус следует за мышкой - то что эта приятность по дефолту - приятно удивило). О чем это я.

Я тут уже описывал свой startup-файл для fluxbox'а, из которого фактически запускается все что должно быть запущено со стартом WM. С появлением "альтернативного" WM хотелось бы чтобы часть программ запускалась и в нем - поэтому переносим настройки из ~/.fluxbox/startup в ~/.xinitrc (напоминаю что по некоторым причинам есть еще файл ~/.xsession из которого просто вызывается ~/.xinitrc):

Первая часть вполне стандартна:

#!/bin/bash
# $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $

#X-settings:
userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap
# merge in defaults and keymaps

if [ -f $sysresources ]; then
xrdb -merge $sysresources
fi

if [ -f $sysmodmap ]; then
xmodmap $sysmodmap
fi

if [ -f $userresources ]; then
xrdb -merge $userresources
fi

if [ -F $usermodmap ]; then
xmodmap $usermodmap
fi


Далее как раз то о чем мы говорили:

#выбираем WM:
#wm=/home/diesel/my/programs/dwm/bin/dwm
#wm=wmii
export LC_CTYPE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
wm=/usr/bin/fluxbox
$wm &
wmpid=$!

{
#wallpaper:
# /usr/bin/feh --bg-scale /home/diesel/.fluxbox/backgrounds/33.jpg &
/usr/bin/feh --bg-scale /home/diesel/wallpapers/digo.ws_green_wallpapers_0052.jpg &
wait $!
#Если запускается fluxbox мы хотим чтобы с ним запускался torsmo и xxkb:
if [ $wm == '/usr/bin/fluxbox' ]; then
/home/diesel/bin/torsmo &
# gaim &
xxkb &
fi
#а вот тачпад хочется блокировать не зависимо от используемого WM :-).
/usr/bin/syndaemon -i 10 -d &
} &
wait $wmpid

пятница, 30 марта 2007 г.

cat Excel files

Почти забыл Perl :-) решил кое-что вспомнить, заодно и немного велосипедопостроительствовать. so, небольшой перловый скрипт, который позволяет вывести в STDOUT содержимое Excel'евского файла.

Фичи:
- можно задать номер выводимой таблицы(sheet), по-умолчанию: 0;
- можно задать "кавычки" которыми выделяется содержимое каждой ячейке(возможно стоит апргрейдить чтобы кавычками могли быть парные скобки, но пока что не особо нужно);
- возможность задать разделитель полей(разделитель для выводимых ячеек)
- возможность убрать лишние пробелы в выводе(т.е. если пробелов больше одного).

вотъ:

среда, 28 марта 2007 г.

mozilla firefox. шрифты в меню :)

Наверное многие любители WM заметили, что в КДЕ или Гноме шрифты менюшках и прочих управляющих элементах firefox'a вполне цивилизованно вписываются в общую тему рабочего стола. Но стоит включить WM как вся эта радость пропадает - шрифты становятся (у меня) очень большими и некрасивыми :-) Правильных способов борьбы как всегда не знаю, работающий вот:

В файле: ~/.mozilla/firefox/[многа букв].default/chrome/userChrome.css дописываем например такое(шрифт AlbanyAMT я спер в СуСЕ):

window {
font-size: 9pt !important;
font-family: AlbanyAMT !important;
}
menubar, menubutton, menulist, menu, menuitem {
font-family: AlbanyAMT !important;
font-size: 9pt !important;
}


если файла нет - его можно создать :)

полезная информация по поводу вот тут: http://www.mozilla.org/unix/customizing.html#usercss :-)

пятница, 23 февраля 2007 г.

fluxbox. заметки.

Некоторые конфиги для fluxbox:

1. ~/.fluxbox/startup - скрипт, запускаемый при старте:


exec /usr/bin/fluxbox &
fbpid=$!
sleep 1
{
feh --bg-scale 21-12-2006/33.jpg &
wait $!
xxkb &
torsmo &
$HOME/my/programs/gaim/bin/gaim &
$HOME/bin/thunderbird &
xscreensaver -nosplash &
$HOME/my/programs/firefox/firefox &
}&
wait $fbpid


собственно странное желание запускать вначале fluxbox а потом в нем уже стартовать все остальное - в отличии от стандартного стартовать все остальное а потом exec fluxbox - вызвано исключительно желанием запихнуть в трей gaim. В остальном 0 просто обычный автозапуск того что все-равно прийдется запустить :)

2. ~/.fluxbox/apps:

[app] (gaim)
[Sticky] {yes}
[end]
[app] (class=Thunderbird-bin)
[Workspace] {1}
[end]


Здесь. Sticky gaim - делает видимым окна gaim'а на всех рабочих столах. По-другому не очень то и удобно. Относительно Thunderbird'а - он в автозапуске, но захламлять первый рабочий стол не нужно - поэтому отправляем его на второй :)

3. ~/.fluxbox/keys:
Кроме стандартных:
None F1 :ExecCommand xterm
Mod4 f :ExecCommand /home/diesel/my/programs/firefox/firefox
Mod4 o :ExecCommand /home/my/programs/opera/bin/opera
Mod4 g :ExecCommand gaim
Mod4 i :ExecCommand iceweasel

#mod4 l :execcommand xlock -mode matrixo
Mod4 l :execcommand xscreensaver-command -lock
Mod4 d :Resize -8 -8
Mod4 i :Resize +8 +8
Mod4 m Mod4 h :MaximizeHorizontal
#Mod4 m Mod4 v :MaximizeVerical
Mod4 m Mod4 w :MaximizeWindow

Mod4 Left :PrevTab
Mod4 Right :NextTab

#mpc rulez:
Mod4 k :ExecCommand mpc volume +1
Mod4 j :ExecCommand mpc volume -1
Mod4 x :ExecCommand mpc play
Mod4 z :ExecCommand mpc prev
Mod4 c :ExecCommand mpc pouse
Mod4 v :ExecCommand mpc stop
Mod4 b :ExecCommand mpc next
Mod4 r Mod4 n :ExecCommand xterm -e ncmpc


Тут без коментариев.

Вот так. Все просто работает. Хотел подвести под это какую-нить умную идею - но никакой идеи на самом деле нет. Просто мне так удобно - с одной стороны ничего лишнего, с другой все под рукой :) Из advanced фич есть слит и есть группировка окон - ни тем, ни другим пока не пользуюсь - не нужно.

По настройкам .fluxbox можно почитать: http://fluxbox-wiki.org/index.php/Fluxbox-wiki, а так же интересный пример конфига для хоткеев http://darkshed.net/files/rcs/fluxbox/keys.html . Бездумно копировать все хоткеи сразу не рекомендовал бы - лучше добавлять понемногу - легче запомнить. :)

понедельник, 12 февраля 2007 г.

Разбивка hdd.

Достаточно старая статья. Но возможно кому-то будет полезной :)

Один из томов на весь мир известной серии "Для Чайников" посвящен операционной системе Linux. Он так и называется "Linux для чайников". Вполне возможно, что вслед за мобильными телефонами операционные системы действительно будут встраиваться в чайники, утюги и прочую бытовую технику. Мы же будем говорить о более тривиальном варианте установки операционной системы Linux - на раздел жесткого диска.

Если верить умным книгам, то разделы появились вследствие ограничений на "размер диска" у существоваших "на заре времен" файловых систем; например, у файловой системы FAT16, которая испольуется MS-DOS максимально возможный размер раздела составляет около 2Гб. В тоже время объемы самих жестких дисков росли, равно как и появлялась необходимость записывать и хранить все большие и большие объемы данных. Выход появился в создании "отдельных" областей на жестком диске, каждую из которых можно отформатировать в свою файловую систему. Информация обо всех разделах "собирается" и хранится в "нулевом" секторе жесткого диска (первый сектор первого цилиндра жесткого диска).

В "нулевом" секторе жесткого диска, для совместимости и согласованности работы с жестким диском разных операционных систем, предусмотрено всего четыре записи, в которых может храниться информация о разделах. Очень часто четырех разделов оказывается мало, поэтому один из "основных" разделов (primary partition) объявляется расширенным (extended partition). Он не форматируется в какую-либо файловую систему, а в его первый сектор помещается информация о "дополнительных" разделах, которые он содержит. "Дополнительные" разделы принято называть логическими дисками (logical partitions). Количество логических дисков в расширенном разделе не ограничено, хотя существуют ограничения самих операционных систем на максимальное количество логических дисков, которое та или иная операционная система может увидеть.

Мы уже говорили о том, что операционная система, по сути, предоставляет пользователю абстрактную модель реально существующего положения вещей. Например, операционные системы от Microsoft, начиная с MS-DOS, представляют каждый раздел, отформатированный в известную операционной системе файловую систему, в виде отдельного диска, названием которого являются буквы латинского алфавита: диск C:, диск D: и так далее. Также в виде отдельных "дисков" доступны CD-ROM, флоппи-диск, различные флэш-накопители и другие подобные устройства. Если проводить аналогии с живой природой, то можно представить себе сад, и каждая файловая система, которая подключается к операционной системе MS-Windows, будет как бы отдельным деревом в этом саду.

В мире *nix-подобных систем все выглядит несколько по-другому. Есть одно дерево, вернее даже, корень (корневая файловая система - root filesystem), к которому "прививаются" все остальные "ветки". Такое представление, возможно, довольно необычно, но вполне оправдано, если подходить с той точки зрения, что операционная система должна скрывать от пользователя как можно больше "ненужных" подробностей работы с реальным железом. Вот пользователю и предоставляется, по сути, виртуальная файловая система, к которой администратором могут подключаться другие файловые системы. Но для простого пользователя работа с подключаемыми файловыми системами будет просто работой с папками, и, собственно, не принципиально даже, находится та или иная файловая система на локальном компьютере или на удаленном, где-нибудь в сети (не будем забывать, что все *nix-подобные системы ориентированы на работу в сети).
Еще одно замечание общего типа будет касаться файловых систем. С точки зрения пользователя файловая система – это совокупность файлов и каталогов, с которыми и выполняются основные операции при работе с компьютером. С точки зрения операционной системы, файловая система определяет формат представления данных при записи на диск, а также особенности процессов чтения и записи. Современные файловые системы имеют цель не только разместить данные на диске оптимальным образом, но и должны обеспечивать максимальную скорость, а также безопасность при работе с потоками данных.

Переходим к практической стороне вопроса. Итак, для установки linux в самом простом случае понадобится создать два новых раздела. (Почему нельзя "установить Linux на диск С:\", я думаю, должно быть уже понятно. По большому счету можно установить Linux на FAT-раздел, возможно, но не стоит этого делать - хотя бы для того, чтобы избежать лишних проблем с загрузчиком.)

Два раздела это - корневой раздел ("/" - в терминологии *nix-систем), в который и будет устанавливаться система, и раздел подкачки (swap partition). Для современных дистрибутивов Linux минимальный объем корневого раздела составляет около 2 Гб – на этом пространстве фактически будет установлена сама операционная система и достаточное количество программного обеспечения. Места, чтобы "разгуляться", естественно, не останется. Оптимальный объем корневого раздела, если планируется не просто "посмотреть и бросить", составляет примерно 4-5 Гб, дальше – по правилам, характерным для всех хранилищ данных, – чем больше, тем лучше. Позже мы познакомимся со структурой "виртуальной" файловой системы в *nix, и собственно любой каталог в *nix может физически быть представлен своим разделом на жестком диске (дисках). Особой актуальности для домашнего использования этот вопрос не представляет, поэтому для первой установки будет достаточно только корневого раздела, куда будет установлена вся система. В дальнейшем, возможно, будет полезно перенести на отдельный раздел домашние каталоги пользователей.

Размер раздела подкачки (swap partition) можно выбрать, удвоив размер оперативной памяти, которая имеется в компьютере. Этот раздел будет использоваться для хранения кода и данных программ, для которых не осталось места в оперативной памяти. В операционных системах MS-Windows для этих целей используется так называемый "файл подкачки". В отличие от MS-Windows при достаточном объеме оперативной памяти (больше 512 Мб, для современных дистрибутивов), если не планируется профессиональной обработки звука, видео или графики (не стоит льстить себе и считать "профессиональной" работой "редактирование" фотографий в GIMP'е – Linux аналоге Фотошопа), раздела подкачки может вообще не быть. Наличие или отсутствие раздела подкачки при больших объемах имеющейся оперативной памяти, вопреки бытующему мнению, практически никак не отражается на производительности системы. При достаточном количестве свободной оперативной памяти данные из нее не будут скидываться в swap, тем самым затормаживая работу приложений (скорость считывания данных с оперативной памяти больше скорости считывания данных с жесткого диска примерно на два порядка).

Общая рекомендация для расположения корневого раздела и раздела подкачки – располагать их как можно ближе к "началу" жесткого диска, где скорость чтения/записи информации максимальна. Собственно, эта рекомендация относится к любой операционной системе. Желательно (но для современных дистрибутивов linux уже не обязательно), чтобы корневой раздел располагался в основном разделе жесткого диска (primary partition), для раздела подкачки это не принципиально. Если планируется работа с несколькими жесткими дисками, то полезно создать разделы подкачки на обоих.
Возможно, при подготовке свободного места под разделы для Linux вы будете использовать программы типа Power Quest Partition Magic (tm) или Paragon Partition Manager (tm). В обеих программах есть возможность сразу же создать и отформатировать разделы под linux, настоятельно рекомендуется не делать этого. Следует просто "подвинуть", "раздвинуть", удалить существующие разделы, освободив тем самым необходимое для корневого раздела и раздела подкачки дисковое пространство (в этих программах, как правило, оно обозначается как "unused" - неиспользованное). Создание разделов, а особенно форматирование разделов, нужно производить средствами инсталляторов операционной системы. Это же касается, кстати, и линейки операционных систем Windows NT – по непроверенным данным, например, Partition Magic может создавать "нестабильные" разделы в файловой системе ntfs, у которых есть странное свойство "слетать" после некоторого периода работы.

Собственно, требование форматировать разделы средствами инсталляторов операционных систем связано еще и с тем, что файловые системы, доступные в linux, обновляются и совершенствуются, и вполне возможно, что ваш новый дистрибутив создаст файловую системы на диске более корректно, чем то, что сделает Partition Magic двухгодичной давности.

Теперь по поводу файловых систем. В отличие от Windows, который поддерживает только файловые системы для жестких дисков, разработанные в самой Microsoft – FAT16, FAT32, NTFS, Linux на уровне ядра поддерживает множество файловых систем. На данный момент (ядра 2.4.хх, 2.6.хх) ядро Linux поддерживает файловые системы FAT16, FAT32 в режиме чтения-записи, файловую системы ntfs в режиме "только чтение". Запись в раздел с ntfs также возможна, но разработчики ядра предупреждают, что включение возможности записи может привести к нестабильности системы, а также к проблемам, связанным с потерей данных на разделах ntfs, на которые производится запись. Во всех известных мне дистрибутивах в ядрах по умолчанию включена только возможность чтения из разделов ntfs. Если ядро операционной системы поддерживает и чтение, и запись с разделов FAT16, FAT32 –это означает, что, по сути, можно установить Linux на Windows-разделы, но делать это не рекомендуется по нескольким причинам:

1. Безопасность – с одной стороны, в файловых системах FAT16, FAT32 не предусмотрена реализация прав доступа, а именно, права доступа к отдельным файлам и являются одной из основ организации безопасности в *nix-системах, с другой стороны – Linux, установленный на FAT-раздел, будет подвержен действию Windows-вирусов, когда вы будете работать в Windows.

2. Производительность. Linux, установленный на FAT-раздел, будет работать значительно медленнее.

Возможно, это звучит жестоко, но забудьте о Linux, если вы не можете выделить для его разделов достаточного места на жестком диске. (Это вам говорит человек, который первый свой linux ставил на FAT-раздел :-) )

Надеюсь, убедил. Теперь о "родных" файловых системах для linux. В большинстве современных дистрибутивов доступны: ext2, ext3, ReiserFS, JFS, XFS.

Первые версии ядра Linux работали на файловой системе minix. Эта файловая система до сих пор поддерживается ядром Linux. Она имеет существенные ограничения по максимальному размеру файлов – 64Мб, и ограничивает длину имени файла четырнадцатью символами. Для того, чтобы исправить эти "недочеты" Линус Торвальдс разработал файловую систему ext, которая, однако, уступала файловой системе операционной системы minix в производительности. В дальнейшем ext была значительно переработана и усовершенствована. Так появилась файловая система ext2, с поддержкой длинных имен файлов и длинных файлов, с высокой производительностью. Однако, при работе с большими дисками производительность системы существенно уменьшается и значительно увеличивается время восстановления файловой системы ext2 после сбоев (некорректного завершения работы).
Для уменьшения времени восстановления файловых систем разработали так называемые "журналируемые файловые системы". Операции с файловой системой требуют, как правило, некоторого времени и выполнения некоторого количества операций – например, грубо: найти файл, открыть файл для записи, записать данные, закрыть файл. Закрытие файла связано с протоколированием нового состояния файла соответствующим образом в файловой системе. Журналируемые файловые системы отличаются тем, что все операции над файловой системой записываются, и если во время работы происходит сбой, то потом можно "откатить" файловую систему в нормальное рабочее состояние. Такой подход требует значительно меньшего времени для восстановления системы. Не нужно просматривать диск с целью восстановления утраченных связей ...
Файловая система ext3 - является журналируемой надстройкой над ext2.
XFS – свободная версия коммерческой файловой системы от Silicon Graphics, Inc., JFS – файловая система от IBM, до сих пор еще находящаяся на стадии тестирования. Для детальной информации по этим файловым системам можно сходить на сайты производителей. Могу сказать лишь, что для использования XFS дома аргументов нет, контраргументом может быть вероятность потерять данные при отключении питания. Аргументом в пользу JFS может быть наличие возможности выбирать кодировку ввода-вывода имен файлов при монтировании (имена файлов хранятся в UTF8, она же является кодировкой ввода-вывода по умолчанию) – иногда, как показывает практика, это свойство может быт полезным. JFS – журналируемая файловая система, выбирайте ее, если вас не пугают бета-версии (меня не пугают, я использую JFS для хранения фильмов, пока не жалуюсь тьфу-тьфу-тьфу). ReiserFS – мне кажется, наиболее оптимальный вариант для дома. Журналируемая файловая система, обеспечивает достаточно высокую производительность и стабильность работы (Для корневого раздела я выбрал именно ReiserFS).

Собственно, для первой установки дома следует выбирать между ext3, JFS и ReiserFS. Яндекс и Google будут щедрыми и дадут вам дополнительную информацию. Для раздела подкачки файловую систему выбирать не надо – она одна для всех Линуксов, просто надо будет указать инсталлятору раздел, который будет использоваться как swap.

Все! подводим итоги.

1. Жесткий диск целесообразно делить на разделы. Есть основные разделы – их может быть всего четыре. Один или несколько основных разделов может быть объявлен расширенным – и в нем можно создавать сколько угодно дополнительных разделов. Сведения об основных разделах хранятся в "нулевом" секторе жесткого диска, о дополнительных – в начале расширенного раздела.

2. Файловая система в *nix представляет собой "дерево", в основе дерева находится корневая файловая система – де-факто раздел, в который установлена операционная система, к которой могут подключаться другие разделы жесткого диска, все подключаемые файловые системы становятся "ветками" корневой, и пользователь работает со всем этим как с единым массивом данных.

3. Для установки операционной системы Linux на жесткий диск необходимо создать как минимум два раздела – корневой (4-5 Гб), раздел подкачки (оптимальный размер 256-512 Мб)

4.Существует множество файловых систем, поддерживаемых ядром Linux. Для корневой файловой системы необходимо выбирать журналируемую файловою систему с большой производительностью, наиболее популярны три: ReiserFS, JFS, ext3. При этом для освобождения достаточного места на диске можно пользоваться такими утилитами как Power Quest Partition Magic, Paragon Paartition Manager, FIPS, в некоторых случаях достаточно fidsk'а. Создание и форматирование разделов для Linux лучше проводить средствами инсталляторов Linux.




Разное.

1. Недавно обнаружилось. Для того чтобы прописать WM запускаемый по умолчанию чаще всего советуют дописать его запуск в .xinitrc. Вот такой вот ~/.xinitrc не самый плохой в этом случае:

#!/bin/sh
# $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $

userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap

# merge in defaults and keymaps

if [ -f $sysresources ]; then
xrdb -merge $sysresources
fi

if [ -f $sysmodmap ]; then
xmodmap $sysmodmap
fi

if [ -f $userresources ]; then
xrdb -merge $userresources
fi

if [ -f $usermodmap ]; then
xmodmap $usermodmap
fi
#Start the window manager:
#fbpanel &
#feh --bg-scale /video/pics/WallPapers/3d/3d0030.jpg &
#fbpanel -p fluxbox &
torsmo &
#gkrellm &
xxkb &
#fbpager &
#exec fvwm
#exec startfluxbox
#exec ratpoison
#exec wmii
#exec startxfce4
exec startkde
#exec sawfish
#exec enlightenment
#exec fvwm-themes-start
#exec icewm
#exec aewm++

Так вот в Debian(да я предполагаю и в большинстве других систем тоже) эта штука будет работать только если вы пускаете Х-ы через startx(т.е. как и предполагается из названия это конфиг для xinit). Для того чтобы при Х-ом логине получить подобную функциональность этоже самое нужно прописывать не в ~/.xinitrc, а в ~/.xsession. Если .xinitrc сохранился с прежних времен, можно прописать в .xsession просто его вызов. Если в документации описано что-то другое - скорее всего она врет.

Чтобы .xsession хавалась gdm в некоторых системах можно выбрать "Custom Session"(Во всяком случае в Генте в которой я видел gdm было именно так).

2. Тоже о загрузке, но более ранней. Для редактирования того что запускается при старте системы(фактически содержание директорий /etc/rcS.d и /etc/rc.d) советуют пользоваться "дебиановским" скриптом update-rc.d, типо это "правильное" системное средство. Просто небольшая цитата из man update-rc.d:

Please note that this program was designed for use in package main‐
tainer scripts and, accordingly, has only the very limited functional‐
ity required by such scripts. System administrators are not encouraged
to use update-rc.d to manage runlevels. They should edit the links
directly or use runlevel editors such as sysv-rc-conf and bum instead.

... без коментариев ...

вторник, 16 января 2007 г.

lftp. еще пару слов.

если lftp вызывается как xterm -e lftp(у меня это повешано на Win-r Win-l, в flux'е), достаточно удобными могут быть созданные внутри lftp алиасы для коннекта к определенным, часто используемым хостам, например:

alias 5.7 open 192.168.5.7
alias 5.6 open 192.168.5.6
alias 5.12 open 192.168.5.12
alias 9.87 open 192.168.9.87
alias kyvaldis open 192.168.61.193
alias localhost open 127.0.0.1

это для домашней локалки - большинство IP я помню наизусть, поэтому цифры; там где IP не помню - имена владельцев ФТП. Вобщем полный полет фантазии :)

суббота, 6 января 2007 г.

Как я конфигурировал xdm.

Какие бы там красивости и удобства не добавляли создатели KDE и Gnome, поигравшись с "дружелюбными" интерфейсами чаще всего возвращаюсь к использованию "любимого Windows Manager'а". Все-равно большая часть софта который запускается каждый день относительно DE-независима, а зачастую не требует наличия Х-ов вообще.

Со времен Slackware привык запускать Х-ы через startx, только тогда когда это надо. Потом купил более быстрый компьютер, Х-ы перестали напрягать машину и startx стала первой командой после логина. Поэтому когда во время очередной установки KDE установился kdm, я не стал возражать. Другое дело что время старта самого kdm достаточно ощутимое, а от него требуется не так много - авторизировать и запустить дефолтный WM :) Поэтому вспомнил про xdm - по-умолчанию он как раз и умеет авторизировать и запускать dm, да и не требует ничего кроме Х-ов, поэтому запускается (даже на относительно слабых машинах) гораздо быстрее. Правда сам xdm по-умолчанию выглядит достаточно убого, и немного "разукрасить" его не помешает. Вот что делал я:

1. Установка:

aptitude install xdm

если в системе уже установлен gdm, kdm etc. то попросят выбрать dm запускаемый по-умолчанию. Выбираем xdm.

2. По-умолчанию, xdm запускает общеситемный x-session-mananager. Выбрать в качестве альтернативы x-session-manager'а startfluxbox с помощью update-alternatives у меня не получилось, поэтому просто сменил линк:

cd /etc/alternatives
unlink x-session-manager
ln -s /usr/bin/startfluxbox /etc/alternatives/x-session-manager

Это не есть хорошая идея если системой пользуются несколько человек и они предпочитают другой WM/DE.

После этого можно перезагрузится и убедится что уже для авторизации запускается xdm.

3. Далее приступаем к украшению:

Во-первых бэкап текущих настроек. Если что-то пойдет не так, то всегда можно вернуть как было :)

sudo cp -r /etc/X11/xdm /root/
(не знаю как кто - я в подобных ситуациях копирую настройки в /root/ - надо же этот каталог хоть для чего-то использовать)

Файлы конфигурации xdm находятся в /etc/X11/xdm. Редактироваться будут: Xresources - определяет внешний вид самого; Xsetup - скрипт в котором можно запустить чего-нить при старте xdm; Xstartup - скрипт запускаемый после логина, перед стартом WM.

Xresorces:

xlogin*login.translations: #override\
CtrlR: abort-display()\n\
Delete: delete-character()\n\
F1: set-session-argument(failsafe) finish-field()\n\
CtrlReturn: set-session-argument(failsafe) finish-field()\n\
Return: set-session-argument() finish-field()
Left: move-backward-character()\n\
Right: move-forward-character()\n\
Home: move-to-begining()\n\
End: move-to-end()\n\
KP_Enter: set-session-argument() finish-field()

xlogin*greeting: Wellcome to my Debian box:

xlogin*login.x: 780
xlogin*login.y: 598

xlogin*greetFont: snap
xlogin*font: snap
xlogin*promptFont: snap
xlogin*failFont: snap

xlogin*background: #000000
xlogin*foreground: #ffffff

xlogin*borderWidth:0
xlogin*frameWidth: 0
xlogin*innerFramesWidth:0
xlogin*shdColor: #000000
xlogin*hiColor: #000000


xlogin.Login.foreground: #ffffff
xlogin.Login.promptColor: #ffffff
xlogin*greetColor: #ffffff
xlogin*failColor: red

xlogin*borderWidth: 0
xlogin*borderColor: #000000


Xsetup:


#!/bin/sh
#
# /etc/X11/xdm/Xsetup
#

### запуск xclock
pidfile=/var/run/xclock_0.pid
if [ -f $pidfile ]; then
# Huh? Abnormally terminated?
rm $pidfile
fi

/usr/bin/X11/xclock -geometry '-0-720' -digital -bg '#000000' -fg '#ffffff' -font '-xos4-terminus-bold-r-normal-*-14-*-*-*-*-*-*-*' \
& echo $! > $pidfile &

### кнопки reboot & halt
pidfile=/var/run/xdmbutton_0.pid
if [ -f $pidfile ]; then
# Huh? Abnormally terminated?
rm $pidfile
fi

HOME=/root /usr/bin/wish -name Powerbox <$pidfile
wm geometry . -50-0
tk_setPalette highlightColor blue
button .halt -background #000000 -foreground #ffffff -highlightbackground #000000 -borderwidth 0 -text shutdown \
-command {exec /sbin/shutdown -h -P now}
button .reboot -background #000000 -foreground #ffffff -highlightbackground #000000 -borderwidth 0 -text reboot \
-command {exec /sbin/shutdown -r now}
pack .halt .reboot -side left -fill both
EOF
echo $! >$pidfile
###

#установка бэкграунда:

HOME=/dev/null feh --bg-scale /usr/share/wallpapers/www_creep_ru_0681.jpg &

echo $! > /var/run/xsetbg.pid
wait `cat /var/run/xsetbg.pid`


Xstartup:

#!/bin/sh
#
# This script is run as root after the user logs in. If this script exits with
# a return code other than 0, the user's session will not be started.

PATH="$PATH:/usr/bin/X11"
pidfile="/var/run/xclock_0.pid"
if [ -f $pidfile ]; then
kill -9 `cat $pidfile`;
rm -f $pidfile;
fi

pidfile="/var/run/xdmbutton_0.pid"
if [ -f $pidfile ]; then
kill -9 `cat $pidfile`;
rm -f $pidfile;
fi

if [ -e /etc/nologin ]; then
# always display the nologin message, if possible
if [ -s /etc/nologin ] && which xmessage > /dev/null 2>&1; then
xmessage -file /etc/nologin -geometry 640x480
fi
if [ "$(id -u)" != "0" ] && \
! grep -qs '^ignore-nologin' /etc/X11/xdm/xdm.options; then
exit 1
fi
fi

# Insert a utmp entry for the session.
if grep -qs '^use-sessreg' /etc/X11/xdm/xdm.options \
&& which sessreg >/dev/null 2>&1; then
exec sessreg -a -l "$DISPLAY" -u /var/run/utmp \
-x /etc/X11/xdm/Xservers "$USER"
# NOTREACHED
fi

#remove x-clock
exit 0


Для установки картинки для бэкграунда нужно установить feh(либо другую программу которая умеет устанавливать бэкграунд), для того чтобы были кноки shutdown & reboot нужно установить tk8.4.

бэкграунд:









использованы куски темы http://themes.freshmeat.net/projects/greyxdm/