Hyper-VでArch Linuxに入門してみる

Archlinuxとは

今普及している多くのLinuxディストリビューションは大きく3つに分類されます。
Debian系(Ubuntuとか)とRedHat系(CentOSとか)とSlackware系ですね。
Arch Linuxはどこにも所属しておらず、独立系と言われています。
ArchLinuxの標榜が’Keep It Simple’であるように、とてもシンプルなLinuxです。
その標榜はインストール時から実感させられます。
ArchLinuxでは、pacstrapというコマンドを使ってインストールをするのですが、パッケージを指定してあげないと、ネットワーク周りはともかく、viさえもインストールされません。
ブートローダも自分で好きなもの選んで手動でやってねというスタンスです。
また大きな特徴として、ローリングリリースを採用しています。
これは頻繁に小規模なアプデが繰り返され常に最新のアプリケーションが使えるということです。
Ubuntuなどは、固定リリースのため、最新のアプリケーションが使えるまで時間がかかります。
ローリングリリースは特性上、バグが削除されないままリリースされることも多々あり、安定性を損ないやすいというデメリットもあります。
まあ「俺は一から自分の環境作りたいんだ余計なことするんじゃねえ!」という玄人向けディストリビューションといったところでしょうか。(これを愛用してメインの開発環境にしているオタクも普通にいますこわいね)

インストール

最初に言っておきますが「cd mkdir ls rm?ナニソレ美味しいの?」って人には正直きついです。

今回私は、Hyper-Vを触りたかったので、Hyper-V上でインストールしました。

まず、公式サイトから、isoイメージをダウンロードして、Hyper-Vマネージャーで仮想マシンを新規作成します。
ArchLinuxはUEFIに対応しているので、仮想マシン作成時、2世代を選択します。
その他注意点として、設定からセキュアブートは無効にしておいてください。
割り当て設定は、一例ですが、私はメモリ4GBストレージ32GBで正常に動きました。

https://www.archlinux.jp/download/

isoイメージがブートされると以下のようにzshが起動するはずです。

root@archiso ~ # 

初期設定ではUSキーボードが設定されるため、日本語キーボードを使っている人はレイアウトを変更しましょう。

root@archiso ~ # loadkeys jp106

まずパーティションを作成します。
MBR、GPTどちらも構いませんが、今回UEFIのためMBRである必要はないでしょう。
GPTで作成します。gdiskを使用します。
ストレージをlsblkで確認します。

root@archiso ~ # lsblk
NAME  MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0   7:0    0 446.8M  1 loop /run/archiso/sfs/airootfs
sda     8:0    0    32G  0 disk
sr0    11:0    1   556M  0 rom  /run/archiso/bootmnt

sdaドライブにインストールすればいいことが分かります。
パーティションを作成します。

root@archiso ~ # gdisk /dev/sda

インストールガイドのパーティションレイアウト例を参考に以下のように設定します。

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#.E3.83.AC.E3.82.A4.E3.82.A2.E3.82.A6.E3.83.88.E4.BE.8B

マウントポイント: /mnt/boot
パーティション:/dev/sda1
パーティションタイプ:EFIシステムパーティション
容量:512MB

マウントポイント:/mnt
パーティション:/dev/sda2
パーティションタイプ:Linux x86-64 root (/)
容量:デバイスの残り容量全て

スワップ領域は今回お試しのため設定しません。
本格的に使いたい人や、メモリがあまり割り当てられない(1gb以下とか)の人は設定した方が良いかも。

まず、EFIシステムパーティションを設定します。
これは起動時UEFIが最初に読み込むファイルです。

Command (? for help): n

Partition numberは1を指定。
First sectorは空欄でEnter。
Lastsectorに512Mと入力してEnterを押します。
EFI Systemはef00なのでそれを入力してEnterを押します。

次にルートファイルシステムを設定します。
先ほどと同じく、nを入力。
Partition numberは2を指定。
First sectorは空欄でEnter。
Lastsectorも何も入力せずEnterを押します。
これでドライブ全領域確保できてるはずです。
パーティションタイプはLinux filesystemなので8300を入力してEnterを押します。

Command (? for help): w

wコマンドでパーティションを書き込みます。
lsblkコマンドで確認して、sda1、sda2ができていれば多分大丈夫です。

次にフォーマットします。
EFIシステムパーティションは、FAT32でフォーマットする必要があります。
ルートファイルシステムはEXT4でフォーマットする必要があります。
mkfsコマンドを利用して、フォーマットします。

root@archiso ~ # mkfs.fat -F32 /dev/sda1
root@archiso ~ # mkfs.ext4 /dev/sda2

ファイルシステムをマウントします。
マウントすることで、構築したファイルシステムに読み書きが可能になります。
まず最初にsda2をマウントして、/mnt/bootにsda1をマウントします。

root@archiso ~ # mount /dev/sda2 /mnt
root@archiso ~ # mkdir /mnt/boot
root@archiso ~ # mount /dev/sda1 /mnt/boot

いよいよインストールです。長い…
pacstrapコマンドを実行します。以前はbaseグループを導入すれば、エディタもカーネルも入ったのですが、最近更新され、エディタやカーネルは指定しないと入らなくなりました。カーネルがないということはブートができません。(私はここで1時間くらい浪費した…)

https://www.archlinux.site/2019/10/arch-linuxbase.html

viやネットワーク周りのパッケージも入っていないと今後パッケージインストールや編集ができませんので、この時点でインストールします。

# pacstrap /mnt linux base base-devel cryptsetup device-mapper dhcpcd e2fsprogs inetutils jfsutils linux-firmware logrotate lvm2 man-db man-pages mdadm nano netctl perl reiserfsprogs s-nail sysfsutils texinfo usbutils vi xfsprogs

次にfstabを設定します。これに先ほどmountしたファイルシステムの情報を書き込みます。起動するときにfstabが読み込まれ、自動でマウントされます。fstabを設定しないと手動でmountコマンドを打つ羽目になります、というかブート時mountされてないということは、EFIシステムパーティションが読めないのでブートできなくなると思います。たぶん。
以下のコマンドで設定できます。

# genfstab -U /mnt >>/mnt/etc/fstab

ブートローダーを設定します。
GRUBでもsystemd-bootでも何でも自分の好きなもの選べばよいと思います。
ここではGRUBを使用します。
ここから先は、isoイメージファイルのArchではなく、インストールしたArchを使います。先ほどpacstrapで導入したArchですね。以下のコマンドで、/mntをルートディレクトリとして作業を行います。

root@archiso ~ # arch-chroot /mnt

GRUBをインストールします。

[root@archiso /]# pacman -S grub

GRUBの設定ファイルを作ります。

[root@archiso /]# sudo pacman -S efibootmgr
[root@archiso /]# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub
[root@archiso /]# grub-mkconfig -o /boot/grub/grub.cfg

https://wiki.archlinux.jp/index.php/GRUB#.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB_2

終了して再起動すれば起動するはず…

[root@archiso /]# exit
root@archiso ~ # reboot

無事起動できたら、pacmanコマンドで色々入れてカスタマイズしてみましょう。お疲れさまでした。


参考
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
https://qiita.com/j8takagi/items/235e4ae484e8c587ca92
https://qiita.com/YTJVDCM/items/eea145c59662adb8ae2a
https://nashippe.blog/hv/install-arch/