Créer une machine virtuelle Linux sous MacOS et processeur Apple Silicon

J'utilise beaucoup VirtualBox avec Vagrant pour la gestion de mes machines virtuelles sous MacOS. Malheureusement il n'est pas compatible avec les processeurs Apple. Vagrant utilise par défaut ce fournisseur, dommage. L'astuce va alors être d'utiliser le fournisseur qemu...

Prérequis

Installation de qemu, vagrant et du plugin fournisseur qemu pour vagrant :

1brew install qemu vagrant
2vagrant plugin install vagrant-qemu

Vagrantfile

On veut booter une box standard du nuage Vagrant. Il faut juste s'assurer qu'elle possède une version pour le fournisseur qemu.

https://app.vagrantup.com/centos/boxes/7

Si une version libvirt est mentionné, ça marchera avec qemu. C'est le cas pour cette box.

 1Vagrant.configure(2) do |config|
 2  config.vm.box = "centos/7"
 3
 4  config.vm.provider "qemu" do |qe|
 5    qe.arch = "x86_64"
 6    qe.machine = "q35"
 7    qe.cpu = "max"
 8    qe.net_device = "virtio-net-pci"
 9  end
10end

Boot de la machine virtuelle

 1$ vagrant up --provider qemu
 2Bringing machine 'default' up with 'qemu' provider...
 3==> default: Box 'centos/7' could not be found. Attempting to find and install...
 4    default: Box Provider: libvirt
 5    default: Box Version: >= 0
 6==> default: Loading metadata for box 'centos/7'
 7    default: URL: https://vagrantcloud.com/centos/7
 8==> default: Adding box 'centos/7' (v2004.01) for provider: libvirt
 9    default: Downloading: https://vagrantcloud.com/centos/boxes/7/versions/2004.01/providers/libvirt.box
10Download redirected to host: cloud.centos.org
11    default: Calculating and comparing box checksum...
12==> default: Successfully added box 'centos/7' (v2004.01) for 'libvirt'!
13==> default: Checking if box 'centos/7' version '2004.01' is up to date...
14==> default: Importing a QEMU instance
15    default: Creating and registering the VM...
16    default: Successfully imported VM
17==> default: Warning! The QEMU provider doesn't support any of the Vagrant
18==> default: high-level network configurations (`config.vm.network`). They
19==> default: will be silently ignored.
20==> default: Starting the instance...
21==> default: Waiting for machine to boot. This may take a few minutes...
22    default: SSH address: 127.0.0.1:50022
23    default: SSH username: vagrant
24    default: SSH auth method: private key
25    default: Warning: Connection reset. Retrying...
26    default: Warning: Remote connection disconnect. Retrying...
27    default:
28    default: Vagrant insecure key detected. Vagrant will automatically replace
29    default: this with a newly generated keypair for better security.
30    default:
31    default: Inserting generated public key within guest...
32    default: Removing insecure key from the guest if it's present...
33    default: Key inserted! Disconnecting and reconnecting using new SSH key...
34==> default: Machine booted and ready!
35==> default: Rsyncing folder: /Users/lagune/tmp/ => /vagrant

Connexion en SSH

1$ vagrant ssh
2[vagrant@localhost ~]$ cat /etc/redhat-release
3CentOS Linux release 7.8.2003 (Core)

Conclusion

On a bien réussi à créer une VM Linux (arch x86_64) avec un système hôte sous Apple Silicon.

Attention, on ne parle pas alors de virtualisation mais d'émulation.

Les gens d'Asahi Linux, qui savent de quoi ils parlent (ils rétroanalysent la puce Apple pour parvenir à installer Linux sur cette architecture), ont un fil de discussion intéressant sur le sujet :

https://twitter.com/asahilinux/status/1513037664379113481

comments powered by Disqus