Windows Subsystem for Linux

neofetch

Если вы не в курсе, что такое Windows Subsystem for Linux или WSL (или WSL 2), то воспользуйтесь Гуглом. Вкратце, это Linux, работающий внутри OS Windows. Устанавливать эмулятор, вроде Virtual Box или VMWare не нужно, несколько готовых сборок можно установить из магазина Microsoft как обычные  программы. После запуска у вас будет консоль, внешне, естественно, похожая на консоль командной строки, но почти такая же удобная и гибкая, как PuTTY или другой терминал.

Мне эта штука понравилась тем, что у пользователя есть доступ ко всем дискам и разделам операционной системы и можно писать практически любые скрипты для задач по работе с файлами. Поиск файлов, поиск текста внутри файлов, поиск и обработка файлов, чтение файлов в реальном времени (tail –F) и т.д. производится так же, как на обычном Линуксе. Огромное количество удобных утилит доступны практически просто из коробки.

Сегодня мне понадобилось конвертировать несколько flac-файлов в mp3. Я набросал простой скрипт, несколько минут – и все готово. Не нужно устанавливать программы, да еще и зачастую платные, достаточно установить одну или несколько консольных утилит и запустить скрипт.

У меня установлена сборка Debian, для работы с аудиофайлами я использовал ffmpeg, для этого нужно сначала его установить:

sudo apt install ffmpeg -y

Затем нужно перейти в каталог с файлами, которые нужно конвертировать (cd /mnt/c/folder, где “c” – буква  раздела, а folder – каталог с музыкой), создать файл (выполнить nano re.sh) и вставить туда скрипт (правой клавишей, как в обычной командной строке):

#!/bin/sh
export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin

for f in *.flac
do
 ffmpeg -i "$f" -ab 320k -map_metadata 0 -id3v2_version 3 "$f".mp3
done

CTRL+X Y ENTER. Всё, файл сохранен. Запускаем командой sh re.sh и смотрим за процессом выполнения.

Упомянутый выше поиск текста в файлах выглядит примерно так:

find . -name "*.*htm*" -exec grep -i "iframe" {} \; -print

Точка – это текущий каталог, можно указать путь к каталогу. Данный однострочник найдет в текущем каталоге все файлы с расширением, содержащим htm, т.е. .html, .htm, .shtml и т.д. и если внутри файла содержится текст iframe – выведется имя файла и строка в файле с этим словом.

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


Теги: , , , , , , ,

Превращаем Raspberry Pi в Time Machine для OS X

Raspberry Pi X820 V3.0 SSD HDD SATA

На фото – металлический корпус для использования Raspberry Pi 3 с платой X820 V3.0. Плата позволяет подключать к Малинке 2.5” жесткий диск или SSD в разъем SATA. Я давно уже собрал Малинку в таком корпусе и решил использовать как Машину Времени для OS X.

Железо для Time Machine

  • Raspberry Pi 3 B+ (можно и 2 B, если у вас такая завалялась)
  • Micro SD карточка (рекомендую 16Гб, но можно и меньше)
  • Micro SD Reader (для записи образа ОС для Raspberry Pi)
  • металлический корпус(опционально, красиво ведь)*
  • 2.5” SSD (можно и жесткий диск, я использовал SSD на 1Тб)*
  • X820 V3.0*
  • Ethernet-кабель **

* Можно использовать USB-диск вместо этих пунктов.
** Я не рекомендую WiFi, но можно и через него. Если у вас металлический корпус, то нужно использовать внешний свисток.

Читать остальную часть заметки »

Теги: , , , , , , , , , , , ,

WiFi на Raspberry Pi Zero W

pi-zero-w-1

После длительного использования нулевой Малинки, вылезла проблема со связью через WiFi. На форумах пишут, что это связано с ПО, в итоге, вместо экономии электричества, получаем не доступную по сети Raspberry Pi.

Как это лечить? Сначала я попробовал использовать внешний “свисток”, Edimax EW-7811Un, но и он отваливался от сети. Для лечения внутреннего чипа нужно отключить управление питанием, в файле /etc/rc.local добавьте строчку:

iwconfig wlan0 power off

Это должно отключить управление питанием чипа и он просто будет работать все время, без (неудачных) переходов в спящий режим. При запуске данной команлы из консоли, управление питанием будет отключено без перезагрузки системы.

С внешним WiFi-адаптером от Edimax все сложнее, нужно создать (если не существует) файл /etc/modprobe.d/8192cu.conf и добавить в него строчку:

options 8192cu rtw_power_mgnt=0 rtw_enusbss=0

Если вы вы выполните нижеописанные команды, то, как минимум, вторая будет с единицей, т.е. для адаптера будет включено управление питанием.

cat /sys/module/8192cu/parameters/rtw_enusbss
cat /sys/module/8192cu/parameters/rtw_power_mgnt

Чтобы настройки вступили в силу, нужно перезагрузить вашу плату.

Также, при использовании внешнего WiFi-адаптера, можно (и нужно) отключать внутренний, для этого добавьте в файл /boot/config.txt следующую строчку:

dtoverlay=disable-wifi

Еще будет полезным отключить IPv6, который наверняка вам не нужен, для этого в файле /etc/sysctl.conf добавьте строчки:

# to disable IPv6 on all interfaces system wide
net.ipv6.conf.all.disable_ipv6 = 1

И вишенка на торте – это скрипт, который проверяет есть ли подключение к сети и пытается её перезапустить:

https://github.com/VBaczynski/WiFi_Check

Поставьте на файл права на исполнение и добавьте его в крон:

chmod 755 /usr/local/bin/WiFi_Check
env EDITOR=nano crontab -e

-- в кроне добавьте запись --
# WiFi check
*/5 * * * * /usr/local/bin/WiFi_Check >/dev/null 2>/dev/null

Надеюсь, это поможет и вам.

P.S.
Все команды выполняются из-под пользователя root, если запускаете из-под обычного пользователя, используйте sudo.


Теги: , , , , , , , ,

FreeBSD 12-CURRENT на PINE A64+ или Raspberry Pi 3

PINE A64

Pine A64+ – 64-битный одноплатный ПК с широкими возможностями. Подробно о характеристиках можно почитать на их сайте. Из того, что мне лично нравится, это наличие отдельного порта для подключения литиевой батареи*, HDMI-выхода**, полноценных USB-портов (хотя и стандарта 2.0), 1Gbps Ethernet, портов для LCD (touch screen) и камеры. К сожалению, плата не очень компактная, но на ней можно построить неплохой медиа-центр, например. Это, конечно, если у вас не суперсовременный телевизор, который все это умеет и сам.

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

Читать остальную часть заметки »

Теги: , , , , , , , ,

Делимся вайфаем по проводам (Wireless-to-Wired Router)

В связи с отсутствием проводного подключения к сети  Интернет, понадобилось расшарить Интернет от 3G модема к устройству с Ethernet портом. Для этих целей я выбрал относительно недорогие платы OrangePi Zero(покупал тут). Вначале я выбрал образ с ОС Debian, но собрана она весьма рукожопно и пакеты не обновляются. Чтобы не заморачиваться, взял следующий дистрибутив – Ubuntu Server.

TL;DR
Далее кратко опишу плату, варианты подключения и настройку с нуля.

Читать остальную часть заметки »

Теги: , , , , , , , , , , ,

Rsync и двоеточие

При попытке синхронизировать при помощи rsync каталог или файл, в имени которого содержится двоеточие, можно получить ошибку:

~> rsync -av 2015-07-31_01:32:46/ newdir/
ssh: Could not resolve hostname 2015-07-31_01: hostname nor servname provided, or not known
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: unexplained error (code 255) at io.c(226) [Receiver=3.1.1]

Все, что находится до двоеточия считается именем или адресом хоста и не резолвится.

Решить проблему можно тремя способами:

— указать полный путь к файлу или каталогу;
— добавить перед файлом или каталогом точку-слеш (./);
— добавить перед файлом или каталогом в одинарных кавычках pwd и слеш (`pwd`/).

~> rsync -av /home/username/2015-07-31_01:32:46/ newdir/
~> rsync -av ./2015-07-31_01:32:46/ newdir/
~> rsync -av `pwd`/2015-07-31_01:32:46/ newdir/

То же самое относится и к scp.


Теги: , , , , , ,

Клонирование дисков

dd if=/dev/ada1 of=/dev/ada2 bs=4096 conv=notrunc,noerror,sync
# очень полезно, если на исходном диске много битых секторов

Много примеров тут.


Теги: ,