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

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

lxc: running virtualbox inside a container
lxc: запуск virtualbox внутри контейнера

Хочется пользовать virtualbox (нужна кросплатформенность).
Не хочется работать с командной строкой.
Не хочется нарушать лицензионное соглашение, для работы через web.
Не хочется тянуть на хост desktop.

Virtualbox 6.0 стоит на хосте

user@lxd:~$  ls -la /dev | grep vbox
crw-rw----   1 root   vboxusers  10,  55 ноя 25 10:00 vboxdrv
crw-rw-rw-   1 root   root       10,  54 ноя 25 10:00 vboxdrvu
crw-rw----   1 root   vboxusers  10,  53 ноя 25 10:00 vboxnetctl
drwxr-x---   3 root   vboxusers       60 ноя 25 10:00 vboxusb
 
$ lxc launch ubuntu:18.04 vbx
$ 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  


 
На хосте:
user@lxd:~$  ls -la /dev | grep vbox
crw-rw----   1 root   vboxusers  10,  55 ноя 25 10:00 vboxdrv
crw-rw-rw-   1 root   root       10,  54 ноя 25 10:00 vboxdrvu
crw-rw----   1 root   vboxusers  10,  53 ноя 25 10:00 vboxnetctl
drwxr-x---   3 root   vboxusers       60 ноя 25 10:00 vboxusb

$ lxc start vbox
$ lxc config device add vbox vboxdrv unix-char path=/dev/vboxdrv mode=0777
$ lxc config device add vbox vboxdrvu unix-char path=/dev/vboxdrvu mode=0777
$ lxc config device add vbox vboxnetctl unix-char path=/dev/vboxnetctl mode=0777

#$ lxc config set vbox linux.kernel_modules overlay
$ lxc config set vbox security.privileged true 
##$ printf 'lxc.cgroup.devices.allow = c 10:53 rwm' | lxc config set vbox raw.lxc -
$ lxc config edit vbox
  raw.lxc:
    lxc.cgroup.devices.allow = c 10:53 rwm
    lxc.cgroup.devices.allow = c 10:54 rwm
    lxc.cgroup.devices.allow = c 10:55 rwm 
$ lxc restart vbox

В контейнере:
Установка virtualbox в контейнере:
$ 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 mknod -m 600 /dev/vboxdrv c 10 55
##$ sudo mknod -m 600 /dev/vboxdrvu c 10 54
##$ sudo mknod -m 600 /dev/vboxnetctl c 10 53
##$ sudo /sbin/vboxconfig
$ sudo reboot

Отдельная тема проброс hasp, пока не нужно.


$ lxc config edit vbox

### Это представление конфигурации в формате YAML.
### Любая строка начинающаяся с '#' будет игнорироваться.
###
### Пример конфигурации:
### name: container1
### profiles:
### - default
### config:
###   volatile.eth0.hwaddr: 00:16:3e:e9:f8:7f
### devices:
###   homedir:
###     path: /extra
###     source: /home/user
###     type: disk
### ephemeral: false
###
### Обратите внимание, что имя отображается, но не может быть изменено

architecture: x86_64
config:
  image.architecture: amd64
  image.description: ubuntu 18.04 LTS amd64 (release) (20191114)
  image.label: release
  image.os: ubuntu
  image.release: bionic
  image.serial: "20191114"
  image.version: "18.04"
  linux.kernel_modules: overlay
  raw.lxc: lxc.cgroup.devices.allow = c 10:53 rwm lxc.cgroup.devices.allow = c 10:54
    rwm lxc.cgroup.devices.allow = c 10:55 rwm
  security.privileged: "false"
  volatile.base_image: 028d045b1cfcfc8a69cc68674557bd86e015c0ba4bb5c3d6851043f785963728
  volatile.eth0.hwaddr: 00:16:3e:bd:b1:04
  volatile.idmap.base: "0"
  volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":100000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":tru$
  volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":100000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgi$
  volatile.last_state.power: RUNNING
devices:
  vboxdrv:
    mode: "0777"
    path: /dev/vboxdrv
    type: unix-char
  vboxdrvu:
    mode: "0777"
    path: /dev/vboxdrvu
    type: unix-char
  vboxnetctl:
    mode: "0777"
    path: /dev/vboxnetctl
    type: unix-char
ephemeral: false
profiles:


user@lxd:~$ lxc copy vbox vbox-cop
user@lxd:~$ lxc snapshot vbox backup
user@lxd:~$ lxc publish vbox/backup --alias vbox-backup
Контейнер публикуется с отпечатком: 4cc93c869cbc7686c61eabed84579b8386f4633ac1e0f7b7493c87274d000815
user@lxd:~$ lxc image export vbox-backup vbox

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

$ lxc image import vbox --alias vbox-backup
Образ, импортирован с снимком: 4cc93c869cbc7686c61eabed84579b8386f4633ac1e0f7b7493c87274d000815
$ lxc launch vbox-backup vbox

Комментариев нет:

Отправить комментарий