Модем определяется, но со статусом «не готов», интернета нет.
Помогла команда в telnet:
# interface СdcEthernet0 usb wwan-force-connected
Модем определяется, но со статусом «не готов», интернета нет.
Помогла команда в telnet:
# interface СdcEthernet0 usb wwan-force-connected
root@dot:/home/kkursor# lvconvert —type raid1 -y -m 1 /dev/mapper/dot—vg-home
Insufficient free space: 1 extents needed, but only 0 available
-m1 — это число копий (то есть если 1 — то 2 копии, то есть зеркало)
Для RAID нужен свободный последний блок. Чтобы его получить, надо:
— отмонтировать раздел
— fsck -f /dev/mapper/dot—vg-home
— resize2fs /dev/mapper/dot—vg-home 1600G (размер заведомо больше, чем размер занятого места, но меньше, чем текущий)
— lvreduce -l -1 (минус один — отрезать один блок с конца)
root@dot:/# lvreduce -l -1 /dev/dot-vg/home WARNING: Reducing active logical volume to 1,79 TiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce dot-vg/home? [y/n]: y Size of logical volume dot-vg/home changed from 1,79 TiB (469413 extents) to 1,79 TiB (469412 extents). Logical volume dot-vg/home successfully resized. root@dot:/# lvconvert --type raid1 -m 1 /dev/mapper/dot--vg-home Are you sure you want to convert linear LV dot-vg/home to raid1 with 2 images enhancing resilience? [y/n]: y Logical volume dot-vg/home successfully converted. root@dot:/# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert home dot-vg rwi-aor--- 1,79t 0,07 root dot-vg -wi-ao---- <27,94g swap_1 dot-vg -wi-a----- 976,00m
Мне по работе постоянно нужно обращаться к запрещённым для России сайтам, например сайт NXP Semiconductors, на котором куча документации, при обращении с российского IP выдаёт 403. И так много где. Поскольку до технологического суверенитета нам ещё далековато (хотя на российских сайтах тоже попадается полезная информация), а каждый раз включать для этого телепорт в Нарнию надоело, решил настроить на роутере. Итак, что мы имеем:
Исходное положение — у роутера есть интернет с внешним постоянным IP, соединение с VDS-кой установлено, внутренний IP-шник 192.168.14.1, VPN IP VDS-ки 192.168.45.1. DNS гугловый 8.8.8.8.
Также условимся, что у нас есть два списка сайтов — «список разрешённых сайтов», который идёт через обычный российский интернет, и всё остальное, которое идёт через Нарнию.
:local HOST 192.168.45.1
:if ([/ping $HOST count=1] = 0) do={
:log error "HOST $HOST is not responding to ping request, disabling freedom rule …"
/ip/firewall/mangle/disable 3
} else {
:log warning "HOST $HOST ping is ok, enabling freedom rule …";
/ip/firewall/mangle/enable 3
}
Готово! Вы великолепны.
Это работает так. Все хосты, внесённые в список foreign-internet, получают доступ к сети через Нарнию, и всякие сайты типа NXP, Analog Devices, Нельзяграм, Лицокнига и тд начинают нормально работать. Если нужно, чтобы какой-то хост работал только через Россию (для быстродействия или потому, что из Нарнии он недоступен) — добавляем его в список russia-only. Если Нарния отвалится — все пойдут через обычный российский интернет. Если восстановится — всё вернётся. Обо всём остальном позаботится роутер.
На компьютере установлено несколько систем AstraLinux. Нужно как-то различать их в меню grub, чтобы грузить нужную. При этом крайне желательно обойтись без ручного редактирования файла /boot/grub/grub.cfg, который будет перезаписан после установки новой системы, например.
Делаем следующее:
# e2label /dev/sda1 ASTRA1
# e2label /dev/sda2 ASTRA2
2. Правим два файла. Первый /etc/grub.d/10_linux, строка 136. Меняем
echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
на
echo "menuentry '$(echo "$title ($(e2label `blkid -U $boot_device_id`))" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
Второй — /etc/grub.d/30_os-prober, строка 297. Меняем
menuentry '$(echo "$title" | grub_quote)' --class gnu-linux --class gnu --class os \$menuentry_id_option 'osprober-gnulinux-$LKERNEL-${recovery_params}-$boot_device_id' {
на
menuentry '$(echo "$title ($(e2label $DEVICE))" | grub_quote)' --class gnu-linux --class gnu --class os \$menuentry_id_option 'osprober-gnulinux-$LKERNEL-${recovery_params}-$boot_device_id' {
3. Вызываем update-grub.
На выходе имеем в grub.cfg что-то такое:
menuentry 'AstraLinuxCE GNU/Linux, with Linux 4.15.3-1-generic (на /dev/nvme0n1p6) (ASTRA1)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-4.15.3-1-generic--a009ed5b-4c18-4235-9baa-a711f5443472' {
Единственный нюанс — нужно это делать либо в каждой Астре, либо обновлять Grub только из одной.
Прикольно, оказывается в 1.6 авторизацию апача можно отключить. Для этого надо в конфиге прописать параметр:
AstraMode off
По умолчанию Астра не пускает свежедобавленных пользователей. Да и вообще с правами там бидэ.
Для того, чтобы пользователя пускало, нужно выполнить команду
usermac -c 0:0 имя_пользователя_под_которым_будем_заходить
Для корректного функционирования авторизации через PAM пользователю, от которого работает веб-сервер (по-умолчанию — www-data), необходимо выдать права на чтение информации из БД пользователей и сведений о мандатных метках, для этого выполняем следующие команды:
usermod -a -G shadow www-data setfacl -d -m u:www-data:r /etc/parsec/macdb setfacl -R -m u:www-data:r /etc/parsec/macdb setfacl -m u:www-data:rx /etc/parsec/macdb
Спасибо сайту Lab50.net, вот ссылка на полную статью http://lab50.net/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-%D0%B7%D0%B0%D1%89%D0%B8%D1%89%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE-apache/
В Proxmox можно импортировать виртуалки из Виртуалбокса.
qm importdisk 100 Astra.vdi bigdata
Подглядел тут: https://www.caretech.io/2017/10/17/migrating-virtualbox-vdi-to-proxmox-ve-5/
Это всё, что возьму я с собой.
— Юра «Музыкант» Шевчук, ДДТ
Лайфхаки с внутреннего портала одной некогда великой организации.
Команда для формирования ISO из папкиmkisofs -o ../ISONAME.iso -V DISC-LABEL -P "AO OLOLO" -joliet-long -l -force-rr -R -D .
Неожиданное поведение Астры при смене времени на хосте.
Ситуация — нужно произвести расчёты в целях тестирования. Свежих данных нет, считаю старыми, для этого отодвигаю время на хосте на месяц назад удалённо. Сижу, работаю дальше, возникает необходимость перезагрузить компьютер. Пишу sudo reboot, жду… минуту нет, две, пять…
С мыслями «что-то пошло не так» иду к машине. А она циклично ребутится. В консоли — unexpected inconsistency on /, last superblock mount is in future, please run fsck manually и спрашивает логин/пароль.
У рута пароля нет. Логин пользователя из sudoers не принимает, хочет рута. Редактор параметров загрузки ядра тоже не работает. ¯\_(ツ)_/¯
Что делать, кроме исправления времени обратно вперёд? Проблема на самом деле абзац. Выключили питание при севшей батарейке биоса, и что, лапки кверху и работать не будем? Непорядок.
Решение простое — подключить диск к другому компьютеру, /etc/default/rcS, в конце его параметр. Делаем FSCKFIX=yes, закрываем, перезагружаемся, вуаля. Причём это касается и других дебианоподобных систем, во всяком случае у убунты этот параметр тоже отключен.
VLAN в Astra Linux.
Для подключения к стенду нужно быть в одном broadcast domain с ним. Пробросили мне VLAN 300, а как его настроить — хз.
В /etc/network/interfaces пишем:
auto lo eth0.300
iface eth0.300 inet static
address 192.168.x.y
netmask 255.255.255.0
gateway 192.168.x.y
vlan_raw_device eth0
reboot и всё каласо 🙂
Разблокировка пользователя в ALD (и не только).
Если много-много-много раз неправильно набрать пароль пользователя, то сервер согласится, что пароль маоцзедун войти в систему под этим пользователем больше не получится. Гуёвая логинилка будет говорить, что пароль неверный. Войдём в консоль и увидим:
duty-main login: arm-admin
Account locked due to 100500 failed logins.
При этом на уровне ALD никаких блокировок не установлено.
Решение проблемы:# pam_tally --user=username --reset'
Монтирование FTP-каталога в локальную файловую систему в Astra Linux.
Задача — примонтировать папку со сборочной машины в локальную ФС виртуалки, чтобы не копировать туда репозиторий каждый раз.$ sudo curlftpfs -o nonempty,allow_other files/repo/astra/1.5 /srv/ftp/repo/astra/1.5/
Строка в /etc/fstab может выглядеть так:curlftpfs#files/repo/astra/1.5/ /srv/ftp/repo/astra/1.5/ fuse allow_other,nonempty 0 0
Про постгрес и аудит.
— Сколько памяти занимает Chrome?
— Сколько найдёт…
По умолчанию постгрес астры ведёт аудит и пишет в логи каждый выполненный запрос. При очень интенсивной работе с БД (при работе опрашивающих оборудование агентов, например), этот аудит очень быстро съедает всё место, до которого может дотянуться.
Нужно найти в /etc/postgresql/9.4/main/postgresql.conf строку:ac_audit_mode = ''internal'' # rbt audit mode. Possible values are
и поставить её в none.
Например, так:sed -i /etc/postgresql/9.4/main/postgresql.conf -e "s/ac_audit_mode\s=\s'internal'/ac_audit_mode = 'none'/"
Конфигурация платы PCL-746
Положение DIP-переключателей на платах рассчитывается следующим образом.
Адрес платы состоит из 10 бит. Назовём их А0…А9.
Записывается он следующим образом:
Три младших бита (А0, А1, А2) — всегда нули.
Семь битов А3…А9 задаются DIP-переключателями инвертированно. То есть биту 1 соответствует положение переключателя «OFF», биту 0 — соответственно «ON»; кроме того, самому старшему биту (А9) соответствует самый правый переключатель (с самым большим номером), а самому младшему (А3) — самый левый. Это немного неинтуитивно, на мой взгляд, логичнее было бы всё сделать наоборот. Ну да ладно, пусть разработчику платы икнётся. 🙂
Можно, кстати, перевернуть плату кверх ногами, тогда все положения переключателей будут правильные («ON» — 1, «OFF» — 0) и будут в правильном порядке отвечать за 7 старших бит адреса.
Таким образом, положение DIP-переключателей для адреса, например, 100h, определяется так:
1. Переводим 100h в двоичное представление. Получается 1 00000 000.
2. Отбрасываем последние три нуля. Остаётся 1 000 00.
3. Дополняем число нулями слева до 7 знаков, если надо. Получается 0 1000 00.
4. Инвертируем. Получается 1 0 111 11
5. «Переворачиваем» число зеркально слева направо. Получается 1111101. Это и есть требуемая конфигурация переключателя, соответствующая адресу 100h.
Таким образом, рассчитанные положения перемычек адресации выглядят так:
Порт 1 (RS-485) Адрес 0x218, DIP-переключатель 0011110
Порт 2 (RS-232) Адрес 0x220, DIP-переключатель 1101110
Если Астра не запоминает разрешение экрана…
Столкнулись с проблемой.
Ситуация: Астра грузится, но в разрешении 640х480 по центру FullHD монитора с чёрными полями по краям. Настраиваешь в настройках — встаёт штатное разрешение монитора (в нашем случае — 1920х1080), но после перезагрузки опять 640х480. При загрузке других современных линуксов с флешек и тому подобного ситуация аналогичная.
Ярослав Борисович настроил в xorg.conf ручное разрешение, но это помогло частично. Окно входа стало то же 640х480, но уже не во весь монитор, а маленьким окошком в уголке. Мышь давала себя двигать по всему монитору. После долгого красноглазия обратили внимание на то, что в программе настройки монитора два видеовыхода указано — VGA-1 и LVDS-1. Второй я уже после нашёл на плате распаянным — видимо для подключения матрицы напрямую. А потом, наблюдая за Linux Mintом, запущенным с флешки, я обратил внимание, что в левом верхнем углу, за пределами основного монитора, и есть кусочек размером 640х480, размеры которого берёт Linux (причём любой, не только Астра) для основного монитора. Проблема в том, что оно не знало, что LVDS-1 на самом деле ни к чему не подключен; кроме того она считала его основным монитором.
Видеоядро на этой плате Intel 8086:a001 (встроенное в ядро CPU Intel Atom Processor Integrated Graphics Controller).
Такое поведение системы лечится дописыванием опций ядра video=LVDS-1:d video=VGA-1:e
в переменную GRUB_CMDLINE_LINUX_DEFAULT в /etc/default/grub и запуском команды update-grub
. В нашем случае переменная стала выглядеть так:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=LVDS-1:d video=VGA-1:e"
Таким образом этот интерфейс полностью отключается.
Veracrypt и монтирование томов.
Если при монтировании криптоконтейнера в VeraCrypt возникает ошибка «device-mapper: resume ioctl on truecrypt* failed: invalid argument», то нужно в настройках установить галку «Do not use kernel cryptographic services».
На Kubuntu 14.04.2 LTS с ядром 3.16.0-50-generic без этой галки VeraCrypt не работает.
Удалённый скриншот на Астре.xwd -root -display :0 ./screendump.file
этот вариант хорош тем, что не требует момент форвардить иксы + можно чисто из под терминала под любой ОС получить полный (или частичный) скриншот экрана
convert ./screendump.file ./scree.bmp
AstraLinux и форвардинг иксов (боян).
По умолчанию в Астре форвардинг X-приложений не работает (помимо проблем с MITSHM, см. ниже).
Для того, чтобы заработал, нужно в конфиг-файл /etc/ssh/sshd_config
добавить строку X11UseLocalhost no
и выдать команду /etc/init.d/ssh restart
После этого при переподключении всё заработает.
Некорректное отображение Qt4 приложений через ssh на Astra Linux.
При подключении по ssh к хосту с Astra Linux и запуске любого Qt4 приложения, отрисовывается только панель заголовка и пустое окно без каких-либо элементов.
Это как-то связано с использованием Qt4 расширения X11 MIT-SHM (MIT Shared Memory Extension), о чём свидетельствуют многочисленные ошибки в консоли при запуске.
На данный момент удалось решить проблему, запретив Qt4 использовать это расширение, добавив на хосте переменную окружения «QT_X11_NO_MITSHM=1».
По идее это должно сказаться на скорости отрисовки, но я пока не заметил побочных эффектов.
Если кто-нибудь знает более правильный способ, прошу отписать в комментариях.
find . -name .git -exec rm -rvf {} +
Сдох на рабочем компе хард размером 2 ТБ. Купили новый SSD на 250 Гб. CloneZilla отказывается копировать диск. Нашёл шикарное решение.
# fsarchiver -v savefs /media/folder-bkp/disco-source.fsa /dev/sda1
find -type f \( -not -name "md5sum.txt" \) -exec md5sum '{}' \; > md5sum.txt
После очередного обновления телефона стало глючить приложение-ключ для дистанционного управления старлайновской сигналкой.
Методом проб и ошибок понял, что система убивает приложение. Но зачем она это делает — хз.
Нашёл решение:
Вам нужно:
adb shell pm uninstall --user 0 com.huawei.powergenie
Спасибо товарищу по ссылке: https://lavnik.net/kak-zapretit-huawei-i-android-ubivat-prilozheniya-v-fonovom-rezhime
Но этого мало. Нужно ещё Turn off battery optimization. Apps, Apps, Special access, Battery optimization. Give that a try.
Даже в домашнем каталоге. Даже через sudo.
Решение:
$ sudo pdpl-user -i 63 username
И перелогиниться.
После разворачивания серверной 1С 8.3 на Linux-сервере с патченой постгрёй возникли проблемы — в произвольных местах 1с падает с вышеуказанной ошибкой.
Нужно зайти в консоль постгреса и выполнить 2 SQL-запроса.
# CREATE FUNCTION pg_catalog.like_escape(mvarchar, mvarchar) RETURNS mvarchar AS ‘$libdir/mchar’, ‘mvarchar_like_escape’ LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
# CREATE FUNCTION pg_catalog.similar_escape(mvarchar, mvarchar) RETURNS mvarchar AS ‘$libdir/mchar’, ‘mvarchar_similar_escape’ LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
Играюсь тут с запуском виртуальных машин на сервере без GUI.
Вроде всё супер, но установить из phpVirtualBox систему не получилось — VNC упорно не хотел пускать.
Фаервол не мешает.
Выяснил путём вызова sudo netstat -nap | grep 5900 (где 5900 — назначенный виртуалке порт), что VBoxHeadless слушает только localhost.
Изменить это поведение можно командой sudo VBoxManage modifyvm «virtual machine name» —vrde on —vrdeaddress 0.0.0.0
Стоит задача запустить сервер 1С под Фряхой. Пользуюсь статьёй: тыц и гуглом. Играюсь на виртуалке. Дополняю статью по мере продвижения к финалу. Немножко осложняется тем, что машина с фряхой не имеет доступа к Интернету.
0. Ставим фряху
x. echo linux64_load="YES" >>/boot/loader.conf
echo linux_load="YES" >>/boot/loader.conf
Перезагружаемся (ну или подгружаем оба два модуля через kldload). И потом ставим вот это:
https://www.freshports.org/emulators/linux_base-c7/ (pkg install linux_base-c7)
Принципиально важно ставить порт после того, как подключены модули, иначе что-то идёт не так
x. Добавляем строки в /etc/fstab
linprocfs /compat/linux/proc linprocfs rw 0 0
linsysfs /compat/linux/sys linsysfs rw 0 0
tmpfs /compat/linux/dev/shm tmpfs rw,mode=1777 0 0
и перезагружаемся.
x. Ставим порт: archivers/rpm4
x. Берём архив rpm64.tar.gz жопы Одина, распаковываем.
x. Про использование среды совместимости с CentOS 7 тутачки: клац
Устанавливаем пакеты common и server командами:
rpm -i --dbpath /var/lib/rpm --ignoreos --nodeps --relocate /=/compat/linux/ --badreloc 1C_Enterprise83-common-8.3.12-1529.x86_64.rpm
rc-скрипт сервера одноэса ожидаемо обломался на фряхе.
Вот исправленные скрипты:
prein.sh:
groupExists () {
grep -q "^$1:" /etc/group
}
userExists () {
grep -q "^$1:" /etc/passwd
}
userBelongsToGroup () {
id "$1" | grep -q "($2)"
}
useLegacy82=""
commonGroup="grp1cv8"
if userExists usr1cv82; then
useLegacy82=true
fi
if ! groupExists "$commonGroup"; then
pw group add $commonGroup >/dev/null 2>&1 || :
fi
if [ ! -z "$useLegacy82" ]; then
username=usr1cv82
groupname=grp1cv82
else
username=usr1cv8
groupname=grp1cv8
if ! groupExists "$groupname"; then
pw group add "$groupname" >/dev/null 2>&1 || :
fi
# create system user with home directory belong
# to group grp1cv8 and $commonGroup
# -r - system account (don't expire passwd)
# -n don's auto create group with the same name as user
if ! userExists $username; then
pw user add $username -g "$groupname" -G "$commonGroup" \
-m -c "1C Enterprise 8 server launcher" \
>/dev/null 2>&1 || :
fi
fi
if ! userBelongsToGroup "$username" "$commonGroup"; then
pw user mod $username -G "$commonGroup"
fi
dir1CVar="/compat/linux/var/1C"
licenseDir="$dir1CVar/licenses"
if [ ! -d "$licenseDir" ]; then
mkdir -p "$licenseDir"
chown -R $username:$commonGroup "$dir1CVar"
chmod -R g+w "$dir1CVar"
fi
В этот момент устанавливаем основной пакет сервера…
rpm -i --dbpath /var/lib/rpm --ignoreos --nodeps --noscripts --relocate /=/compat/linux/ --badreloc 1C_Enterprise83-server-8.3.12-1529.x86_64.rpm
затем запускаем postin.sh
userExists () {
grep -q "^$1:" /etc/passwd
}
chkconfig --add srv1cv83
if userExists usr1cv82; then
tmpfileName=`mktemp`
startScript="/etc/init.d/srv1cv83"
cat "$startScript" | sed "s/SRV1CV8_USER=usr1cv8/SRV1CV8_USER=usr1cv82/" > "$tmpfileName"
mv "$tmpfileName" "$startScript"
chmod +rx "$startScript"
fi
x. Создаём симлинк на bash:
ln -s /usr/local/bin/bash /bin/bash
x. Даём пользователю usr1cv8 bash в виде дефолтного шелла.
pw user mod usr1cv8 -s /usr/local/bin/bash
x. init-скрипт тоже не работает из коробки. Надо править.
x. Патчим PostgreSQL 10.3 (в моём случае), взятый отсюда: https://www.postgresql.org/ftp/source/v10.3/, затем устанавливаем.
Для сборки PostgreSQL 10.3 надо доставить порты:
devel/readline
gmake
icu
./configure --with-includes=/usr/local/include
make world
make install
pw user add postgres -d /tmp
chown -R /usr/local/pgsql
sudo -u postgres /usr/local/pgsql/bin/initdb -Upostgres -D/usr/local/pgsql/data
mkdir /usr/local/etc/rc.d
cp
chmod +x /usr/local/etc/rc.d/postgresql
cp
cp
echo postgresql_enable=\"YES\" >>/etc/rc.conf
service postgresql start