さんざん出ているものですが、未来の自分がそのまま参考にできるものを残しておきたい
作りたいもの
- Proxmox VEのdocker用VMとしてのArchlinux
- rootユーザにパスワードを設定しない
- 固定IPを振る
- UEFIで起動する
手順
Archlinux ISOファイルをダウンロードしておく
proxmoxの管理コンソールでストレージ→ISO Images→Download from URL
ダウンロード中でもモーダルウィンドウは閉じてしまってよいので次を進める
Proxmox VEのVMを作る
VM作成オプションは、ほぼデフォルトで以下を変更しておく
- Processors
- Type: host
- BIOS
- BIOS: OVMF (UEFI)
CDのところはひとまず空にしておき、VMの作成を一旦完了する
ISOのダウンロードが終わったら、ハードウェア設定からCD/DVDにISOをセットする
ハードウェア設定から、Add→EFI diskを追加する
VMを起動し、F2キーを連打してUEFI設定に進める
Device Manager > Secure Boot Configuration > Attempt Secure Boot の [X] を外して F10キーを押して保存する
Live ISOを起動して次のOSインストールに進める
OSをインストールする
操作はProxmox VEの管理コンソールのVMのコンソールで行う
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なし、あとでファイルで作るかも)
$ 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
パーティションをフォーマットする
$ mkfs.fat -F 32 /dev/sda1
$ mkfs.ext4 /dev/sda2
マウントする
$ mount /dev/sda2 /mnt
$ mkdir -p /mnt/boot/efi
$ mount /dev/sda1 /mnt/boot/efi
/mnt
にファイルをインストールする
$ pacstrap -K base base-devel linux linux-firmware grub efibootmgr networkmanager openssh vim
fstabを作成する
$ genfstab -L /mnt >> /mnt/etc/fstab
chrootする
※現状はブート設定などがまったくないので、Live ISO起動を抜けてからVMが起動できるようにOSの設定を進める
$ arch-chroot /mnt
タイムゾーンを設定する
$ ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
$ hwclock --systohc
ローカリゼーション
$ 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設定
$ vim /etc/hostname
qiitanimemonokosuman01
ユーザの作成
$ useradd -m [(お決まりのUIDがあれば)-u xxxxx] -g wheel -N <<_USER_NAME_>>
$ passwd <<_USER_NAME_>>
$ visudo
# 以下を追加
%wheel ALL=(ALL:ALL) ALL
grubを設定する 参考
$ grub-install --efi-directory=/boot/efi --bootloader-id=GRUB
$ grub-mkconfig -o /boot/grub/grub.cfg
chroot環境から抜け、再起動する
$ ^d
$ reboot
EFIブートエントリにデバイスが乗ってこない場合 (関係なければ飛ばす)
VMの立ち上がり時にコンソールでF2キーを押すとUEFI設定に進めるので、以下でインストールしたOSを起動する
Boot Maintenance Manager > Boot From File > Volume > EFI > GRUB > grubx64.efi
OSが起動したら、以下でエントリを追加する
$ sudo efibootmgr -c -L GRUB -d /dev/sda -l '\EFI\GRUB\grubx64.efi'
OSの中身の設定
引き続きProxmoxの管理コンソールから、VMのコンソールを操作する
固定IPをふる 参考
$ 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ログインできるようにする
$ 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_>>