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 :