понедельник, 19 декабря 2016 г.

Avahi pulseaudio dlna

Требуется подключить акустику к некоторому устройству в сети с linux на борту.
В данном случае Arch, а значит конфигурация стандартная, как и задумано разработчиками ПО.

Для начала ставим необходимые пакеты:
pacman -S nss-mdns avahi  pulseaudio pulseaudio-zeroconf alsa sox

sox для удобства запуска воспроизведения, так же это можно делать через pacmd
Что бы всё взлетело удалённо добавляем пользователя в группу:
usermod -a -G audio youruser

Запускаем и проверяем:
pulseaudio -D
play some_file.wav
Если всё хорошо, вы должны услышать воспроизводимый файл.

Теперь pulseaudio должен научиться работать по сети и публиковать информацию через zeroconf.
Для этого редактируем файл /etc/pulse/default.pa:
load-module module-native-protocol-tcp auth-ip-acl=192.168.0.0/24 auth-anonymous=1
load-module module-zeroconf-publish

Тем самым мы позволяем пользователям домашней сети стримить аудио на устройство.

На клиентах тоже следует разрешить zeroconf ­— в том же файле:
load-module module-zeroconf-discover

Далее всё это нужно повесить на автозагрузку.

В arch для pulse указан домашний каталог /var/run/pulse, что вполне верно. Только его там нет и это tmpfs (создавать руками бесполезно), поэтому воспользуемся tmpfile.d
Создаём файл /usr/lib/tmpfiles.d/pulse.confс содержимым:
D /var/run/pulse 0775 pulse pulse

Так же создадим демона на systemd (/etc/systemd/system/pulseaudio.service):
[Unit]
Description=Pulseaudio sound server
After=avahi-daemon.service network.target

[Service]
#Type=dbus
#BusName=org.pulseaudio.Server
User=pulse
ExecStart=/usr/bin/pulseaudio --log-target=journal
ExecReload=/usr/bin/pulseaudio --kill
Restart=always
RestartSeq=3sec

[Install]
WantedBy=multi-user.target

Теперь avahi - об этом ни кто не пишет, но без конфигурации сервиса чуда не происходит. А именно нужно создать файл  /etc/avahi/services/pulseaudio.service:

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">

<service-group>

  <name replace-wildcards="yes">%h</name>

  <service>
    <type>_pulse-server._tcp</type>
    <port>695</port>
  </service>

</service-group>

Порт можно подсмотреть через
netstat -tulpn | grep pulse
 
В файле /etc/nsswitch.conf в конце строки hosts добавить mdns.

У меня используется исключительно ipv6 в связи с этим моя строка выглядит так:
hosts: files mymachines resolve [!UNAVAIL=return] dns myhostname mdns6

В /etc/avahi/avahi-daemon.conf ipv4 так же отключен.
При использовании 4 и 6 ревизий устройства будут дублироваться.

Всё это неплохо бы обвязать DLNA.
В данном необходим media render, его роль может выполнить mdp, но он не умеет искаробки и для этого ещё нужен upmpdcli

Для него тоже нужен домашний каталог Создаём /etc/tmpfiles.d/upmpdcli.conf
D /run/upmpdcli 0775 upmpdcli upmpdcli
(не забудьте прописать в /etc/passwd)

И в заключении как обычно включаем:

systemctl enable avahi
systemctl start avahi

systemctl enable pulseaudio
systemctl start pulseaudio

вторник, 15 ноября 2016 г.

cubietruck

Linux Cubietruck

Хотя на серверы принято устанавливать дистрибутивы с длительной поддержкой мой выбор пал на Fedora 21. 
Как следствие того, что являюсь приверженцем RPM и пользуюсь этим дистрибутивом на всем своем зоопарке машин.

Итак для того, что бы поставить полноценный линукс на Cubie есть два пути:
Flashing - посредством специальной утилиты 
позволяет вшить в NAND требуемую операционку. От нас требуется установить утилиту и заставить её увидеть устройство в режиме флешинга.
Далее клавиатура, любой экран.

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

SD Card - сливаем образ на флешку, заливаем boot - вставляем флешку. Инструкции варьируются от дистрибутива к дистрибутиву.
Для данного метода необходим UART иначе черный экран с приглашением ввести логин/пароль в лучшем случае, либо вообще черный экран.

Последний метод более удобен из-за прямого доступа к носителю.

Для начала требуется вылить содержимое образа на флешку.

Находим SD карту среди прочих. Устройство легко выявить по объему диска
# fdisk -l

Выливаем образ на карточку
# xzcat Some_distr.raw.xz | dd of=/dev/sd*; sync

Для Fedora ещё и загрузочную запись добавить вместе с загрузчиком
# dd if=/tmp/root/usr/share/uboot/Cubietruck/u-boot-sunxi-with-spl.bin of=/dev/sd* bs=1024 seek=8 conv=fsync,notrunc

Далее подрубаем UART
Белый - TX
Зелёный - RX
Красный это Vcc - его не подключаем
Черный - GND

Подключаемся к устройству
screen /dev/ttyUSB0 115200

Вставляем флешку, даем питание и видим в терминале на ПК ход загрузки, а чуть позже меню установки.
Вводим что нас просят и завершаем установку. С этого момента ваш линукс живет на SD карте.

Конечно Cubie интересен наличием SATA. Для использования 3.5' диска понадобится 12В питание, которое должно подаваться только на диск. Кубик питается от 5В. Здесь пригодился старый блок питания от ПК.

Подсоединяем диск к блоку питания и кубик. Красный провод +5В, черный - общий и так на любом проводе.
Берем большой 20pin'овый разъем и соединяем зеленый провод с черным, таким образом блок питания заведётся.

Далее можно перенести ОС на hdd, для этого нужно

------------- кратко
вылить содержимое корня из SD на hdd, сменить UUID диска и прописать его в fstab (hdd) и boot, для федоры это /boot/extlinux/extlinux.conf после перезагрузки окажемся на hdd.
С флешки в данном случае используется только boot. Жаль, что нет прямого доступа к NAND.

Для swap процедуру с UUID тоже следует повторить, т.к. UUID захардкожен и совпадет с тем что на SD карте.

вторник, 30 августа 2016 г.

Squid ipv6 only

After install Squid, I check listening ports:
netstat -tulpn | grep 3128
tcp        0      0   :::3128             :::*           LISTEN      7798/(squid-1)




 
So, ipv6 is good, but me need a ipv4
vi /etc/squid/squid.conf
http_port 0.0.0.0:3128
 
Restart Squid and check again:
tcp        0      0   0.0.0.0:3128        :::*           LISTEN      7798/(squid-1)

среда, 29 июня 2016 г.

Linux more then 3 DNS

Copy /etc/resolv.conf with some other name

# cp /etc/resolv.conf /etc/resolv1.conf

Edit dnsmasq configuration. Define new file:
# vi /etc/dnsmasq.conf

> resolv-file=/etc/resolv1.conf

Change in NetworkManager (or some other) or resolv.conf directry, if not use some manager, to your local nameserver 127.0.0.1

Start dnsmasq
systemctl start dnsmasq
Check result starting
systemctl status dnsmasq
Enable autoload

systemctl enable dnsmasq


You can redirect some domains to other adress by dnsmasq
> address=/loc/127.0.0.1

All domains *.loc will be redirected to local machine.

Linux proxy wrapper CLI

Simple to use proxychains
# zypper -n in proxychains

modify for like you want (by examples)
# vi /etc/proxychains.conf

$ proxychains some_program

понедельник, 27 июня 2016 г.

OpenSuse Leap import cer

Coming to folder with certificates and convert to PEM:
$ cd /some/path
$ for f in *.cer; do openssl x509 -in "$f" -inform DER -out "$f.pem" -outform PEM; done;





Now as root, move PEM files and generate symlink hashes:
# cd /var/lib/ca-certificates/openssl
# cp /some/path/*.pem .
# for file in *.pem; do ln -s "$file" "$(openssl x509 -hash -noout -in "$file").0"; done


Logout as root and verify:
$ openssl verify -crl_check_all *.pem

среда, 20 апреля 2016 г.

Gnome-shell skype integration

Read current settings of dconf:

$ dconf read /org/gnome/desktop/notifications/application-children
> ['abrt-applet', 'org-gnome-software', 'evolution', 'gnome-network-panel', 'empathy']

Add Skype to end of list

$ dconf write /org/gnome/desktop/notifications/application-children
"['abrt-applet', 'org-gnome-software', 'evolution', 'gnome-network-panel', 'empathy', 'Skype']"

And set desktop file [how create desktop file?] for working "move to window by notify click"

dconf write /org/gnome/desktop/notifications/application/Skype/application-id "'Skype.desktop'"

After you can store your setting in some folder or cloud:
dconf dump / > Dropbox/Config/dconf.dump

And restore it on target workstation
dconf load / < Dropbox/Config/dconf.dump

пятница, 18 марта 2016 г.

Linux Wi-Fi master

Install hostapd
 
Find or create bridge in your system. Usually your system already having bridge.

Edit configuration:
vi /etc/hostapd/hostapd.conf 

ctrl_interface=/var/run/hostapd
ctrl_interface_group=wheel

# Some usable default settings...
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=1

# Uncomment these for base WPA & WPA2 support with a pre-shared key
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
#rsn_pairwise=CCMP

# DO NOT FORGET TO SET A WPA PASSPHRASE!!
wpa_passphrase=__PASSWORD__

# Most modern wireless drivers in the kernel need driver=nl80211
driver=nl80211

# Customize these for your local configuration...
interface=wlp2s0
hw_mode=g
channel=8
ssid=__SSID__

# define internet connection
bridge=virbr0
 
hostapd may not work, if the device is managed by NetworkManager. You can mask the device:

/etc/NetworkManager/NetworkManager.conf

[keyfile]
unmanaged-devices=mac:<lthwaddr>
 
Start service hostapd


суббота, 27 февраля 2016 г.

HowTo: Steam error libGL

If you have some errors like that:

libGL error: unable to load driver: radeonsi_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: radeonsi
libGL error: unable to load driver: radeonsi_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: radeonsi
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast

Remove libs for using locally installed

find ~/.local/share/Steam -name libstdc++* -delete
find ~/.local/share/Steam -name libgcc_s* -delete

суббота, 20 февраля 2016 г.

Linux - disable mouse acceleration

Open or create file

/etc/X11/xorg.conf.d/50-mouse-acceleration.conf

Section "InputClass"
 Identifier "My Mouse"
 MatchIsPointer "yes"
 Option "AccelerationProfile" "-1"
 Option "AccelerationScheme" "none"
 Option "AccelSpeed" "-1"
EndSection
 
If is not working check for installation libinput and remove that all to fucking hell.
Because libinput break crosshair in games, redefine mouse acceleration in display manager and cursor theme too.

Linux check SSD disks

grep [01] /sys/block/*/queue/rotational

среда, 17 февраля 2016 г.

Awesome on Gnome


Сохраните следующий код в файл /usr/share/gnome-session/sessions/awesome.session или /usr/local/share/gnome-session/sessions/awesome.session:
[GNOME Session]
Name=Awesome session
RequiredComponents=awesome;gnome-settings-daemon;
DesktopName=Awesome
Сохраните следующий код в файл /usr/share/applications/awesome.desktop (к сожалению файл /usr/local/share/applications не сработает):
[Desktop Entry]
Version=1.0
Type=Application
Name=Awesome
Comment=The awesome launcher!
TryExec=awesome
Exec=awesome
Сохраните следующий код в файл /usr/share/xsessions/awesome-gnome.desktop:
[Desktop Entry]
Name=Awesome GNOME
Comment=Dynamic window manager
Exec=gnome-session --session=awesome
TryExec=awesome
Type=Application
X-LightDM-DesktopName=Awesome GNOME
X-Ubuntu-Gettext-Domain=gnome-session-3.0
Теперь вам нужно изменить как минимум /etc/xdg/autostart/gnome-settings-daemon.desktop, чтобы добавить Awesome в ключ OnlyShowIn, результат должен выглядеть следующим образом:
[Desktop Entry]
Type=Application
Name=GNOME Settings Daemon
Exec=/usr/lib/gnome-settings-daemon/gnome-settings-daemon-localeexec
OnlyShowIn=GNOME;Unity;Awesome;
NoDisplay=true
X-GNOME-Autostart-Phase=Initialization
X-GNOME-Autostart-Notify=true
X-GNOME-AutoRestart=true
X-Ubuntu-Gettext-Domain=gnome-settings-daemon
Для доступности всех сервисов Gnome в Awesome:
find -type f -print0 | xargs -0 -I z1 sed -i -e 's/OnlyShowIn=/OnlyShowIn=awesome;/g' z1

Если в gnome-control-center отсутствуют некоторые пункты меню, проверьте все файлв /usr/share/applications/gnome*panel*. Добавьте Awesome в ключ OnlyShowIn снова сделает их видимыми и доступными.