ゼロから CentOS 7 をインストールし ZFS で RAIDZ を使ってみた

ハードウェア構成

CPU Pentium Gold G4560
RAM 4GB(DDR4-2400) * 2
M/B H270chipset
システム用ドライブ その辺りに転がってたSSD 128GB
RAIDZ用ドライブ 買ってきた4TB*5

まずOSのインストール。

光学ドライブは準備してないので、USBから。
ISOイメージのDLはこちらhttps://www.centos.org/download/
何も考えずに、minimal ISO をチョイス。

過去の記憶を頼りに、UNetbootinでブートUSBを作って使ってみるが、
何度やってもインストール前のbootで止まる。

調べたところ、
CentOS7をUSBからインストール – インフラMemoブログ
ここのブログと同じような事象だと思われる。

なので、rufusを使うことに。

今度は成功。
ちゃんとインストールまで終わった。
設定がよくわからない方はCentOS 7インストールなどを参考に。

セットアップ

で、起動。
まずは、無心でアップデート

[root@xfs ~]# yum -y update

結構な数のパッケージがアップデートされた。
その他もろもろ。

で、一通り終わったことで一応再起動。

パーティションテーブルの設定

現状の確認

[root@xfs ~]# df
ファイルシス                1K-ブロック    使用   使用可 使用% マウント位置
/dev/mapper/centos_xfs-root    52403200 1076580 51326620    3% /
devtmpfs                        3842996       0  3842996    0% /dev
tmpfs                           3854208       0  3854208    0% /dev/shm
tmpfs                           3854208    8888  3845320    1% /run
tmpfs                           3854208       0  3854208    0% /sys/fs/cgroup
/dev/sda2                       1038336  185560   852776   18% /boot
/dev/sda1                        204580    9956   194624    5% /boot/efi
/dev/mapper/centos_xfs-home    63317804   32944 63284860    1% /home
tmpfs                            770844       0   770844    0% /run/user/0
[root@xfs ~]# parted -l
モデル: ATA SAMSUNG SSD 830 (scsi)
ディスク /dev/sda: 128GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始    終了    サイズ  ファイルシステム  名前                  フラグ
 1    1049kB  211MB   210MB   fat16             EFI System Partition  boot
 2    211MB   1285MB  1074MB  xfs
 3    1285MB  128GB   127GB                                           lvm


エラー: /dev/sdb: ディスクラベルが認識できません。
モデル: ATA ST4000DM004-2CV1 (scsi)
ディスク /dev/sdb: 4001GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: unknown
ディスクフラグ:

エラー: /dev/sdc: ディスクラベルが認識できません。
モデル: ATA ST4000DM004-2CV1 (scsi)
ディスク /dev/sdc: 4001GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: unknown
ディスクフラグ:

エラー: /dev/sdd: ディスクラベルが認識できません。
モデル: ATA ST4000DM004-2CV1 (scsi)
ディスク /dev/sdd: 4001GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: unknown
ディスクフラグ:

エラー: /dev/sde: ディスクラベルが認識できません。
モデル: ATA ST4000DM004-2CV1 (scsi)
ディスク /dev/sde: 4001GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: unknown
ディスクフラグ:

エラー: /dev/sdf: ディスクラベルが認識できません。
モデル: ATA ST4000DM004-2CV1 (scsi)
ディスク /dev/sdf: 4001GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: unknown
ディスクフラグ:

モデル: Linux device-mapper (linear) (dm)
ディスク /dev/mapper/centos_xfs-home: 64.9GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: loop
ディスクフラグ:

番号  開始   終了    サイズ  ファイルシステム  フラグ
 1    0.00B  64.9GB  64.9GB  xfs


モデル: Linux device-mapper (linear) (dm)
ディスク /dev/mapper/centos_xfs-swap: 8187MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: loop
ディスクフラグ:

番号  開始   終了    サイズ  ファイルシステム  フラグ
 1    0.00B  8187MB  8187MB  linux-swap(v1)


モデル: Linux device-mapper (linear) (dm)
ディスク /dev/mapper/centos_xfs-root: 53.7GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: loop
ディスクフラグ:

番号  開始   終了    サイズ  ファイルシステム  フラグ
 1    0.00B  53.7GB  53.7GB  xfs

sd[b-f]に対して、パーティションテーブルを設定する

[root@xfs ~]# parted /dev/sdb
GNU Parted 3.1
/dev/sdb を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) p
エラー: /dev/sdb: ディスクラベルが認識できません。
モデル: ATA ST4000DM004-2CV1 (scsi)
ディスク /dev/sdb: 4001GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: unknown
ディスクフラグ:
(parted) mklabel gpt
(parted) q
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。

これをsdfまで繰り返す

ZFS on Linux のインストール

オフィシャルのインストール情報を確認
https://github.com/zfsonlinux/zfs/wiki/RHEL-and-CentOS

[root@xfs ~]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core) 
[root@xfs ~]# sudo yum install http://download.zfsonlinux.org/epel/zfs-release.el7_4.noarch.rpm
読み込んだプラグイン:fastestmirror
zfs-release.el7_4.noarch.rpm                                                                                                                                                                                                                                   | 5.2 kB  00:00:00     
/var/tmp/yum-root-Q0lldg/zfs-release.el7_4.noarch.rpm を調べています: zfs-release-1-5.el7_4.noarch
/var/tmp/yum-root-Q0lldg/zfs-release.el7_4.noarch.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ zfs-release.noarch 0:1-5.el7_4 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

======================================================================================================================================================================================================================================================================================
 Package                                                           アーキテクチャー                                             バージョン                                                      リポジトリー                                                                     容量
======================================================================================================================================================================================================================================================================================
インストール中:
 zfs-release                                                       noarch                                                       1-5.el7_4                                                       /zfs-release.el7_4.noarch                                                       2.9 k

トランザクションの要約
======================================================================================================================================================================================================================================================================================
インストール  1 パッケージ

合計容量: 2.9 k
インストール容量: 2.9 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : zfs-release-1-5.el7_4.noarch                                                                                                                                                                                                                          1/1 
  検証中                  : zfs-release-1-5.el7_4.noarch                                                                                                                                                                                                                          1/1 

インストール:
  zfs-release.noarch 0:1-5.el7_4                                                                                                                                                                                                                                                      

完了しました!
[root@xfs ~]# gpg --quiet --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-zfsonlinux
gpg: 新しいコンフィグレーション・ファイル「/root/.gnupg/gpg.conf」ができました
gpg: *警告*: 「/root/.gnupg/gpg.conf」のオプションはこの実行では、まだ有効になりません
pub  2048R/F14AB620 2013-03-21 ZFS on Linux <zfs@zfsonlinux.org>
   フィンガー・プリント = C93A FFFD 9F3F 7B03 C310  CEB6 A9D5 A1C0 F14A B620
sub  2048R/99685629 2013-03-21

DKMS style で進めてみる

[root@xfs ~]# sudo yum install kernel-devel zfs
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。

(省略)

--> 依存性の処理をしています: dkms >= 2.2.0.2 のパッケージ: spl-dkms-0.7.6-1.el7_4.noarch
---> パッケージ zfs-dkms.noarch 0:0.7.6-1.el7_4 を インストール
--> 依存性の処理をしています: dkms >= 2.2.0.3 のパッケージ: zfs-dkms-0.7.6-1.el7_4.noarch
--> 依存性解決を終了しました。
エラー: パッケージ: spl-dkms-0.7.6-1.el7_4.noarch (zfs)
             要求: dkms >= 2.2.0.2
エラー: パッケージ: zfs-dkms-0.7.6-1.el7_4.noarch (zfs)
             要求: dkms >= 2.2.0.3
 問題を回避するために --skip-broken を用いることができます。
 これらを試行できます: rpm -Va --nofiles --nodigest

依存性の問題が起こった。

依存性の対応

[root@xfs ~]# yum install epel-release

(省略)

インストール:
  epel-release.noarch 0:7-9

完了しました!

インストールの再実行

[root@xfs ~]# sudo yum install kernel-devel zfs

(省略)

完了しました!

インストールできた。

念のため確認

[root@xfs ~]# which zpool
/usr/sbin/zpool

ZFSプールの作成

このあたりの情報をを参考に進める。
Archlinux スレッドプールの作成

本家はここ
selecting-dev-names-when-creating-a-pool

ホームサーバ用途などはデバイスIDでプールを作った方が良いらしいので、IDの確認

[root@xfs ~]# ls -lh /dev/disk/by-id/
合計 0
lrwxrwxrwx 1 root root  9  3月 11 18:19 ata-SAMSUNG_SSD_830_Series_S0XYNEXXXXXXXX -> ../../sda
lrwxrwxrwx 1 root root 10  3月 11 18:19 ata-SAMSUNG_SSD_830_Series_S0XYNEXXXXXXXX-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10  3月 11 18:19 ata-SAMSUNG_SSD_830_Series_S0XYNEXXXXXXXX-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10  3月 11 18:19 ata-SAMSUNG_SSD_830_Series_S0XYNEXXXXXXXX-part3 -> ../../sda3
lrwxrwxrwx 1 root root  9  3月 11 18:19 ata-ST4000DM004-2CV104_ZFNXXXX1 -> ../../sdb
lrwxrwxrwx 1 root root  9  3月 11 18:19 ata-ST4000DM004-2CV104_ZFNXXXX2 -> ../../sdd
lrwxrwxrwx 1 root root  9  3月 11 18:19 ata-ST4000DM004-2CV104_ZFNXXXX3 -> ../../sdc
lrwxrwxrwx 1 root root  9  3月 11 18:19 ata-ST4000DM004-2CV104_ZFNXXXX4 -> ../../sdf
lrwxrwxrwx 1 root root  9  3月 11 18:19 ata-ST4000DM004-2CV104_ZFNXXXX5 -> ../../sde

※以後IDはフェイク

続いて、プールを作りたいとこですが、
AFでのパーティションアライメントの対策を。
advanced-format-disks
こちらを読む限り ashift=12 を指定することで、いい感じになるっぽい。

では、raidz1でタンクの作成

[root@xfs ~]# zpool create -f -o ashift=12 tank raidz1 ata-ST4000DM004-2CV104_ZFNXXXX1 ata-ST4000DM004-2CV104_ZFNXXXX2 ata-ST4000DM004-2CV104_ZFNXXXX3 ata-ST4000DM004-2CV104_ZFNXXXX4 ata-ST4000DM004-2CV104_ZFNXXXX5
The ZFS modules are not loaded.
Try running '/sbin/modprobe zfs' as root to load them.

おっと、、モジュールがロードされてないらしい

気を取り直して。

[root@xfs ~]# /sbin/modprobe zfs
[root@xfs ~]# zpool list
no pools available
[root@xfs ~]# zpool create -f -o ashift=12 tank raidz1 ata-ST4000DM004-2CV104_ZFNXXXX1 ata-ST4000DM004-2CV104_ZFNXXXX2 ata-ST4000DM004-2CV104_ZFNXXXX3 ata-ST4000DM004-2CV104_ZFNXXXX4 ata-ST4000DM004-2CV104_ZFNXXXX5
[root@xfs ~]# zpool list
NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
tank  18.1T   912K  18.1T         -     0%     0%  1.00x  ONLINE  -
[root@xfs ~]# zpool status
  pool: tank
 state: ONLINE
  scan: none requested
config:

        NAME                                 STATE     READ WRITE CKSUM
        tank                                 ONLINE       0     0     0
          raidz1-0                           ONLINE       0     0     0
            ata-ST4000DM004-2CV104_ZFNXXXX1  ONLINE       0     0     0
            ata-ST4000DM004-2CV104_ZFNXXXX2  ONLINE       0     0     0
            ata-ST4000DM004-2CV104_ZFNXXXX3  ONLINE       0     0     0
            ata-ST4000DM004-2CV104_ZFNXXXX4  ONLINE       0     0     0
            ata-ST4000DM004-2CV104_ZFNXXXX5  ONLINE       0     0     0

errors: No known data errors

df

[root@xfs ~]# df -h
ファイルシス                サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos_xfs-root    50G  1.7G   49G    4% /
devtmpfs                      3.7G     0  3.7G    0% /dev
tmpfs                         3.7G     0  3.7G    0% /dev/shm
tmpfs                         3.7G  8.8M  3.7G    1% /run
tmpfs                         3.7G     0  3.7G    0% /sys/fs/cgroup
/dev/sda2                    1014M  182M  833M   18% /boot
/dev/sda1                     200M  9.8M  191M    5% /boot/efi
/dev/mapper/centos_xfs-home    61G   33M   61G    1% /home
tmpfs                         753M     0  753M    0% /run/user/0
tank                           15T  128K   15T    1% /tank

4TB*5台=20TB ですが、1台はアレなので、計算上は16TBとして、こんなもんでしょう。

ZFSの設定

圧縮

zfsでは圧縮アルゴリズムのサポートが複数あります。
https://pthree.org/2012/12/18/zfs-administration-part-xi-compression-and-deduplication/
このあたりのドキュメントを読む限り、彼のIMO(in my opinion)ベースではあるのですが、
『圧縮はcpuにとって軽い作業でしかないので、圧縮ファイル(動画、画像なども含む)が多い環境においても全ての環境においてonにすることを進める。
lz4が速いだけでなく圧縮率も高めなのでおすすめ。』
みたいなことが書いてあり、共感できる部分も多いため、採用。
※途中で圧縮を有効にしてもそれ以降しか圧縮が適用されないので、最初からやるべき。

[root@xfs ~]# zfs get compress
NAME  PROPERTY     VALUE     SOURCE
tank  compression  off       default
[root@xfs ~]# zfs set compression=lz4 tank
[root@xfs ~]# zfs get compression
NAME  PROPERTY     VALUE     SOURCE
tank  compression  lz4       local

圧縮のテスト

[root@xfs ~]# zfs list
NAME   USED  AVAIL  REFER  MOUNTPOINT
tank   614K  14.0T   153K  /tank
[root@xfs ~]# tar -cf /tank/text.tar /var/log/
tar: メンバ名から先頭の `/' を取り除きます
[root@xfs ~]# ll /tank/
合計 934
-rw-r--r-- 1 root root 4515840  3月 11 21:54 text.tar
[root@xfs ~]# zfs list /tank/
NAME   USED  AVAIL  REFER  MOUNTPOINT
tank  1.57M  14.0T  1.06M  /tank
[root@xfs ~]# zfs get compressratio /tank/
NAME  PROPERTY       VALUE  SOURCE
tank  compressratio  4.59x  -

ゴミ削除

[root@xfs ~]# rm /tank/text.tar 
rm: 通常ファイル `/tank/text.tar' を削除しますか? y

1/4.59 に容量を抑えられたってことですね。
効率的。

最終アクセス日

atime はファイルアクセスをするたびに最終アクセス日時の属性の更新を行うため、
relatime をonにすることで、その頻度を下げパフォーマンスを改善します。

[root@xfs ~]# zfs get atime
NAME  PROPERTY  VALUE  SOURCE
tank  atime     on     default
[root@xfs ~]# zfs get relatime
NAME  PROPERTY  VALUE     SOURCE
tank  relatime  off       default
[root@xfs ~]# zfs set relatime=on tank
[root@xfs ~]# zfs get relatime
NAME  PROPERTY  VALUE     SOURCE
tank  relatime  on        local

重複排除について

こちらも、先程のページに説明があります。

ZFSでは(ファイル単位でもなく、バイト単位でもなく)ブロック単位で重複の制御を行います。
ブロック単位で制御することで、効率よく重複データの制御ができるとのこと。

で、基本的にはRAM上で重複の管理をするためメモリの使用量がとにかく多いです。

結論として、1TBあたり5GBのメモリが必要とされるということで、
今回16TBなので80GBが必要です。
また、ZFSにはARCというキャッシュシステムがありますが、そのうち25%を重複管理に利用するため、
320(80*4)GB以上のメモリが必要です。
安く仕上げたいホームサーバとしては完全に無理ゲーです。

ただ、部分的に重複排除の設定を入れるのは有りのよう。

そんなこんなで重複排除は難しいですが、
しばらく使ってみます。

Raspberry pi 3 と PIFI Digi DAC+HIFI DAC で Volumio を楽しんでみた

今回用意したのは、
ギアべで安かった PIFI Digi DAC+HIFI DAC

まずは無心でVolumio のダウンロード

Get Started – Volumio

続いていつものように解凍。

Mac で microSD にイメージ焼き。
参考:Raspberry Pi 2 + Volumio + DAC でネットワークオーディオに挑戦(その2)

My-Mac:~ owners-name$ df
Filesystem    512-blocks      Used Available Capacity iused               ifree %iused  Mounted on
/dev/disk1s1   489825072 100724872 381504880    21% 1085195 9223372036853690612    0%   /
devfs                378       378         0   100%     656                   0  100%   /dev
/dev/disk1s4   489825072   6291496 381504880     2%       3 9223372036854775804    0%   /private/var/vm
map -hosts             0         0         0   100%       0                   0  100%   /net
map auto_home          0         0         0   100%       0                   0  100%   /home
/dev/disk2s2    30260336      2128  30258208     1%       0                   0  100%   /Volumes/RPI
My-Mac:~ owners-name$ df
Filesystem    512-blocks      Used Available Capacity iused               ifree %iused  Mounted on
/dev/disk1s1   489825072 100723464 381506288    21% 1085152 9223372036853690655    0%   /
devfs                378       378         0   100%     656                   0  100%   /dev
/dev/disk1s4   489825072   6291496 381506288     2%       3 9223372036854775804    0%   /private/var/vm
map -hosts             0         0         0   100%       0                   0  100%   /net
map auto_home          0         0         0   100%       0                   0  100%   /home
/dev/disk2s2    30260336      2144  30258192     1%       0                   0  100%   /Volumes/RPI
My-Mac:~ owners-name$ df
Filesystem    512-blocks      Used Available Capacity iused               ifree %iused  Mounted on
/dev/disk1s1   489825072 100737080 381492672    21% 1085163 9223372036853690644    0%   /
devfs                378       378         0   100%     656                   0  100%   /dev
/dev/disk1s4   489825072   6291496 381492672     2%       3 9223372036854775804    0%   /private/var/vm
map -hosts             0         0         0   100%       0                   0  100%   /net
map auto_home          0         0         0   100%       0                   0  100%   /home
/dev/disk2s2    30260336      2480  30257856     1%       0                   0  100%   /Volumes/RPI
My-Mac:~ owners-name$ sudo diskutil unmount /dev/disk2s2
Password:
Volume RPI on disk2s2 unmounted
My-Mac:~ owners-name$ sudo dd bs=1m if=~/volumio-2.362-2018-02-12-pi.img of=/dev/rdisk2
2800+0 records in
2800+0 records out
2936012800 bytes transferred in 399.316915 secs (7352588 bytes/sec)
My-Mac:~ owners-name$ exit

ラズパイに microSD を挿す
ラズパイに オーディオボードを挿す

で、電源つなぐ(起動)

暫く待つと、 http://volumio.local で接続が可能になり、
ブラウザ上でセットアップが可能。

※I2Sデバイスの選択では、 Hifibetty DAC Plus を選ぶと良いらしい。
参考:Configure Volumio with PiFi DIGI DAC+

で、セットアップが完了したら動作確認へ。

DLNAからの再生もUSBメモリからの再生も問題なし。

ステレオミニ、RCAどちらも再生できました。

2017年度ファイルサーバの自作見積もり

ってことで、
久々にファイルサーバをリプレースしたいので、見積もります。

条件としては、コスパ重視。
処理性能はそれほどこだわらない。
HDDは6台程度までは拡張する事を前提

ショップはなんでも揃いやすいドスパラ縛りで。

ケース Gravito ECB3010-B
ATX企画 3.5インチシャドウベイ8個(9個) 7,500円(+税)
電源 KRPW-GT600W/90+ (600W)
80PLUS GOLD 7,954円(+税)
M/B H270 Pro4 (H270 1151 DDR4)
SATA 6本以上、メモリ4本以上だと選択肢少なめ 10,377円(+税)
CPU Pentium G4560 BOX
4スレッドのコスパ番長 6,389円(+税)
RAM Panram W4U2400PS-4G (DDR4 PC4-19200 4GB 2枚組) 
テキトーに4GB*2本を選択 7,908円(+税)

ベース合計:40128円(+税)
※2017/8/16時点の価格

この内容にHDDを追加すれば取り敢えず構築可能です。
通常のHDDであれば
3TBを4台で3.1万程度
4TBを4台で4.6万程度
8TBを4台で10.4万程度

OS領域を分けたければ別途SSDなど追加で。

あとはケースファンを追加したりすれば取り敢えずはOKかなと。

Xiaomi mi 5s に 20170710版の LineageOS 14.1 をインストールしたら音が出なくなったので調べた

Xiaomi mi 5s に 20170710版の LineageOS 14.1 をインストールしたら音が出なくなりました。

具体的には、音楽再生時のイヤホンジャックからの出力&スピーカーからの出力がNG。
でも、
目覚ましはOK
BluetoothイヤホンもOK
だったので、会社に出社してから気づく有様。

原因はこちら
https://forum.xda-developers.com/showpost.php?p=72977907&postcount=1288

xiaomi公式側の 7.7.6 firmware を焼かないと、
正常に動作しないらしいとのこと。

こちらのLineage OS は情報が少なすぎてちょっとやりづらさがあるんですよね…

Xiaomi mi 5s に LineageOS 14.1 をインストールした

xiamo.eu v8.2.4.0 から LineageOS 14.1 に入れ替えたログです。

なんとかフラッシュに成功

オフィシャルのwikiを読んでもよくわからなかったので作業ログを残します。

1.何はともあれ、まずは上記のwikiを読む。

2.落とすものを落とす
Xiaomi Developer ROM
TWRP
LineageOS ROM
Gapps

3.作業開始

  1. fastboot でリカバリを焼く
  2. Dalvik / ART Cache, Cache, System, Data を Wipe
  3. Xiaomi Developer ROM を焼く
  4. 勝手に再起動するので(したので)、電源を落とす
  5. リカバリが上書きされているので、fastboot で再度リカバリを焼く
  6. Dalvik / ART Cache, Cache, System, Data を Wipe
  7. LineageOS, Gapps を焼く
  8. 再起動して完了

4.OS起動後の問題
初期セットアップを開始し、
『既存端末からのバックアップ』で設定を進めたところ、
「ネットワークにつながっていない」旨のエラーが表示された。
そもそもネットワークに繋ぐ流れにはなっていなかったためバグっぽい。

ひとまず画面を戻り、『新規端末としてセットアップ』の流れで進めたところ、
ネットワークに繋ぐ流れに入ったため、wifiのセットアップを行い、
すぐに画面を戻し、『既存端末からのバックアップ』の流れに再度入ったところ、
問題なく処理が進み、設定のコピーができた。

ということで、現在は問題なく使用できています。

作業中はまったこと

1.いきなり LineageOS を焼こうとして、 ERROR 7 が発生した。
Checking for MODEM build time-stanp 2017-04-13
assert failed: xiaomi.verify_modem("2017-04-13") == "1"


原因は書いてあるとおりだと思うんですが、
MODEMのバージョンがマッチしていないため。
Xiaomi オフィシャルのデベロッパーROMを焼くことで対応OK。

2.デベロッパーROMを焼いた後にLineageOSを焼こうとしたらエラーが発生。
結論から言うと、wipeが必要だった。