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

时间:2013-09-18 16:59:43

标签: virtual-machine desktop virtualbox vagrant

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

然而,Vagrant似乎非常专注于在主机上开发,让机器在后台运行。我们需要在机器中拥有我们的开发环境,因此我们需要一个完整的GUI,因此当输入“vagrant up”时,应该出现具有完整桌面环境(XFCE,KDE ...)的机器。

到目前为止,我已经设法从Xubuntu发行版中创建了一个“基础”框。但是当我输入“vagrant up”时,虽然桌面出现了,并且我能够正确登录,但Vagrant会在“等待机器启动时消息”中冻结。这可能需要几分钟......“。过了一会儿,Vagrant因超时而崩溃。因此,不会创建共享文件夹,也不会执行包配置程序-puppet-。

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

10 个答案:

答案 0 :(得分:140)

我刚刚完成了三个步骤。来自askubuntu.com的建议并不适合我,所以请尝试这个简化版本:

  1. 获取基本的Ubuntu映像。您应该可以启动它并vagrant ssh
  2. 接下来,启用VirtualBox显示,默认情况下处于关闭状态。暂停VM并在Vagrantfile
    config.vm.provider :virtualbox do |vb|
      vb.gui = true
    end
  3. 中取消注释这些行
  4. 启动VM并观察新的显示窗口。现在您只需安装并启动xfce4即可。使用vagrant ssh和:
    sudo apt-get install xfce4
    sudo startxfce4&
    
  5. 就是这样,你应该进入xfce4会话。

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

    1. 不要以root身份启动GUI。你真的想留下vagrant用户。为此,您需要允许任何人启动GUI:sudo vim /etc/X11/Xwrapper.config并将其编辑为allowed_users=anybody
    2. 接下来,在启动GUI之前安装VirtualBox来宾工具。这将为您提供健康的屏幕分辨率,集成鼠标等
      $ sudo apt-get install -y xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11
      $ sudo VBoxClient-all
    3. 现在,您应该使用vagrant作为$ startxfce4&用户启动GUI。
    4. 更新2:今天尝试了这一点,并不总是安装VBoxClient-all脚本。如果它丢失了,你可以用等效的替换:

      sudo VBoxClient --clipboard
      sudo VBoxClient --draganddrop
      sudo VBoxClient --display
      sudo VBoxClient --checkhostversion
      sudo VBoxClient --seamless

答案 1 :(得分:70)

这是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

使用用户名:vagrant,密码:vagrant通过虚拟机GUI上的登录提示进行登录。

启动xfce

startx

答案 2 :(得分:10)

我的2美分

  • 确保您正在运行最新的流浪者(现在为1.3.3)+ VirtualBox(4.2.18)以避免错误。

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

    例如,在vagrantbox.es

  • 的Ubuntu 12.04精确基本框之上安装LXDE
Vagrant.configure("2") do |config|
  # ... other configuration

  config.vm.provision "shell" do |s|
    s.inline = "apt-get install lubuntu-desktop -y"
  end
end
  • 如果您构建自己的流浪基盒,请确保遵循base box包装说明或考虑使用packer(或veewee)等工具来自动构建。

答案 3 :(得分:6)

我正在使用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

答案 4 :(得分:5)

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

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

许多公开共享的Vagrant基本框都是使用Packer创建的。

答案 5 :(得分:3)

以下是针对Ubuntu 18.04 LTS / bionic的略微修改的Vagrantfile-感谢AirNik的回答,以及this post解释了使用时如何增加磁盘大小VirtualBox(默认= 10 GB)。

VM包含一个LightDM登录屏幕。

更新:我已根据此示例创建了GitHub repo,并添加了许多用于前端+后端开发的软件包。

# 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

  # https://askubuntu.com/questions/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

答案 6 :(得分:2)

https://askubuntu.com/questions/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

答案 7 :(得分:0)

在上面添加了billmalarky的评论,在Fedora 20上,在启动xfce之前需要以下内容:

  • 安装VirtualBox-guest.rpm(可从rpmfusion repos获取)
  • yum groups mark install' graphical_environment'
  • yum groupinstall" Xfce"
  • yum install xorg-x11-drivers

以下是代码:

/\A(?:[- +()0-9])\z/    # yours
/\A(?:[- +()0-9]+)\z/   # correct

答案 8 :(得分:0)

为了避免使用HTTP 404,我对Nik的回答做了一些修补:

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

答案 9 :(得分:0)

我看到一些人在“ startx:找不到命令”方面遇到问题。我也有这个原因,这是因为我在首次配置完成之前就尝试登录和启动。耐心点,去喝杯咖啡。检查原始控制台窗口,查看发生了什么情况,尤其是在配置完成后。