Springdale Linux 8.3のインストール用ISOイメージ上でzfsを使えるようにする

CentOS Linuxオワコン記念(違)、もしくは理研ミラー記念というわけで、Springadale Linuxを試してみました。
まあ、[CentOS版](https://qiita.com/toriiken1/items/2d92940c910d8a3ecb87)の焼き直しなので、同じ手順はサラッと流します。

## ISOイメージの入手
ISOイメージですが、http://ftp.riken.jp/pub/Linux/springdale/8.3/x86_64/iso/ に有りません。しょっぱなから嫌な香りがプンプンします(笑)。
色々探した結果、http://ftp.riken.jp/pub/Linux/springdale/8.3/x86_64/os/images/boot.iso を見付けたので、これをダウンロードします。

## VirtualBoxの設定
CentOSと同じく、メインメモリーは3072 MB、ネットワークアダプターとしてブリッジアダプターを使用します。

## 起動パラメータの変更
これも同じく、起動パラメーターに、`selinux=0 3` を追加してカーネルを起動します。

## キーボード設定
```
[anaconda root@localhost ~]# loadkeys jp106
```

## sshdの有効化
```
[anaconda root@localhost ~]# mv -v /etc/ssh/sshd_config{.anaconda,}
```

## IPアドレスの設定
最近、我が家でもIP v6が使えるようになったので、dhclientとはお別れして、NetworkManagerの軍門に下ることにしました(笑)。まあ、使うのはここだけで、systemd-networkdインストールしますけど。:-p

```
[anaconda root@localhost ~]# nmcli c a type ethernet ifname enp0s3 con-name enp0s3
```

## sshログイン
sshdが起動したことを確認して、sshクライアントからrootでログインします。

```
[anaconda root@localhost ~]# systemctl is-active sshd
active
```

## /パーティションへの書き込みの回避
ホスト環境にパッケージをインストールする際に、空き容量が足りなくてエラーになるのを回避するため、一部のディレクトリを/tmp配下にbindマウントします。

```
[anaconda root@localhost ~]# mkdir /tmp/dnf && mount --bind /tmp/dnf /var/cache/dnf
[anaconda root@localhost ~]# mkdir /tmp/rpm && mount --bind /tmp/rpm /var/lib/rpm
[anaconda root@localhost ~]# mkdir /tmp/firmware && mount --bind /tmp/firmware /lib/firmware
```

## 弱い依存関係の無効化
基本的に、ここまではCentOSと同じ設定です。

```
[anaconda root@localhost ~]# echo install_weak_deps=0 >> /etc/dnf/dnf.conf
```

## Springdale Linux用リポジトリの追加
やっとSpringdale Linux固有の内容になりました。

CentOS同様Springdaleのboot.isoも/etc/yum.repos.d/にリポジトリ情報が無いので、repoファイルが含まれているパッケージをインストールする必要があるのですが、なぜかdnfに依存してて、当然dnfは他のパッケージに依存してて、泥縄式にパッケージを追加していくとキリがありません。

という訳で、dnfでインストールするのは諦めて、rpmファイルを直接展開してrepoファイルを配置します。

```
[anaconda root@localhost ~]# cd /
[anaconda root@localhost /]# curl http://ftp.riken.jp/pub/Linux/springdale/8.3/x86_64/os/BaseOS/Packages/springdale-core-8-0.sdl8.2.noarch.rpm | rpm2cpio | cpio -id
[anaconda root@localhost /]# curl http://ftp.riken.jp/pub/Linux/springdale/8.3/x86_64/os/BaseOS/Packages/springdale-appstream-8-0.sdl8.2.noarch.rpm | rpm2cpio | cpio -id
```

## zfs用リポジトリの追加
以前と同様、glibc-langpack-jaも指定します。

```
[anaconda root@localhost /]# dnf -y --releasever=8.3 install glibc-langpack-ja http://download.zfsonlinux.org/epel/zfs-release.el8_3.noarch.rpm
```

## dkmsからkmodへの切り替え
[OpenZFSのページ](https://openzfs.github.io/openzfs-docs/Getting%20Started/RHEL%20and%20CentOS.html)で知ったのですが、sed使わなくてもリポジトリの有効/無効って切り替えられたんですね……。

```
[anaconda root@localhost /]# dnf -y install dnf-plugins-core
[anaconda root@localhost /]# dnf config-manager --disable zfs
[anaconda root@localhost /]# dnf config-manager --enable zfs-kmod
```

## zfsパッケージのインストール
最近のCentOSだと常に最新のカーネルバージョンしかインストール出来なくなっているようですが、Springdaleはバージョン指定が効くので、以前と同じ手順で大丈夫です。

```
[anaconda root@localhost /]# dnf -y install kernel-core-$(uname -r) zfs
```

## zfsモジュールのロード
DHCP環境でIPアドレスが変わってもhostidが変わらないように、0固定にしてからモジュールをロードします。

```
[anaconda root@localhost /]# dd if=/dev/zero of=/etc/hostid bs=4 count=1 2>/dev/null
[anaconda root@localhost /]# modprobe zfs
[anaconda root@localhost /]# dmesg | tail -1
[ 1435.751419] ZFS: Loaded module v0.8.6-1, ZFS pool version 5000, ZFS filesystem version 5
```

CentOS Linuxと多少は違いがありますが、とりあえずZFS的にはCentOS Streamよりは安心して使えそうです(笑)。