Аникин

Блог об администрировании Linux, BSD и не только.

Связаться со мной:

Мультиверсионность php c VestaCP на выделенных серверах и VDS

На наших выделенных серверах и VDS теперь доступен шаблон с VestaCP и версиями php от 5.3 до 7.3. Установка через техподдержку.
Проходите по ссылке или кликайте на баннер вверху страницы, в комментариях к заказу напишите что вам нужен шаблон с vestacp-multiphp.

22 октября   php   php7   phpmgr   vesta control panel   vestacp

Добавление squashfs live образа в PXE

Нужно примонтировать live iso образ на сервере. Найти в нем файлы initrd, vmlinuz и squashfs. Скопировать их в каталог PXE и прописать в pxelinux.cfg/default. В debian-10-live у меня получилось вот так.

label debian-live
  menu label debian-live
  kernel http://192.168.0.1/images/live/vmlinuz-4.19.0-5-amd64
  append initrd=http://192.168.0.1/images/live/initrd.img-4.19.0-5-amd64 boot=live fetch=http://192.168.0.1/images/live/filesystem.squashfs root=/dev/ram0
2 сентября   live   pxe   squashfs

PXE сервер на FreeBSD

В конфиг dnsmasq добавляем

dhcp-option-force=66,192.168.0.1   # ip сервера
dhcp-option-force=67,gpxelinux.0   # загрузчик

Перезапускаем dnsmasq

service dnsmasq restart

Создаем каталог для pxe

mkdir /usr/local/pxe
mkdir /usr/local/pxe/pxelinux.cfg

Устанавливаем tftp

pkg install tftp-hpa

В /etc/inetd.conf добавляем

tftp  dgram  udp  wait  root  /usr/local/libexec/in.tftpd  in.tftpd -p -s /usr/local/pxe

Вписываем

echo 'inetd_enable="YES"' >> /etc/rc.conf

Запускаем inetd

/etc/rc.d/inetd start

Скачиваем и распаковываем syslinux

fetch http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-4.05.tar.gz
tar -xf syslinux-4.05.tar.gz

Копируем файлы

cd syslinux-4.05
cp gpxe/gpxelinux.0 /usr/local/pxe/
cp com32/menu/menu.c32 /usr/local/pxe/
cp com32/menu/vesamenu.c32 /usr/local/pxe/
cp com32/modules/reboot.c32 /usr/local/pxe/
cp com32/modules/chain.c32 /usr/local/pxe/
cp memdisk/memdisk /usr/local/pxe/

Образы будем грузить по http, т.к tftp очень медленный. Ставим nginx.

pkg install nginx

Создаем каталог с образами и симлинк на него в nginx

mkdir  /usr/local/pxe/images/
ln -s /usr/local/pxe/images/ /usr/local/www/nginx/images

Вписываем

echo 'nginx_enable="YES"' >> /etc/rc.conf

И стартуем

service nginx start

Заливаем наши образы в /usr/local/pxe/images/

В файле /usr/local/pxe/pxelinux.cfg/default создаем конфиг меню с нашими образами. У меня получился такой

ui menu.c32
menu title PXE Boot Menu

label boothdd
  menu label Boot from Hard Drive
  localboot 0
 
label memtest
  menu label memtest
  kernel memdisk
  initrd http://192.168.0.1/images/Memtest86-4.3.7.iso
  append iso raw

label mfsbsd
  menu label mfsbsd
  kernel memdisk
  initrd http://192.168.0.1/images/mfsbsd-12.0-RELEASE-amd64.iso
  append iso raw

label debian-10
  menu label debian-10
  kernel http://192.168.0.1/images/debian10/linux
  append vga=normal initrd=http://192.168.0.1/images/debian10/initrd.gz  --

label rescue
  menu label rescue
  kernel http://192.168.0.1/images/debian10/linux
  append vga=normal initrd=http://192.168.0.1/images/debian10/initrd.gz  rescue/enable=true --

linux и initrd.gz для установщика debian можно взять тут
Теперь можно пробовать грузится с PXE, если все сделали правильно то появится меню с выбором загружаемого образа.

1 сентября   Freebsd   pxe   tftp

Не стартует mysql в centos 6 после обновления.

После обновления mysql до 5.7 он не стартует с ошибкой

[ERROR] Fatal error: mysql.user table is damaged. Please run mysql_upgrade.

Добавляем в my.cnf в секцию [mysqld]

skip-grant-tables

С этим параметром стартуем mysql и делаем mysql_upgrade

service mysqld start
mysql_upgrade

Затем убираем skip-grant-tables из конфига и рестартим mysql

service mysql restart

Mysql должен запустится без ошибок

2019   centos   mysql

Ремонт китайского модуля управления светом

В 99% случаев неисправностей китайских модулей управления люстрами проблема кроется в потере емкости металлопленочного конденсатора 1-1,5 мкФ х 250-400в. Нужно заменить на аналогичный. В моем случае неисправность проявлялась следующим образом, из трех линий освещения адекватно работали только одновременно включенные две линии. При включении третьей линии пульт начинал реагировать только на расстоянии около 30 сантиметров от модуля. Виновник торжества на фото:

На алиэкспрессе и в магазинах множество модулей с примерно одинаковой начинкой. Сам модуль у меня такой:

С таким пультом:

bme280 выдает nan вместо показаний.

Проверьте питание. Вероятно проблема в плохом контакте на 3.3 вольта. I2C работает с плохим контактом питания, соответственно датчик определяется как исправный. Но сам датчик не работает при плохом питании и выплевывает nan вместо показаний.

В моем случае началось все с того что датчик периодически начал выплевывать nan. Я начал думать что датчик умирает. И в один прекрасный день он несколько часов передавал nan вместо показаний. Помогла очистка контактов от окислов. Решение найдено здесь.

2019   bme280   esp8266   nan   nodemcu

DynDns через Telegram

Т.к яндекс сломал api для своих DNS, то для получения ip будем пользоваться телеграмом.
Через BotFather создаем бота. Даем ему команду

/newbot

Затем вводим имя нашего нового бота. Потом вводим username бота, оно должно оканчиваться на bot.
После этого BotFather пришлет нам api токен.
Теперь нам нужно получить chat id. Для этого отправляем нашему боту какое-нибудь сообщение и затем делаем запрос

https://api.telegram.org/bot<api токен>/getUpdates

В ответе находим

..."id":123456789...

Копируем id.
Если ваш провайдер блокирует телеграм, то нужно обзавестись прокси для отправки уведомлений. Теперь у нас есть все чтобы наш бот мог отправлять нам уведомления.
Отправить сообщение из консоли можно запросом вида

curl -x $proxy "https://api.telegram.org/bot${api}/sendMessage?chat_id=${id}&text=${buf}"

Берем наш скрипт из статьи про ЯндексДНС и немного его переделываем. Получаем что-то типа такого.

#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin; export PATH
api="сюда вписываем токен"
id="сюда вписываем chat id"
proxy="socks5://login:pass@proxy.ip:port/"

while true; do
ip=`curl -s http://ip.anikin.pw/`
if [ $ip != $buf ]
then
buf=`echo $ip`
curl -x $proxy "https://api.telegram.org/bot${api}/sendMessage?chat_id=${id}&text=${buf}"
fi
sleep 1800; done;

Скрипт смотрит на изменение ip. И если ip изменяется, то отправляет новый ip в телеграм.

2019   api   dyndns   telegram

Прозрачный обход блокировок на шлюзе FreeBSD

В первую очередь нужно поднять OpenVPN клиента через который мы будем пускать заблокированные адреса. В конфиге клиента следует закомментировать диррективу redirect-gateway, чтобы основной траффик у нас шел через провайдера.
Создаем скрипт который загрузит заблокированные ip в таблицу ipfw

#!/bin/sh

rm /root/bin/reestr.txt
/usr/local/bin/wget -O - https://api.reserve-rbl.ru/api/v2/ips/json|tr ',' '\n'|tr -d '"'|tr -d ']'|tr -d '['  > /root/bin/reestr.txt
file="/root/bin/reestr.txt"

ipfw table 1 flush
while read line
do
ipfw table 1 add $line
done < $file

file="/root/bin/useriplist" # В этот файл можно вписать свои ip которые тоже нужно пустить через VPN
while read line
do
ipfw table 1 add $line
done < $file

Запустим natd на порту 8673

/sbin/natd -a 10.8.1.6 -p 8673

Зарулим все ip из таблицы 1 в VPN

lan="192.168.0.0/24" #локалка
vpnip="10.8.1.6" #ip vpn интерфейса
vpngw="10.8.1.7" #vpn шлюз
ipfw add divert 8673  ip from ${lan},${vpnip} to table\(1\)
ipfw add fwd ${vpngw}  ip from ${vpnip} to table\(1\)
ipfw add divert 8673  ip from table\(1\) to ${vpnip}
2019   Freebsd   ipfw   nat   table

Почему не работает USB на гребенке 13 pin OrangePi R1 и возможно на OrangePi Zero(Но это не точно)

Разработчики armbian считают что если разъем не представлен на плате, а представлен на гребенке, то по умолчанию он должен быть отключен. И если вы подключите устройство USB к соответствующим документации пинам или подключите плату типа этой

то вы можете с удивлением обнаружить, что USB не работает. Разберемся как его включить.
Чтобы сконфигурировать оборудование при загрузке ОС в armbian используются файлы DTB начиная с ядра 4.9.
OrangePi R1 сейчас использует файл sun8i-h2-plus-orangepi-zero.dtb
На данный момент этот файл находится в /boot/dtb/
Разработчики armbian не исключают что путь и имя файла может изменится, так что если что пробуем другие файлы dtb.
Идем в каталог /boot/dtb и бекапим файл на всякий случай.

cd /boot/dtb
cp sun8i-h2-plus-orangepi-zero.dtb sun8i-h2-plus-orangepi-zero.dtb.bak

Устанавливаем device-tree-compiler и переводим dtb в удобный для редактирования формат

apt install device-tree-compiler
dtc -b 0 -O dts -I dtb -o sun8i-h2-plus-orangepi-zero.dts sun8i-h2-plus-orangepi-zero.dtb

Теперь нужно открыть sun8i-h2-plus-orangepi-zero.dts любым текстовым редактором и найти там все usb порты и usb шины и изменить у них

status = "disabled";

на

status = "okay";

После редактирования собираем файл обратно в dtb

dtc -b 0 -O dtb -I dts -o sun8i-h2-plus-orangepi-zero.dtb sun8i-h2-plus-orangepi-zero.dts

Теперь перезагружаемся, смотрим lsusb и пробуем подключать устройства к usb.

2018   armbian   orangepi

Проблема с wifi карточками MT7601U в Debian 9.

NetworkManager сети видит, но не может к ним подключиться. Пишет что соединение разорвано.
Карточка выглядит примерно так:

148f:7601 Ralink Technology, Corp. MT7601U Wireless Adapter

А чтобы все заработало достаточно выполнить:

ln -s /dev/null /etc/systemd/network/99-default.link
Ранее Ctrl + ↓