1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Virtualbox + VagrantがApple Silicon環境に対応してた

Posted at

ちょっと前、久しぶりにVagrant + VirtualboxをMac(Apple Silicon)で利用しようとしたところ、そもそもVirtualboxがApple Siliconで動かなくなったりしてて困っていたのですが、最近ふと「VitualboxがApple Siliconに対応した!」という記事を見つけたので(とはいえ対応したのは2025年の1月なので少し前ですが。7.1.xから)、もしやVagrantも対応したかなと思って試してみました。

結論

とりあえず動きました。

Vagrantfile

動作確認だけなので、Claude先生にVagrantfileを生成してもらいました。

Claude先生も最初「VirtualboxはApple Siliconに対応してない!」と言っていたのですが、URLを貼り付けて教えるとコードを書いてくれました。

以下の内容でとりあえず動きました。私の用途に合わせ、

  • Ubuntu Server 24.x
  • ネットワークはブリッジ

となっています。

Vagrant.configure("2") do |config|
  # Ubuntu Server 24.04 LTS (ARM64版) - Apple Silicon対応
  config.vm.box = "net9/ubuntu-24.04-arm64"
  config.vm.box_version = "1.1"
  
  # VirtualBoxプロバイダーの設定(Apple Silicon対応)
  config.vm.provider "virtualbox" do |vb|
    # メモリ設定(2GB)
    vb.memory = "2048"
    
    # CPU設定(2コア)
    vb.cpus = 2
    
    # GUI無効化(サーバー用途)
    vb.gui = false
    
    # 仮想マシン名
    vb.name = "ubuntu-server-24.04-arm64"
    
    # Apple Silicon対応の設定
    vb.customize ["modifyvm", :id, "--firmware", "efi"]
    vb.customize ["modifyvm", :id, "--chipset", "ich9"]
  end
  
  # ネットワーク設定
  # ブリッジネットワーク(物理ネットワークに直接接続)
  # Wi-Fi接続の場合(最も一般的)
  config.vm.network "public_network", bridge: "en0"
  
  # 有線LAN接続の場合は以下をコメントアウト
  # config.vm.network "public_network", bridge: "en1"
  
  # または、複数のインターフェースを指定して自動選択
  # config.vm.network "public_network", bridge: ["en0", "en1"]
  
  # ポートフォワーディング(SSH)- ブリッジでも念のため設定
  config.vm.network "forwarded_port", guest: 22, host: 2222, host_ip: "127.0.0.1", id: "ssh"
  
  # SSH設定の最適化
  config.ssh.forward_agent = true
  config.ssh.insert_key = false
  config.ssh.shell = "bash -l"
  
  # 共有フォルダ設定
  # 基本設定:Vagrantfileがあるディレクトリ → /vagrant
  config.vm.synced_folder ".", "/vagrant", type: "virtualbox"
  
  # 追加の共有フォルダ例(必要に応じてコメントアウト)
  # config.vm.synced_folder "~/Documents", "/home/vagrant/documents", type: "virtualbox"
  # config.vm.synced_folder "~/Desktop", "/home/vagrant/desktop", type: "virtualbox"
  # config.vm.synced_folder "./shared", "/shared", type: "virtualbox"
  
  # プロビジョニング(段階的に実行)
  # 段階1: 基本更新
  config.vm.provision "shell", name: "basic-update", inline: <<-SHELL
    echo "=== Step 1: Basic System Update ==="
    export DEBIAN_FRONTEND=noninteractive
    
    # パッケージリストの更新
    apt update
    
    # 必要最小限のパッケージのみインストール
    apt install -y curl wget
    
    echo "Basic update completed"
  SHELL
  
  # 段階2: SSH設定の最適化
  config.vm.provision "shell", name: "ssh-config", inline: <<-SHELL
    echo "=== Step 2: SSH Configuration ==="
    
    # SSH設定の最適化
    cat >> /etc/ssh/sshd_config <<EOF

# Vagrant optimizations
UseDNS no
GSSAPIAuthentication no
EOF
    
    # SSHサービスの再起動
    systemctl restart sshd
    
    echo "SSH configuration completed"
  SHELL
  
  # 段階3: 追加パッケージとシステム設定
  config.vm.provision "shell", name: "additional-setup", inline: <<-SHELL
    echo "=== Step 3: Additional Setup ==="
    export DEBIAN_FRONTEND=noninteractive
    
    # システム全体のアップグレード(非対話式)
    apt upgrade -y
    
    # 基本的なパッケージのインストール
    apt install -y git vim htop tree build-essential
    
    # タイムゾーンの設定
    timedatectl set-timezone Asia/Tokyo
    
    # ネットワーク情報の表示
    echo "=== Network Configuration ==="
    ip addr show
    echo ""
    
    # システム情報の表示
    echo "=== Ubuntu Server 24.04 LTS Setup Completed ==="
    lsb_release -a
    uname -a
    echo "================================================"
  SHELL
end

Windowsでも利用でき、一般的な仮想化ソフトが利用したかったので対応してくれて感謝です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?