VirtualBoxにQ4OSをインストールしたメモ

## はじめに
仮想マシンに構築していた自分用の環境を壊してしまったため、再構築しました。
その時のメモです。

## 主な設定
今回設定した開発用の環境は次の通りです。

* 仮想化ソフトウェアとしてVirtualBoxを使用
* 仮想マシンのOSは、Q4OSを使用
* 以下のソフトウェアをインストール

| ソフトウェア | 用途 |
|:-:|:-:|
| VirtualBox Guestos Addin  | シームレスモードを使用するため（後述）  |
| ClamAV + ClamTK  | ウィルス対策ソフト  |
| VSCode  | コーディング用  |
| pyenv | 複数バージョンpython管理用 |

## VirtualBox
VirtualBoxはOracleの製品で、無償で利用できます。
※ただし、Extension Packを商用利用する場合は、有償契約が必要です。

Windows版がありますが、私はホストOSにLinuxMintを使用していますので、Linux版をインストールしました。VirtualBoxのインストールは簡単にできましたが、VirtualBoxの起動で少し躓きました。

:::note warn
VirtualBox起動時のvboxdrvのドライバ読み込みに失敗
:::

 ハードウェアのセキュアブート機能により、安全でないドライバの読み込みを拒否されている
 
### 解決策
mokutilを使用して、セキュアブートの署名鍵を追加し、その鍵でvboxdrvを署名します。

以下ホストOSで実行
```
sudo apt-get install mokutil
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=VirtualBox/"
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)
sudo mokutil --import MOK.der
パスワードを求められる
```

再起動後に、特殊なBoot画面になるので、「Enroll MOK」を選択する。

## Q4OS
最近気に入っているLinuxのディストリビューションです。非力なマシンでも軽快に動作します。また、Windowsライクなデスクトップなので、初心者でも取っ付きやすいと思います。

こちらのサイトから、Q4OS Aquarius, Plasma, liveバージョンのISOファイルをダウンロードしました。

https://q4os.org/

### インストール手順（一部）
一部インストール手順を記載しておきます。

VirtualBoxを起動し、「新規」
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/23b66ead-dbad-afb1-fe21-fc5c1a22b361.png" width=50%>

名前を入れて、タイプをLinux、バージョンをDebian(64-bit)を選択し、次へ
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/4a9b4d2b-60e0-f481-8b54-ada68fb0f7a0.png" width=50%>

仮想マシンに割り当てるメモリサイズを選択
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/29e50ef8-326e-7463-3cd6-4211a30d1b72.png" width=50%>

仮想ハードディスクを作成する　を選択して、作成
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/92420072-214c-9868-7763-65949b2e7996.png" width=50%>

お好みのサイズに変更して　作成
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/156acaa1-05c3-e631-21ec-9538cea99225.png" width=50%>

作成した仮想マシンを選択して、メニュー「仮想マシン」→設定
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/0dc8c30d-4293-3a78-1110-03be8b5642f8.png" width=50%>

左メニュー「システム」→プロセッサで、CPUの下図やVT-xを有効化などお好みで
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/5791e62d-f827-880c-d93c-85c551c1ee1a.png" width=50%>

左メニュー「ストレージ」→光学ドライブに、ダウンロードしたISOファイルをセットします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/15e4163e-33bd-4174-fd49-de24f49a8658.png" width=50%>

設定画面をOKで閉じて、仮想マシンを起動します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/35d4e5a6-b62a-cc4a-15d0-49249e89f32b.png" width=50%>

「Q4OS 5 Aquarius Plasma Live」を選択してエンター
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/ba2dcf97-cd9a-df7f-47c1-8e7f95ea7882.png" width=50%>

仮想マシンのデスクトップの「Install Q4OS」から仮想ハードディスクへインストールをします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/e80e7bc4-8868-c517-8d31-1f2f87874c7b.png" width=50%>

後はウィザードに従ってインストールします。

インストールした後
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/ba44b64f-f4c2-0135-b1f0-7577be901aaa.png)

### シームレスモード
今回VirtualBoxにした理由は、シームレスモードが使用したかったからです。シームレスモードを使用するには、VirtualBox Guestos Addin をインストールします。

シームレスモードでは、ホストOSのデスクトップと、ゲストOSのデスクトップが融合したような状態になります。下図は、ゲストOSのVSCodeとメモ帳のウィンドウが、ホストOSのブラウザとオフィスのウィンドウの間に入り込んでいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/c4fcc94e-e0ba-cd0d-3948-c71179b471ae.png)

ゲストOSのアプリをホストOSのアプリであるかのように利用できるので、画面の切り替えが少なく、操作性の向上が期待できます。

## その他の設定やインストールしたソフトウェア

### ファイアウォール
OSにデフォルトのファイアウォールアプリがインストールされていますので、有効にしておきます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/5cafef50-2495-9961-18e6-66ea85518f03.png" width=50%>


### ClamAVとClamTK
ClamAVは、オープンソースのウィルス対策ソフトです。LinuxはWindowsと比べるとウィルス感染リスクは格段に下がりますが、念のためインストールします。

```
sudo apt install clamav
sudo apt intall clamtk
```

初期のままだと定義ファイルのアップデートに失敗します。
解決方法は、以下のブログを参考にさせていただきました。

https://shimakaze-soft-tech.hatenablog.com/entry/2021/11/27/210157

続けて以下を実行します。
```
sudo rm /var/log/clamav/freshclam.log
sudo touch /var/log/clamav/freshclam.log
sudo chown clamav:clamav /var/log/clamav/freshclam.log
sudo nano /etc/logrotate.d/clamav-freshclam
```
「create 640 clamav adm」の行を「create 640 clamav clamav」に変更します。

アップデートを実行します。
```
sudo freshclam
```

ClamTKが起動できました。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/fcb5651f-df22-a833-c513-3b47008e9e0d.png" width=50%>



 ## pyenv
複数のPythonを管理するために使用します。以前の環境では、これを使用せずに直接Pythonの追加や削除を行ってしまったため、OSが破壊されてしまいました。

ほとんど以下のサイトの手順を参考にしてインストールしました。

https://zenn.dev/hr0t15/articles/8ae3564bde2cce

しかし、Pythonをインストール使用とするとエラーとなり、いろいろ調べるとさらに追加のモジュールが必要でした。
 ```
 sudo apt install build-essential curl libbz2-dev libffi-dev liblzma-dev libncursesw5-dev libreadline-dev libsqlite3-dev libssl-dev libxml2-dev libxmlsec1-dev llvm make tk-dev wget xz-utils zlib1g-dev
 ```
 
 ## まとめ
 VirtualBoxにQ4OSをインストールし、自分用の環境の仮想マシンを設定できました。また、今回試したかったシームレスモードも体感することができました。仮想マシンを使ってみようと思った方の参考になれば幸いです。