Archlinux OSインストールのメモ

さんざん出ているものですが、未来の自分がそのまま参考にできるものを残しておきたい

# 作りたいもの

* Proxmox VEのdocker用VMとしてのArchlinux
* rootユーザにパスワードを設定しない
* 固定IPを振る
* UEFIで起動する

# 手順

## Archlinux ISOファイルをダウンロードしておく

proxmoxの管理コンソールでストレージ→ISO Images→Download from URL

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573317/e55d37d7-8e0f-ad7c-eaed-b3e8ba7ba93d.png)

ダウンロード中でもモーダルウィンドウは閉じてしまってよいので次を進める

## Proxmox VEのVMを作る

VM作成オプションは、ほぼデフォルトで以下を変更しておく

* Processors
    * Type: host
* BIOS
    * BIOS: OVMF (UEFI)

CDのところはひとまず空にしておき、VMの作成を一旦完了する

ISOのダウンロードが終わったら、ハードウェア設定からCD/DVDにISOをセットする

ハードウェア設定から、Add→EFI diskを追加する

VMを起動し、F2キーを連打してUEFI設定に進める

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573317/02d52fdc-5fb5-4335-e112-623ca7fbe587.png)

Device Manager > Secure Boot Configuration > Attempt Secure Boot の [X] を外して F10キーを押して保存する

Live ISOを起動して次のOSインストールに進める

## OSをインストールする

[こちらをベースに進める](https://wiki.archlinux.jp/index.php/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89)

操作はProxmox VEの管理コンソールのVMのコンソールで行う

partedでパーティションを切る [参考](https://wiki.archlinux.jp/index.php/Parted)

```:作成するパーティション構成
sda      8:0    0   32G  0 disk
|-sda1   8:1    0  550M  0 part /boot/efi
`-sda2   8:2    0 31.5G  0 part /
(swapなし、あとでファイルで作るかも)
```

```bash
$ parted /dev/sda
(parted) mklabel gpt
(parted) mkpart ESP fat32 1MiB 551MiB
(parted) set 1 esp on
(parted) mkpart primary ext4 551MiB 100%
(parted) quit
```

パーティションをフォーマットする

```bash
$ mkfs.fat -F 32 /dev/sda1
$ mkfs.ext4 /dev/sda2
```

マウントする

```bash
$ mount /dev/sda2 /mnt
$ mkdir -p /mnt/boot/efi
$ mount /dev/sda1 /mnt/boot/efi
```

`/mnt` にファイルをインストールする

```bash
$ pacstrap -K base base-devel linux linux-firmware grub efibootmgr networkmanager openssh vim
```

fstabを作成する

```bash
$ genfstab -L /mnt >> /mnt/etc/fstab
```

chrootする  
※現状はブート設定などがまったくないので、Live ISO起動を抜けてからVMが起動できるようにOSの設定を進める

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

タイムゾーンを設定する

```bash
$ ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
$ hwclock --systohc
```

ローカリゼーション

```bash
$ vim /etc/locale.gen
#en_US.UTF-8 UTF-8をアンコメント
#ja_JP.UTF-8 UTF-8をアンコメント
$ locale-gen
$ vim /etc/locale.conf
LANG=en_US.UTF-8
```

hostname設定

```bash
$ vim /etc/hostname
qiitanimemonokosuman01
```

ユーザの作成

```bash
$ useradd -m [(お決まりのUIDがあれば)-u xxxxx] -g wheel -N <<_USER_NAME_>>
$ passwd <<_USER_NAME_>>
$ visudo
# 以下を追加
%wheel ALL=(ALL:ALL) ALL
```

grubを設定する [参考](https://wiki.archlinux.jp/index.php/GRUB)

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

chroot環境から抜け、再起動する

```bash
$ ^d
$ reboot
```

**EFIブートエントリにデバイスが乗ってこない場合** (関係なければ飛ばす)

VMの立ち上がり時にコンソールでF2キーを押すとUEFI設定に進めるので、以下でインストールしたOSを起動する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573317/fd3764d4-9b52-b294-5088-d6bdcef100a9.png)

Boot Maintenance Manager > Boot From File > Volume > EFI > GRUB > grubx64.efi

OSが起動したら、以下でエントリを追加する

```bash
$ sudo efibootmgr -c -L GRUB -d /dev/sda -l '\EFI\GRUB\grubx64.efi'
```

## OSの中身の設定

引き続きProxmoxの管理コンソールから、VMのコンソールを操作する

固定IPをふる [参考](https://qiita.com/mtn_kt/items/633bd5e3e00732af564e)

```bash
$ sudo systemctl enable NetworkManager
$ sudo systemctl start NetworkManager
$ nmcli device
# 上記でデバイス名がわかる。一番右のやつ。
$ sudo nmcli con mod "Wired connection 1" ipv4.address '192.168.xx.xx/24'
$ sudo nmcli con mod "Wired connection 1" ipv4.gateway '192.168.xx.xx'
$ sudo nmcli con mod "Wired connection 1" ipv4.dns '192.168.xx.xx'
$ sudo nmcli con mod "Wired connection 1" ipv4.method manual
$ sudo nmcli -f ipv4 con show "Wired connection 1"
# VM再起動するか、nmcliでデバイスをdown/upする
```

sshログインできるようにする

```bash
$ sudo systemctl enable sshd
$ sudo systemctl start sshd
# ここで一旦パスワードでユーザに入って公開鍵をおいておく
$ mkdir .ssh
$ vim .ssh/authorized_keys
$ sudo vim /etc/ssh/sshd_config
# 以下を追記
PasswordAuthentication no
```

dockerをインストールする

```
$ sudo pacman -Sy docker docker-compose
$ sudo systemctl enable docker
$ sudo systemctl start docker
$ sudo usermod -a -G docker <<_USER_NAME_>>
```