Ubuntu 24.10をUTM上のVMにCLIで(Arch Linuxのように)インストールする

# 筆者について

```
name → Koki Teramoto
age → 18
language → ja_JP, en_US
```

# 本編

題名の通りです。今回はArch LinuxのようにdebootstrapをつかってUbuntuをインストールしていきたいと思います。今回は以下の記事を参考にさせていただきました。

https://gist.github.com/Tookmund/abfc4cbd803915264e0c

おそらくですが、Debian系はすべて同じようなインストール方法ではないでしょうか。

## インストールメディアのダウンロード

ダウンロードはサーバー版で結構です。

https://jp.ubuntu.com/download

## いざスタート！

最初はインストーラーが起動しますので、そこで'Cmd + fn + F2'でCLIに入ります。Windowsだと`Win + F2`かな。これで準備は万端ですね！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583428/d7de682b-1d2f-8d3d-32a6-d30cef96a746.png)

### 1-1. ネットワーク接続確認

適当に`ping`でも打ちましょう。ここで接続できていなかったら適宜設定してください。

```bash
ping google.com
```

終わったら、このタイミングでRootでログインしておきましょう。

```bash
sudo su
```

### 1-2. パーティションを作成

Arch Linuxのインストールの時と一緒ですね！`fdisk`を使ってパーティションを切ります。構成は以下のようにしています。

| Boot領域 | Swap領域 | Root領域 |
|:-------:|:-------:|:--------:|
|512 MB   |512 MB   |残り全て   |

まずは、fdiskでインストール先のディスク番号を確認していきます。

```bash
lsblk

# Proxmoxの時は以下のことが多い
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
vda      8:0    0   8G    1 disk

# Proxmoxの時は以下のことが多い
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
vda      8:0    0   8G    1 disk
```

それぞれ、fdiskでパーティションを切っていきましょう。

```bash
fdisk /dev/vda # インストールするディスクに合わせて変更してください。
```

以下のように入力してしてパーティションを切っていきましょう。

1. `n` (新しいパーティションの作成)
2. `p` （Primaryの作成なので`p`）
3. `ENTER`（パーティション番号はそのまま、もしくは、各自に合わせてEFI、Swap、Rootが1、2、3になるようにしてください。）
4. `ENTER` (開始セクタはデフォルトのまま)
5. `+512MB` OR `ENTER`　（EFI領域とSwap領域は前者、Root領域は後者）（LinuxのRoot領域の作成時はここで終わり）
6. `t`（パーティションタイプの指定）
7. `ef` OR `82` （EFI領域を作成するときは前者、Swap領域を作るときは後者）

あとは、フォーマットしていきましょう。

```bash
# EFI領域
mkfs.fat -F 32 /dev/vda1

# Swap領域
mkswap /dev/vda2

# Root領域
mkfs.ext4 /dev/vda3
```

終わったらそれぞれそのままマウント、スワップの有効化をしましょう。

```bash
mount /dev/vda3 /mnt
mount --mkdir /dev/vda3 /mnt/boot
swapon /dev/vda2
```

### 1-3. 必要パッケージのインストール

`debootstrap`と`arch-install-scripts`をここでインストールしましょう。

```bash
apt update
apt install debootstrap arch-install-scripts
```

### 1-4. `debootrap`の実行

ここで`debootstrap`を実行しましょう。`oracular`の部分は適宜インストールしたいリリース名（例えば`jammy`など）に変更してください。

```bash
debootstrap oracular /mnt http://archive.ubuntu.com/ubuntu
```

### 2-1. `fstab`の設定

ここで`fstab`を設定します。ちなみに、`arch-install-scripts`を使わない場合には`fstab`の設定を全て手動でする必要があります。

```bash
genfstab /mnt > /mnt/etc/fstab
```

### 2-2. `chroot`に入る

ここで、`arch-chrooot`に入ります。

```bash
arch-chroot /mnt
```

### 2-3. `hostname`の設定

ここから先は適宜設定してください。

```bash
hostnamectl set-hostname ubuntu
```

### 2-4. 時刻の設定

```bash
dpkg-reconfigure tzdata
```

### 2-5. 言語の設定

```bash
apt install locales
dpkg-reconfigure locales
```

### 2-6. Linuxイメージのインストール

ここで、一通り必要なものをインストールしていきましょう。と言いたいのですが。どうやらバグで`symlink`がイマイチ動作せず、`apt`のインストールが終わりません。そこで問題を調べていると以下の記事に辿り着きました。

https://askubuntu.com/questions/1275595/issue-with-installing-the-latest-linux-image-in-lubuntu-20-04

僕は今回これで対処できましたが、できない場合もあるそうなので、その時はまた調べてみてください。

```bash
apt install nano
nano /etc/kernel-img.conf
```

```diff:/etc/kernel-img.conf
+ do_symlinks = no
+ no_symlinks = yes
```

この設定ができたら、必要なパッケージをインストールしていきましょう。

```bash
apt install linux-image-generic grub-efi
```

### 2-7. `root`のパスワードの設定

ここでユーザーの設定をします。ここも適宜設定してください。

```bash
passwd
adduser user
usermoad -aG sudo user
````

### 2-8. ブートローダーの設定

Grubの設定をします。ちなみに、UEFIブートが前提となっています。

```bash
grub-install --target=arm64-efi --efi-directory=/boot--bootloader-id=grub
grub-mkconfig -o /boot/grub/grub.cfg
```

### 2-9. インストールしたOSから起動

```bash
exit

umount /mnt -R

shutdown -h now
```

### 2-10. `NetworkManager`の設定

NetworkManagerを設定していきます。ただ、デフォルトだとこのまま有線LANを認識しないので、設定を加える必要があります。今回以下の記事が参考になりました。

https://www.nemotos.net/?p=3123

```bash
apt install network-manager
cd /etc/NetworkManager/conf.d
touch 10-globally-managed-devices.conf
```

## おまけ編

一応ここからデスクトップ環境を用意する方法を載せておきます。もしここで`gdm`が有効化できなかったら

```bash
apt install ubuntu-desktop-minimal spice-vdagent qemu-guest-agent
systemctl enable gdm3
```

もしここで`gdm`を有効化できなかったら次の設定を加えてください。ちなみに、参考記事は以下の通りです。変更したらそのままもう一度有効化してください。

https://askubuntu.com/questions/1361285/cant-enable-gdm3-after-following-a-tutorial-on-how-to-remove-kde-from-ubuntu

```bash
nano /lib/systemd/system/gdm3.service
```

```diff:/lib/systemd/system/gdm3.service
+ [Install]
+ WantedBy=multi-user.target
```

# 最後に

感触としてはArch Linuxのインストールよりもめんどいですね。次はRHEL系にチャレンジかな。これからも勉強頑張っていきます。（いずれは下のリストにあるもの全部インストールできるように頑張っていきたいと思います。）

https://en.wikipedia.org/wiki/List_of_Linux_distributions#openSUSE-based