29
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MatsuribaTech(祭り場Tech)Advent Calendar 2023

Day 17

Virtual BoxをMacBook Air(M1, 2020)にインストールしようとしたら、CPUアーキテクチャの違いで詰まったので学び直した

Last updated at Posted at 2023-12-16

はじめに

MatsuribaTech(祭り場Tech) Advent Calendar 2023の17日目です。
Linuxの学習用に、自分の使っているPCのMacBook Air(M1, 2020)でもLinuxを手軽に使えないかなと思い、仮想化アプリケーションのVirtual Boxをインストールすることにしました。(実のところ数年前にもインストールしようとしたのですが、その時はM1Macにはインストール出来ないと言う結論に至り、数年経ったのでできるようになっているんじゃないかな〜と淡い期待を込めて再挑戦しました。)
しかし、CPUアーキテクチャがサポートしていないという旨のエラーが出て、そういえばCPUアーキテクチャ、理解があやふやな部分あるな〜と思ったのでこの際に学び直すことにしました。
結論から言うとAppleシリコンのPC(M1, M2など)にVirtual Boxをインストールすることはできます!が、少しだけコツがいります。

対象読者

  • AppleシリコンのPC(M1, M2など)にVirtual Boxをインストールしたい人
  • CPUアーキテクチャの違いがあやふやな人

Virtual BoxをMacBook Air(M1, 2020)にインストールしてみる

今回はパッケージ管理ツールのHomebrewを使ってVirtual BoxをM1Macにインストールしてみます。
ターミナルで以下のコマンドを実行します。

$ brew install --cask virtualbox

すると、このようにエラーになるかと思います。

==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-cask/8290ef01e26f1fe87714eea55b1175ae1910583b/Casks/v/virtualbox.rb
Already downloaded: /Users/leminhthientoan/Library/Caches/Homebrew/downloads/f8c3d1134ba4b9df0f82b944132ac0b0aca3df829588d69591bf17185b700836--virtualbox.rb
Error: Cask virtualbox depends on hardware architecture being one of [{:type=>:intel, :bits=>64}], but you are running {:type=>:arm, :bits=>64}.

Errorの行を見てみると、Virtual Boxはintel 64bitのCPUアーキテクチャを必要としているのに対して、あなたのPCはarm 64bitのCPUアーキテクチャを使用していますよと言われています。

CPUアーキテクチャについて整理する

上記のintel 64bit CPUアーキテクチャとかarm 64bit CPUアーキテクチャとはなんでしょうか?
CPUアーキテクチャにはx86とかx64とかx86_64とかarmとかいろいろあって混乱します。呼び方が複数あるものとかもありますし。
プログラムをインターネットからダウンロードするときなどに、自分のPCのCPUアーキテクチャに合わせてダウンロードするものを選んだりしなければいけない場面があり、今後困る可能性もあるのでここで整理しておこうと思います。

CPUアーキテクチャにはCISCとRISCの2種類が存在する

CPUには大きく分けてCISC(シスク)とRISC(リスク)の2種類が存在します。
CISC、RISCとは、命令セットアーキテクチャの設計手法を指す言葉です。もっと簡単にいうと、命令の仕方の違いを表しています。

CISC(Complex Instruction Set Computer)

日本語に訳すと「複雑命令セットコンピュータ」となります。
複雑命令とは、1つの命令が一連の複雑な処理を実行する方式です。
x86,x86_64といったものがあります。

x86

x86はPCのビット数が32bitのものを表します。
PCのビット数とは頭脳部分であるCPUが扱う情報量を示します。

x86_64

x86_64はx86を64bitに拡張させたものを表します。
他にx64,amd64とも呼ばれます。

x86アーキテクチャを採用している企業

x86のアーキテクチャを採用している企業は、有名どころだとIntel社AMD社です。
Intel社の有名な商品には、Xeon、Core、Pentium、Celeronなどがあります。
AMD社の有名な商品には、Ryzen、Athlon、Optelonなどがあります。

RISC(Reduce Instruction Set Computer)

日本語に訳すと「縮小命令セットコンピュータ」となります。
縮小命令とは、1つの命令が簡単な処理しか行わない方式です。
armはRISCです。

arm

armにはバージョンがあり,ARMv7ARMv8があります。

ARMv7

以前のバージョンのARMv7はPCのビット数が32bitのものを表します。

ARMv8

今のバージョンのARMv8はAArch32(32bit)とAArch64(64bit) の2種類があります。
LinuxではAArch32のアーキテクチャをarmと表記し,AArch64をarm64と表記しています。

armアーキテクチャを採用している企業

armのアーキテクチャを採用している企業は、有名どころだとARM社です。

自分のPCのCPUアーキテクチャを調べる

CPUアーキテクチャの整理が大体できたところで自分のPCのCPUアーキテクチャを調べてみます。

Rosettaを使用しない場合

まずはFinderから「アプリケーション」のタブを選択し、使っているターミナルアプリケーションの上で右クリックして、「情報を見る」を選択して下さい。「Rosettaを使用して開く」という項目にチェックが入っていないことを確認して下さい。

ターミナルでuname -mコマンドを実行してみて下さい。

$ uname -m
arm64

arm64と出力されたので、MacBook Air(M1, 2020)はARMv8のAArch64(64bit)であることが分かりましたね!

Rosettaを使用した場合

今度も同じようにFinderから「アプリケーション」のタブを選択し、使っているターミナルアプリケーションの上で右クリックして、「情報を見る」を選択して下さい。「Rosettaを使用して開く」という項目にチェックを入れて下さい。そして使っているターミナルアプリケーションを再起動します。

同じくターミナルでuname -mコマンドを実行してみて下さい。

$ uname -m
x86_64

x86_64と表示されたので、MacBook Air(M1, 2020)はx86_64として認識されました!
同じPCなのにCPUアーキテクチャが別のCPUアーキテクチャとして認識されました。これはなぜでしょう?それはRosettaというものを使用しているからです。

Rosettaとは

RosettaとはIntelプロセッサ搭載Mac(M1以前のMac)用に開発されたアプリケーションをAppleシリコン搭載Mac(M1, M2など)でも使えるようにするためのアプリケーションです。

このアプリケーションはユーザーが開いたり操作したりするものではなく、自動的にバックグラウンドで動いてくれるアプリケーションで、Appleシリコンで使えるようにAppを自動変換してくれます。

つまり、ターミナルアプリケーションをRosettaを使用して開くことにより、arm64アーキテクチャをx86_64アーキテクチャだと認識して表示してくれていたということですね。(実際にCPUのアーキテクチャが変換されているわけではありません。)

Rosettaを使用して再びVirtual Boxをインストールしてみる

ターミナルアプリケーションの「Rosettaを使用して開く」という項目にチェックが入ったまま最初と同じようにVirtual Boxをインストールしてみます。

$ brew install --cask virtualbox
==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-cask/8290ef0
Already downloaded: /Users/leminhthientoan/Library/Caches/Homebrew/downloads/f8c3d1134ba4b9df0f82b944132ac0b0aca3df829588d69591bf17185b700836--virtualbox.rb
==> Downloading https://download.virtualbox.org/virtualbox/7.0.12/VirtualBox-7.0
######################################################################### 100.0%
==> Installing Cask virtualbox
==> Running installer for virtualbox with sudo; the password may be necessary.
Password:
installer: Package name is Oracle VM VirtualBox
installer: choices changes file '/private/tmp/choices20231023-7920-zyiodv.xml' applied
installer: Installing at base path /
installer: The install was successful.
🍺  virtualbox was successfully installed!

今度はインストールできたようですね!
Rosettaを使用したことにより、Intelプロセッサ搭載Mac(M1以前のMac)用に開発されたアプリケーションをAppleシリコン搭載Mac(M1, M2など)でも使用できるようにAppを自動変換してくれていたのです。
現在のM1Macはx86_64アーキテクチャとして認識されていますから、問題なくインストールできたというわけです。

まとめ

少々長くなってしまいましたが、Virtual BoxをMacBook Air(M1, 2020)にインストールすることを通して、CPUアーキテクチャの違いについて整理しました。
CPUアーキテクチャはCISCとRISCの2つに大別できます。
CISCにはx86やx86_64などのCPUアーキテクチャがあり、Intel社やAMD社が有名です。
x86_64はx64やamd64と呼ばれることもあります。
RISCにはarmやarm64などのCPUアーキテクチャがあり、ARM社が有名です。

補足

今回は仮想化アプリケーションにVirtual Boxを使ってみましたが、検索してみるとAppleシリコンのMacでは、UTMという仮想化アプリケーションを使用している記事が散見されました。
ただのLinuxの学習目的ならVirtual Boxに固執する必要はなく、UTMを使ってみるのも手かもしれません。自分も時間があったら使ってみようと思います。

参考

29
12
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
29
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?