การใช้คนจรจัดเพื่อเรียกใช้เครื่องเสมือนกับสภาพแวดล้อมเดสก์ทอป


148

สภาพแวดล้อมการพัฒนา บริษัท ของฉันขึ้นอยู่กับเครื่องเสมือนจริงที่ทำงานบน VirtualBox เราต้องการย้ายไปอีกขั้นหนึ่งและใช้ความสามารถของ Vagrant เพื่อให้คำอธิบายของเครื่องในไฟล์ข้อความจากนั้นสามารถ "ยกระดับ" เครื่องนั้นโดยใช้ไฟล์ข้อความนั้น เมื่อรวมเข้ากับหุ่นกระบอกสิ่งนี้จะช่วยแก้ปัญหาที่เราทุกคนมีเวอร์ชันซอฟต์แวร์ที่แตกต่างกันใน VM

อย่างไรก็ตาม Vagrant ดูเหมือนจะเน้นไปที่การพัฒนาโฮสต์ให้เครื่องทำงานในพื้นหลัง เราจะต้องมีสภาพแวดล้อมการพัฒนาของเราภายในเครื่องดังนั้นเราจึงจำเป็นต้องมี GUI ที่สมบูรณ์ดังนั้นเมื่อพิมพ์ "คนพเนจร" เครื่องที่มีสภาพแวดล้อมเดสก์ท็อปที่สมบูรณ์ (XFCE, KDE ... ) ควรปรากฏขึ้น

จนถึงตอนนี้ฉันได้สร้างกล่อง "เบส" จากการแจกจ่าย Xubuntu แต่เมื่อฉันพิมพ์ "คนพเนจร" ถึงแม้ว่าเดสก์ท็อปจะปรากฏขึ้นและฉันสามารถเข้าสู่ระบบได้อย่างถูกต้องคนพเนจรค้างที่ข้อความ "กำลังรอให้เครื่องบู๊ตซึ่งอาจใช้เวลาสักครู่ ... " หลังจากที่ในขณะที่ Vagrant ขัดข้องเนื่องจากการหมดเวลา ดังนั้นโฟลเดอร์ที่ใช้ร่วมกันจะไม่ถูกสร้างขึ้นหรือไม่ได้ดำเนินการตัวจัดเตรียมแพ็คเกจ --puppet-

วิธีการสร้างเครื่องเสมือนด้วย GUI ที่สมบูรณ์โดยใช้คนจรจัด?


1
ฉันไม่เคยมีปัญหาในการใช้เหล่านี้กล่อง อาจมีบางอย่างผิดพลาดเมื่อคุณบรรจุกล่องฐานของคุณ
bfitzpatrick

1
จากมุมมองที่ไร้เดียงสาถ้าคุณสามารถพัฒนาบนโฮสต์และไม่ได้อยู่บน VM ทำไมคุณถึงรบกวนติดตั้ง GUI capabalities บน Vagrant VM ทำไมไม่พัฒนาบนโฮสต์
Alexander Mills

การพัฒนาบน VM อาจส่งผลให้เกิดปัญหาน้อยลงเมื่อข้อมูลจำเพาะของ VM / Vagrant ได้รับการดูแลโดยทีมพัฒนาเพื่อซิงค์กับสภาพแวดล้อมเป้าหมายของแอปพลิเคชัน คุณจะได้รับการพึ่งพาและพฤติกรรมที่คืบคลานน้อยลงซึ่งไม่ซ้ำกับอุปกรณ์ของคุณ สภาพแวดล้อมในขณะที่ไม่มีอยู่ (หรือไม่เหมือนกัน) ในสภาพแวดล้อม / การติดตั้งเป้าหมาย
Jim Dennis

จริงๆแล้วข้อสรุปของคุณไม่ถูกต้องสมบูรณ์ คนเร่ร่อนไม่ได้เกี่ยวกับการมีสภาพแวดล้อม dev นอกกรอบ คนจำนวนมากบน linux พัฒนาใน terminal และคุณสามารถทำเช่นนั้นได้ด้วยกล่องคนจรจัด ssh-only
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 เป็นรูท คุณต้องการที่จะอยู่กับ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- ทั้งหมด
  3. เพียง แต่ตอนนี้คุณควรเริ่มต้น GUI เป็นผู้ใช้ด้วยvagrant$ startxfce4&

อัปเดต 2:ลองใช้วันนี้และVBoxClient-allไม่ได้ติดตั้งสคริปต์เสมอไป หากไม่มีคุณสามารถแทนที่ด้วยสิ่งต่อไปนี้:

sudo VBoxClient - คลิปบอร์ด
sudo VBoxClient --drandanddrop
sudo VBoxClient - จอแสดงผล
sudo VBoxClient - ตรวจสอบโฮสต์รุ่น
sudo VBoxClient - ที่ไร้รอยต่อ

2
เพียงแค่ต้องการที่จะลดลงและบอกว่าหลังจากประมาณ 5 ชั่วโมงของการพยายามที่จะได้รับ xfce ในการทำงานในกล่องคนจรจัด 19 fedora วิธีการแก้ปัญหาคือการติดตั้งแพคเกจแขกเสมือน 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สามารถทำงานแบบไม่รูทบน 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ผ่านพรอมต์การเข้าสู่ระบบบน virtualbox GUI

เริ่ม xfce

startx

สิ่งนี้ใช้ได้ผลกับฉันด้วยการปรับเปลี่ยนเล็กน้อยสองครั้ง ก่อนอื่นฉันได้ 404 เมื่อค้นหากล่อง "ubuntu / vivid64" ดังนั้นฉันจึงเปลี่ยนเป็น "larryli / vivid64" ซึ่งฉันพบใน vagrantcloud ที่สองฉันต้องเพิ่มติดตั้งปลั๊กอิน vagrant-proxyconf เพื่อจัดการการตั้งค่าพร็อกซี
Daniel Watrous

2
มันกรีดร้อง -> startx ยังไม่ได้ติดตั้ง?
prayagupd

1
ไม่ดีของฉัน, อินเตอร์เน็ตไม่ได้กำหนดค่าใน VirtualBox xfce4เพื่อดาวน์โหลด ใช้งานได้แล้ว แต่มีวิธีที่ฉันสามารถข้ามการเข้าสู่ระบบและเริ่มต้นxfce4โดยค่าเริ่มต้นหรือไม่
prayagupd

@prayagupd บิตเก่า แต่คุณสามารถอธิบายเพิ่มเติมเกี่ยวกับ "อินเทอร์เน็ตไม่ได้กำหนดค่าใน virtualbox เพื่อดาวน์โหลดxfce4" หรือไม่? ฉันได้รับข้อผิดพลาดเดียวกันเมื่อรัน startx หลังจากvagrant ssh
Joshua Zastrow

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
  • หากคุณสร้างกล่องฐานคนจรจัดของคุณเองตรวจสอบให้แน่ใจว่าคุณทำตามคำแนะนำในการบรรจุหีบห่อกล่องฐานหรือพิจารณาเครื่องมือต่าง ๆ เช่นเครื่องบรรจุหีบห่อ

9

นี่คือ Vagrantfile ที่ปรับตัวเล็กน้อยสำหรับ Ubuntu 18.04 LTS / bionic - ขอบคุณคำตอบของAirและNikและบทความนี้อธิบายวิธีเพิ่มขนาดดิสก์เมื่อใช้ VirtualBox (ค่าเริ่มต้น = 10 GB)

VM รวมถึงหน้าจอเข้าสู่ระบบ LightDM

อัปเดต:ฉันได้สร้างrepo 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

การทดสอบเพิ่มเติมชี้ให้เห็นว่าอาจไม่จำเป็นต้องใช้สาย sed ตามความคิดเห็นใน repo GitHub ที่เชื่อมโยง
MZB

@ mh8020 ขอบคุณที่สร้าง repo 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

เครื่องตัดกล่องไม่มีภาพที่สร้างไว้ล่วงหน้าอีกแล้ว
krock

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

ฉันได้แก้ไขคำตอบของ 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 ด้านบนบน fedora 20 ต่อไปนี้เป็นสิ่งจำเป็นก่อนที่จะเริ่ม xfce:

  • ติดตั้ง VirtualBox-guest.rpm (หาได้จาก rpmfusion repos)
  • เครื่องหมายกลุ่ม yum ติดตั้ง 'graphic_environment'
  • 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

0

ชอบxfce4วิธีแก้ปัญหาโดย @Air เมื่อฉันประสบความสำเร็จ แต่วันนี้ฉันล้มเหลวด้วย ubuntu16.04 ฉันได้รับข้อผิดพลาดนี้:

xrdb can't open display 1

แต่โชคดีที่ฉันพบว่างานนี้:

startx

0

ฉันเห็นบางคนกำลังมีปัญหากับ "startx: ไม่พบคำสั่ง" ฉันมีสิ่งนี้ด้วยและก็เป็นเพราะฉันพยายามเข้าสู่ระบบและ startx ก่อนที่การจัดสรรครั้งแรกจะเสร็จสิ้น อดทนรอไปหยิบกาแฟ ตรวจสอบหน้าต่างคอนโซลดั้งเดิมเพื่อดูว่าเกิดอะไรขึ้นโดยเฉพาะเมื่อการเตรียมใช้งานเสร็จสิ้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.