x86アーキテクチャーのUbuntu Desktopの起動速度改善など

# UTM上のx86アーキテクチャーのUbuntu Desktopをまともに動く速さにした
https://qiita.com/Shimo5296/items/b1bb5d9e1db69cdcd059

この記事でx86アーキテクチャー向けのUbuntu DesktopのVertual Boxのovaイメージからqcow2形式に変換し、M1 Mac上のUTMで起動できるようにした。しかし、この記事通りに起動できたとしても動作がとても遅く、使い物にならない使用感である。今回はこれを実用的に使えるように色々やっていく。私の場合はsshでホストからUbuntuに接続して、作業できればいいので、Desktopを削除し、Ubuntu Server的にすることを最終目標とする。念の為GUIを使いたい場合の時のためにGUIありでもある程度使える速さになるように調整してみる。

## 目次
- 前提
- 目標
- UTMの設定を調整
- vboxadd.serviceのuninstall
- Desktopの削除
- 結果

## 前提
- ホスト：M1 Mac
- 仮想OS：Ubuntu Desktop 20.04
- 仮想マシン：UTM
- ホストとUbuntu間のssh接続の設定済み
- [ovaをqcow2に変換し、UTMで起動するまで](https://qiita.com/Shimo5296/items/b1bb5d9e1db69cdcd059)のUTMの設定（デフォルト）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634748/83d3a23a-9a55-5e8f-ee83-d2025d27776c.png)

- Ubuntuの起動、動作が非常に遅い

## 起動時間の計測

以下のコマンドで起動時間を確認
```bash
$ systemd-analyze
```

結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634748/f3d3877e-6d93-6226-06b0-729e7650206c.png)

| 項目 | 時間 |
|:-:|:-:|
| kernel | 9.640s |
| userspace | 1min 34.797s |
| 合計 | 1min 44.437s |

考察
結果を見るとuserspaceの時間がとてもかかっていることが分かる。

## 目標
- 起動時間の高速化
- 動作の改善
- Desktopを削除しUbuntu Serverにする

## UTMの設定を調整
##### 調整する項目
- メモリ
    - デフォルトでは4GBなので6GBもしくは8GBなどにする
    - 今回は６GBにする
- CPU
:::note info
UTMはゲストOSの対応アーキテクチャーがarm以外の場合、マルチコア駆動に対応していない。なので、デフォルトではシングルコアの資源しか利用できない。UTMには`Force Multicore`という設定があり、強制的にマルチコア駆動にすることができる。
:::

##### 1. `CPU Cores`項目でコア数を指定
今回は`6core`

##### 2. `Force Multicore`にチェックをつける

:::note alert
`Force Multicore`は動作が不安定になる可能性がある。
:::

設定後、以下のようになる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634748/4d5fa7ca-ee5a-7166-c325-aa9224c3d298.png)

### 起動時間の計測

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634748/792c522c-62a9-6c4b-0b95-97b99493bac9.png)

| 項目 | 時間 |
|:-:|:-:|
| kernel | 7.475s |
| userspace | 44.377s |
| 合計 | 51.852s |

明らかに速くなっていることが分かる。

## vboxadd.serviceのuninstall
Vertual BoxのGUIの最適化のために入っているvboxadd.serviceが起動時に時間を食っているので消しておく。
##### 1. vboxadd.serviceのバージョンを確認
```
$ systemctl status vboxadd.service
```
　以下のような結果が出る。この場合は`VBoxGuestAdditions-6.1.26`である。
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634748/484bdaa4-4342-962b-8400-6b0c40211106.png)
##### 2. `.iso`ファイルのダウンロード
Ubuntu上のブラウザで[download.virtualbox.org/virtualbox](https://download.virtualbox.org/virtualbox)にアクセスし、先ほど調べたバージョンを選択する。`.iso`ファイルをダウンロードする。
##### 3. isoファイルをマウントするディレクトリを作成
```
$ mkdir /mnt/iso
```
##### 4. isoイメージをマウント
`VBoxGuestAdditions_X.X.X.iso`の`X.X.X`は適宜変更する。
今回の場合は`VBoxGuestAdditions_6.1.26.iso`
```
$ sudo mount -t iso9660 -o loop ~/Downloads/VBoxGuestAdditions_X.X.X.iso /mnt/iso
```
##### 5. アンインストール
```
$ cd /mnt/iso
$ sudo sh VBoxLinuxAdditions.run uninstall
```
##### 6. 再起動

### 起動時間の計測

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634748/29488af0-ca19-5d8a-b7e9-06c5c27803ef.png)

| 項目 | 時間 |
|:-:|:-:|
| kernel | 7.086s |
| userspace | 26.956s |
| 合計 | 34.042s |

さらに起動時間が速くなっていることが分かる。

## Desktopの削除
##### 1. CUIで起動するように設定を変更する
```
$ sudo systemctl set-default multi-user
```
##### 2. 入力関係の設定変更
```
$ sudo update-locale LANG=ja_JP.utf8
$ sudo dpkg-reconfigure keyboard-configuration
```
##### 3. 再起動

##### 4. パッケージの削除
```
$ sudo apt -y purge ubuntu-desktop
$ sudo apt -y purge lightdm
```
##### 5. 再起動

### 起動時間の計測
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634748/1e0e3b32-a889-3e0f-0d67-654f39d70a27.png)

| 項目 | 時間 |
|:-:|:-:|
| kernel | 7.135s |
| userspace | 25.176s |
| 合計 | 32.311s |

少しではあるが起動時間が短縮できた。

これで目標は達成できた。

:::note warn
私の環境では日本語の文字化けが解消できなかった。なにがダメなのか分からないのとsshで繋いだ時には関係ないので、一旦放置しますw
:::

## まとめ
起動時間の大幅な短縮に成功した。アプリの実行速度もUTMの資源割り当てを増やすことで改善した。ただし、アプリの実行速度は改善したもののもっさり感は残っており、GUIでアプリを使用するのはストレスを感じてしまう。GUIが必要ないのであればCUIに切り替えて、sshでホストから作業する方がいいだろう。