Posts belonging to Category *NIX



Cборка модулей ядра для dd-wrt

Не смотря на то, что dd-wrt имеет достаточное количество собранных пакетов, доступных через пакетный менеджер, кое-чего иногда все же не хватает. Можно в принципе написать аналог этого «чего-то» на том же Perl и спокойно запустить на роутере, но такой подход в случае с относительно сложным и большим приложением нерационален. А в случае с нехваткой поддержки ядром прошивки нужных функций — и вовсе очень затруднителен. И тогда на помощь приходит старый добрый способ сборки из исходников, осложняющийся в данном случае тем фактом, что собирать на самом роутере не слишком удобно в силу ограниченности его ресурсов, а сборке на производительной машине препятствует разница в архитектурах процессоров (у DIR-620 это MIPS), если у вас конечно нет доступа к производительной MIPS-машине с аналогичной архитектурой ЦПУ 🙂 Вывод — нужен кросс-компилятор. О процессе сборки приложений и модулей ядра под dd-wrt на DIR-620 при помощи кросс-компилятора и пойдет речь ниже.
(далее…)

Моё знакомство с Conky и мой conkyrc

Аж на восьмой год знакомства с Linux наконец-то познакомился и с Коньками (Conky) — раньше всё лень было, да и не особо нужно как-то (как мне казалось). Всякие индикаторы были на панельках Gnome, по клику на них вызывались развёрнутые версии, а Коньки я кроме как индикатором никак иначе и не воспринимал. После перехода на Openbox наконец решился на них посмотреть, три месяца потихоньку читал инструкции на сайте и настраивал Коньки под себя.

По итогам этой вялопротекавшей настроечной эпопеи могу сказать, что Conky я совершенно точно недооценивал. И хотя расширение при помощи LUA мне пока не пригодилось (да и возможность вывода нескольких окон с применением разных настроечных файлов тоже пока не требовалась), уже понятно, что Conky — это некий Emacs в мире системных мониторов 🙂
(далее…)

Автомонтирование удалённой ФС через ssh

В период активной настройки роутера (D-Link DIR-620 и dd-wrt – бюджетный NAS и торрентокачалка) нужно было часто различные изменения на него записывать. Для настройки ипользовал ssh, а потом решил попробовать примонтировать ФС роутера через sshfs. Чтобы не делать повторяющихся действий постоянно — перевёл автомонтирование на autofs. Ниже короткий рецепт, как это сделать.

Итак, предположим, что про генерацию ключей вы уже знаете и залогиниться на сервер через ssh по ключу умеете. Важно помнить — тут нужен ключ, не защищенный паролем (иначе автомонтирование не будет таковым), что является угрозой безопасности. Я после завершения основной настройки заменил ключ на закрытый по паролю.

Перейдём непосредственно к настройке autofs. Изменения будем вносить в /etc/auto.master, в него надо дописать:
/mnt/remotehost.sshfs /etc/auto.sshfs --timeout=30,--ghost, где /mnt/remotehost.sshfs — директория, в которую будет монтироваться удалённая файловая система.

Затем создаём /etc/auto.sshfs следующего содержания:

home -fstype=fuse,rw,nodev,nonempty,noatime,allow_other,max_read=65536,reconnect,uid=1000,gid=1000 :sshfs\#user@host\:/нужный/удалённый/каталог

Вот собственно и всё, теперь после перезагрузки демона autofs в локальный каталог /mnt/remotehost.sshfs будет автоматически монтироваться удалённый каталог user@host:/нужный/удалённый/каталог.

Торрент-клиент transmission — установка на DIR-620 под управлением dd-wrt

Итак, на роутер D-Link DIR-620 была установлена прошивка dd-wrt (с поддержкой swap, это важно), подключены флешка для хранения настроек и установленных программ и внешний жесткий диск в качестве NAS и хранилища закачек для torrent-клиента. Дело за малым — установить и настроить сам клиент. Я выбирал между консольными клиентами rtorrent и transmission, в результате остановился на последнем. Популярные Deluge отпал сразу — тратить скромные ресурсы роутера на обслуживание еще и интерпретатора питона нет смысла. Про rtorrent попались сообщения о наличии в нем утечек памяти, что не есть хорошо. Кроме того, его нужно запускать при помощи screen или dtach, т.к. режима демона он не имеет. А это опять трата лишних ресурсов. Сам-собой остался transmission, умеющий работать в виде демона и достаточно стабильный. Кроме того, помимо нескольких GUI-фронтэндов у него есть встроенный веб-интерфейс — бери и пользуйся, без лишних телодвижений.

Установка transmission на dd-wrt

Установка торрент-клиента transmission (daemon) на роутер под управление dd-wrt проста до неприличия — достаточно, подключившись например по ssh к роутеру, выполнить следующие команды:

  • ipkg-opt update — обновит список пакетов, доступных для установки;
  • ipkg-opt list | grep transmission — выбираем, какую версию клиента ставить (есть сборка клиент + утилиты для создания и редактирования торрентов + демон, есть отдельно демон);
  • ipk-opt install transmission — я установил пакет, включающий, помимо демона, утилиты для работы с торрент-файлами.

Всё предельно просто, теперь нужно немного настроить transmission-daemon, дописать его в автозагрузку — и можно начинать пользоваться. О настройке дальше и идет речь.
(далее…)

Подключение и настройка сетевого USB-принетра к dd-wrt на примере DIR-620 и Xerox Phaser 3140

Следующим шагом после установки на DIR-620 прошивки dd-wrt и создания из него сетевого хранилища и торрентокачалки стало подключение сетевого принтера по USB. В принципе задача совершенно не сложная, исходные данные следующие:

  • Роутер D-Link DIR-620 с прошивкой dd-wrt и подключенным к нему USB-хабом;
  • Лазерный принтер Xerox Phaser 3140 (имеется штатный драйвер под *nix);
  • Linux и Windows машины в локальной сети, которые должны печатать на сетевом принтере;
  • Ресурсы роутера ограничены, следовательно использование демона печати CUPS возможно, но может быть проблематично.

При таких исходных данных логичной выглядит схема связи машин из локальной сети с принтером, подключенным к роутеру, при которой вся обработка заданий печати будет выполняться на самих клиентах (там же должны быть установлены драйверы принтера), а роутер займется простой переадресацией готовых заданий печати на принтер. Наряду с плюсом этого решения — экономией ресурсов роутера, есть и минус, который я пока не знаю, как победить — для просмотра оставшегося уровня тонера нужно печатать тестовую страницу.
(далее…)

D-Link DIR-620 и dd-wrt — подключение flash, установка программ, настройка NAS

Итак, после установки на роутер DIR-620 прошивки dd-wrt, можно подключить к нему флешку или внешний диск по USB, установить нужные программы и получить помимо самого роутера — NAS с закачкой торрентов.

Монтирование внешнего диска в dd-wrt

Для начала нужно включить поддержку USB на роутере через веб-интерфейс: Services — USB — USB Support — Core USB Support + USB Storage Support. После подключения внешнего диска проверить успешность при помощи вызова dmesg | grep scsi, где строки вида /dev/scsi/host2/bus0/target0/lun0: p1 p2 укажут на подключенный диск (в данном случае мой диск подключен к третьему порту USB-хаба — host2 и имеет два раздела — p1 p2.
(далее…)

Изменить имя сетевого интерфейса в Debian/Ubuntu Linux

Задался целью домашнюю wi-fi сеть перевести на современный протокол шифрования — wpa2. Вроде всё предельно просто должно быть даже в линуксе — ставишь wpa-supplicant, прописываешь имя точки, тип шифрования и ключ в /etc/network/interfaces — и всё работает. Но нет — бился часа четыре, пробовал по-разному — не подключается ноут мой к сети, хотя нетбук и смартфоны легко её подхватывают.

Оказалось, что wi-fi карточка в ThinkPad T40 не поддерживает wpa2 (и wpa тоже) на аппаратном уровне. Я думал, что это исключительно программные решения и даже не догадывался покопать в сторону аппаратной поддержки. В итоге пришлось карточку поменять, благо на e-bay их продаётся много.
(далее…)

D-Link DIR-620 и dd-wrt — бюджетный NAS и торрентокачалка

Давно подумывал о необходимости сделать дома NAS (сетевой диск), чтобы иметь общее для всех домашних компьютеров (а теперь — и смартфонов) хранилище музыки, фильмов, резервных копий и каких-то общих файлов, которые нужно синхронизировать между несколькими машинами. Идея собрать еще один компьютер на чём-нибудь типа Атома после размышлений была отброшена — получается долго и относительно дорого, хотя конечно интересно. Поэтому решил посмотреть в сторону готовых устройств с возможностью перепрошивки, конкретно — роутеры, поддерживающие dd-wrt/openwrt и т.п.

Сначала остановился на D-Link DIR-320 — ставший уже классическим вариант для создания домашнего NAS, организации небольшой полноценной сети и решения других подобных задач. Плюсы — весьма умеренная цена, давно на рынке и уже плотно оброс всевозможными руководствами по переделке и доработке. Однако получилось так, что в магазине его не оказалось и я купил DIR-620 — более современную версию 320-го. В остальном особой разницы нет — DIR-620 также имеет возможность перепрошивки сторонними прошивками, оборудован USB-выходом (USB-хостом, если быть точным) и стоит примерно тех же денег (в моём случае он даже оказался на 70 руб. дешевле).
(далее…)

Mplayer — всеядный видеопроигрыватель

Кроссплатформенный видеоплеер Mplayer по праву может считаться одной из самых популярных программ современности, предназначенных для воспроизведения видео. Начало его разработки датируется 2000 годом, автором стал Апард Герёфии, к работе которого затем подключилось множество программистов со всего мира.

Плазменная резка труб

Плазменная резка трубы - пример видеоролика в mplayer

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

При желании Mplayer может быть дополнен графическим пользовательским интерфейсом, коих существует великое множество. Самые популярные — GnomeMplayer, KMPlayer, SMPlayer и UMPlayer. Последние две обладают наибольшем функционалом и большим набором скинов. Кроме того, существуют графические интерфейсы к MEncoder, разработанные для сред KDE и Gnome — это KMencoder и GMencoder.

Помимо того, что Mplayer достаточно экономно расходует системные ресурсы (а значит — отличается невысокими системными требованиями), поддерживает воспроизведение множества видео- и аудиоформатов, позволяет производить пакетную обработку медиафайлов и может проигрывать видеофайлы «на лету», после загрузки нескольких процентов, он также позволяет конвертировать видео и аудио при помощи встроенного кодировщика MEncoder. Кроме того, при помощи MPlayer можно проверить работоспособность веб-камеры в Linux и производить захват изображения с нее или слушать подкасты на лету, если встроенный в сайт плеер по какой-то причине не устраивает.

mplayer и проигрывание playlist

Естественно, mplayer имеет поддержку чтения плейлистов — достаточно вызвать его с соответствующей опцией: mplayer -playlist название_плейлиста.m3u. Сам плейлист можно легко сгенерировать при помощи find: find "$(pwd)" \( -name "*.mp3" -o  -name "*.ogg" \) | sort > playlist.m3u — этак команда найдёт все файлы с расширением mp3 или ogg в текущей директории или поддиректориях и внесёт их в плейлист с названием playlist.m3u. Её удобно добавить в bashrc как alias, причём можно сразу с вызовом mplayer для проигрывания созданного плейлиста.

mplayer и проигрывание потокового аудио

Никаких особых секретов при воспроизведении аудиопотока в mplayer нет, достаточно указать адрес самого потока: mplayer http://audio_stream. В данном случае полезными могут оказаться две опции, отвечающие за кэширование потока: mplayer -cache 4456 -cahce-min 2 http://audio_stream — укажет использовать кэш размером 4456 килобайта и начинать проигрывание потока не раньше, чем будет заполнено 2% от размера кэша.

Настройки mplayer — ~/.mplayer/config

Настройки mplayer находятся в файле ~/.mplayer/config, который может состоять из нескольких секций с разными настройками для «чистого» mplayer и его графических оболочек (smplayer, gnome mplayer и т.п.). Одна из полезных опций — zoom = 1 — она заставляет mplayer автоматически масштабировать изображение до размеров окна при его растягивании/уменьшении — автоматический zoom видео в mplayer. Мои настройки приведены в качестве примера конфигурационного файла для mplayer:

Памятки по работе в Linux

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

Порядок вывода аргументов в xargs

Как-то раз столкнулся с проблемой порядка подстановки аргументов в xargs. И man вроде почитал, и погуглил, и встретил нужный ключ -I, но ни из мана, ни из гугля не понять было точно, что он делает именно то, что надо. Итак, ключ -I задаёт нужный порядок вывода аргумента в xargs, используя подстановку.
xargs -I arg_name command arg1 arg_name arg3 — аргументы при вызове команды command будут выведены именно в таком порядке, тогда как в обычном случае arg_name будет подставлен в конец строки вызова команды.

Чтение N строк из начала файла

Совместно с предыдущим решением удобно использовать чтение из файла неких строк, которые затем и преобразовывать в набор аргументов. Банальный cat известен думаю всем. Обратный порядок — tac. Прочитать N строк с конца: tail -n N. Аналогично, но с начала файла: head -n N (возм. head отсутствует в BSD-системах). И прочтитать строки с X по Y: awk 'NR >=X && NR < =Y'
Или при помощи sed: sed -n 'X,Yp'
(далее…)