суббота, 30 ноября 2019 г.

LXC в контейнере LXD

How to Install and Configure LXC Container on Ubuntu 16.04

Запустить орла в lxd, полноценно перенести напрямую не удалось глючит - интерфейс.
Выбран путь хост орел lxc  орел, контейнер lxc переносим на ubuntu 18.04  в контейнере lxd


Перенос контейнера lxc в lxd на другую машину

копируем контейнер с орлом на орле
$ sudo -i
# cd /var/lib/lxc/
# tar --numeric-owner -jcvf /home/user/astra.tar.bz2 astra/




Создаем на хосте контейнер astralxc

$ lxc launch ubuntu:18.04 astralxc
$ lxc config set astralxc security.privileged true
$ lxc config set astralxc security.nesting true
$ lxc restart astralxc
$ lxc exec astralxc bash
# ip a
192.168.1.187

# apt update
# apt-get install bridge-utils

# nano /etc/netplan/50-cloud-init.yaml


# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
#  renderer: networkd
  ethernets:
    eth0:
      dhcp4: yes

  bridges:
    br0:
      interfaces: [eth0]
      addresses: [192.168.1.187/24]
      gateway4: 192.168.1.1
      mtu: 1500
      nameservers:
        addresses: [8.8.8.8]
      parameters:
        stp: true
        forward-delay: 4
      dhcp4: no
      dhcp6: no

Сохранить.

# reboot

$ lxc exec astralxc bash
# apt update 
# apt install lxc mc
# nano /etc/default/lxc-net
USE_LXC_BRIDGE="false"

# nano /etc/lxc/default.conf
lxc.net.0.type = veth
lxc.net.0.link = br0
lxc.net.0.flags = up
lxc.net.0.hwaddr = 00:16:3e:xx:xx:xx

# service lxc-net restart
# apt install lxc-templates
## lxc-create -n ubuntu -t ubuntu

# cd /var/lib/lxc/
# tar jxfv /root/astra.tar.bz2
# lxc-ls -f
# lxc-start -n astra
# lxc-stop -n astra
# lxc-destroy  -n astra
# lxc-console -n astra

$ lxc copy astralxc astralxc-cop
$ lxc start astralxc
$ lxc exec astralxc bash
# lxc-start -n astra
# lxc-console -n astra
admin
astralinux

$ sudo apt update
$ sudo dpkg-reconfigure locales
## Выбираем ru_RU.UTF-8
$ sudo dpkg-reconfigure tzdata
$ sudo apt install keyboard-configuration
## dpkg-reconfigure keyboard-configuration
$ sudo apt install mc ssh fly-data fly-wm
$ sudo reboot
$ sudo lxc-console -n astra
$ sudo apt install xrdp
$ ip a
192.168.1.189
$ sudo reboot


  

пятница, 29 ноября 2019 г.

orel установка lxd из snap

FireJail и LXC
$ sudo apt install bridge-utils
$ ip a
192.168.0.120
$ sudo nano /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback
#auto eth0
#iface eth0 inet dhcp
#iface  eth0 inet static
#address 192.168.0.120
#netmask 255.255.255.0
#gateway 192.168.0.1
#dns-nameservers 8.8.8.8

##Bridge  Name ###
auto br0

# Bridge setup
iface br0 inet static
   bridge_ports  eth0
       address 192.168.0.120
       broadcast 192.168.0.255
       netmask 255.255.255.0
       gateway 192.168.0.1
   bridge_stp off
   bridge_fd 9

Сохранить.

$ sudo reboot

Установка lxd

$ sudo apt install debian-archive-keyring dirmngr
$ sudo sh -c 'echo "deb https://mirror.yandex.ru/debian/ stretch main contrib non-free" >>  /etc/apt/sources.list'
$ sudo apt update
$ sudo apt install snapd
$ sudo snap install lxd
#$ sudo usermod -a -G lxd ${USER}
$ sudo usermod -a -G lxd  user
$ sudo -i
# lxd init
Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]:
Name of the storage backend to use (btrfs, ceph, dir, lvm, zfs) [default=zfs]: dir
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]: no
Would you like to configure LXD to use an existing bridge or host interface? (yes/no) [default=no]: yes
Name of the existing bridge or host interface: br0
Would you like LXD to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:
# exit
#$ sudo usermod -a -G lxd ${USER}

orel установка lxc

FireJail и LXC
$ sudo apt install bridge-utils
$ ip a
192.168.0.120
$ sudo nano /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback
#auto eth0
#iface eth0 inet dhcp
#iface  eth0 inet static
#address 192.168.0.120
#netmask 255.255.255.0
#gateway 192.168.0.1
#dns-nameservers 8.8.8.8

##Bridge  Name ###
auto br0

# Bridge setup
iface br0 inet static
   bridge_ports  eth0
       address 192.168.0.120
       broadcast 192.168.0.255
       netmask 255.255.255.0
       gateway 192.168.0.1
   bridge_stp off
   bridge_fd 9

Сохранить.

$ sudo reboot


$ sudo apt install lxc lxc-dev cgroup-tools
$ sudo apt install lxc-astra
$ sudo nano /etc/default/lxc-net

USE_LXC_BRIDGE="false"

$ sudo nano /etc/lxc/default.conf

lxc.network.type = veth
lxc.network.link = br0
lxc.network.flags = up
lxc.network.hwaddr = 00:16:3e:xx:xx:xx

$ sudo service lxc-net restart

$ sudo lxc-create -t astralinux-ce -n astra

$ sudo lxc-start -n astra
#$ sudo lxc-stop -n astra
#$ sudo lxc-destroy -n astra
$ sudo lxc-ls -f
NAME  STATE   AUTOSTART GROUPS IPV4         IPV6
astra RUNNING 0         -      192.168.0.73 -

$ sudo lxc-console -n astra
admin
astralinux

$ sudo nano /etc/apt/sources.list
Изменить на http
$ sudo apt update
$ sudo apt install apt-transport-https
$ sudo nano /etc/apt/sources.list
Изменить на https
$ sudo apt update
$ sudo dpkg-reconfigure locales
## Выбираем ru_RU.UTF-8
$ sudo dpkg-reconfigure tzdata
$ sudo apt install keyboard-configuration
## dpkg-reconfigure keyboard-configuration
$ sudo apt install mc ssh fly-data fly-wm
$ sudo reboot
$ sudo lxc-console -n astra

Можно заходить по xrdp

Перенос контейнера lxc в lxd на другую машину

$ sudo -i
# cd /var/lib/lxc/astra/
# tar --numeric-owner -jcvf astra.tar.bz2 rootfs/


$ lxc launch images:debian/9 ast
$ lxc stop ast
$ sudo -i
$ cd /var/lib/lxd/containers/ast
# ls -n

# rm -rf  /var/lib/lxd/containers/ast/rootfs/
# tar jxfv /home/user/astra.tar.bz2


# exit

$ nano changeuid.sh

#!/bin/bash
####################################################
# This Skript changed all uids & gids in the path of
# '$1' to BASE_UID + uid & BASE_GID + gid
#
# License: GPLv3 or higher
####################################################

###
# You might need to change these:
BASE_UID=100000
BASE_GID=100000
###

# Params & Usage
DIR=$1
if [ -z "$DIR" ] ; then
    echo "Usage: $0 <Directory>"
    exit 1
fi

IFS=$'\n'
echo "Starting chown on $DIR... this might take a while..."
for line in $(find $DIR -exec stat -c '%n:%u:%g' {} \;) ; do
    # Split line into variables
    file=$(echo $line | cut -f1 -d:)
    old_owner=$(echo $line | cut -f2 -d:)
    old_group=$(echo $line | cut -f3 -d:)

    # Skip if something went wrong
    [ -z "$file" -o -z "$old_owner" -o -z "$old_group" ] && continue

    # Calculate new uids/gids
    new_owner=$old_owner
    new_group=$old_group
    if [ $old_owner -lt $BASE_UID ] ; then
        new_owner=$(($BASE_UID + $old_owner))
    fi

    if [ $old_group -lt $BASE_GID ] ; then
        new_group=$(($BASE_GID + $old_group))
    fi

    # Set new owner/group if it has to be changed
    if [ $new_owner -ne $old_owner -o $new_group -ne $old_group ] ; then
        echo "Changing: $file from $old_owner:$old_group to $new_owner:$new_group"
        chown $new_owner:$new_group "$file"
    fi
done

echo "DONE!"
exit 0

Сохранить.

$ sudo sh changeuid.sh /var/lib/lxd/containers/ast/rootfs/

$ sudo -i
$ cd /var/lib/lxd/containers/ast
# ls -n
$ lxc copy ast astra
$ lxc config set astra security.privileged true
$ lxc start astra
$ lxc exec astra bash
# nano /etc/apt/sources.list
http
Сохранить.
# apt update
# apt install apt-transport-https
# nano /etc/apt/sources.list
https
Сохранить.
# apt update
# apt install mc ssh
# dpkg-reconfigure locales
## Выбираем ru_RU.UTF-8
# dpkg-reconfigure tzdata
# apt install keyboard-configuration
## dpkg-reconfigure keyboard-configuration
# apt install fly-data fly-wm
$ sudo reboot
$ lxc exec astra bash

# apt install fly-data fly-wm
# apt install xrdp
# restart







четверг, 28 ноября 2019 г.

lxd debian 10 сборка PostgreSQL 11.6 (По Олегу Харину)

Платформа 8.3 → Тестирование PostgreSQL, версия 10.8-13.1C 8.3.15.1565 ubuntu

Там есть патч 999-pg_dump_bin.patch. Если его применить, то можно делать pg_dump с бинарным COPY указав в командной строке опцию --binary-copy. Пример если выгружать на самом сервере:
pg_dump --binary-copy -j 4 -h /var/run/postgresql/ -U postgres -Fd uvadrev -f 1C-uvadrev-2019-12-12.backup


$ lxc image list images: > 1.txt
$ lxc launch images:debian/10 deb10h
$ lxc list
$ lxc config set deb10h security.privileged true
$ lxc restart deb10h
$ lxc exec deb10h /bin/bash
# adduser builder
# usermod -aG sudo builder

# apt update
# apt upgrade
# apt install qemu-user-static -y
# apt install mc samba sudo ssh wget -y

# poweroff
#$ lxc stop deb10h
$ lxc copy deb10h harin116

$ lxc start harin116
$ lxc list
+------------+---------+---------------------+------+------------+-----------+
| deb10harin | RUNNING | 192.168.0.36  (eth0) |      | PERSISTENT | 0         |
+------------+---------+---------------------+------+------------+-----------+


Соединяемся по ssh builder@192.168.0.36

Последовательность сборки по шагам (работаем под пользователем не root):

  1. Ставим необходимые общие пакеты для сборки:
    $ sudo apt-get install build-essential fakeroot devscripts -y
    $ wget http://apt.postgresql.org/pub/repos/apt/pool/main/p/postgresql-11/postgresql-11_11.6.orig.tar.bz2
  2. Распаковываем приложенный архив для сборки PostgreSQL:
    $ mkdir postgresql-11_11.6-1.1C
    $ cd postgresql-11_11.6-1.1C
  3. Копируем:
    $ cp ~/postgresql-11_11.6-1.1C.opt.dsc .
    $ cp ~/postgresql-11_11.6-1.1C.opt.debian.tar.xz .
    $ cp ~/postgresql-11_11.6.orig.tar.bz2 .
  4. Распаковываем и накладываем патчи:
    $ dpkg-source -x postgresql-11_11.6-1.1C.opt.dsc
  5. Переходим в каталог сборки:
    $ cd postgresql-11-11.6
  6. Устанавливаем пакеты, необходимые для сборки PostgreSQL:
    $ sudo mk-build-deps -i
    1. - для Ubuntu-сервер потребовалось ещё предварительно установить пакет equivs (для Debian нет надобности):
        $ sudo apt-get install equivs
  7. Запускаем сборку:
    $ debuild -b -uc -us
На хорошем компьютере сборка примерно 20 минут.
Если всё проходит нормально, то получаем в каталоге postgresql-11_11.6-1.1C файлы *.deb.

Для работы 1С достаточно установить:

libpq5_11.6-1.1C.opt_amd64.deb
postgresql-11_11.6-1.1C.opt_amd64.deb
postgresql-client-11_11.6-1.1C.opt_amd64.deb


Пакуем в postgresql-11_11.6-1.1C.tar.gz



#$ grep -i failed build/src/test/regress/regression.out


Установка в контейнер debian

Можно создать новый контейнер:
 

$ lxc launch images:debian/10 dpg
$ lxc config set dpg security.privileged true
$ lxc restart dpg
$ lxc exec dpg /bin/bash
# adduser user
# usermod -aG sudo user
# apt update
# apt upgrade
# apt install qemu-user-static -y
# apt install mc samba sudo ssh wget -y
# dpkg-reconfigure locales
## Выбираем ru_RU.UTF-8
# locale -a  
## timedatectl set-timezone Europe/Moscow
# dpkg-reconfigure tzdata
# apt install keyboard-configuration
## dpkg-reconfigure keyboard-configuration
Сохранить.
# poweroff
$ lxc copy dpg pgh116
$ lxc start pgh116


$ lxc list
| pgh116     | RUNNING | 192.168.0.173 (eth0) |


В контейнере со сборкой
$ scp postgresql-11_11.6-1.1C.tar.gz user@192.168.0.173:/home/user


Соединяемся по ssh user@192.168.0.173

$ ssh user@192.168.0.173
#$ sudo apt search postgresql-common
$ wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
$ sudo apt-get update
$ sudo apt install libllvm7 libxslt1.1
$ tar xvzf postgresql-11_11.6-1.1C.tar.gz
$ cd postgresql-11_11.6-1.1C
$ sudo dpkg -i libpq5_11.6-1.1C.opt_amd64.deb
$ sudo dpkg -i postgresql-client-11_11.6-1.1C.opt_amd64.deb
$ sudo dpkg -i postgresql-11_11.6-1.1C.opt_amd64.deb
$ dpkg -l | grep 11.6-1.1C | awk -F' ' '{print $2}' | sudo xargs apt-mark hold

$ sudo pg_dropcluster --stop 11 main$ sudo pg_createcluster --locale ru_RU.utf8 11 main --  --data-checksums
$ sudo pg_ctlcluster 11 main start
$ sudo -u postgres psql -U postgres -c "alter user postgres with password 'pass';"
$ sudo pg_ctlcluster 11 main stop 
$ sudo apt install nano
$ sudo nano /etc/postgresql/11/main/postgresql.conf

Добавить в конец

# DB Version: 11
# OS Type: linux
# DB Type: oltp
# Total Memory (RAM): 16 GB
# Data Storage: ssd

max_connections = 1000
shared_buffers = 4GB
temp_buffers = 256MB
work_mem = 64MB
effective_cache_size = 8GB # 4GB for 1c
maintenance_work_mem = 1GB
wal_buffers = 16MB
min_wal_size = 2GB
max_wal_size = 4GB

default_statistics_target = 100
effective_io_concurrency = 2
random_page_cost = 1.1
autovacuum = on
autovacuum_max_workers = 4
autovacuum_naptime = 20s
bgwriter_delay = 20ms
bgwriter_lru_multiplier = 4.0
bgwriter_lru_maxpages = 400
synchronous_commit = off
checkpoint_completion_target = 0.9
ssl = off
fsync = on
commit_delay = 1000
commit_siblings = 5
row_security = off
max_files_per_process = 1000
standard_conforming_strings = off
escape_string_warning = off
max_locks_per_transaction = 256
#log_min_duration_statement = 0
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
#log_autovacuum_min_duration = 0
#log_duration = on
#log_statement = all
log_destination = stderr
plantuner.fix_empty_table = 'on'
online_analyze.table_type = 'temporary'
online_analyze.verbose = 'off'

Сохранить.

$ sudo pg_ctlcluster 11 main start 

Выход.
$ sudo poweroff

#$ lxc stop pgh116
$ lxc copy pgh116 pgh116-cop
$ lxc start pgh116
Начинаем испытания.

Орел в докере

среда, 27 ноября 2019 г.

Как перенести размещенный сервер за 5 простых шагов с помощью Rsync

Как перенести размещенный сервер за 5 простых шагов с помощью Rsync
Инструкция по переносу установленной системы на другой носитель

1. Установим орла на виртуальную машину без поддержки сети.
2. Подключим сеть:
$ sudo nano /etc/network/interfaces
Добавим:
auto eth0
iface eth0 inet dhcp
Сохранить.
$ sudo reboot
$ sudo apt update
$ sudo apt upgrade
$ sudo reboot
$ sudo apt install rsync xrdp
$ sudo reboot
$ Зайти через консоль виртуальной машины
$ ip a
192.168.1.220
выйти из консоли виртуальной машины.
Зайти по xrdp



Создаем новый контейнер lxd:
$ lxc launch images:debian/9 ast
$ lxc config set ast security.privileged true
$ lxc restart ast
$ lxc exec ast bash
# passwd
# apt install nano mc rsync ssh
# nano /etc/ssh/sshd_config
PermitRootLogin yes
# service ssh reload
#reboot
$ lxc list
 | ast     | RUNNING | 192.168.1.248 (eth0) |      | PERSISTENT | 0         |

На компе с орлом (сессия ssh выйти из xrdp):
# rsync -ayz -e  ssh --exclude=/proc --exclude=/sys --exclude=/dev / root@192.168.0.244:/ --progress --stats
# rsync -auHxv –numeric-ids –exclude=/etc/fstab –exclude=/etc/network/* –exclude=/proc/* –exclude=/tmp/* –exclude=/sys/* –exclude=/dev/* –exclude=/mnt/* –exclude=/boot/* –exclude=/root/*  /* root@192.168.1.248:/
$ lxc stop ast
$ lxc copy ast astra
$ lxc start astra
$ lxc list
$ lxc exec astra bash
$ systemctl restart xrdp
3. LXD Containers run in unprivileged-mode (default) with uid/gid 100000:100000

$ nano changeuid.sh


#!/bin/bash
####################################################
# This Skript changed all uids & gids in the path of
# '$1' to BASE_UID + uid & BASE_GID + gid
#
# License: GPLv3 or higher
####################################################

###
# You might need to change these:
BASE_UID=100000
BASE_GID=100000
###

# Params & Usage
DIR=$1
if [ -z "$DIR" ] ; then
    echo "Usage: $0 <Directory>"
    exit 1
fi

IFS=$'\n'
echo "Starting chown on $DIR... this might take a while..."
for line in $(find $DIR -exec stat -c '%n:%u:%g' {} \;) ; do
    # Split line into variables
    file=$(echo $line | cut -f1 -d:)
    old_owner=$(echo $line | cut -f2 -d:)
    old_group=$(echo $line | cut -f3 -d:)

    # Skip if something went wrong
    [ -z "$file" -o -z "$old_owner" -o -z "$old_group" ] && continue

    # Calculate new uids/gids
    new_owner=$old_owner
    new_group=$old_group
    if [ $old_owner -lt $BASE_UID ] ; then
        new_owner=$(($BASE_UID + $old_owner))
    fi

    if [ $old_group -lt $BASE_GID ] ; then
        new_group=$(($BASE_GID + $old_group))
    fi

    # Set new owner/group if it has to be changed
    if [ $new_owner -ne $old_owner -o $new_group -ne $old_group ] ; then
        echo "Changing: $file from $old_owner:$old_group to $new_owner:$new_group"
        chown $new_owner:$new_group "$file"
    fi
done

echo "DONE!"
exit 0

Сохранить.

На хосте lxd:
$ lxc stop astra
$ sudo  sh  changeuid.sh /var/lib/lxd/containers/astra/rootfs/
$ lxc config set astra security.privileged false
$ lxc start astra
$ sudo -i
root@u1804:~# cd /var/lib/lxd/containers/astra/rootfs/
root@u1804:/var/lib/lxd/containers/astra/rootfs# ls -n
итого 92
drwxr-xr-x   2 100000 100000  4096 мая 25  2019 bin
drwxr-xr-x   3 100000 100000  4096 мая 25  2019 boot
drwxr-xr-x   2 100000 100000  4096 ноя 28 08:30 dev



=========================================
Установка 
$ sudo apt install fly-data fly-wm


=========================================
Установка 
$ sudo apt install fly-data fly-wm

Загрузиться на виртуальной машине с live-cd
F12 c

$ sudo add-apt-repository universe
$ sudo apt update
$ sudo apt install mc
подключиться к системе загруженной с флешки по ssh

$ sudo apt install ssh
Зададим пароль для пользователя ubuntu
$ passwd
Смотрим ip для подключения
$ ip a

$ sudo -i
# fdisk -l
Device     Boot      Start        End    Sectors Size Id Type
/dev/sda1  *          2048 4278190079 4278188032   2T 83 Linux
/dev/sdb2       976896 240252927 239276032 114.1G  7 HPFS/NTFS/exFAT

# mount /dev/sda1 /mnt/disk
# mkdir /mnt/arh
# umount /dev/sdb2
# mount /dev/sdb2 /mnt/arh

# mkdir /mnt/disk
# mount /dev/sda1 /mnt/disk
# cd /mnt/disk

# tar --xattrs --acls -czpf /mnt/arh/disk.tar.bz2 --exclude=/mnt/disk/proc --exclude=/mnt/disk/lost+found --exclude=/mnt/disk/mnt --exclude=/mnt/disk/sys --exclude=/mnt/disk/parsecfs .

$  lxc stop ast
$ sudo -i
# rm -rf /var/lib/lxd/containers/ast/rootfs/*
# cd var/lib/lxd/containers/ast/rootfs/
# tar --xattrs --xattrs-include=security.{PDPL,AUDIT,DEF_AUDIT} --acls -xzf /home/user/disk.tar.bz2
## tar --xattrs --xattrs-include=security.{PDPL,AUDIT,DEF_AUDIT} --acls -xzf /home/user/disk.tar.bz2 -С /var/lib/lxd/containers/ast/rootfs
# exit

$ lxc start ast
$ lxc list
192.168.1.248
$ lxc exec ast bash
$ systemctl restart xrdp

понедельник, 25 ноября 2019 г.

lxd запуск kvm внутри контейнера

lxc: running virtualbox inside a container
lxc: запуск virtualbox внутри контейнера
KVM in LXD · GitHub
Ubuntu 16.04: run KVM(qemu-kvm) in LXD container
VM inside container
lxc config device add CONTAINER kvm unix-char path=/dev/kvm
Cannot run KVM inside privileged container with KVM device exposed #3393 
KVM внутри контейнера LXC 
Use virt-manager as a non-root user on Linux
KVM и виртуалки с Windows 

$ lxc launch ubuntu:18.04 kvm
$ lxc exec kvm /bin/bash
## passwd
# adduser user
# usermod -aG sudo user
# apt update
## apt upgrade
## apt install qemu-user-static -y
# apt install mc samba sudo ssh wget -y
# dpkg-reconfigure locales
## Выбираем ru_RU.UTF-8 ru_RU.UTF-8 UTF-8
# locale -a  
## timedatectl set-timezone Europe/Moscow
# dpkg-reconfigure tzdata
## apt install keyboard-configuration
# dpkg-reconfigure keyboard-configuration
# nano /etc/ssh/sshd_config

#PasswordAuthentication no
PasswordAuthentication yes

Сохранить.
# systemctl reload sshd
#apt install tasksel
# tasksel --list-tasks 
# tasksel install xubuntu-core
# apt install xrdp
# systemctl enable xrdp
## apt install x2goserver x2goserver-xsession
# reboot  

#$ lxc start kvm
#$ lxc config set kvm security.privileged true
$ lxc config device add kvm kvm unix-char path=/dev/kvm mode=0777
$ lxc config device add kvm tun unix-char path=/dev/net/tun mode=0777
$ lxc config set kvm linux.kernel_modules openvswitch,nbd,ip_tables,ip6_tables,kvm
$ lxc config set kvm security.nesting true 
$ printf 'lxc.cgroup.devices.allow = c 10:232 rwm' | lxc config set kvm raw.lxc -

$ lxc config edit kvm
$ lxc restart kvm
--------------------------------------------------
Выяснить нужно или нет?
$ lxc exec kvm -- getent group kvm
kvm:x:131:user
$ lxc config device set kvm kvm gid 131
$ lxc exec kvm -- ls -lh /dev/kvm
crwxrwxrwx 1 root kvm 10, 232 Nov 28 17:21 /dev/kvm
--------------------------------------------------
В контейнере:
$ sudo apt install qemu-kvm libvirt-bin bridge-utils
$ sudo apt install virt-manager
$ ip a
inet 192.168.0.246/24

$ sudo nano /etc/netplan/01-network-manager-all.yaml
$ sudo nano /etc/netplan/50-cloud-init.yaml


# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: yes

  bridges:
    br0:
      interfaces: [eth0]
      addresses: [192.168.0.246/24]
      gateway4: 192.168.0.1
      mtu: 1500
      nameservers:
        addresses: [8.8.8.8]
      parameters:
        stp: true
        forward-delay: 4
      dhcp4: no
      dhcp6: no


Сохранить.

$ sudo netplan generate
$ sudo netplan --debug apply


#$ sudo systemctl stop networking.service
#$ sudo systemctl disable networking.service

$ sudo chgrp kvm /dev/kvm
$ sudo usermod -a -G libvirt $(whoami)
-----------------------------------------------------
Выяснить нужно или нет?
$ sudo usermod -a -G kvm $(whoami)
-----------------------------------------------------
$ sudo apt install firefox
$ virt-manager
 

 

пятница, 22 ноября 2019 г.

Как использовать удаленный рабочий стол X2Go с контейнерами LXD


Как использовать удаленный рабочий стол X2Go с контейнерами LXD

$ lxc launch ubuntu:18.04 test
$ lxc exec test /bin/bash
## passwd
# adduser user
# usermod -aG sudo user
# apt update
# apt upgrade
## apt install qemu-user-static -y
# apt install mc samba sudo ssh wget -y
# dpkg-reconfigure locales
## Выбираем ru_RU.UTF-8 ru_RU.UTF-8 UTF-8
# locale -a  
## timedatectl set-timezone Europe/Moscow
# dpkg-reconfigure tzdata
## apt install keyboard-configuration
# dpkg-reconfigure keyboard-configuration
# nano /etc/ssh/sshd_config
PasswordAuthentication yes
Сохранить.
# systemctl reload sshd
## apt install tasksel
## tasksel --list-tasks 
# tasksel install xubuntu-core
## apt install xrdp## systemctl enable xrdp
# apt install x2goserver x2goserver-xsession
# reboot 

четверг, 21 ноября 2019 г.

Автономный сервер

Создание новой файловой базы в конкретной папке и загрузка файла dt в созданную базу:

$ sudo -u usr1cv8 mkdir -p  /home/usr1cv8/file-db/
$ sudo -u usr1cv8 /opt/1C/v8.3.15.1700/x86_64/ibcmd infobase create --db-path='/home/usr1cv8/file-db/' --restore='admin.dt'

==================================================
Можно попробовать, можно пропустить.

#$ sudo su usr1cv8
#$  /opt/1C/v8.3.15.1700/x86_64/ibsrv --db-path='/home/usr1cv8/file-db/' --address=any --port=8080
Подключиться http://172.31.0.117:8080/
#$ ps aux | grep ibsrv
7393
#$ sudo kill 7393
==================================================

$ sudo nano /etc/systemd/system/ibsrv-15.1700.service

#
# ibsrv-15.1700.service
#
[Unit]
Description=1C:ibsrv
Wants=network.target
After=network.target

[Service]
#MemoryAccounting=true
#MemoryLimit=15G
Type=simple
Environment=LANG=ru_RU.UTF-8
Environment=TZ=Europe/Moscow
Environment=DATADIR=/home/usr1cv8/file-db/
PrivateTmp=yes
ExecStart=/opt/1C/v8.3.15.1700/x86_64/ibsrv --db-path='/home/usr1cv8/file-db/' --address=any --port=8080
Restart=always
RestartSec=3
User=usr1cv8

[Install]
WantedBy=multi-user.target

Сохранить.


$ sudo systemctl daemon-reload  # запускать после изменений файла
$ sudo systemctl start ibsrv-15.1700.service
$ sudo systemctl status ibsrv-15.1700.service
$ sudo  systemctl enable ibsrv-15.1700.service

Подключиться
http://172.31.0.117:8080/










вторник, 19 ноября 2019 г.

понедельник, 18 ноября 2019 г.

Creating a new LXD profile for macvlan

Macvlan против сетевого моста
Ubuntu 18.04 LXD / LXC, ZFS, Docker и расширенные сети
How to make your LXD containers get IP addresses from your LAN using macvlan
Соединение хост-контейнер с мостом Macvlan
LXC и macvlan, хост-соединение для гостя
Giving the host a macvlan
Netplan configuration examples
Назначить сеть для сети Macvlan 


Нет никакой реальной разницы в безопасности между этими двумя, так как root на хосте имеет доступ к ядру, так что вы всегда можете предположить, что он так или иначе будет иметь доступ к сетевому трафику вашего контейнера.
Основные моменты, которые следует учитывать при использовании macvlan:
  • macvlan имеет тенденцию работать быстрее, чем мосты, так как пропускает целую кучу кода ядра
  • при использовании macvlan хост не сможет связываться с контейнером через интерфейс macvlan при использовании netplan
  • Количество устройств Macvlan может быть ограничено в зависимости от аппаратных ограничений вашей физической сетевой карты.
  • отладка проблем, связанных с macvlan, может быть очень сложной, поскольку она может не работать одинаково на всех драйверах ядра и физических картах
Если ни одно из ограничений не повлияет на вашу настройку, сделайте это. Если вам нужна большая гибкость, возможность отладки или более воспроизводимая среда, мостовое соединение может быть предпочтительнее (openvswitch является одним из способов оптимизации производительности).

Исправление ошибки в ubuntu 18.04
$ sudo crontab -u root -l | { sudo cat; sudo echo "@reboot ip link set enp0s3 promisc on"; } | sudo crontab -
 
$ sudo lxd init
Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]:
Name of the storage backend to use (btrfs, dir, lvm) [default=btrfs]: dir
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]: no
Would you like to configure LXD to use an existing bridge or host interface? (yes/no) [default=no]: yes
Name of the existing bridge or host interface: enp0s3
Would you like LXD to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:


$ lxc profile show default
config: {}
description: Default LXD profile
devices:
  eth0:
    name: eth0
    nictype: macvlan
    parent: enp0s3
    type: nic
  root:
    path: /
    pool: default
    type: disk
name: default
used_by: []

Если не установили crontab
$ sudo ip link set enp0s3 promisc on 

$ lxc launch ubuntu:18.04 net1
$ lxc list
+------+---------+----------------------+------+------------+-----------+
| NAME |  STATE  |         IPV4         | IPV6 |    TYPE    | SNAPSHOTS |
+------+---------+----------------------+------+------------+-----------+
| net1 | RUNNING | 192.168.0.196 (eth0) |      | PERSISTENT | 0         |
+------+---------+----------------------+------+------------+-----------+

=================================================================
Creating a new LXD profile for macvlan
$ sudo lxd init
Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]:
Name of the storage backend to use (btrfs, dir, lvm) [default=btrfs]: dir
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]:
What should the new bridge be called? [default=lxdbr0]:
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: none
Would you like LXD to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:

$ lxc profile list
$ lxc profile copy default lanprofile
$ lxc profile show lanprofile

config: {}
description: Default LXD profile
devices:
  eth0:
    name: eth0
    nictype: bridged
    parent: lxdbr0
    type: nic
  root:
    path: /
    pool: default
    type: disk
name: lanprofile
used_by: []
Если не установили crontab
$ sudo ip link set enp0s3 promisc on
$ ip route show default 0.0.0.0/0
default via 192.168.1.1 dev enp0s3 proto dhcp src 192.168.1.111 metric 100

$ lxc profile device set lanprofile eth0 nictype macvlan
$ lxc profile device set lanprofile eth0 parent enp0s3

$ lxc profile show lanprofile
config: {}
description: Default LXD profile
devices:
  eth0:
    name: eth0
    nictype: macvlan
    parent: enp0s3
    type: nic
  root:
    path: /
    pool: default
    type: disk
name: lanprofile
used_by: []

$ lxc launch -p lanprofile ubuntu:16.04 net1
$ lxc list
+------+---------+----------------------+------+------------+-----------+
| NAME |  STATE  |         IPV4         | IPV6 |    TYPE    | SNAPSHOTS |
+------+---------+----------------------+------+------------+-----------+
| net1 | RUNNING | 192.168.1.225 (eth0) |      | PERSISTENT | 0         |
+------+---------+----------------------+------+------------+-----------+

=================================================================



$ lxc config set net1 raw.lxc 'lxc.net.0.ipv4.address = 192.168.0.150/24'
$ lxc restart net1


$ lxc config unset net1 raw.lxc
$ lxc restart net1

$ lxc config show net1

$ lxc config get net1 volatile.eth0.hwaddr
00:16:3e:ef:0d:63

Решение проблемы связи с хостом

Giving the host a macvlan

1. Одновременное использование netplan и ifupdown

$ sudo apt install ifupdown
$ sudo nano /etc/network/interfaces

# ifupdown has been replaced by netplan(5) on this system.  See
# /etc/netplan for current configuration.
# To re-enable ifupdown on this system, you can run:
#    sudo apt install ifupdown
#auto enp0s3
#iface enp0s3 inet dhcp

auto macvlan0
iface macvlan0 inet dhcp
        pre-up route del default
        pre-up route del -net 192.168.0.0 netmask 255.255.255.0
        pre-up ip link add link enp0s3 name macvlan0 type macvlan mode bridge

$ sudo reboot 

2. Установка ifupdown и удаление netplan
Замена netplan на networking Ubuntu 18.04 LTS Bionic
Change netplan renderer from networkd to NetworkManager
Ubuntu 18.04: switch back to /etc/network/interfaces

$ sudo apt install ifupdown
$ sudo nano /etc/network/interfaces

# ifupdown has been replaced by netplan(5) on this system.  See
# /etc/netplan for current configuration.
# To re-enable ifupdown on this system, you can run:
#    sudo apt install ifupdown
auto lo
iface lo inet loopback

auto enp0s3
iface enp0s3 inet dhcp

auto macvlan0
iface macvlan0 inet dhcp
        pre-up route del default
        pre-up route del -net 192.168.0.0 netmask 255.255.255.0
        pre-up ip link add link enp0s3 name macvlan0 type macvlan mode bridge


$ sudo nano /etc/netplan/01-netcfg.yaml
$ sudo mv /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.old
$ sudo reboot



суббота, 16 ноября 2019 г.

VirtualBox 5.2 & phpvirtualbox

How to Install Oracle VirtualBox On Ubuntu 18.04.2 LTS Headless Server
Disconnect reason: E: TCP: SECURITY_ERROR Error #2048
phpvirtualbox/issues
Безопасное подключение к экрану виртуалки в VirtualBox
How to install RemoteBox - Manage VirtualBox VMs Remotely
Setup Headless Virtualization Server Using KVM In Ubuntu 18.04 LTS

$ sudo sh -c 'echo "deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib" >> /etc/apt/sources.list.d/virtualbox.list'
$ wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
$ sudo apt update
#$ sudo apt install virtualbox-6.0
$ sudo apt install virtualbox-5.2
#$ sudo apt autoremove --purge virtualbox-6.0
#$ sudo apt autoremove --purge virtualbox-5.2 
$ sudo usermod -a -G vboxusers $USER
$ sudo /sbin/vboxconfig
$ sudo systemctl status vboxdrv
$ wget https://download.virtualbox.org/virtualbox/5.2.34/Oracle_VM_VirtualBox_Extension_Pack-5.2.34.vbox-extpack
$ sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.2.34.vbox-extpack
License accepted. For batch installation add
--accept-license=56be48f923303c8cababb0bb4c478284b688ed23f16d775d729b89a2e8e5f9eb
to the VBoxManage command line.

$ sudo VBoxManage extpack install --replace Oracle_VM_VirtualBox_Extension_Pack-5.2.34.vbox-extpack --accept-license=56be48f923303c8cababb0bb4c478284b688ed23f16d775d729b89a2e8e5f9eb
License accepted.
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Successfully installed "Oracle VM VirtualBox Extension Pack".


$ sudo apt install apache2 php php-mysql libapache2-mod-php php-soap php-xml
$ wget https://github.com/phpvirtualbox/phpvirtualbox/archive/5.2-1.zip
$ unzip 5.2-1.zip
$ sudo mv phpvirtualbox-5.2-1/ /var/www/html/phpvirtualbox
$ sudo chmod 777 /var/www/html/phpvirtualbox/
#$ sudo rm -R /var/www/html/phpvirtualbox
$ sudo cp /var/www/html/phpvirtualbox/config.php-example /var/www/html/phpvirtualbox/config.php
$ sudo nano /var/www/html/phpvirtualbox/config.php

var $username = 'user';
var $password = '12345';

#var $enableAdvancedConfig = true;
var $language = 'ru';
var $vrdeaddress = '192.168.1.110';
var $consoleHost = '192.168.1.110';



Сохранить

$ sudo nano /etc/default/virtualbox
VBOXWEB_USER=user
#VBOXWEB_HOST=192.168.1.110
#VBOXWEB_PORT=18083

Сохранить

$ sudo systemctl restart vboxweb-service
$ sudo systemctl restart vboxdrv
$ sudo systemctl restart apache2


http://192.168.1.110/phpvirtualbox/
admin
admin

$ wget https://mirror.yandex.ru/ubuntu-releases/16.04.6/ubuntu-16.04.6-desktop-i386.iso


Из консоли не заходит по rdp нужно исправить для каждой машины.

$ netstat -l -n
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN


$ nano /home/user/VirtualBox VMs/ubuntu/ubuntu.vbox

<VRDEProperties>
          <Property name="TCP/Address" value="127.0.0.1"/>
          <Property name="TCP/Ports" value="9000"/
 </VRDEProperties>

Заменить:

<VRDEProperties>
          <Property name="TCP/Address" value="0.0.0.0"/>
          <Property name="TCP/Ports" value="9000"/
 </VRDEProperties>

Сохранить.


$  netstat -l -n
tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN

$ sudo -u VBOXUSER -i bash -c 'VBoxManage modifyvm VM_NAME --autostart-enabled on'

пятница, 15 ноября 2019 г.

Linux & Xvfb

Linux & Xvfb
Ставим Xvfb на Debian
How to connect to X app via VNC which was by xvfb-run?

$ sudo sh -c 'echo "deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib" >> /etc/apt/sources.list.d/virtualbox.list'
$ wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
$ sudo apt update
$ sudo apt install virtualbox-6.0
#$ sudo apt autoremove --purge virtualbox-6.0
$ sudo usermod -a -G vboxusers $USER
$ sudo /sbin/vboxconfig
$ sudo reboot



$ sudo apt install xvfb dbus-x11 x11vnc
#$ Xvfb :1 -screen 0 640x480x24 -fbdir /var/tmp &
$ Xvfb :1 -screen 0 1280x1024x24 -fbdir /var/tmp &
$ x11vnc -display :1 -bg -nopw -listen 192.168.1.110 -xkb

$ export DISPLAY=:1.0
$ virtualbox


$ xvfb-run -l --server-args="-screen 0 1024x768x24" virtualbox&
$ ps x | grep Xvfb
2056 pts/0    Sl     0:01 Xvfb :1 -screen 0 1280x1024x24 -fbdir /var/tmp
 2179 pts/0    Sl     0:00 Xvfb :99 -screen 0 1024x768x24 -auth /tmp/xvfb-run.c2vfEV/Xauthority

$ xvfb-run -l --server-args=":1 -screen 0 1024x768x24"  -f /var/tmp virtualbox&
[1] 1498
$ ps x | grep xvfb
 1498 pts/0    S      0:00 /bin/sh /usr/bin/xvfb-run -l --server-args=-screen 0 1024x768x24 -f /var/tmp virtualbox
$ x11vnc -display :1 -bg -nopw -listen 192.168.0.239 -xkb


$ xvfb-run -l --server-args=":1 -screen 0 1024x768x24"  -f /var/tmp virtualbox&


user@u1804:~$ xvfb-run -l --server-args=":1 -screen 0 1024x768x24"  -f /var/tmp virtualbox&
[1] 1299
user@u1804:~$ ps x | grep xvfb
 1299 pts/0    S      0:00 /bin/sh /usr/bin/xvfb-run -l --server-args=:1 -screen 0 1024x768x24 -f /var/tmp virtualbox


XAUTHORITY=/var/tmp x11vnc -display :1 -bg -nopw -listen 192.168.0.239 -xkb
 
 
$ ls -la /dev | grep vbox 
$ sudo apt-get install --reinstall virtualbox-dkms

Запуск LMNoIpServer под linux

KVM / QEMU based Windows 10 VM - Step by Step

Astra Linux orel ce перенос из virtualbox в lxd

FireJail и LXC
How to move/migrate LXD VM to another host on Linux
Rsync an LXC container
Commands required to integrate rsync'ed LXD container from another machine #2588
Migrate LXC container to LXD (with ZFS storage)
Перенос виртуальной машины qemu-kvm в lxc-контейнер
Настройка LXD
LXD Containers run in unprivileged-mode (default) with uid/gid 100000:100000
Перенос непривилегированного контейнера LXC между пользователями

1. Вариант переноса с примонтированием диска
На  orel ce установленной в virtualbox
 
#$ sudo apt install acl
$ sudo -i
# cd /
# getfacl -R / > acl.save
# poweroff

Остановить.

Действия на хосте с lxd (на virtualbox)
Остановить orel ce  (который хотим перенести)
средствами virtualbox клонировать диск,
средствами virtualbox переместить диск в папку с lxd,
средствами virtualbox подключить клонировонанный диск к системе с lxd
Запустить систему с lxd
Примонтировать диск

$ sudo mount /dev/sdb1 /mnt/
$ ls /mnt/



$ lxc launch images:debian/9 astra
$ lxc config set astra security.privileged true
$ lxc stop astra

Удалить файловую систему контейнера:
$ sudo rm -rf /var/lib/lxd/containers/astra/rootfs/*
$ sudo -i
Примонтировать файловую систему переносимого orel ce (уже сделано)
## sudo mount /dev/sdb1 /mnt/
# cd /mnt
Скопировать файловую систему в контейнер
# cp -R * /var/lib/lxd/containers/astra/rootfs/
# exit
$ lxc start astra
$ lxc list


$ lxc exec astra /bin/bash
Внутри контейнера восстановить права
# cd /
# setfacl --restore=acl.save
# systemctl restart xrdp
# exit
Перезапустить контейнер
$ lxc restart astra


В контейнере :
$ sudo systemctl restart xrdp

На хосте
$ lxc stop astra

$ lxc snapshot astra backup
$ lxc publish astra/backup --alias astra-backup
Контейнер публикуется с отпечатком: c2b5360fc86b134ae70c912300a4ce72831ae394aa411ded13f3475b5b0a3972
$ lxc image export astra-backup astra_2019_11_27

Восстановление на другом компьютере:

$ lxc image import astra_2019_11_27.tar.gz --alias astra-backup
Образ, импортирован с снимком: c2b5360fc86b134ae70c912300a4ce72831ae394aa411ded13f3475b5b0a3972
$ lxc launch astra-backup astra
$ lxc config set astra security.privileged true
$ lxc restart astra

2. Вариант переноса  с rsync (можно на физической машине)

Создаем новый контейнер:
$ lxc launch images:debian/9 ast
$ lxc config set ast security.privileged true
$ lxc restart ast
$ lxc exec ast bash
# passwd
# apt install nano mc rsync ssh
# nano /etc/ssh/sshd_config
PermitRootLogin yes
# service ssh reload
# exit
$ lxc list
 | ast   | RUNNING | 192.168.0.244 (eth0) |      | PERSISTENT | 0         |

На компе с орлом:
# rsync -ayz -e  ssh --exclude=/proc --exclude=/sys --exclude=/dev / root@192.168.0.244:/ --progress --stats

$ lxc copy ast astra
$ lxc start astra
$ lxc exec astra bash

3. LXD Containers run in unprivileged-mode (default) with uid/gid 100000:100000

$ nano changeuid.sh


#!/bin/bash
####################################################
# This Skript changed all uids & gids in the path of
# '$1' to BASE_UID + uid & BASE_GID + gid
#
# License: GPLv3 or higher
####################################################

###
# You might need to change these:
BASE_UID=100000
BASE_GID=100000
###

# Params & Usage
DIR=$1
if [ -z "$DIR" ] ; then
    echo "Usage: $0 <Directory>"
    exit 1
fi

IFS=$'\n'
echo "Starting chown on $DIR... this might take a while..."
for line in $(find $DIR -exec stat -c '%n:%u:%g' {} \;) ; do
    # Split line into variables
    file=$(echo $line | cut -f1 -d:)
    old_owner=$(echo $line | cut -f2 -d:)
    old_group=$(echo $line | cut -f3 -d:)

    # Skip if something went wrong
    [ -z "$file" -o -z "$old_owner" -o -z "$old_group" ] && continue

    # Calculate new uids/gids
    new_owner=$old_owner
    new_group=$old_group
    if [ $old_owner -lt $BASE_UID ] ; then
        new_owner=$(($BASE_UID + $old_owner))
    fi

    if [ $old_group -lt $BASE_GID ] ; then
        new_group=$(($BASE_GID + $old_group))
    fi

    # Set new owner/group if it has to be changed
    if [ $new_owner -ne $old_owner -o $new_group -ne $old_group ] ; then
        echo "Changing: $file from $old_owner:$old_group to $new_owner:$new_group"
        chown $new_owner:$new_group "$file"
    fi
done

echo "DONE!"
exit 0

Сохранить.

На хосте lxd:
$ lxc stop astra
$ sudo  sh  changeuid.sh /var/lib/lxd/containers/astra/rootfs/
$ lxc config set astra security.privileged false
$ lxc start astra
$ sudo -i
root@u1804:~# cd /var/lib/lxd/containers/astra/rootfs/
root@u1804:/var/lib/lxd/containers/astra/rootfs# ls -n
итого 92
drwxr-xr-x   2 100000 100000  4096 мая 25  2019 bin
drwxr-xr-x   3 100000 100000  4096 мая 25  2019 boot
drwxr-xr-x   2 100000 100000  4096 ноя 28 08:30 dev



=========================================
Установка 
$ sudo apt install fly-data fly-wm

среда, 13 ноября 2019 г.

lxd debian 10

Installing GNOME Desktop Environment on Debian 10 Minimal Server
LXC

$ lxc launch images:debian/10 deb10
#$ lxc config set debian security.privileged true
#$ lxc restart deb10
$ lxc exec deb10 /bin/bash
## passwd
# adduser user
# usermod -aG sudo user
# apt update
## apt upgrade
# apt install qemu-user-static -y
# apt install mc samba sudo ssh wget -y
# dpkg-reconfigure locales
## Выбираем ru_RU.UTF-8
# locale -a  
## timedatectl set-timezone Europe/Moscow
# dpkg-reconfigure tzdata
# apt install keyboard-configuration
## dpkg-reconfigure keyboard-configuration
# apt install tasksel
# tasksel --list-tasks 
# tasksel install desktop gnome-desktop
# apt install xrdp
# systemctl enable xrdp
# reboot 

$ lxc list

Подключимся к контейнеру по ssh

Настроим в контейнере lxc

$ ip a
eth0@if19 192.168.0.207

$ sudo apt install nano
$ sudo apt-get install lxc libvirt0 libpam-cgfs bridge-utils
$ sudo nano /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback

##Bridge  Name ###
auto br0

# Bridge setup
iface br0 inet static
   bridge_ports eth0
       address 192.168.0.207
       broadcast 192.168.0.255
       netmask 255.255.255.0
       gateway 192.168.0.1
   bridge_stp off
   bridge_fd 9

Сохранить.

$ sudo reboot

Открыть файл
$ sudo nano /etc/default/lxc-net

USE_LXC_BRIDGE="false"

Сохранить.

$ sudo nano /etc/lxc/default.conf

Заменить:

lxc.net.0.type = empty

На:


lxc.net.type = veth
lxc.net.link = br0
lxc.net.flags = up
lxc.net.hwaddr = 00:16:3e:xx:xx:xx



lxc.network.type = veth
lxc.network.link = br0
lxc.network.flags = up
lxc.network.hwaddr = 00:16:3e:xx:xx:xx

Сохранить.
$ sudo nano /etc/dnsmasq.d/lxc

bind-interfaces
except-interface=br0

Сохранить.





вторник, 12 ноября 2019 г.

Запуск клиента 1С 8.3 на Debian 10 (gnome 3, wayland)

Установка lxd на Ubuntu 18.04.3 server

How To Fix “Kernel driver not installed (rc=-1908)” VirtualBox Error In Ubuntu
Oracle VirtualBox 6.0.14 Released with Linux 5.3 Support
tasksel
Ubuntu 18.04: Connect to Xfce desktop environment via XRDP
Пошаговая инструкция настройки LXD на Ubuntu 16.04
LXD, ZFS and bridged networking on Ubuntu 16.04 LTS+
Production setup

Нужно временное решение для поддержки virtualbox, поэтому выбран xubuntu-desktop
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install mc samba ssh
$ tasksel --list-tasks
$ sudo tasksel install xubuntu-desktop
$ sudo reboot

$ sudo sh -c 'echo "deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib" >> /etc/apt/sources.list.d/virtualbox.list'
$ wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
$ sudo apt update
$ sudo apt install virtualbox-6.0
#$ sudo apt autoremove --purge virtualbox-6.0
$ sudo usermod -a -G vboxusers $USER
$ sudo /sbin/vboxconfig
$ sudo reboot

$ sudo apt install -y xrdp
$ sudo systemctl enable xrdp
$ echo "xfce4-session" > ~/.xsession
$ D=/usr/share/xfce4:/usr/share/xubuntu:/usr/local/share
$ D=${D}:/usr/share:/var/lib/snapd/desktop:/usr/share
$ cat <<EOF > ~/.xsessionrc
export XDG_SESSION_DESKTOP=xubuntu
export XDG_DATA_DIRS=${D}
export XDG_CONFIG_DIRS=/etc/xdg/xdg-xubuntu:/etc/xdg:/etc/xdg
EOF

$ sudo reboot


$ sudo apt-get install bridge-utils -y
$ ip a
enp0s31f6 192.168.0.7
$ sudo nano /etc/netplan/01-netcfg.yaml

# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s31f6:
      dhcp4: yes

  bridges:
    br0:
      interfaces: [enp0s31f6]
      addresses: [192.168.0.7/24]
      gateway4: 192.168.0.1
      mtu: 1500
      nameservers:
        addresses: [8.8.8.8]
      parameters:
        stp: true
        forward-delay: 4
      dhcp4: no
      dhcp6: no

Сохранить.

$ sudo netplan generate
$ sudo netplan --debug apply


#$ sudo systemctl stop networking.service
#$ sudo systemctl disable networking.service

$ cat /proc/cpuinfo | grep MHz
$ sudo systemctl stop ondemand
$ sudo systemctl disable ondemand

$ nano tuning.sh
 
#!/bin/bash
# отключим ipv6
sudo /bin/su -c "echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.lo.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo '#net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"
#тюнинг postgresql
sudo /bin/su -c "echo 'vm.swappiness=1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_migration_cost_ns = 5000000' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_autogroup_enabled = 0' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_background_bytes = 67108864' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_bytes = 536870912' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.zone_reclaim_mode = 0' >> /etc/sysctl.conf"
#lxd
sudo /bin/su -c "echo 'fs.inotify.max_queued_events = 1048576' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'fs.inotify.max_user_instances = 1048576' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'fs.inotify.max_user_watches = 1048576' >> /etc/sysctl.conf"
sudo sysctl -p

Сохранить.

$ sudo sh tuning.sh
$ sudo reboot

$ ls -l /dev/disk/by-uuid
$ sudo nano /etc/fstab
Добавить:
UUID=5238c225-69c3-4c28-a633-5177867f0696 /home/user/Документы ext4 defaults 0 0
Сохранить.
$ sudo reboot
Конвертировать OVA в Qcow2


1. На хосте созаем файл (берем с машины где стоят драйвера)
$ sudo nano /etc/udev/rules.d/80-hasp.rules
# HASP rules
ACTION=="add|change|bind", SUBSYSTEM=="usb", ATTRS{idVendor}=="0529", ATTRS{idProduct}=="0001", MODE="664", ENV{HASP}="1", SYMLINK+="aks/hasp/%k", RUN+="/usr/sbin/aksusbd_x86_64 -c $root/aks/hasp/$kernel"
ACTION=="remove", ENV{HASP}=="1", RUN+="/usr/sbin/aksusbd_x86_64 -r $root/aks/hasp/$kernel"

# SENTINEL rules
ACTION=="add|change|bind", SUBSYSTEM=="usb", ATTRS{idVendor}=="0529", ATTRS{idProduct}=="0003", KERNEL!="hiddev*", MODE="666", GROUP="plugdev", ENV{SENTINELHID}="1", SYMLINK+="aks/sentinelhid/%k"

# SENTINEL rules для второго серверного ключа добавить еще запись:
ACTION=="add|change|bind", SUBSYSTEM=="usb", ATTRS{idVendor}=="0529", ATTRS{idProduct}=="0004", KERNEL!="hiddev*", MODE="666", GROUP="plugdev", ENV{SENTINELHID}="1", SYMLINK+="aks/sentinelhid/%k"
 

$ sudo lxd init

Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]:
Name of the storage backend to use (btrfs, dir, lvm) [default=btrfs]: dir
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]: no
Would you like to configure LXD to use an existing bridge or host interface? (yes/no) [default=no]: yes
Name of the existing bridge or host interface: br0
Would you like LXD to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:


Восстановление на другом компьютере:
$ lxc image import /home/user/backup/ud1804-2019-11-10.tar.gz.tar.gz --alias ud1804-backup
Образ, импортирован с снимком: b900ce0db69f0a57afd52af682f8a47229b5ea8fcdfa2a566af2034a6f6766a2
$ lxc launch ud1804-backup ud1804
###$ lxc image delete ud1804-backup

$ lxc image import /home/user/backup/test-2019-11-12.tar.gz.tar.gz --alias test-backup
Образ, импортирован с снимком: f442e1c60b9c1353f3d665a61e67bb7c13d383fe65af530fbe7f482699233d5

$ lxc launch test-backup test
$ lxc config device add test hasp3 unix-char path=/dev/bus/usb/001/003 mode=0777
$ lxc config device add test hasp4 unix-char path=/dev/bus/usb/001/004 mode=0777
$ lxc config device add test aks2 unix-char path=/dev/aks/hasp/1-3 mode=0777
$ lxc config device add test aks3 unix-char path=/dev/aks/hasp/1-4 mode=0777
$ lxc config set test security.privileged true
$ printf 'lxc.cgroup.devices.allow = c 198:* rwm' | lxc config set test raw.lxc -

$ lxc config edit test
$ lxc restart test

 lxd на хосте


 lxd на virtualbox



Поскольку сервер рабочий настроим архивацию

Настройка Ubuntu 16.04, 18.04

$ sudo nano /etc/default/rsync

#RSYNC_ENABLE=false
RSYNC_ENABLE=true

Сохранить.


$ sudo nano /etc/rsyncd.conf

[backup]
# destination directory to copy

path = /home/user/Документы/Archiv
# hosts you allow to access

hosts allow = 192.168.0.0/255.255.255.0
hosts deny = *
list = true
uid = root
gid = root
read only = false

Сохранить.

$ sudo mkdir -p  /home/user/Документы/Archiv
$ sudo systemctl enable rsync
$ sudo systemctl start rsync


Под windows 10 :


Можно сделать один скрипт и поставить в планировщик:

ping -n 1 -w 1000 192.168.0.7|Find "TTL=">nul
If %ErrorLevel%==0 (
CALL d:\Copy\rsync\rsync -avz  /cygdrive/D/Copy/Archiv 192.168.0.7::backup --progress
) Else (
Echo Offline
)

 $ sudo crontab -e
@reboot fstrim / -v

debian 9/10 установка lxd

Вообщем работает, но очень долго останавливался.
 "A stop job is running for Service for snap application lxd.daemon" running for 10 minutes at shutdown #39

$ sudo apt install bridge-utils
$ sudo nano /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
#auto enp0s31f6
#iface enp0s31f6 inet dhcp
#iface enp0s31f6 inet static
#address 192.168.0.5
#netmask 255.255.255.0
#gateway 192.168.0.1
#dns-nameservers 8.8.8.8
#auto enp0s31f6

##Bridge  Name ###
auto br0

# Bridge setup
iface br0 inet static
   bridge_ports enp0s31f6
       address 192.168.0.5
       broadcast 192.168.0.255
       netmask 255.255.255.0
       gateway 192.168.0.1
   bridge_stp off
   bridge_fd 9

$ sudo apt install snapd

$ sudo snap install lxd


$ sudo usermod -a -G lxd ${USER}
$ sudo -i
# lxd init
Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]:
Name of the storage backend to use (btrfs, ceph, dir, lvm) [default=btrfs]: dir
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]: no
Would you like to configure LXD to use an existing bridge or host interface? (yes/no) [default=no]: yes
Name of the existing bridge or host interface: br0
Would you like LXD to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:

====================================================================
Обратить внимание что при перезагрузке после установки snap lxd зависает на 10 минут
 "A stop job is running for Service for snap application lxd.daemon" running for 10 minutes at shutdown #39
Проблема пока не решена

Обход #39  убить lxd shutdown руками:
$ sudo systemctl stop snap.lxd.daemon
$ ps aux | grep lxd
$ ps aux | grep "lxd shutdown"
root      1196  0.0  0.7 209872 29380 ?        Sl   11:33   0:00 lxd shutdown
$ sudo kill 1196
$ sudo reboot
or
$ sudo poweroff

$ sudo journalctl -u snap.lxd.daemon
====================================================================

$ lxc launch images:debian/10 deb10 

Восстановление на другом компьютере:
$ lxc image import /home/user/ud1804-2019-11-10.tar.gz.tar.gz --alias ud1804-backup
Образ, импортирован с снимком: b900ce0db69f0a57afd52af682f8a47229b5ea8fcdfa2a566af2034a6f6766a2
$ lxc launch ud1804-backup ud1804
### lxc image delete ud1804-backup

$ lxc image import /home/user/test-2019-11-12.tar.gz.tar.gz --alias test-backup
Image imported with fingerprint: f442e1c60b9c1353f3d665a61e67bb7c13d383fe65af530fbe7f482699233d56

$ lxc launch test-backup test




Лучшие ссылки lxd

Перевод: Стефан Грабер (Stéphane Graber) автор серии статей про LXC.
Stéphane Graber's website Skip to content
форум Linux Containers
Блог simos
The LXD tutorials of Simos
Linux FAQs with Answers
Linux-контейнеры дома: зачем и как
LXD, ZFS и мостовые сети в Ubuntu 16.04 LTS +
Ubuntu 18.04 LXD / LXC, ZFS, Docker и расширенные сети
How to set the timezone in LXD containers
How to make your LXD containers get IP addresses from your LAN using macvlan
Соединение хост-контейнер с мостом Macvlan
LXC и macvlan, хост-соединение для гостя
Giving the host a macvlan
Production setup
Оркестрация проектов с помощью менеджера контейнеров LXD
Маршрутизация LXC и доступ к контейнерам по SSH
Работа с бэкапами контейнеров
Проброс USB-принтера в контейнер LXD
cyberciti.biz
ww.cyberciti.biz Tag: LXD 

How to add multi-line raw.lxc configuration to LXD