はじめに
以前紹介したOmarchyですが、バージョン2.0がリリースされ、ISOから簡単にインストールできるようになりました。 今回はそのインストール方法を紹介します。
また、ISO採用に伴い、ディスク暗号化(LUKS)が必須要件となりました。 これにより再起動時に毎回物理コンソールへアクセス→パスワードによるロック解除を行う必要があります。 今回はClevisのTPMモードを使用し、物理ロックの自動解除方法も記載しております。
以前の記事
Legacyインストールをしたい方やVNCの有効化、日本語設定が必要な方は以下の記事を参照ください。 https://www.munenick.me/blog/omarchy
Omarchyとは
OmarchyはDHH(Ruby on Railsの作者)によって開発された、Arch Linux + Hyprland をベースにした“おまかせ(omakase)”リミックス環境で、開発に必要なアプリと設定を厳選・一体化したセットアップです。 ワンコマンドで構築することができます。
特徴
Arch Linuxベース
最新のパッケージが使えて、カスタマイズの自由度も高いArch Linuxがベースになっています。
Hyprland採用
Waylandネイティブのタイリングウィンドウマネージャーで、かっこいい画面が表示可能です。

Opinionatedな設計
「これが良い環境だ」という明確な意見を持って作られているので、全体的に統一感があります。細かいことを考えなくても、そのまま使える環境が手に入ります。
開発環境込み
Neovim(LazyVim設定済み)がデフォルトエディタとして入っています。面倒なNeoVimのセットアップをスキップできます。他にもLazygit、Lazydocker、Btopなどの便利なTUIツールが含まれています。
ISOのダウンロード
以下のサイトにアクセスし、「ISO」をクリックしてイメージファイルをダウンロードしてください。 https://omarchy.org/

USBインストーラの用意(任意)
サーバやPCにインストールする場合はWindowsまたはMacOSからUSBインストーラを作成します。 RufusやbalenaEtcher等のツールを利用し、インストーラを作成してください。
公式手順:
インストーラを作成したらサーバやPCに接続し、そのインストーラで起動してください。 仮想マシンの場合は本手順はスキップしてください。 その代わりISOを仮想マシンにマウントしてください。
マウントが完了したらマシンを起動します。
「Arch Linux install medium」をクリックします。(放置で自動起動します。)


Omarchyのインストール
ユーザ名の設定
「User name」ではOSで使用するユーザ名を入力します。

パスワードの設定
「Password」ではディスク復号化、OSログイン、sudoで使用するパスワードを入力します。


フルネームの設定(任意)
「Full name」ではフルネームを指定します。 Gitの認証時に利用されるようです。 入力は任意です。

メールアドレスの設定(任意)
「Email address」ではメールアドレスを指定します。 こちらもGitの認証時に利用されるようです。 入力は任意です。

ホスト名の設定(任意)
「Hostname」ではOSのホストネームを指定します。 何も入力しない場合はデフォルトで「omarchy」となります。

タイムゾーンの設定
「Timezone」ではOSのタイムゾーンを指定します。 文字を入力と検索することができ、「Tokyo」と検索すると「Asia/Tokyo」が指定可能です。


キーボードレイアウトの設定
「Keyboard Layout」ではキーボードレイアウトを指定します。 カーソルで移動し、自身の使用しているキーボードレイアウトを指定してください。


確認
設定を確認し、問題なかったら「Yes」でインストールを開始します。

インストール先ディスクの指定
ディスク一覧が表示されます。OSをインストールするディスクを指定してください。

フォーマットの確認
フォーマットするかを確認されます。 フォーマットされるとデータは削除されます。

インストール開始
インストールが始まります。 あとはOSが起動するまで待つだけです。

ログイン
画像のような画面になったらOSがインストール完了です。 設定したパスワードでログインしましょう。



Clevisを利用したディスクの自動復号設定
データセンタ内のサーバなどにOmarchyを導入するようなケースがあると思います。(私がそうです。)
そのようなケースの場合、Omarchy再起動するたびにデータセンタに赴き、物理コンソールからディスクの暗号化解除をする必要があります。
到底そのようなワークロードには耐えることができないので、ディスクの自動復号の手順を紹介します。
方法としてはDropBearを導入し、initramfs内でSSHサーバを起動→SSH経由でリモート接続し、パスワードを入力する方法やClevis + Tangを利用し、特定ネットワークに接続したら自動でディスク復号などが考えられます。
今回はClevis + TPMを利用してTPMキーでディスクの自動復号を行います。 これは再起動後に自動でディスク復号が行われ、Omarchyが自動起動するようになります。
必要ツールのインストール
ClevisとTPMで必要なツールをインストールします。
# Install clevis and required tools
sudo pacman -S --needed clevis tpm2-tools tpm2-tss
yay -S --needed mkinitcpio-clevis-hook
対象ディスクの特定
以下のコマンドを入力し、ディスク一覧を表示します。 TYPEが「crypt」となっているディスクを探します。 以下の例では「sda2」が対象となります。
# Detect encrypted disk
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 127G 0 disk
├─sda1 8:1 0 2G 0 part /boot
└─sda2 8:2 0 125G 0 part
└─root 253:0 0 125G 0 crypt /var/cache/pacman/pkg
/home
/var/log
/
sr0 11:0 1 1024M 0 rom
zram0 252:0 0 1.9G 0 disk [SWAP]
TPM2をバインド
LUKSを有効にしたディスクにTPM2.0をバインドします。
# Bind LUKS with TPM2
sudo clevis luks bind -d /dev/sda2 tpm2 '{}'
sudo clevis luks list -d /dev/sda2
1: tpm2 '{"hash":"sha256","key":"ecc"}'
ClevisのHook設定
起動時にClevisを実行するように構成します。
# Add clevis hook
sudo sed -i -E '/^HOOKS=.*\bclevis\b/! s/^(HOOKS=\([^)]*)\bencrypt/\1 clevis encrypt/' /etc/mkinitcpio.conf.d/omarchy_hooks.conf
# Verify configuration
grep -E '^HOOKS=' /etc/mkinitcpio.conf.d/omarchy_hooks.conf
# ⇒ HOOKS=(... clevis encrypt ...)
HOOKS=(base udev plymouth keyboard autodetect microcode modconf kms keymap consolefont block clevis encrypt filesystems fsck btrfs-overlayfs)
initramfsの再生成
initramfsを再生成します。
# Regenerate initramfs
sudo mkinitcpio -P
# Verify clevis modules are included
lsinitcpio -a /boot/initramfs-linux.img | grep -Ei '(clevis|tpm2|tss2|jose)'
再起動
再起動し、適用します。
# Reboot to apply changes
sudo shutdown -r now
再起動後にディスク解除のパスワード入力が求められなければ成功です。

余談
公式のディスカッションにも手順を記載しました。 https://github.com/basecamp/omarchy/discussions/1283
おわりに
今回はOmarchy2.0のインストール方法を紹介しました。 Omarchyを利用し始めてまだ2週間程度ですが、開発体験がとてもよく手放せそうにありません。
ぜひ皆さんも利用してみてください。