M1MacでLinux環境を構築する〜インストール編

本記事の目的
-
本記事は、[M1MacでLinux環境を構築する](https://qiita.com/keishi04hrikzira/items/680aae7ee4310df1ac98)のインストール編です。

M1Mac上にLinuxサーバーを構築するまでの工程の一つとして、MacにLinuxサーバーをインストールし、仮想マシンを構築する部分までを行います。

実行環境などに関しては、上記のリンクをご覧ください。

前提知識
-
最初に前提知識の整理をしておきます。

釈迦に説法だという方は読み飛ばしてください。

一応、エミュレータやディストリビューションの選択理由についても軽く触れています。

### Linuxとは
Linuxとは、UnixOS(MacOSのベースになっているもの）をベースに作られているオープンソースのOSのことを指します。

原則として無料で利用でき、また複数のサーバー上に同一の環境を再現することが容易であることからサーバー用のOSとしてのシェアが年々拡大しています。

### Linuxディストリビューション
LinuxはオープンソースのOSであるため、公式版とは別に有志によって作成された改良版が存在します。

前者はLinuxカーネル、後者はLinuxディストリビューションと呼ばれており、ディストリビューションの代表例としてubuntu, Debian, CentOSなどが挙げられます。

今回はディストリビューションとしてubuntuを選択しましたが、これは探した限りでは他に情報がなかったためです。

しっかりと調べればもっと良い選択があるかもしれません。

### エミュレータとは
特定のPC向けに開発されたOSやソフトウェアを他のマシンで利用できるようにするためのソフトのことをエミュレータと呼びます。

エミュレートとは真似るという意味なので、（今回でいえば）MacでLinuxの真似をできるようにするためのソフトという意味合いでしょうか。

なお、今回はエミュレータとして`UTM`というソフトを利用しました。

選択理由としては他のエミュレータの利用例があまりなかったことに加えて、無料で利用できることが挙げられます（有料で良いのであれば、Parallels Desktop for Macなどがある）。

なお、UTMには無料で利用できるGitHub版以外にも有料のAppStore版が存在します。

後者であれば自動でアップデートされるという利点があるので、長期利用を検討中の方はそちらでも良いかもしれません。

手順
-
### Linuxディストリビューションのインストール
最初にLinuxディストリビューションをインストールします。
[こちら](https://ubuntu.com/download/server/arm)からLTS版のubuntuをインストールしてください。

把握できていれば保管場所はどこでも大丈夫です。

インストールできたら、UTMのインストールに移ります。

### UTMのインストール

HomebrewからUTMをインストールします。

UTMはGUIアプリらしいので、`--cask`オプションが必要になります。

```shell
% brew install --cask utm
```

インストール完了後にアプリを起動してください（基本的にはアプリケーションフォルダに入ります）。

以下の画面が立ち上がります。

[![Image from Gyazo](https://i.gyazo.com/3c76ce08633ec7f8321d2e1a0ee7f9cd.png)](https://gyazo.com/3c76ce08633ec7f8321d2e1a0ee7f9cd)

左側にあるサイドメニューの`linux_practice_1`は私が作成したものですが、初期状態であれば何も表示されていないはずです。

ここから仮想マシンを作成していきます。

仮想マシンの作成
-
上記画面の中央にある`Create a New Virtual Machine`を選択すると以下のような画面になります。

[![Image from Gyazo](https://i.gyazo.com/1c4a100f2b7d4e24a375b629d4c04bb6.png)](https://gyazo.com/1c4a100f2b7d4e24a375b629d4c04bb6)

画面上部に`Infomation`, `System`などのメニューが並んでいますが、このタイミングで触るのは`Infomation（仮想マシンの概要）`と`System（チップの指定とメモリの割り当て）`と`Drives（保存用のディスクの指定）`のみです。

`Infomation`の部分については本来は任意なのですが、今後複数の仮想マシンを立てた場合のことを考えると識別のために設定しておいた方が無難です。

画面上部のNameを`Virtual Machine`からお好きな仮想マシン名に、下部のStyleを`Generic`から`Operating System`に変更しておきましょう（以下参照）。

今回は一応Notes(説明文）も追加しておきました。

[![Image from Gyazo](https://i.gyazo.com/3489759570066d0a542d2286fd132767.png)](https://gyazo.com/3489759570066d0a542d2286fd132767)

次にSystemの設定を行います。

[![Image from Gyazo](https://i.gyazo.com/c938a2666b641d4d86403f63a432e276.png)](https://gyazo.com/c938a2666b641d4d86403f63a432e276)

上記の画面の`Architecture`を`x86_64`から`ARM64(aarch64)`に変更し、`Memory`も初期状態の`512MB`からある程度増やしておきましょう（今回は4096MB,以下参照）。

[![Image from Gyazo](https://i.gyazo.com/73eb5c115e1eecd192474b0029409abb.png)](https://gyazo.com/73eb5c115e1eecd192474b0029409abb)

最後にDriveに移ります。

最初は１枚目の状態になっており、右上の`New Drives`をクリックすると２枚目の状態になります。

[![Image from Gyazo](https://i.gyazo.com/5b108a89b9900c8ec9af72f090794cf0.png)]
(https://gyazo.com/5b108a89b9900c8ec9af72f090794cf0)

[![Image from Gyazo](https://i.gyazo.com/4de437ce526b0ab4ec0355164ed42118.png)](https://gyazo.com/4de437ce526b0ab4ec0355164ed42118)

ここでは保存用のディスクを２枚（１枚目と２枚目参照）作成します。

すると３枚目の状態になるので右下のsaveを選択してください。

１枚目（Interface: VirtIO, Size: 20GB)
[![Image from Gyazo](https://i.gyazo.com/b3e4f00612844bece712aeca725e911b.png)](https://gyazo.com/b3e4f00612844bece712aeca725e911b)

２枚目（Removable, Interface: USB)
[![Image from Gyazo](https://i.gyazo.com/953244755f11946a19c973580b2bd458.png)](https://gyazo.com/953244755f11946a19c973580b2bd458)

３枚目（完成図）
[![Image from Gyazo](https://i.gyazo.com/54eb26cbf2264d103d9e68e1667c8b68.png)](https://gyazo.com/54eb26cbf2264d103d9e68e1667c8b68)

ここまでの作業が完了すると、UTMの画面が以下のようになります。

[![Image from Gyazo](https://i.gyazo.com/58d630008050b8c930821acc84c52961.png)](https://gyazo.com/58d630008050b8c930821acc84c52961)

これで、Linuxディストリビューションを流し込む仮想マシンの受け皿が作られました。

なお、先ほど設定したメモリの割り当て量などに関しては、作成された仮想マシンを右クリックし、editを選択することで変更可能です。

### ISOイメージの焼き付け
先ほど作成した受け皿に、最初にダウンロードしておいたubuntuのISOイメージを流し込みます。

上記の写真の一番下にある`CD/DVD`の部分をクリックして`Browser`を選択してください。

PCのfinderが立ち上がると思うので、インストール済みのubunntuのISOイメージを選択します。

[![Image from Gyazo](https://i.gyazo.com/9290288165560e925a4c197f7bddff04.png)](https://gyazo.com/9290288165560e925a4c197f7bddff04)

この状態で仮想マシンをクリックすると立ち上がります。

[![Image from Gyazo](https://i.gyazo.com/681f8419c2c53fbdd334416c86e734a0.png)](https://gyazo.com/681f8419c2c53fbdd334416c86e734a0)

最初は上記の画面になるので、`Install Ubuntu Server`を選択してください。

しばらくすると以下の画面になります。

[![Image from Gyazo](https://i.gyazo.com/33e11d3f5139bb5f486a4b495b33e78c.png)](https://gyazo.com/33e11d3f5139bb5f486a4b495b33e78c)

表示される言語の選択画面になるので、Englishを選択します（日本語はありません）。

[![Image from Gyazo](https://i.gyazo.com/2527b84553ceba5620da79c37e5a5659.png)](https://gyazo.com/2527b84553ceba5620da79c37e5a5659)

キーボードタイプの選択画面になるので、お使いのものに合わせて選択してください。

画面中央部の`Identify keyboard`を選択するとキーボードの種類を診断してもらうことができますが、あまり精度は良くなさそうです（私はヘブライ語と診断されました）。

その後に出てくる画面については、以下の通りです。

5回連続で何も変更せずに`done`を選択します。

１枚目
[![Image from Gyazo](https://i.gyazo.com/fe41a5d2e126ae65d646b4775db05a0a.png)](https://gyazo.com/fe41a5d2e126ae65d646b4775db05a0a)

２枚目
[![Image from Gyazo](https://i.gyazo.com/0a0a2115d8bef150e30770c04ff39d0b.png)](https://gyazo.com/0a0a2115d8bef150e30770c04ff39d0b)

３枚目
[![Image from Gyazo](https://i.gyazo.com/fdb929b27dbc8774c15a1253a8093914.png)](https://gyazo.com/fdb929b27dbc8774c15a1253a8093914)

４枚目
[![Image from Gyazo](https://i.gyazo.com/d849f54905b75b365938ec74c04297a5.png)](https://gyazo.com/d849f54905b75b365938ec74c04297a5)

５枚目（ここでdoneを選択した後に出てくる画面では`Continue`を選択してください。）
[![Image from Gyazo](https://i.gyazo.com/0cde5d724b3937a7dcab70c7919bf7e1.png)](https://gyazo.com/0cde5d724b3937a7dcab70c7919bf7e1)

Continueを選択
[![Image from Gyazo](https://i.gyazo.com/caeb0deb27a7360f68b8bad246b7bc77.png)](https://gyazo.com/caeb0deb27a7360f68b8bad246b7bc77)

ユーザー名・パスワードなどを入力
[![Image from Gyazo](https://i.gyazo.com/012c6abca874fd0b921969cdf3602bfd.png)](https://gyazo.com/012c6abca874fd0b921969cdf3602bfd)

以下の2つの画面は何も変更せずにdoneを選択。

１枚目
[![Image from Gyazo](https://i.gyazo.com/7e3334587761c81c3de3738e9e730102.png)](https://gyazo.com/7e3334587761c81c3de3738e9e730102)

２枚目
[![Image from Gyazo](https://i.gyazo.com/2e2bfd8cceec93986cda039342137158.png)](https://gyazo.com/2e2bfd8cceec93986cda039342137158)

ダウンロードが始まり以下の画面になる。

一番下が`Cancel update and reboot`（一枚目）から`Reboot Now`（２枚目）に変わったらリブートを選択する。

１枚目
[![Image from Gyazo](https://i.gyazo.com/77a55160c7d3bbca78bb1fcb9cf6df29.png)](https://gyazo.com/77a55160c7d3bbca78bb1fcb9cf6df29)

２枚目
[![Image from Gyazo](https://i.gyazo.com/7f5723bae4604900e885f2fd4d331b44.png)](https://gyazo.com/7f5723bae4604900e885f2fd4d331b44)

リブートを選択してしばらくすると画面が暗転してそのまま変化しなくなります。

そうなったら画面左上の電源ボタンを押して一度仮想マシンを終了させた後に以下１枚目の画面の`CD/DVD`を選択して`Clear`に戻してください（２枚目のように`empty`になれば成功）。

１枚目
[![Image from Gyazo](https://i.gyazo.com/ca91a2d8785d6f41465fdfad1059de45.png)]
(https://gyazo.com/ca91a2d8785d6f41465fdfad1059de45)

２枚目
[![Image from Gyazo](https://i.gyazo.com/d5c20a0feb5f01b0cf381b1031878b0f.png)](https://gyazo.com/d5c20a0feb5f01b0cf381b1031878b0f)

この状態で再度仮想マシンを起動すると以下の画面が表示されます。

[![Image from Gyazo](https://i.gyazo.com/b67e16fea1be2682584a4a91800e0b59.png)](https://gyazo.com/b67e16fea1be2682584a4a91800e0b59)

ここで先ほど作成したユーザー名とパスワードを入力すると、以下のようにターミナルが操作できるようになります。

[![Image from Gyazo](https://i.gyazo.com/173072565f518416badd767b36c5cff9.png)](https://gyazo.com/173072565f518416badd767b36c5cff9)

これがいわばLinuxのターミナルを立ち上げた状態です。

では、早速このターミナルを用いて操作をしてみましょう。

### パッケージの更新

ターミナルに以下のコマンドを入力します。

```shell
$ sudo apt update
$ sudo apt upgrade
```
上記のコマンドを打つことで、仮想マシン上のソフトウェアに対して更新がかかります。

更新作業本体を担当しているのは`upgrade`の方で、`update`は更新すべきソフトウェアの有無を確認するためのコマンドになります。

また、

```shell
$ sudo apt --list-upgradable
```
と入力することで、更新可能なパッケージのリストを表示することもできます。

終わりに
-
というわけで、仮想マシンを構築し、ターミナル操作ができるようにするところまでは完了しました。

この状態でもコマンドライン操作は受け付けますが、GUI操作は全くできません。

なので[次回](https://qiita.com/keishi04hrikzira/items/1b64a876efe2bbeaeaa9)は、`Ubuntu Desktop`というアプリをインストールし、GUI操作ができるようにしていきます（ブラウジングなどの通常のPCの用途にも対応するようになります）。

コマンド操作のみで大丈夫だという場合には、いきなり[サーバー構築](https://qiita.com/keishi04hrikzira/items/c3a4e26488bdfe619505)に進んでいただいて大丈夫です。