15 апреля 2019 г.

Видеодрайверы для astra linux

Скачать драйвера для AL 1.6
1. 340
2. 390
3. 490
Все версии подписаны ключом

Установка драйверов для AL 1.6


Скачать архив с нужной версией драйвера.
Очистить и обновить файл /etc/X11/xorg.conf;
    rm /etc/X11/xorg.conf
    dpkg-reconfigure xserver-xorg

Распаковать полученный архив:
    tar xzf nvidia-graphics-drivers-{340,390,410}.tar.gz

Перейти в созданный при распаковке каталог и установить драйверы:
    cd nvidia-graphics-drivers-{340,390,410} && sudo dpkg -i *.deb

Запретить запуск драйверов nouveau, изменив конфигурационные файлы (операция требует привилегий суперпользователя), а именно:

добавить в файл /etc/modprobe.d/blacklist.conf строчки
    blacklist nouveau
    options nouveau modeset=0

и закомментировать в файле /etc/initramfs-tools/modules строчку nouveau modeset=1
    #nouveau modeset=1

после чего выполнить команду
    update-initramfs -u -k all

Вышеуказанные действия можно выполнить следующим сценарием от имени суперпользоваетеля:

    echo blacklist nouveau >> /etc/modprobe.d/blacklist.conf
    echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist.conf
    sed -i -e "s/^[[:space:]]*nouveau[[:space:]]\+modeset[[:space:]]*=[[:space:]]*1/#nouveau modeset=1/" /etc/initramfs-tools/modules
    update-initramfs -u -k all

    Перезагрузить компьютер.

Удаление драйверов для AL 1.6
Для удаления драйверов Nvidia и восстановления работы драйверов Nouveau следует выполнить следующие действия:

Очистить и обновить файл /etc/X11/xorg.conf;
    rm /etc/X11/xorg.conf
    dpkg-reconfigure xserver-xorg

Удалить все пакеты драйверов Nvidia:
    apt remove --purge --yes --force-yes nvidia*
    apt remove --purge --yes --force-yes libnvidia*
    apt remove --purge --yes --force-yes xserver-xorg-video-n*
    for nvdeb in `dpkg -l | grep nvidia`; do
        apt remove --purge --yes --force-yes $nvdeb
    done

Восстановить оригинальные версии GL библиотек mesa и символических ссылок:
    apt install --reinstall --yes --force-yes xserver-xorg-core libgl1 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libgles2 libgles2-mesa libglew2.0 libglewmx1.13 libglu1-mesa libglvnd0 libglx-mesa0 libglx0

Удалить модули ядра Nvidea:
    for nvdriver in `find /lib/modules -type f -name "nvidia*"`; do
        echo "$nvdriver"
        mv -f $nvdriver ${nvdriver}-$$-backup
    done
    depmod -a

Удалить (или закомментировать) строки в файле /etc/modprobe.d/blacklist.conf, запрещающие запуск драйверов nouveau:

    # blacklist nouveau
    # options nouveau modeset=0

Раскомментировать в файле /etc/initramfs-tools/modules строку
    nouveau modeset=1

и выполнить команду
    update-initramfs -u -k all

После этого перезагрузить машину.



Скачать драйвера для AL 1.5

1. 387.12
2. 384.47
3. 375.20
4. 367.35
5. 361.28
6. 340.98
7. 304.137
8. 340.98
9. 390.77
10. 390.87

Модули для ядря generic-4.2.0-24, работают только с драйвером 387.12
Скачать


Установка драйверов для AL 1.5

sudo dpkg -i nvidia-drivers-astra-smolensk-1.5*.deb 


Удаление драйверов для AL 1.5

sudo dpkg --purge nvidia-drivers-astra-smolensk*.deb



FixMe

Проблема с расширениями OpenGL на мандатных уровнях, отличных от нулевого c проприетарными драйверами Nvidia (Astra Linux SE 1.4/1.5)



В каталог /etc/X11/fly-dm положить файл Xsetup

Содержимое файла Xsetup

#! /bin/sh
# Xsetup - run as root before the login dialog appears
  
#xconsole -geometry 480x130-0-0 -notify -verbose -fn fixed -exitOnFail -file /dev/xconsole &
  
if [ -x /usr/sbin/pdp-flbl ]; then
  find /dev/dri -type c -exec /usr/sbin/pdp-flbl :::ehole {} \;
  find /dev -name nvidia*  -type c -exec /usr/sbin/pdp-flbl :::ehole {} \;
  /usr/sbin/pdp-flbl -R :::ehole /proc/driver/nvidia \;
fi
  
/usr/bin/fly-dm-set-dpi.sh


Включение дискретной карты Nvidia на ноутбуках с гибридной графикой

Если требуется использовать только один видеоадаптер, проверьте BIOS ноутбука, возможно в BIOS есть опция, отключающая один из чипов. Либо используйте следующее решение.

Установите драйвер Nvidia. Проприетарный драйвер не поддерживает динамического переключения между картами, поэтому для включения карты Nvidia измените или создайте файл (если отсутствует) /etc/X11/xorg.conf со следующим содержимым:

Section "Module"
    Load "modesetting"
EndSection
Section "Device"
    Identifier "nvidia"
    Driver "nvidia"
    BusID "PCI:X:Y:Z"
    Option "AllowEmptyInitialConfiguration"
EndSection
Где "BusID" "PCI:X:Y:Z"  - PCI адрес карты Nvidia. Чтобы узнать адрес, введите команду:
lspci | grep -E "VGA|3D"
01:00.0 3D controller [0302]: NVIDIA Corporation Device [10de:139b] (rev a2)

PCI адрес находится в начале строки: BusID "PCI:01:00.0". Строка с адресом будет выглядеть так:

BusID "PCI:01:0:0"

Затем создайте файл /usr/local/bin/nvidia_switch.sh:

xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
xrandr --dpi 96 
Необходимо сделать файл исполняемым:  

chmod +x /usr/local/bin/nvidia_switch.sh
 
 
Добавьте скрипт в файл /etc/X11/fly-dm/Xsetup :


#! /bin/sh
# Xsetup - run as root before the login dialog appears
#xconsole -geometry 480x130-0-0 -notify -verbose -fn fixed -exitOnFail -file /dev/xconsole &
/usr/local/bin/nvidia_switch.sh
if [ -x /usr/sbin/pdp-flbl ]; then find /dev/dri -type c -exec /usr/sbin/pdp-flbl :::ehole {} \;; fi
/usr/bin/fly-dm-set-dpi.sh
Перезагрузите компьютер.

3 апреля 2019 г.

Основные команды PostgreSQL (psql, pg_dump, pg_restore)

Все команды запускаются под пользователем postgres (postgresql-суперпользователь)

$ su - postgres
psql -l - список баз данных.
psql -d dbname - подключение к БД dbname.
psql -f file.sql - выполнение команд из файла file.sql.
psql -U postgres -d dbname -c "CREATE TABLE test(some_id serial PRIMARY KEY, some_text text);" - выполнение команды в базе dbname.
psql -d dbname -H -c "SELECT * FROM test" -o test.html - вывод результата запроса в html-файл.

Просмотр списка и путей к конфигурационным файлам
psql > SELECT name, setting FROM pg_settings WHERE category = 'File Locations';
# или список всех конфигурационных параметров
psql > show all;
 
Список активных соединений с информацией о: pid процесса, выполняющегося запроса, пользователя, базы данных.
psql > SELECT * FROM pg_stat_activity;
 
Создание индексов
# primary key
psql > ALTER TABLE tableName ADD PRIMARY KEY (id);

# unique index
psql > CREATE UNIQUE INDEX indexName ON tableName (columnNames);
 
Команды psql
\c dbname - подсоединение к БД dbname.
\l - список баз данных.
\dt - список всех таблиц.
\d table - структура таблицы table.
\du - список всех пользователей и их привилегий.
\dt+ - список всех таблиц с описанием.
\dt *s* - список всех таблиц, содержащих s в имени.
\i FILE - выполнить команды из файла FILE.
\o FILE - сохранить результат запроса в файл FILE.
\a - переключение между режимами вывода: с/без выравнивания.

Бекап и восстановление таблиц
В PostgreSQL есть две утилиты для бекапа pg_dump и pg_dumpall. pg_dump используется для бекапа одной базы, pg_dumpall для бекапа всех баз и сервера в целом (необходимо запускать под postgresql-суперпользователем).

Создание бекапа базы mydb, в сжатом виде
pg_dump -h localhost -p 5432 -U someuser -F c -b -v -f mydb.backup mydb

Создание бекапа базы mydb, в виде обычного текстового файла, включая команду для создания БД
pg_dump -h localhost -p 5432 -U someuser -C -F p -b -v -f mydb.backup mydb

Создание бекапа базы mydb, в сжатом виде, с таблицами которые содержат в имени payments
pg_dump -h localhost -p 5432 -U someuser -F c -b -v -t *payments* -f payment_tables.backup mydb

Дамп данных только одной, конкретной таблицы. Если нужно создать резервную копию нескольких таблиц, то имена этих таблиц перечисляются с помощью ключа -t для каждой таблицы. 
pg_dump -a -t table_name -f file_name database_name

Создание резервной копии с сжатием в gz
pg_dump -h localhost  -O -F p -c -U postgres mydb | gzip -c > mydb.gz

Список наиболее часто используемых опций:
-h host - хост, если не указан то используется localhost или значение из переменной окружения PGHOST.
-p port - порт, если не указан то используется 5432 или значение из переменной окружения PGPORT.
-u - пользователь, если не указан то используется текущий пользователь, также значение можно указать в переменной окружения PGUSER.
-a, --data-only - дамп только данных, по-умолчанию сохраняются данные и схема.
-b - включать в дамп большие объекты (blog'и).
-s, --schema-only - дамп только схемы.
-C, --create - добавляет команду для создания БД.
-c - добавляет команды для удаления (drop) объектов (таблиц, видов и т.д.).
-O - не добавлять команды для установки владельца объекта (таблиц, видов и т.д.).
-F, --format {c|t|p} - выходной формат дампа, custom, tar, или plain text.
-t, --table=TABLE - указываем определенную таблицу для дампа.
-v, --verbose - вывод подробной информации.
-D, --attribute-inserts - дамп используя команду INSERT с списком имен свойств.

Бекап всех баз данных используя команду pg_dumpall.
pg_dumpall > all.sql

# проверка бекапа 

grep "^[\]connect" all.sql
\connect db1
\connect db2
В PostgreSQL есть две утилиты для восстановления базы из бекапа.
  • psql - восстановление бекапов, которые хранятся в обычном текстовом файле (plain text);
  • pg_restore - восстановление сжатых бекапов (tar);
Восстановление всего бекапа с игнорированием ошибок
psql -h localhost -U someuser -d dbname -f mydb.sql

Восстановление всего бекапа с остановкой на первой ошибке
psql -h localhost -U someuser --set ON_ERROR_STOP=on -f mydb.sql

Для восстановления из tar-арихива нам понадобиться сначала создать базу с помощью CREATE DATABASE mydb; (если при создании бекапа не была указана опция -C) и восстановить
pg_restore --dbname=mydb --jobs=4 --verbose mydb.backup

Восстановление резервной копии БД, сжатой gz
gunzip mydb.gz
psql -U postgres -d mydb -f mydb

Начиная с версии 9.2 можно восстановить только структуру таблиц с помощью опции --section
# создаем БД
CREATE DATABASE mydb2;

# восстанавливаем
pg_restore --dbname=mydb2 --section=pre-data --jobs=4 mydb.backup

Обслуживание таблицы
VACUUM ANALYZE table;

REINDEX DATABASE dbName;

REINDEX TABLE tabName;

Перенос директории с данным (data directory)
Узнать текущий путь
# способ 1
$ su - postgres
$ psql
psql > SHOW data_directory;

# способ 2
$ ps ax | grep 'postgres -D'
Создадим новую директорию, назначим пользователя и инициализируем
mkdir -p /pathto/postgresql/data
chown -R postgres:postgres /pathto/postgresql

su - postgres
initdb -D /pathto/postgresql/data
Теперь надо подправить файл с сервисом, который стартует postgresql
# под arch linux
sudo vim /etc/systemd/system/multi-user.target.wants/postgresql.service

Environment=PGROOT=/pathto/postgresql/
PIDFile=/pathto/postgresql/data/postmaster.pid

Очищение таблицы
Очищение таблицы tablename и обнуление счетчика с ID.
TRUNCATE TABLE tablename RESTART IDENTITY CASCADE;
CASCADE нужен на случай если tablename связана с другой таблицей.

Удаление NULL у поля
ALTER TABLE movies ALTER COLUMN year DROP NOT NULL;

Утилиты
pgcli утилита командной строки с авто-дополнениям и подсветкой синтаксиса.
Установка
pip install pgcli
Запуск
pgcli -U postgres -W dbname
 
Быть честным, стащил отсюда  

14 марта 2019 г.

Добавление локального принтера

Инструкция чисто, чтоб до автоматизма довести.
Добавляем пользователю группы lp и lpadmin, удаляем файл /etc/cups/client.conf. Рестартуем cups

12 марта 2019 г.

Astra Linux 1.5 и монтирование нулевого каталога в ALD

Собсна, если вы не можете зайти под  доменным пользюком, под мандатными уровнем отличным от нулевого, в систему, а в auth.log примерно такое
...монтирование нулевого каталога...ошибка...ну ты горегорюшко
Не горюй, сейчас помогу. Синхронизуй время с доменом и перезаведи комп в домен командой ald-client join domain
Еще надо проверить, если монтируются каталоги по cifs, права на домашний каталог на сервере домашних каталогов, существование нулевого каталога.
Да это вообще, что угодно может значить...

3 марта 2019 г.

Если wifi отваливается на debian подобной системе

Командой находим интерфейс командой: iw dev
Проверяем, что у нее статус power_save в on режиме: iw dev wlp6s0 get power_save
Отключаем нахер power_save: iw dev wlp6s0 set power_save off

Мне помогло

Ввод пароля пользователя в скрипте при подключении через SSH

Привет, люд. Такая вот случилась история.
Необходимо было написать скрипт, в котором нужно было подключаться к куче машин по ssh. Соответственно, на каждой fingerprint надо подтвердить и пароль пользователя ввести и наткнулся я на такое решение.

1. Устанавливаем, если не установлен, пакет expect.
sudo apt-get install expect

2. Создаем в каталоге файл /usr/bin/exp

sudo touch /usr/bin/exp

3. Помещаем туда следующие строки

#!/usr/bin/expect

set timeout 20

set cmd [lrange $argv 1 end]
set password [lindex $argv 0]

eval spawn $cmd
expect "passphrase for key"
send "$password\r";
interact



4. Теперь надо сделать этот файлик исполняемым

sudo chmod +x /usr/bin/exp

5. Вуаля и пример использования

exp <пароль> ssh -oStrictHostKeyChecking=no user@host.example.com

P.S.
Можно было бы сделать при помощи пакета sshpass, но вот у меня есть expect и нету sshpass. Так что вот так
Если есть возможность, не делайте такой велосипед, а делайте вот так
sudo apt-get install sshpass
sshpass -p <password> ssh user@host.example.com





 

4 декабря 2018 г.

Rtnetlink или как я на горячую настройки поменял

Порою, при смене настроек сети (/etc/network/interfaces) вовсе не поднимается сеть и при рестарте службы networking можно увидеть такое сообщение 


RTNETLINK answers: File exists Failed to bring up eth1. done.

Это, скорее всего, маршрутизация сбоит.


Глянем этой командой маршруты

ip route

где
Находим там неподъемный интерфейс и смело удаляем запись командой

ip route delete 192.168.1.0/24 (айпи для примера)

и перезапустить networking :


/etc/init.d/networking restart

Ну и конечно убедиться, что руки не кривые и конфиг без ошибок.
Еще, как выяснилось опытным путем, система критична в порядку поднятия интерфейсов, поэтому надо поднимать  сначала eth0 потом все остальные по порядку.

В Astra Linux 1.5 Special Edition Smolensk
Я до кучи удалил файл /etc/udev/rules.d/70-persistance-net.rules (пишу по памяти, могу ошибаться в слове persistance). И ребутнул систему. Хотя с сервером такое не пройдёт. Будте внимательны, делайте бекапы.