いぶろぐ雑記

ManjaroをZFS上にインストールする

意外と情報がなかったので。

今のところ、ZFSをrootパーティションのファイルシステムに指定してManjaroをインストールする、ということは、GUIではできないっぽいので、コマンドをぱちぱち叩いてインストールしました。

準備

ライブUSB作成

まずはISOファイルを以下からダウンロード。自分はGnome好きなのでGnome版をダウンロードしました。

Manjaro Downloads

RufusとかEcherとか、ddコマンドとかでISOをUSBに焼きましょう。

dd bs=4M if=manjaro.iso of=/dev/sdc status=progress && sync

パーティション作成

ライブUSBからManjaroを起動できたら、EFIを格納するESPとrootパーティションを作成しておきましょう。

sudo parted /dev/sda
(parted) mklabel gpt
(parted) mkpart ESP fat32 1MiB 551MiB
(parted) set 1 esp on
(parted) mkpart ROOT ext2 551MiB 100%
(parted) quit

こんな感じになっていればOKです。

sudo parted -l

Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 32.2GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number Start  End   Size  File system Name Flags
 1   1049kB 578MB  577MB        ESP  boot, esp
 2   578MB  32.2GB 31.6GB        ROOT

ZFSファイルシステム作成

rootパーティションにZFSのファイルシステムを作成していきます。

とりあえずターミナルからプールを作成。/dev/sda2がrootパーティションのデバイス名です。

sudo zpool create rpool /dev/sda2

rootデータセットを作成。Manjaroは/mnt配下をrootとみなしてOSインストールを行うので、いったんマウントポイントを/mntに指定しておきます。

sudo zfs create -o mountpoint=/mnt rpool/root

上位のデータセットのマウントポイントをlegacyにしておきます。これをやっておかないと上位のデータセットにデータが書き込まれ、やっかいな状況になったりならなかったり。

sudo zfs set mountpoint=legacy rpool

こんな感じになっていればOK。

zfs list

NAME     USED AVAIL   REFER MOUNTPOINT
rpool    184K 28.1G    24K legacy
rpool/root  24K 28.1G    24K /mnt

最後に、ESPを/mnt/bootにマウントしておきます。

sudo mount /dev/sda1 /mnt/boot

OS・ブートローダー設定

OSインストール

Manjaroの「Manjaro-Architect」を使ってらくらくインストールしていきましょう。ここからは通常のインストール方法と変わりありません。

すでにパーティション設計とファイルシステム作成を終えているので、特別な設定が不要なら「Prepare Installation」をスキップして「Install Desktop System」から始められます。

カーネルのバージョンとかもろもろ選択してManjaroをインストールします。

ずらら〜と出てきて、インストールが完了します。

ブートローダーインストール

OSのインストールが終わったら「Install BIOS Bootloader」からブートローダーをインストール。私はsystemd-bootが好きなのでいつもsystemd-bootをインストールしています(画面は仮想環境上で実行しているためか、grubしか表示されていません)。

ブートローダーのインストールが終わったら「Configure Base」でホスト名やらロケールやらユーザーやらを設定。これでひととおりインストールは完了です。

インストールしたブートローダーに合わせて、設定ファイルを記述しておきます。

/mnt/boot/grub/grub.cfg
set timeout=5
set default=0

menuentry "Manjaro Linux" {
  search -u UUID
  linux /vmlinuz-linux zfs=rpool/root rw
  initrd /initramfs-linux.img
}
title      Manjaro
linux      vmlinuz-linux
initrd     intel-ucode.img
initrd     initramfs-linux.img
options     zfs=rpool/root rw

最後の最後に、ESPをアンマウントしてrootパーティションのマウントポイントを変更しておきます。

sudo umount /dev/sda1
sudo zfs set mountpoint=/ rpool/root

再起動後、無事Manjaroが起動すれば作業完了です。お疲れ様でした。