俺様サーバー構築記 - ZFS の上に Arch Linux をインストール@デスクトップパソコン(BIOS)

（2019/05/04 追記 ここから）
この物理マシンは、HDDを換装してインストールし直しました。
[俺様サーバー構築記 - ZFS の上に Arch Linux をインストール;やり直し@物理マシン(BIOS)](https://qiita.com/katz_engineer/items/80d3c9cbe95d277d1760)を参照して下さい。
（2019/05/04 追記 ここまで）

前回「[俺様サーバー構築記 - ZFSをarchisoに埋め込む@物理マシン(BIOS)](https://qiita.com/katz_engineer/items/6f6ef6171f1fdcc4ec23)」の続きです。そこで作ったZFS埋め込みarchisoを使用して、物理マシンにArchLinuxをインストールします。

俺様サーバー構築に関する能書きは「[俺様サーバー構築記 - 基本方針](https://qiita.com/katz_engineer/items/dbabcff4e14e9db2b10f)」を参照。

# インストールの準備

ZFS関連ツールを埋め込んだarchisoを焼き付けたUSBメモリをマシンに挿して電源を入れます。起動すると、自動的にrootでログインしてプロンプトが表示されます。

## キーボード

```
# loadkeys jp106
```

## コンソールフォント

コンソールフォントはそのまま変更しません。日本語が表示されればそれなりに便利そうだけども、当面は必要無いと判断。

## 起動モードの確認

BIOSだという事はわかっていますが念の為。

```
# ls /sys/firmware/efi/efivars
ls: cannot access '/sys/firmware/efi/efivars': No such file or directory
```

## パーティション

一応HDDを確認しておきます。archisoを作ったりUSBメモリを挿したりしているので、少々わかりにくい表示になります。

```
# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdc  /dev/sdc1  /dev/sdc2
```

lsblkコマンドを使うと、多少整理されて見えます。

```
# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop     7:0    0 573.2M  1 loop /run/archiso/sfs/airootfs
sda      8:0    0 298.1G  0 disk
├─sda1   8:1    0   512M  0 part
└─sda2   8:2    0 297.6G  0 part
sdb      8:16   0 298.1G  0 disk
sdc      8:32   1   7.3G  0 disk
├─sdc1   8:33   1   686M  0 part /run/archiso/bootmnt
└─sdc2   8:34   1    64M  0 part
sr0     11:0    1  1024M  0 rom
```

```/dev/sdc``` とその眷属（```/dev/sdc1``` ```/dev/sdc2```）は、起動する時に使用したUSBメモリです。mountコマンドの結果にそれが表れます。

```
# mount | grep /dev/sd
/dev/sdc1 on /run/archiso/bootmnt type iso9660 (ro,relatime,nojoliet,check=s,map=n,blocksize=2048)
```

```/dev/disk/by-id``` を見ると、ファイル名（＝デバイスID）からもう少し情報を得られる可能性があります。どのようなデバイスなのかによって命名されるらしいので。BIOS画面などから得たHDDの商品名などと突き合わせればハッキリするでしょう。

```
# ls -l /dev/disk/by-id
total 0
lrwxrwxrwx 1 root root  9 Jan 13 11:56 ata-ST3320620AS_9QF4W7SD -> ../../sda
lrwxrwxrwx 1 root root 10 Jan 13 11:56 ata-ST3320620AS_9QF4W7SD-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Jan 13 11:56 ata-ST3320620AS_9QF4W7SD-part2 -> ../../sda2
lrwxrwxrwx 1 root root  9 Jan 13 11:56 ata-TSSTcorp_DVD+_-RW_TS-H653F -> ../../sr0
lrwxrwxrwx 1 root root  9 Jan 13 11:56 ata-WDC_WD3200AAKS-00B3A0_WD-WCAT14603857 -> ../../sdb
lrwxrwxrwx 1 root root  9 Jan 13 11:56 usb-058f_6387_17082208002200-0:0 -> ../../sdc
lrwxrwxrwx 1 root root 10 Jan 13 11:56 usb-058f_6387_17082208002200-0:0-part1 -> ../../sdc1
lrwxrwxrwx 1 root root 10 Jan 13 11:56 usb-058f_6387_17082208002200-0:0-part2 -> ../../sdc2
lrwxrwxrwx 1 root root  9 Jan 13 11:56 wwn-0x50014ee156ab43c7 -> ../../sdb
```

最後の```wwn-```何とかいうデバイス名の正体が不明ですが… 今回は関係無いので放置！

という訳で ```/dev/sda``` と ```/dev/sdb``` がHDDです。ちなみに ```/dev/sr0``` は、デバイスIDからわかる通りDVDドライブです。

デバイスを確認した所で、HDDにパーティションを切ります。今回の用途の場合、最低でもbootパーティションを分ける必要があります。

[前回](https://qiita.com/katz_engineer/items/6f6ef6171f1fdcc4ec23#%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%B3)書いた通り、デバイス丸ごとbtrfsしていた関係で、パーティショニングに先立って ```wipefs``` コマンドを実行します。

スワップ領域については [パーティショニング - ArchWiki](https://wiki.archlinux.jp/index.php/パーティショニング#.E3.82.B9.E3.83.AF.E3.83.83.E3.83.97) の [パーティションの大きさはどうすればいいですか？] に下記のような記述があります。

> 大容量のメモリ（1024MB 以上）を積んでいるときは、スワップパーティションは小さく、または作らなくてもかまわないでしょう。2GB 以上の物理 RAM を持っているなら、スワップパーティションがないほうが一般的に良いパフォーマンスを発揮すると思われます。

これを信じてスワップパーティションは作りません。

コマンドは sfdisk を利用します。

作業対象は、2台あるHDD両方です。

```
# wipefs -a /dev/sda /dev/sdb
/dev/sda: 2 bytes were erased at offset 0x000001fe (dos): 55 aa
/dev/sdb: 8 bytes were erased at offset 0x00010040 (btrfs): 5f 42 48 52 66 53 5f 4d
/dev/sda: calling ioctl to re-read partition table: Success
# cat >/tmp/partitions.txt <<___
\`heredoc> ,512M
\`heredoc> ,
\`heredoc>___
# cat /tmp/partitions.txt | sfdisk /dev/sda
Checking that no-one is using this disk right now ... OK
〈以下、長いので省略〉
# cat /tmp/partitions.txt | sfdisk /dev/sdb
Checking that no-one is using this disk right now ... OK
〈以下、長いので省略〉
```

Bootフラグは、ブートローダのインストール時に立ててくれるので、ここでは省略します。

## パーティションのフォーマット

ブートパーティションはFAT32。

```
# mkfs.fat -F32 /dev/sda1
mkfs.fat 4.1 (2017-01-24)
# mkfs.fat -F32 /dev/sdb1
mkfs.fat 4.1 (2017-01-24)
```

そしてルートパーティション。いよいよ ZFS です。
参考文献：[3 ディスクのフォーマット - ZFS に Arch Linux をインストール - ArchWiki](https://wiki.archlinux.jp/index.php/ZFS_に_Arch_Linux_をインストール#.E3.83.87.E3.82.A3.E3.82.B9.E3.82.AF.E3.81.AE.E3.83.95.E3.82.A9.E3.83.BC.E3.83.9E.E3.83.83.E3.83.88)

まず、ZFS モジュールがロードされていることを確認。
下記コマンドで、結果が何も表示されなければ成功です。わかりにくい…

```
# modprobe zfs
```

どうしても画面に反応が欲しいなら wc -l で出力行数を数えましょう。
0 だけが表示されれば成功です。問題があれば、エラーメッセージも表示される筈です。

```
# modprobe zfs | wc -l
0
```

zpool を作成します。
このzpoolの名前なんですが、ArchWikiにはzpoolと書いてあります。コマンド名と同じというのも混乱の元ですし、そもそもOracle製のマニュアルに書いてある実行例ではtankなんですよね。FreeNASもtankです。
という訳で、ArchWikiとは違いますがここではtankと名付けます。

そしてもう1点。
デバイスの指定にはidを使え、とArchWikiに書かれています。しかしデバイス名からidを取得するコマンドが無い。SCSI関係のコマンドで取得できるようですが。
```ls -l /dev/disk/by-id``` を見ればわかるんですが、シンボリックリンク先が相対パスになっているのがまた残念。

特に今回は複数台のHDDでミラーリングしようと考えました。そうすると一行野郎でまとめるのは少々無理があります。出来ないとは言いませんが、無理をするより分かり易さを優先して、下記のように実行します。

まあ、目で見れば済む話ですが。ここまで面倒臭いコマンドを実行する理由は、いずれこれをスクリプトにまとめたいからです。その為の布石なのでした。

```
# cd /dev/disk/by-id
# for p in /dev/sda2 /dev/sdb2; do ls ata-* | while read d; do if [ "$(readlink -f $d)" = "$p" ]; then echo "/dev/disk/by-id/$d"; fi; done; done >/tmp/devices.txt
# cat /tmp/devices.txt
/dev/disk/by-id/ata-ST3320620AS_9QF4W7SD-part2
/dev/disk/by-id/ata-WDC_WD3200AAKS-00B3A0_WD-WCAT14603857-part2
# cat /tmp/devices.txt | xargs -t zpool create -f tank mirror
zpool create -f tank mirror /dev/disk/by-id/ata-ST3320620AS_9QF4W7SD-part2 /dev/disk/by-id/ata-WDC_WD3200AAKS-00B3A0_WD-WCAT14603857-part2
# zpool status
  pool: tank
 state: ONLINE
  scan: none requested
config:

        NAME                                                 STATE    READ WRITE CKSUM
        tank                                                 ONLINE      0     0     0
          mirror-0                                           ONLINE      0     0     0
            ata-ST3320620AS_9QF4W7SD-part2                   ONLINE      0     0     0
            ata-WDC_WD3200AAKS-00B3A0_WD-WCAT14603857-part2  ONLINE      0     0     0

errors: No known data errors
```

最後のエラー「No known data errors」は「既知のエラーは何も無い」という意味です。だったら「Success」とか「ok」とか表示してくれればいいのに…

また、今回はサブファイルシステムを作りません。/home や /var を個別のデータセットに分けるとか、やってみたいんですけどね。ローカル環境ではそこまでしなくてもいいかな、と。
ちなみにシステムディレクトリ（/home とか /var とか /usr とか）の為にデータセットを作成した場合には、色々と細かい設定があるようです。上述の参考文献に色々書いてありますので、必要ならば参照して下さい。

ルートファイルシステムに bootfs プロパティを設定します。

```
# zpool set bootfs=tank tank
```

プール tank をエクスポートして、インポートし直します。理由が良くわからないんですが、やれって書いてあるので。

```
# zpool export tank
# zpool import -d /dev/disk/by-id -R /mnt tank
```

ここで、マウントポイントの /mnt を確認します。/mnt の場合と /mnt/tank になっている場合があるようです。どうして2通りの結果になるのか、理由がわかりませんが。

```
# mount | grep tank
tank on /mnt/tank type zfs (rw,xattr,noacl)
```

今回は /mnt/tank でした。もし /mnt の場合は、以下の操作手順において /mnt/tank の個所を /mnt に読み替えて下さい。

最後に、新しいシステムに zpool.cache ファイルをコピーします。そしてイヤらしい事に、 /etc/zfs/zpool.cache は存在するんですが中身がありません。最初はこれに気付かなくてエライ目に遭いました。

```
# ls -l /etc/zfs/zpool.cache
-rw-r--r-- 1 root root 0 Jan 14 03:38 /etc/zfs/zpool.cache
# zpool set cachefile=/etc/zfs/zpool.cache tank
# ls -l /etc/zfs/zpool.cache
-rw-r--r-- 1 root root 1872 Jan 14 03:40 /etc/zfs/zpool.cache
# cp --parents /etc/zfs/zpool.cache /mnt/tank
```

## bootパーティションのマウント

```
# mkdir /mnt/tank/boot
# mount /dev/sda1 /mnt/tank/boot
```

## インターネットへの接続

ネットワーク環境が確立しているかどうか、外部へのpingによって確認します。

```
# ping -c2 archlinux.jp
PING archlinux.jp (160.16.119.98) 56(84) bytes of data.
64 bytes from tk2-235-27344.vs.sakura.ne.jp (160.16.119.98): icmp_seq=1 ttl=54 time=8.56 ms
64 bytes from tk2-235-27344.vs.sakura.ne.jp (160.16.119.98): icmp_seq=2 ttl=54 time=9.47 ms

--- archlinux.jp ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 2ms
rtt min/avg/max/mdev = 8.562/9.015/9.469/0.463 ms
```

## システムクロックの更新

ntpサーバは自分で設定したい。日本なら ntp.nict.jp が鉄板です。特殊事情が無ければこの一択。システム推奨なんか知りませ～ん。

```
# cd /etc/systemd
# sed -i -e"s/^#NTP=.*$/NTP=ntp.nict.jp/" timesyncd.conf
# timedatectl set-ntp true
# timedatectl status
               Local time: Mon 2019-01-14 03:43:19 UTC
           Universal time: Mon 2019-01-14 03:43:19 UTC
                 RTC time: Mon 2019-01-14 03:43:19
                Time zone: UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
# systemctl status systemd-timesyncd
  systemd-timesyncd.service - Network Time Synchronization
   Loaded: loaded (/usr/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled
   Active: active (running) since Mon 2019-01-14 03:43:14 UTC; 57s ago
     Docs: man:systemd-timesyncd.service(8)
 Main PID: 3316 (systemd-timesyn)
   Status: "Synchronized to time server 133.243.238.163:123 (ntp.nict.jp)."
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/systemd-timesyncd.service
           └─1458 /usr/lib/systemd/systemd-timesyncd

Jan 14 03:43:14 archiso systemd[1]: Starting Network Time Synchronization...
Jan 14 03:43:14 archiso systemd[1]: Started Network Time Synchronization.
Jan 14 03:43:15 archiso systemd-timesyncd[1458]: Synchronized to time server 133.243.238.244:123 (ntp.nict.jp).
```

# インストール

## ミラーの選択

日本ならJapanをリスト先頭に持ってきましょう。っていうか、Japanだけ抜き出しました。下手に編集などするよりもコマンドが簡単なので。

```
# cd /etc/pacman.d
# sed -i -ne"/^#.*Japan$/,+1 p" mirrorlist
# cat mirrorlist
## Japan
Server = http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch
## Japan
Server = http://mirrors.cat.net/archlinux/$repo/os/$arch
## Japan
Server = http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch
```

## ベースシステムのインストール

BIOSブートに必要なパッケージも同時に落としてきます。ブートローダは、今回は syslinux を使ってみます。詳細は後述。

今時は、CPUのデバッグ用パッチもOSが面倒を見るらしい。その為のパッケージ intel-ucode も落としておきます。

ZFS関連パッケージも落とします。

とりあえず現時点で必要最小限のパッケージはこれだけ。他に必要なパッケージは、必要に迫られた時に追加する事にします。

```
# pacstrap /mnt/tank base intel-ucode linux-headers spl-dkms zfs-dkms syslinux
〈表示省略〉
```

# システムの設定

## fstab

```
# genfstab -U -p /mnt/tank >>/mnt/tank/etc/fstab
# cat /mnt/tank/etc/fstab
# Static information about the filesystems.
# See fstab(5) for details.

# <file system> <dir> <type> <options> <dump> <pass>
# tank
tank                    /               zfs           rw,xattr,noacl  0 0

# /dev/sda1
UUID=DABA-C6CB          /boot           vfat           rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro        0 2
```

## hostid

zfsインストールに当たってはhostidが必要らしいです。ここで設定しておきましょう。
参考文献：[最初に起動した後 - ZFS に Arch Linux をインストール - ArchWiki](https://wiki.archlinux.jp/index.php/ZFS_に_Arch_Linux_をインストール#.E6.9C.80.E5.88.9D.E3.81.AB.E8.B5.B7.E5.8B.95.E3.81.97.E3.81.9F.E5.BE.8C)
ここに「/etc/hostid に hostid を書き出してから initramfs イメージを再生成する方法もあります」と書かれているので、その為の仕込みをします。

```
# ls /mnt/tank/etc/hostid
ls: cannot access '/mnt/tank/etc/hostid': No such file or directory
# hostid >/mnt/tank/etc/hostid
```

## chroot、タイムゾーン

```
# arch-chroot /mnt/tank
# ln -fs /usr/share/zoneinfo/Japan /etc/localtime
# hwclock --systohc --utc
```

## ロケール

```
# sed -i -e"s/^#\(ja_JP\)/\1/" /etc/locale.gen
# locale-gen
Generating locales...
  ja_JP.EUC-JP... done
  ja_JP.UTF-8... done
Generation complete.
# echo LANG=C >/etc/locale.conf
# echo KEYMAP=jp106 >/etc/vconsole.conf
```

日本語フォントが入っていない場合は LANG=C にしておきましょう。文字化けが非常に鬱陶しい事になります。

## ホストネーム

マシンに名前を付けます。こういうのはセンスが出ますよね。なんて思うのは私だけ？

```
# echo 〈ホスト名〉 >/etc/hostname
```

## Initramfs

zfs対応の為に /etc/mkinitcpio.conf を修正します。
もしも /usr のデータセットを別に作成した場合は zfs フックの後に usr フックが必要らしい。今回は作っていないので不要。
また、ext3 や ext4 のファイルシステムを使用する場合は、末尾に fsck フックを入れます。今回は zfs だけなので不要。

```
# sed -i -e"s/^HOOKS=.*$/HOOKS=(base udev autodetect modconf block keyboard zfs filesystems)/" /etc/mkinitcpio.conf
```

initramfsを再生成。

```
# mkinitcpio -p linux
〈表示省略〉
但し、途中で警告が出た:
==> WARNING: Possibly missing firmware for module: wd719x
==> WARNING: Possibly missing firmware for module: aic94xx
良くわからないが、ひとまず無視
```

##　Rootパスワード

```
# passwd
New password: 〈root用パスワード〉
Retype new password: 〈root用パスワード〉
passwd: password updated successfully
```

## ブートローダー

今回は syslinux を使いたい。いえ特別な理由は無いんですけど、GRUB はデカいという噂を時折耳にしますので。小さい事は良い事です。

参考文献：
- [1.2.1 自動インストール - 1.2 インストール - 1 BIOS 環境 - Syslinux - ArchWiki](https://wiki.archlinux.jp/index.php/Syslinux)

```
# syslinux-install_update -i -a -m
Syslinux BIOS install successful
/usr/bin/syslinux-install_update: line 117: warning: command substitution: ignored null byte in input
Boot Flag Set - /dev/sda1
Installed MBR (/usr/lib/syslinux/bios/mbr.bin) to /dev/sda
# sfdisk -l /dev/sda
Disk /dev/sda: 298.1 GiB, 320072933376 bytes, 625142448 sectors
Disk model: ST3320620AS
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x5164dd3e

Device     Boot    Start       End   Sectors   Size Id Type
/dev/sda1  *        2048   1050623   1048576   512M 83 Linux
/dev/sda2        1050624 625142447 624091824 297.6G 83 Linux
```

syslinux の設定ファイルを弄ります。
なぜか ```/dev/sda3``` をrootにしようとしてるので直したり、Intelのマイクロコードのアップデートを有効にしたり。

```
# cd /boot/syslinux
# cp syslinux.cfg syslinux.cfg.org
# vi syslinux.cfg
# diff -U3 syslinux.cfg{.org,}
--- syslinux.cfg.org    2019-01-14 14:06:28.000000000 +0900
+++ syslinux.cfg        2019-01-14 14:09:50.000000000 +0900
@@ -51,13 +51,15 @@
 LABEL arch
     MENU LABEL Arch Linux
     LINUX ../vmlinuz-linux
-    APPEND root=/dev/sda3 rw
+    APPEND zfs=tank rw
+    INITRD ../intel-ucode.img
     INITRD ../initramfs-linux.img

 LABEL archfallback
     MENU LABEL Arch Linux Fallback
     LINUX ../vmlinuz-linux
-    APPEND root=/dev/sda3 rw
+    APPEND zfs=tank rw
+    INITRD ../intel-ucode.img
     INITRD ../initramfs-linux-fallback.img

 #LABEL windows
```

これを ```/dev/sdb1``` の方にも実施。

```
# cd /
# cp -pr /boot /tmp
# umount /boot
# mount /dev/sdb1 /boot
# cp -pr /tmp/boot/. /boot
# ls /boot
initramfs-linux-fallback.img  initramfs-linux.img  intel-ucode.img  syslinux  vmlinuz-linux
# syslinux-install_update -a -m
/usr/bin/syslinux-install_update: line 117: warning: command substitution: ignored null byte in input
Boot Flag Set - /dev/sdb1
Installed MBR (/usr/lib/syslinux/bios/mbr.bin) to /dev/sdb
# sfdisk -l /dev/sdb
Disk /dev/sda: 298.1 GiB, 320072933376 bytes, 625142448 sectors
Disk model: WDC WD3200AAKS-0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xa3cc179b

Device     Boot    Start       End   Sectors   Size Id Type
/dev/sdb1  *        2048   1050623   1048576   512M 83 Linux
/dev/sdb2        1050624 625142447 624091824 297.6G 83 Linux
```

## ネットワーク

NICのデバイス名についてですが。
systemdを使用すると、デバイス名を固定してくれるようです。

参考文献：[CentOS 7のネットワーク名「enp1s0」という文字列の謎に迫る](https://qiita.com/fetaro/items/b61282130fa638de4528)

従って面倒な設定は省きます。
とすると、やる事はDHCPクライアントの設定だけになります。

```
# cat >/etc/systemd/network/all.network <<-___
> [Match]
> Name=*
>
> [Network]
> DHCP=ipv4
> ___
```

ネットワークの有効化

```
# systemctl enable systemd-networkd
Created symlink /etc/systemd/system/dbus-org.freedesktop.network1.service → /usr/lib/systemd/system/systemd-networkd.service.
Created symlink /etc/systemd/system/multi-user.target.wants/systemd-networkd.service → /usr/lib/systemd/system/systemd-networkd.service.
Created symlink /etc/systemd/system/sockets.target.wants/systemd-networkd.socket → /usr/lib/systemd/system/systemd-networkd.socket.
Created symlink /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service → /usr/lib/systemd/system/systemd-networkd-wait-online.service.
```

なお /mnt/tank/etc/resolv.conf は arch-chroot によって /etc/resolv.conf に置き換えられているようです。そのため exit してから設定しないと、設定前の何も無い状態に書き戻されてしまいます。インストール手順としてちょっと歪な気がしますが、arch-chrootをexitした後にresolv.confを修正します。

```
# exit
exit
arch-chroot /mnt/tank  15.08s user 12.79s system 0% cpu 2:03.21.39 total
# cp --parents /etc/resolv.conf /mnt/tank
# vi /mnt/tank/etc/resolv.conf
〈必要に応じて修正〉
```

## 再起動

仮想マシンをシャットダウン。

```
# umount /mnt/tank/boot
# zfs umount -a
# zpool export tank
# shutdown -h now
```

そして、インストールメディアであるUSBメモリを外した後に電源を入れます。


# 最初に起動した後

ここまで問題が無ければ、再起動すると最初に syslinux のメニュー画面が表示されます。デフォルトの設定ですと5秒で自動的に先へ進みます。

## rootログイン

rootユーザーでログインします。パスワードは先ほどpasswdコマンドで設定した通り。

```

Arch Linux 4.20.0-arch1-1-ARCH (tty1)

〈ホスト名〉 login: root
Password: 〈root用パスワード〉
```

## ZFS の設定

```
# systemctl enable zfs.target
Created symlink /etc/systemd/system/multi-user.target.wants/zfs.target -> /usr/lib/systemd/system/zfs.target.
# zpool set cachefile=/etc/zfs/zpool.cache tank
```

最後の cachefile の設定は、自動でマウントさせたいプールごとに実行する必要があるとの事。今回は tank のみです。

念の為に ```shutdown -h now```→電源入れ直して、再起動を確認できればOK。
も一つ念を入れて、再起動・ログイン後に ZFS を確認：

```
# mount | grep zfs
tank on / type zfs (rw,relatime,xattr,noacl)
```

やったね :thumbsup_tone1: