Використання бродяжних для запуску віртуальних машин із середовищем робочого столу


148

Середовище розвитку моєї компанії базується на віртуальних машинах, що працюють на VirtualBox. Ми хотіли б просунутись на крок далі і використати можливості Vagrant, щоб опис машини був у текстовому файлі, а потім змогли "підняти" цю машину на основі цього текстового файлу. У поєднанні з маріонеткою це вирішило б нам проблему того, що в VM встановлені різні версії програмного забезпечення.

Однак Вагрант, здається, дуже сфокусований, щоб розвиватися на хості, відпускаючи машину на задньому плані. Нам потрібно мати наше середовище розробки в машині, тому нам знадобиться повний графічний інтерфейс, тому при введенні "бродячого" машина з повним середовищем робочого столу (XFCE, KDE ...) повинна з'являтися.

Поки мені вдалося створити "базовий" ящик з дистрибутива Xubuntu. Але коли я набираю "vagrant up", хоча з'являється робочий стіл, і я в змозі належним чином увійти, Vagrant зависає при повідомленні "Зачекання завантаження машини. Це може зайняти кілька хвилин ...". Через деякий час Vagrant виходить з ладу через тайм-аут. Таким чином, спільні папки не створюються, а також провайдер пакету -puppet- не виконується.

Як створити віртуальну машину з повним графічним інтерфейсом за допомогою vagrant?


1
У мене ніколи не було проблем із використанням цих коробок . Можливо, щось пішло не так, коли ви упаковували базову коробку.
bfitzpatrick

1
з наївної точки зору, якщо ви можете розвиватись на хості, а не на VM, чому ви турбуєтесь про встановлення можливостей графічного інтерфейсу на Vgrant VM? чому б не розвинутись у господаря?
Олександр Міллз

Розвиток на VM може спричинити менше проблем, коли команда розробників підтримує специфікації VM / Vagrant, щоб вони синхронізувалися з цільовим середовищем програми. Ви отримаєте менше повзучих залежностей і поведінки, які є унікальними для вашого розробника. навколишнє середовище, поки він не присутній (або не є ідентичним) у цільовому середовищі / установці.
Джим Денніс

Насправді ваш висновок не зовсім правильний. Бродячий - не про те, щоб розробити середовище розробників поза коробкою. Багато людей на Linux розробляються в терміналі. І ви можете це зробити чудово за допомогою бродячих коробок лише для ssh.
erikbwork

Відповіді:


150

Мені це вдалося в основному три кроки. Поради від askubuntu.comмене не дуже спрацювали, тому спробуйте цю спрощену версію:

  1. Отримайте базовий образ роботи Ubuntu. Ви повинні мати можливість завантажувати це і vagrant ssh.
  2. Далі увімкніть дисплей VirtualBox, який вимкнено за замовчуванням. Зупиніть VM і коментуйте ці рядки в Vagrantfile:
    config.vm.provider: virtualbox do | vb |
      vb.gui = вірно
    кінець
  3. Завантажте VM та спостерігайте за новим вікном дисплея. Тепер вам просто потрібно встановити і запустити xfce4. Використання vagrant sshта:
    sudo apt-get install xfce4
    sudo startxfce4 &
    

Якщо ви вперше запускаєте це середовище Ubuntu, перед установкою xfce4 вам потрібно буде виконати таку команду:

sudo apt-get update

Ось це, вам слід висадитись на xfce4сеанс.

Оновлення: для кращого досвіду рекомендую такі вдосконалення:

  1. Не запускайте GUI як root. Ви дуже хочете залишитися vagrantкористувачем. Для цього вам потрібно дозволити будь-кому запускати графічний інтерфейс: sudo vim /etc/X11/Xwrapper.configі відредагувати його allowed_users=anybody.
  2. Далі встановіть гостьові інструменти VirtualBox перед запуском GUI. Це дасть вам здорову роздільну здатність екрана, інтегровану мишу тощо.
    $ sudo apt-get install -y xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11
    $ sudo VBoxClient-все
  3. Лише тепер слід запустити графічний інтерфейс vagrantкористувача, як користувач $ startxfce4&.

Оновлення 2: Пробували це сьогодні, і VBoxClient-allсценарій не завжди встановлюється. Якщо він відсутній, його можна замінити на еквівалент:

sudo VBoxClient --clipboard
sudo VBoxClient --draganddrop
sudo VBoxClient - дисплей
sudo VBoxClient --checkhostversion
sudo VBoxClient - безшовний

2
Просто хотів зайти і сказати, що приблизно через 5 годин спроби змусити xfce працювати у вітронному вікні fedora 19, рішенням було встановити гостьовий пакет virtualbox (yum встановити VirtualBox-guest.x86_64). Без цього пакету xorg чомусь не міг отримати доступ до монітора моєї машини. Отже ... Спасибі людино!
billmalarky

При спробі цього я виявив, що код кроку 3 повинен міститися в Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| ... doneметоді Vagrantfile.
neontapir

1
Ви можете забезпечити Xwindows і т.д. від Vagrant, включивши у свій Vagrantfile таке: #Provision X Windows, VirtualBox Guest, curl та інші пакети apt config.vm.provision: shell,: inline => "sudo apt-get install -y curl xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11 "config.vm.provision: shell,: inline =>" sudo VBoxClient-all "</code>
Farrukh Najmi

2
Всього глав вгору , що Ubuntu 16,04 , здається, не дозволить почати XFCE що не корінь таким чином: bugs.launchpad.net/ubuntu/+source/xinit/+bug/1562219
Air

1
Схоже, startxfce4можна запустити не-root на Ubuntu 16.04 (xenial) після встановленняxserver-xorg-legacy
Laurence Billingham,

74

Ось чудова відповідь Air у формі а Vagrantfile

Vagrant.configure(2) do |config|
  # Ubuntu 15.10
  config.vm.box = "ubuntu/wily64"

  config.vm.provider "virtualbox" do |vb|
    # Display the VirtualBox GUI when booting the machine
    vb.gui = true
  end

  # Install xfce and virtualbox additions
  config.vm.provision "shell", inline: "sudo apt-get update"
  config.vm.provision "shell", inline: "sudo apt-get install -y xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11"
  # Permit anyone to start the GUI
  config.vm.provision "shell", inline: "sudo sed -i 's/allowed_users=.*$/allowed_users=anybody/' /etc/X11/Xwrapper.config"
end

Для запуску vm

vagrant up

Увійти з ім’ям користувача:, vagrantпароль: vagrantчерез підказку для входу в графічний інтерфейс віртуальної скриньки.

Початок xfce

startx

Це працювало для мене з двома невеликими налаштуваннями. Спочатку я отримав 404 під час пошуку вікна "ubuntu / vivid64", тому я змінив його на "larryli / vivid64", який знайшов у vagrantcloud. По-друге, мені довелося додати встановити плагін vagrant-proxyconf для управління налаштуваннями проксі.
Даніель Ватрос

2
Це кричить -> старткс наразі не встановлений ??
prayagupd

1
Мій поганий, Інтернет не був налаштований у virtualbox для завантаження xfce4. Він працює зараз, але чи є спосіб я пропустити логін і запустити xfce4за замовчуванням?
prayagupd

@prayagupd трохи старий, але чи можете ви детальніше розповісти про те, що "Internet не налаштований у virtualbox для завантаження xfce4"? Я отримую таку ж помилку, коли запускаю startx післяvagrant ssh
Джошуа Застров

1
У мене виникають проблеми, де в моєму віртуальному вікні написано "startx: команда не знайдена". Може хтось допоможе мені діагностувати це?
OOProg

11

Мої 2 копійки

  • Переконайтеся, що ви використовуєте останню бродягу (1.3.3 зараз) + VirtualBox (4.2.18), щоб уникнути помилок.

  • Ви можете використовувати скрипт оболонки або вбудовану команду для встановлення середовища робочого столу або диспетчера вікон з невеликою вагою

    Наприклад, встановіть LXDE поверх Ubuntu 12.04 Точне базове вікно з vagrantbox.es

Vagrant.configure("2") do |config|
  # ... other configuration

  config.vm.provision "shell" do |s|
    s.inline = "apt-get install lubuntu-desktop -y"
  end
end
  • Якщо ви створюєте свої власні бродячі базові коробки, переконайтесь, що дотримуєтесь інструкцій щодо упаковки базової коробки або розглядайте такі інструменти, як пакувальник (або veewee) для автоматизації збирання.

9

Ось трохи адаптований Vagrantfile для Ubuntu 18.04 LTS / bionic - завдяки відповідям Air та Nik та в цьому дописі пояснюється, як збільшити розмір диска при використанні VirtualBox (за замовчуванням = 10 ГБ).

VM включає екран входу в LightDM.

Оновлення: Я створив репортаж GitHub з цього прикладу і додав багато програмних пакетів для розробки фронтенд + бекенд.

# Optional - enlarge disk:
#vagrant plugin install vagrant-disksize
vagrant up
vagrant reload
# After reboot, the VM screen should show the LightDM login screen.
# Log in as user "vagrant", password "vagrant".
Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu/bionic64"
  # Optional - enlarge disk (will also convert the format from VMDK to VDI):
  #config.disksize.size = "50GB"

  config.vm.provider "virtualbox" do |vb|
    # Display the VirtualBox GUI when booting the machine
    vb.gui = true
  end

  # /ubuntu/1067929/on-18-04-package-virtualbox-guest-utils-does-not-exist
  config.vm.provision "shell", inline: "sudo apt-add-repository multiverse && sudo apt-get update"

  # Install xfce and virtualbox additions.
  # (Not sure if these packages could be helpful as well: virtualbox-guest-utils-hwe virtualbox-guest-x11-hwe)
  config.vm.provision "shell", inline: "sudo apt-get install -y xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11"
  # Permit anyone to start the GUI
  config.vm.provision "shell", inline: "sudo sed -i 's/allowed_users=.*$/allowed_users=anybody/' /etc/X11/Xwrapper.config"

  # Optional: Use LightDM login screen (-> not required to run "startx")
  config.vm.provision "shell", inline: "sudo apt-get install -y lightdm lightdm-gtk-greeter"
  # Optional: Install a more feature-rich applications menu
  config.vm.provision "shell", inline: "sudo apt-get install -y xfce4-whiskermenu-plugin"
end

У Ubuntu 16.04 мені довелося встановити xserver-xorg-legacy, щоб файл XWrapper.config існував / використовувався.
MZB

Подальше тестування дозволяє припустити, що лінія седу може не знадобитися відповідно до коментаря у пов'язаному репортажі Github.
МЗБ

@ mh8020 Дякуємо за створення репортажу github. Дуже чистий і простий у догляді, саме те, що мені було потрібно. Лише одне питання: я не можу заставити звук у гостьовій системі Ubuntu працювати! Будь-яка ідея, що може ввімкнути це у вашому поточному налаштуванні?
timmwagener

7

Я використовую зображення на робочому столі ubuntu, він прекрасно працює з двома моніторами на Windows з провайдером віртуальної коробки.

Vagrant.configure(2) do |config|
  config.vm.box = "box-cutter/ubuntu1404-desktop"

  config.ssh.forward_agent = true

  config.vm.network "forwarded_port", guest: 8080, host: 8080
  config.vm.network "forwarded_port", guest: 3000, host: 3000


  config.vm.synced_folder "../../git", "/home/vagrant/git"

  config.vm.provider "virtualbox" do |vb|
    vb.gui = true
    vb.customize ["modifyvm", :id, "--monitorcount", "2"]
    vb.memory = "2048"
  end
end

3
vb.customize ["modifyvm", :id, '--audio', 'dsound', '--audiocontroller', 'ac97']щоб отримати звук від vm (якщо потрібно)
Igonato

короб-різак більше не надає попередньо вбудовані зображення.
крок

5

Ви можете також розглянути можливість використання програми Packer для створення зображень VirtualBox для розробників.

Замість того, щоб ділитися файлом Vagrantfile, який розробники використовують для створення та запуску VM, у вас буде шаблон пакета (json), який використовується для створення образу VM. Розробники завантажують або копіюють зображення та запускають його локально, безпосередньо в VB, не потребуючи їх самостійного створення.

Багато опублікованих базових коробок Vagrant створено разом із Packer.


2

/ubuntu/300799/does-ubuntu-12-04-lts-32-bit-have-graphic-user-interface/300805#300805

Після установки робочого столу ви також хочете встановити GDM, який дозволить завантажуватися безпосередньо в графічне середовище. Ви також захочете налаштувати його.

То, може, додати це?

Vagrant::Config.run do |config|
    config.vm.provision :shell, :inline => "sudo apt-get install gdm"
    config.vm.provision :shell, :inline => "sudo dpkg-reconfigure gdm"
end

1
... або більш легкий xdm
geekQ

1

Я трохи промацував відповідь Ніка, щоб уникнути HTTP 404:

Vagrant.configure(2) do |config|
  # Ubuntu 15.10
  config.vm.box = "bento/ubuntu-18.04"

  config.vm.provider "virtualbox" do |vb|
    # Display the VirtualBox GUI when booting the machine
    vb.gui = true
  end

  # Install xfce and virtualbox additions
  config.vm.provision "shell", inline: "sudo apt-get update"
  config.vm.provision "shell", inline: "sudo apt-get install -y xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11"
  # Permit anyone to start the GUI
  config.vm.provision "shell", inline: "sudo sed -i 's/allowed_users=.*$/allowed_users=anybody/' /etc/X11/Xwrapper.config"
end

0

Додавши до коментаря billmalarky вище, на fedora 20 перед початком xfce необхідно було:

  • Встановити VirtualBox-guest.rpm (доступно з repmfusion repos)
  • yum groups позначте встановити "graphical_environment"
  • yum groupвстановити "Xfce"
  • yum встановити драйвери xorg-x11

Ось код:

config.vm.provision "shell", inline: <<-SHELL        
    #Install Virtual Box guest additions from rpmfusion repos
    cd /vagrant
    yum install -y rpmfusion-free-release-20.noarch.rpm 
    yum install -y rpmfusion-nonfree-release-20.noarch.rpm
    yum update -y
    yum install -y VirtualBox-guest

    #Add XFCE desktop to fedora server
    yum groups mark install 'graphical_environment'
    yum groupinstall -y "Xfce"
    yum install -y xorg-x11-drivers   
SHELL

0

Як і xfce4рішення від @Air. Колись я мав успіх, але сьогодні я провалився з ubuntu16.04. Я отримав цю помилку:

xrdb can't open display 1

Але, на щастя, я виявив, що це працює:

startx

0

Я бачу, у деяких людей виникають проблеми з "startx: команда не знайдена". У мене теж було це, і це було тому, що я намагався ввійти в систему і startx до того, як перше резервування завершилося. Будьте терплячі, зайдіть каву. Перевірте оригінальне вікно консолі, щоб побачити, що відбувається, особливо після завершення роботи.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.