Arch LinuxをHyper-Vにインストール(作業メモ)

Why Arch Linux?

Docker を動かす為のできるだけ小さい構成の OS を捜していた。
Arch は全部自分でパッケージ入れて好きに構成するという考え方らしいので
できるだけ最小にできるはず!ということでやってみた記事です。(なお初めてです)
手順は以下を参照しながらやっています

https://dzone.com/articles/install-arch-linux-on-windows-10-hyper-v

環境

  • Hyper-V 第二世代 VM
  • ディスク容量 20GB
  • archlinux-2019.06.01-x86_64.iso

手順

VM の作成

  • セキュアブート無効

起動

Arch の ISO をマウントして起動する。
すると、自動的に root のプロンプトが起動してくる。
コンソールではコピペもできず不便なので、ssh が使えるようにする。

1
2
3
4
5
6
localectl set-keymap jp106
passwd # rootにパスワードがないとssh繋げられない
systemctl start sshd

# なお、IPアドレスは
ip a なり ifconfig で調べられる

パーティション作成

EFI で起動させたいので、GPT でパーティションを切っていく。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ gdisk /dev/sda
# EFIブート
command?: n #新規作成
number: [入力せずにENTER]
First sector: [入力せずにENTER]
End Sector: +512M
type: EF00 # EFIブートパーティション

# データ
command?: n #新規作成
number: [入力せずにENTER]
First sector: [入力せずにENTER]
End Sector: [入力せずにENTER]
type: [入力せずにENTER] # Linux

command?: w # 書込
Do you want to proceed? (Y/N): Y

フォーマット

1
2
mkfs.fat -F32 /dev/sda1
mkfs.ext4 /dev/sda2

とりあえずマウント

1
2
3
mount /dev/sda2 /mnt
mkdir /mnt/boot # EFIブートパーティションをマウントするため
mount /dev/sda1 /mnt/boot

ファイルコピー

1
2
3
4
5
6
7
8
pacstrap /mnt base base-devel openssh vim
genfstab -U /mnt >> /mnt/etc/fstab
arch-chroot /mnt

# ここから、ディスク上に書き込まれる

# ブートローダー入れる
bootctl install

ブートローダー設定

vim /boot/loader/loader.conf

1
2
3
default arch
timeout 3
editor 0

ブートローダー設定 2

1
cp /usr/share/systemd/bootctl/arch.conf /boot/loader/entries/

blkid -s PARTUUID -o value /dev/sda2

で UUID を取得しておく。

vim /boot/loader/entries/arch.conf

1
options root=PARTUUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx rootfstype=ext4 add_efi_memmap

ブートローダー設定を反映

1
2
bootctl update
bootctl

これで再起動できます。おつかれさまでした。

ネットワーク設定

固定 IP を指定する。DHCP 使わない。Network-manager もナシ

1
vim /etc/systemd/network/20-wired.network
1
2
3
4
5
6
7
8
[Match]
Name=eth0

[Network]
Address=10.1.0.230/24
Gateway=10.1.0.1
DNS=8.8.8.8
DNS=8.8.4.4
1
2
systemctl enable systemd-networkd
systemctl enable systemd-resolved

locale まわり

1
2
3
4
5
vim /etc/locale.gen

en_US.UTF-8 UTF-8
ja_JP.UTF-8 UTF-8
の二行のコメントアウトを外した。
1
sudo locale-gen
1
sudo localectl set-locale LANG=en_US.UTF-8

ここで一度 SSH を切断して、再接続しないと表示乱れが発生した。

timezone

1
sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
1
2
$ date
Thu 20 Jun 2019 05:06:48 PM JST JSTになっていることを確認

ホスト名

1
hostnamectl set-hostname ほすとめい