使用Vagrant在桌面环境中运行虚拟机


148

我公司的开发环境基于在VirtualBox上运行的虚拟机。我们想进一步前进,并使用Vagrant的功能在文本文件中包含机器的描述,然后能够基于该文本文件“举起”该机器。结合木偶,这将解决我们每个人在VM中安装了不同软件版本的问题。

但是,Vagrant似乎非常专注于在主机上进行开发,从而使计算机处于后台。我们将需要在计算机中拥有我们的开发环境,因此我们需要一个完整的GUI,因此在键入“无用功”时,应显示具有完整桌面环境(XFCE,KDE ...)的计算机。

到目前为止,我已经设法通过Xubuntu发行版创建了一个“基本”框。但是,当我键入“ vagrant up”时,尽管出现了桌面,并且我能够正确登录,但Vagrant冻结了消息“正在等待计算机启动。这可能需要几分钟...”。过了一会儿,Vagrant崩溃了,因为超时了。因此,不会创建共享文件夹,也不会执行软件包供应商-puppet-。

如何使用vagrant创建具有完整GUI的虚拟机?


1
使用这些盒子我从来没问题。打包基本盒时可能出了点问题。
bfitzpatrick

1
从幼稚的角度来看,如果您可以在主机上而不是在VM上进行开发,为什么还要在Vagrant VM上安装GUI功能呢?为什么不在主机上发展?
亚历山大·米尔斯

当开发团队维护VM / Vagrant规范以使其与应用程序的目标环境同步时,在VM上进行开发可以减少问题的产生。您将获得更少的爬行依赖和行为,这对您的开发人员是唯一的。目标环境/安装中不存在(或不相同)的环境。
Jim Dennis

实际上,您的结论并不完全正确。Vagrant并不是要在开发环境之外进行开发。Linux上的许多人都在终端上进行开发。而且,您可以使用仅ssh的无用信息框来做到这一点。
erikbwork 2016年

Answers:


150

我只需要三个步骤就可以完成此工作。来自askubuntu.com我的建议对我而言并不奏效,因此请尝试以下简化版本:

  1. 获得基本的Ubuntu映像。您应该能够启动它和vagrant ssh
  2. 接下来,启用VirtualBox显示,默认情况下处于关闭状态。停止VM并取消注释以下行Vagrantfile
    config.vm.provider:virtualbox做| vb |
      vb.gui = true
    结束
  3. 引导VM并观察新的显示窗口。现在,您只需要安装并启动xfce4。使用vagrant ssh和:
    须藤apt-get install xfce4
    须藤startxfce4&
    

如果这是您首次运行此Ubuntu环境,则在安装xfce4之前需要运行以下命令:

sudo apt-get更新

就是这样,您应该参加一个xfce4会议。

更新:为了获得更好的体验,我建议进行以下改进:

  1. 不要以root用户身份启动GUI。您确实想保留vagrant用户。为此,您需要允许任何人启动GUI: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-all
  3. 只是现在你应该启动GUI的vagrant用户,用$ startxfce4&

更新2:今天尝试过此VBoxClient-all脚本,但并不总是安装该脚本。如果丢失,则可以用等效项替换:

须藤VBoxClient-剪贴板
sudo VBoxClient-拖放
须藤VBoxClient --display
须藤VBoxClient --checkhostversion
sudo VBoxClient-无缝

2
只是想说一下,经过大约5个小时的尝试使xfce在fedora 19无家可归的盒子中工作,解决方案是安装virtualbox来宾软件包(yum install VirtualBox-guest.x86_64)。没有该软件包,由于某种原因,xorg无法访问我的主机监视器。所以...谢谢你!
billmalarky 2014年

尝试此操作时,我发现第3步代码需要包含在Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| ... doneVagrantfile方法中。
neontapir 2014年

1
您可以通过在Vagrantfile中包含以下内容来从Vagrant设置Xwindows等:#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,2016年

2
刚抬起头,Ubuntu的16.04似乎并没有让这样开始XFCE作为非root:bugs.launchpad.net/ubuntu/+source/xinit/+bug/1562219
航空

1
看起来startxfce4可以在安装后在Ubuntu 16.04(xenial)上以非root用户身份运行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

启动虚拟机

vagrant up

通过virtualbox GUI上的登录提示使用用户名:vagrant,密码vagrant登录。

启动xfce

startx

这对我来说做了两个小的调整。首先,我在寻找“ ubuntu / vivid64”框时得到了404,因此我将其更改为在vagrantcloud上找到的“ larryli / vivid64”。其次,我不得不添加安装vagrant-proxyconf插件来管理代理设置。
Daniel Watrous

2
尖叫->当前未安装startx?
prayagupd

1
不好意思,没有在virtualbox中配置Internet以下载xfce4。现在可以使用,但是有没有办法我可以跳过登录并xfce4默认启动?
祈祷

@prayagupd有点旧,但是您可以详细说明“未在virtualbox中配置Internet来下载xfce4”吗?在之后运行startx时,我遇到了同样的错误vagrant ssh
Joshua Zastrow

1
我遇到了一些麻烦,我的虚拟盒子上显示“ startx:找不到命令”。有人可以帮我诊断吗?
OOProg

11

我的2美分

  • 确保您正在运行最新的无业游民(现在是1.3.3)+ VirtualBox(4.2.18),以避免错误。

  • 您可以使用shell脚本或内联命令来安装桌面环境或轻型窗口管理器

    例如,从vagrantbox.es在Ubuntu 12.04 Precise基本框的顶部安装LXDE。

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

这是针对Ubuntu 18.04 LTS / bionic的略微改编的Vagrantfile-感谢AirNik的回答,并且本文说明了使用VirtualBox时如何增加磁盘大小(默认= 10 GB)。

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存储库中的注释,可能不需要sed行。
MZB

@ 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']
虚拟机中

箱式切割机不再提供预制图像。
krock

5

您也可以考虑使用Packer创建VirtualBox映像供开发人员使用。

与共享开发人员用来构建和运行其VM的Vagrantfile相比,您将拥有一个用于创建VM映像的打包程序模板(json)。开发人员可以直接在VB中下载或复制映像并在本地运行,而无需自己构建。

Packer创建了许多公共共享的Vagrant基本框。



1

我为Nik的答案做了一些修补,以避免使用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的评论中,在启动xfce之前,在fedora 20上还需要执行以下操作:

  • 安装VirtualBox-guest.rpm(可从rpmfusion仓库中获得)
  • 百胜集团标记安装“ graphical_environment”
  • 百胜集团安装“ Xfce”
  • yum安装xorg-x11-drivers

这是代码:

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:not found”问题。我也有这个原因,这是因为我在首次配置完成之前就尝试登录和启动。耐心点,去喝杯咖啡。检查原始控制台窗口以查看正在发生的情况,尤其是在配置完成后。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.