hashicorp / vagrant

Vagrant is a tool for building and distributing development environments.
https://www.vagrantup.com
Other
26.22k stars 4.43k forks source link

Vagrant crash while booting up with virtualbox 7.0 on M1 macOS #13504

Open egel opened 2 weeks ago

egel commented 2 weeks ago

Debug output

https://gist.github.com/egel/477d9adbdd084d1acf3b49cddc547444

Expected behavior

The default installation of Vagrant + VirtualBox 7.0 on M1 Sonoma 14.6.1, and later initializing default project with:

vagrant init hashicorp/bionic64
vagrant box add hashicorp/bionic64
vagrant up

Actual behavior

While spinning up the virtual machine, the virtualbox throws an error then quit unexpectedly

image

→ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'hashicorp/bionic64' version '1.0.282' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection reset. Retrying...
The guest machine entered an invalid state while waiting for it
to boot. Valid states are 'starting, running'. The machine is in the
'aborted' state. Please verify everything is configured
properly and try again.

If the provider you're using has a GUI that comes with it,
it is often helpful to open that and watch the machine, since the
GUI often has more helpful error messages than Vagrant can retrieve.
For example, if you're using VirtualBox, run `vagrant up` while the
VirtualBox GUI is open.

The primary issue for this error is that the provider you're using
is not properly configured. This is very rarely a Vagrant issue.

Reproduction information

Vagrant version

→ vagrant -v
Vagrant 2.4.1

Host operating system

macOS Sonoma 14.6.1

→ uname -a
Darwin forge 23.6.0 Darwin Kernel Version 23.6.0: Mon Jul 29 21:14:30 PDT 2024; root:xnu-10063.141.2~1/RELEASE_ARM64_T6000 arm64

Guest operating system

virtualbox

Steps to reproduce

  1. Fresh installation of virutalbox brew install --cask virtualbox@beta
  2. Fresh installation of vagrant brew install vagrant
  3. Setup fresh project

    vagrant init hashicorp/bionic64
    vagrant box add hashicorp/bionic64
    vagrant up

Vagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
  # The most common configuration options are documented and commented below.
  # For a complete reference, please see the online documentation at
  # https://docs.vagrantup.com.

  # Every Vagrant development environment requires a box. You can search for
  # boxes at https://vagrantcloud.com/search.
  config.vm.box = "hashicorp/bionic64"
  config.vm.box_version = "1.0.282"

  # Disable automatic box update checking. If you disable this, then
  # boxes will only be checked for updates when the user runs
  # `vagrant box outdated`. This is not recommended.
  # config.vm.box_check_update = false

  # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine. In the example below,
  # accessing "localhost:8080" will access port 80 on the guest machine.
  # NOTE: This will enable public access to the opened port
  # config.vm.network "forwarded_port", guest: 80, host: 8080

  # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine and only allow access
  # via 127.0.0.1 to disable public access
  # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"

  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  # config.vm.network "private_network", ip: "192.168.33.10"

  # Create a public network, which generally matched to bridged network.
  # Bridged networks make the machine appear as another physical device on
  # your network.
  # config.vm.network "public_network"

  # Share an additional folder to the guest VM. The first argument is
  # the path on the host to the actual folder. The second argument is
  # the path on the guest to mount the folder. And the optional third
  # argument is a set of non-required options.
  # config.vm.synced_folder "../data", "/vagrant_data"

  # Disable the default share of the current code directory. Doing this
  # provides improved isolation between the vagrant box and your host
  # by making sure your Vagrantfile isn't accessible to the vagrant box.
  # If you use this you may want to enable additional shared subfolders as
  # shown above.
  # config.vm.synced_folder ".", "/vagrant", disabled: true

  # Provider-specific configuration so you can fine-tune various
  # backing providers for Vagrant. These expose provider-specific options.
  # Example for VirtualBox:
  #
  config.vm.provider "virtualbox" do |vb|
    # display the virtualbox gui when booting the machine
    vb.gui = true

    # customize the amount of memory on the vm:
    vb.memory = "1024"

    # custom CPU
    vb.cpus = 6
  end
  #
  # View the documentation for the provider you are using for more
  # information on available options.

  # Enable provisioning with a shell script. Additional provisioners such as
  # Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
  # documentation for more information about their specific syntax and use.
  # config.vm.provision "shell", inline: <<-SHELL
  #   apt-get update
  #   apt-get install -y apache2
  # SHELL
end
Paul-weqe commented 17 hours ago

Same problem...but on Linux.

Any solution so far @egel ?

mandysidana commented 13 hours ago

The only version of Virtual box compatible with Apple Silicon is 7.0.8 beta. Virtualbox announced that there won't be any further M1 packages on the 7.0 branch following 7.0.8, which is not helpful. I guess the real issue is lack of support for Virtualbox 7.1

egel commented 5 hours ago

@Paul-weqe Unfortunately, not. A while ago, I tried around a dozen combinations installing VirtualBox via brew (v6, beta->v7.0) and also looking on the VirtualBox official website (v7.0. v7.1) - I've mentioned this in another thread), but all were not successful. The same error appeared, or VirtualBox simply crashed.

@mandysidana yes, thanks! The same version was kindly shown to me by another user in this thread. I've tried it but also no results. I've also noticed by looking at the VirtualBox website they do not plan to support 7.0 and only future releases, so I do not even bother using the old version when after the first try vagrant dies.

By the way, VirtualBox 7.0 and 7.1 work fine, and seem to be stable. Creating images and operating on them is done without any problems - at least I haven't noticed anything suspicious so far.