Архив рубрики: *NIX

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

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

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

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'
Читать далее Памятки по работе в Linux

Низкоуровневое форматирование flash/SD/microSD под Linux

Несколько раз приходилось форматировать флешки (к которым относятся и различные SD и microSD карточки), а поскольку происходит это довольно редко — вынужден был лезть в гугл. Конспективная памятка по форматированию флешек под Linux:

Проверить подключение flash

fdisk -l
Выведет список подключенных дисков и их разделов. Обычно флешка — /dev/sdb, но нужно обязательно проверить, так ли это!

Проверить, примонтирована ли флешка

df -h
Если флешка примонтирована — покажет это и точку монтирования. Перед форматированием — отмонтировать: umount /dev/sdb.

Проверить защиту от записи и геометрию

При желании — можно проверить защиту от записи и геометрию (защита от записи в линуксе не важна):
hdparm /dev/sdb

Если нужно низкоуровневое форматирование — забить нулями

dd if=/dev/zero of=/dev/sdb
В выводе покажет объем флешки (должен соответствовать заявленному), скорость и время записи. Также покажет, сколько было записано байт на флешку, что полезно при проверке флешки на физические ошибки (см. ниже).

Проверить на физические ошибки

head -c N /dev/sdb | md5sum
head -c N /dev/zero | md5sum
где N равно числу байт, записанных на флешку при помощи dd. Если контрольные суммы не совпадают — флешка «битая» или были ошибки записи (в реальности сталкивался с форматированием microSD через плохой кард-ридер — даже когда не выскакивали ошибки ввода-вывода при операциях — контрольные суммы не совпадали, с заменой кард-ридера проблема ушла).
Пример:

dimio@ibm $ dd if=/dev/zero of=/dev/sdb
dd: запись в «/dev/sdb»: На устройстве кончилось место
3932161+0 записей считано
3932160+0 записей написано
скопировано 2013265920 байт (2,0 GB), 1010,99 c, 2,0 MB/c

dimio@ibm $ head -c 2013265920 /dev/zero | md5sum
5d0fd6273bed1c500c6fc22d86a59630  -

dimio@ibm $ head -c 2013265920 /dev/sdb | md5sum
5d0fd6273bed1c500c6fc22d86a59630  -

Ну и для полного счастья при желании:

dimio@ibm $ perl -we '
> print "OK" if q{5d0fd6273bed1c500c6fc22d86a59630}
> eq q{5d0fd6273bed1c500c6fc22d86a59630};'

OK

Разбиваем на разделы при помощи fdisk

fdisk /dev/sdb
Опции: m — справка, d — удалить раздел, p — просмотреть список разделов, n — создать раздел, t — поменять тип раздела, w — сохранить изменения.

Последний шаг — создать файловые системы на разделах флешки

mkfs.ext{2,3,4} /dev/sdbX
где X — порядковый номер раздела, на котором нужно создать файловую систему.

Также полезны

mkfs.msdos, mkfs.vfat (создаёт «стандартную» файловую систему флешек — vfat).

mkfs.ntfs — тут понятно, создаёт NTFS, не на всяком Андроид-устройстве может читаться потом.

mkfs.exfat — «расширенная fat», на старых устройствах не прочитается, зато файлы большого размера поддерживает, например (как и NTFS). В Убунте надо пакет exfatprogs поставить, чтобы создавать эту ФС.

Форматирование успешно окончено!

Если что-то осталось непонятным или есть дополнения и замечания — добро пожаловать в комментарии! 🙂

каталог интернет магазинов Москвы

Openbox+sbxkb: переключение раскладок клавиатуры

Openbox WM logo

Cлегка подустав от ставших довольно заметными тормозов Gnome с Metacity и Nautilus в компании (ноут у меня довольно старый по современным меркам — IBM ThinkPad T40 с Pentium M 1,5 ГГц и 1 Гб ОЗУ на борту), решил попробовать Openbox. Создал тестового пользователя, прописал ему Openbox в качестве WM, немного настроил, попользовался час и перевёл основную учётку на него.

Разница в скорости отклика по субъективным ощущениям (что впрочем и важно в данном случае) оказалась просто колоссальной — эмулятор терминала (rxvt) открывается в пределах секунды, против 7-10 сек. в гноме. Окна сворачиваются-разворачиваются также в пределах секунды, в гноме Firefox с десятком открытых вкладок мог разворачиваться из панели 3-5 секунд, при этом постоянно треща HDD, который у меня тоже не казённый. В Openbox же индикатор обращения к жесткому диску срабатывает довольно редко (вообще стало казаться, что гном с его «реестром» всё ближе к Windows — уже и тормоза накапливать за время эксплуатации научился).

Даже Google Chrome по ощущениям из-под Openbox заработал быстрее (и стал быстрее Firefox, чего не было под Gnome), хотя может это уже самообман на волне общей эйфории от легковесности и скорости WM.
Читать далее Openbox+sbxkb: переключение раскладок клавиатуры

Подключение через VPN в Debian/Ubuntu Linux

Когда у меня еще не было роутера с точкой доступа wi-fi и кабель от провайдера подключался напрямую к компьютеру, мне пришлось настраивать vpn соединение с провайдером, чтобы проходить авторизацию и получать доступ в интернет. Привожу свой опыт того, как настроить openvpn соединение в Debian Linux (с провайдером Корбина).

Для начала нужно установить пакеты ppp и pptp, затем отредактировать файл /etc/ppp/, в котором хранятся настройки vpn-подключения:

noauth
nobsdcomp
nodeflate
# восстанавливать соединение после обрыва
persist

Следующий шаг — внести данные для аунтефикации в файл /etc/ppp/chap-secrets в виде: login имя_подключения password *, где логин и пароль — соответственно те, что выдал провайдер, а имя подключения — любое на свой вкус. Стоит обратить внимание на тот факт, что пароль будет сохранён в открытом виде, а значит имеет смысл изменить права доступа к файлу на 600 для затруднения доступа к нему посторонних: sudo chmod 600 /etc/ppp/chap-secrets.

Далее нужно создать конфигурационный файл с настройками VPN непостредственно для корбины, например так: sudo mkdir /etc/ppp/peers и затем sudo touch /etc/ppp/peers/corbina. Настройки для корбиновского vpn указать следующим образом (имя пользователя и название подключения должны совпадать с указанными выше в файле /etc/ppp/chap-secrets):

pty "pptp --nolaunchpppd"
сonnect /bin/true
name имя_пользователя
remotename название_подключения
file /etc/ppp/
ipparam corbina

Теперь можно включать/выключать впн-соединение с корбиной командами pon corbina и poff corbina соответственно. В принципе на этом настройка VPN подключения под Linux может считаться законченой, все должно работать. Если происходят обрывы соединения — можно дополнительно прописать файл с маршрутами для Корбины /etc/ppp/ip-up.d/corbina:

#Маршруты до VPN
route add -host 195.14.40.6 gw шлюз
route add -host 195.14.40.7 gw шлюз
route add -host 195.14.40.8 gw шлюз
route add -host 195.14.40.9 gw шлюз
route add -host 195.14.40.13 gw шлюз
route add -host 195.14.40.14 gw шлюз
route add -host 195.14.40.15 gw шлюз
#Маршруты до DNS
route add -host 195.14.50.1 gw шлюз
route add -host 195.14.50.3 gw шлюз
route add -host 195.14.50.21 gw шлюз
#Маршруты до локальных ресурсов сети
route add -net 10.0.0.0 netmask 255.0.0.0 gw шлюз
route add -net 85.21.79.0 netmask 255.255.255.0 gw шлюз
route add -net 85.21.90.0 netmask 255.255.255.0 gw шлюз
route add -host 85.21.52.254 gw шлюз
route add -host 195.14.50.26 gw шлюз

route del default
route add default dev ppp0

И затем добавить адреса DNS-серверов в /etc/dns:

nameserver 195.14.50.1
nameserver 195.14.5021

Имена шлюзов и актуальные адреса DNS-серверов следует уточнить у провайдера.

Бесплатный редактор PDF для Windows и Linux — pdftk

Несколько недель назад понадобилось мне кое-что поменять в чертежах, которые были в виде pdf-альбома представлены. Файл pdf не был закрыт от редактирования к слову. Казалось бы — задача примитивная, но не тут-то было. Перепробовал около десятка различных бесплатных и условно-бесплатных pdf-редакторов — всё без толку. Некоторые «редакторами» только называются — на деле не могут вообще ничего. Другие вроде позволяют изменения внести, но лепят всюду свои надписи типа «отредактировано в таком-то pdf редакторе», что мне тоже совсем ни к чему. А чем можно банально разбить альбом на страницы — я вообще не понял.

Помощь, как часто бывает, пришла из мира open source — была найдена бесплатная консольная утилита для редактирования PDF — pdftk (кроссплатформенная, под Linux и Windows точно есть), позволющая редактировать pdf в широких пределах. Для любителей графики — и под Linux, и под Window у pdftk есть графические интерфейсы (GUI). Меня же как раз больше привлекла консольность — можно в пакетном режиме обрабатывать сразу несколько файлов. Ей я вырезаю или вклеиваю нужные листы в альбомы чертежей, а сами изменения делаю в обычно графическом редакторе (чаще в сего — в Gimp).
Читать далее Бесплатный редактор PDF для Windows и Linux — pdftk

Загрузка и восстановление прошивки dd-wrt через tftp

В заметке про установку прошивки dd-wrt на D-Link DIR-620 я упоминал о замене стандартного загрузчика роутера на загрузчик от Zyxel Keenetic, после чего становится возможной загрузка прошивок в DIR-620 при момощи tftp. Нужно это может быть во-первых для того, чтобы не пересобирать сторонние прошивки в формат, понятный загрузчику, доступному через веб-интерфейс; во-вторых — для восстановления прошивки роутера, если что-то пошло не так и веб-интерфейс недоступен.
Поскольку процесс установки прошивки через tftp под Windows детально рассмотрен на сайте deadc0de, а я в основном использую Linux-машины дома, опишу загрузку dd-wrt в DIR-620 через tftp именно для Linux.
Читать далее Загрузка и восстановление прошивки dd-wrt через tftp

TOR NEWNYM — автоматическая смена IP в TOR

Высокие технологии

Время от времени использую в качестве прокси сеть TOR, недавно вот пригодилось при проверке готовности загранпаспорта через интернет, когда постоянно получал ошибку о превышении числа запросов к серверу — пришлось сделать макрос на lynx, который через TOR периодически проверял готовность загранпаспорта (Автоматическая проверка готовности загранпаспорта). Удобство TOR не только в том, что это рабочий бесплатный прокси (с шифрованием трафика кстати) — TOR это сеть и прокси-серверы, а значит и IP-адреса, можно легко менять при необходимости, даже автоматически.

Под Windows сменить прокси и IP-адрес совершенно несложно — в составе дистрибутива TOR для Windows присутствует графическая оболочка Vidalia и для получения нового IP-адреса достаточно нажать в ней кнопку «Новый Ним / Новая личина / New NYM«. Под Linux всё не так очевидно, хотя тоже несложно, как выяснилось — сделать автоматическую смену IP в TOR можно при помощи простого скрипта.

Читать далее TOR NEWNYM — автоматическая смена IP в TOR

rsync — отличная замена scp!

Довольно смешно, но впервые воспользовался rsync только три недели назад. До этого пытался один раз, не разобрался с ключами и забросил. Зря, как оказалось!
Главное достоинство rsync по сравнению с scp — показывает прогресс загрузки. Также рекурсивно загружает директории. Немаловажно — поддерживает докачку в обе стороны.

Попользовался и сделал себе для bash алиас в bashrc [cc lang=»bash» inline=»true»]rsync=»rsync -P»[/cc], теперь всё время его использую для загрузки на хостинг. Авторизацию по ключам тоже настроил, так что можно делать бэкапы.
Основной синтаксис вызова: [cc inline=»true»]rsync логин@хост:/откуда/что логин@хост:/куда/что[/cc]. В случае локальной машины логин и хост указывать естественно не нужно, достаточно только пути.
Основные опции, которыми пользуюсь: -P — выводит прогресс-бар, -r — рекурсивная загрузка.

Если кто ещё тоже до сих пор не знаком с rsync и пользуется scp/sftp — самое время попробовать!