使用流浪者在桌面环境下运行虚拟机

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

然而,Vagrant 似乎非常专注于主机的开发,让机器处于后台。我们需要在机器内部设置开发环境,因此我们需要一个完整的 GUI,所以当输入“流浪者向上”时,应该会出现一个具有完整桌面环境(XFCE,KDE...)的机器。

到目前为止,我已经设法从 Xubuntu 发行版创建了一个“基本”框。但是,当我输入“流浪者”,虽然桌面出现,我能够正确登录,流浪者冻结在信息“等待机器启动。这可能需要几分钟... ...”。过了一会儿,流浪汉就崩溃了。因此,不会创建共享文件夹,也不会执行包提供者-傀儡-。

如何创建一个完整的图形用户界面使用流浪虚拟机?

111439 次浏览

我的两分钱

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

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

    例如,从 流浪汉箱子中将 LXDE 安装在 Ubuntu 12.04精确基础框的顶部

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


config.vm.provision "shell" do |s|
s.inline = "apt-get install lubuntu-desktop -y"
end
end
  • 如果您建立自己的流浪者基地框,请确保您遵循 底盒包装指示或考虑工具,如包装(或维威) ,以自动建立。

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

我只用了三个步骤就搞定了。askubuntu.com的建议对我来说不太管用,所以试试这个简化版本:

  1. 获得一个基本的 Ubuntu 映像工作。你应该能够启动它和 vagrant ssh
  2. 接下来,启用 VirtualBox 显示,默认情况下它是关闭的:
    提供程序: Virtual box do | vb | 
    Vb.gui = 真
    完
    
  3. 启动 VM 并观察新的显示窗口。现在您只需要安装并启动 xfce4。使用 vagrant ssh及:
    Sudo apt-get install xfce4
    Sudo startxfce4 & 
    

如果这是您第一次运行这个 Ubuntu 环境,那么您需要在安装 xfce4之前运行以下命令:

sudo apt-get update

就是这样,你应该降落在 xfce4会议。

更新: 为了获得更好的体验,我推荐这些改进:

  1. 不要以 root 用户启动 GUI。您真的希望保持 vagrant用户身份。为此,您需要允许任何人启动 GUI: sudo vim /etc/X11/Xwrapper.config并将其编辑为 allowed_users=anybody
  2. 接下来,安装启动 GUI 的 VirtualBox 客户工具 之前。这将给你一个健康的屏幕分辨率,集成鼠标等。
    $sudo apt-get install-y xfce4 viralbox-guest-dkms viralbox-guest-utils viralbox-guest-x11
    $sudo VBoxClient-all 
  3. 只有现在您才应该使用 $ startxfce4&作为 vagrant用户启动 GUI。

更新2: 今天尝试了这个方法,但是并不总是安装 VBoxClient-all脚本。如果缺少,可以替换为等价的:

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

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

与其共享开发人员用来构建和运行虚拟机的 Vagrantfile,不如使用一个用于创建虚拟机映像的 packer template (json)。开发人员下载或复制图像并在本地运行,直接在 VB 中运行,而无需自己构建。

许多公共共享的流浪者基本框是用 Packer 创建的。

对于上面的 bilmalarky 评论,在启动 xfce 之前,在 Fedora 20上需要做以下工作:

  • 安装 VirtualBox-guest.rpm (可从 rpmusion repos 获得)
  • 百胜餐饮集团标志着安装’图形 _ 环境’
  • Yum groupinstall“ Xfce”
  • 百胜安装 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

以下是 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通过 Virtual box GUI 上的登录提示。

从 xfce 开始

startx

我使用的是 ubuntu 桌面映像,它与两个虚拟机提供商窗口显示器很好地工作。

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

就像@Air 的 xfce4解决方案。我曾经成功过,但是今天我的 ubuntu16.04失败了。我得到了这个错误:

xrdb can't open display 1

但幸运的是,我找到了这个方法:

startx

下面是一个稍微改编过的适用于 Ubuntu 18.04 LTS/bionic 的 Vagrantfile ——感谢 空气尼克的回答,以及 这篇文章解释如何在使用 VirtualBox 时增加磁盘大小(默认值为10GB)。

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


# 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

为了避免 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

我看到一些人在“ startx: command not found”上遇到了问题。我也有这个,这是因为我尝试登录和 startx 之前,第一次配置已经完成。耐心点,去喝杯咖啡。检查原始控制台窗口,以查看正在发生的情况,特别是当配置完成时。