<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>NixOS on sonohen's tech blog</title><link>https://sonohen.net/tags/nixos/</link><description>Recent content in NixOS on sonohen's tech blog</description><generator>Hugo -- gohugo.io</generator><language>ja-JP</language><lastBuildDate>Mon, 26 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://sonohen.net/tags/nixos/index.xml" rel="self" type="application/rss+xml"/><item><title>NixOSでZFSからデータを救出する</title><link>https://sonohen.net/posts/2026/10/26/</link><pubDate>Mon, 26 Oct 2026 00:00:00 +0000</pubDate><guid>https://sonohen.net/posts/2026/10/26/</guid><description>&lt;h2 id="概要"&gt;概要
&lt;/h2&gt;&lt;p&gt;Ubuntu Linuxを使用していたが、自分のLinux環境をファイルで定義できるNixOSに興味を持ち、この週末に移行した。
Ubuntu LinuxではLUKSで暗号化したZFSパーティションを使用していたため、NixOSからZFSなパーティションをマウントしてデータ移行する必要があった。その対応の記録をしたので、ブログにまとめることにする。&lt;/p&gt;
&lt;h2 id="環境"&gt;環境
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;NixOS 26.05&lt;/li&gt;
&lt;li&gt;ThinkPad E14 Gen 3
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/dev/nvme0n1&lt;/code&gt;: KBG40ZNT256G(Toshiba) - NixOSインストール済&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/dev/nvme1n1&lt;/code&gt;: Samsung SSD 980 500GB - Ubuntu Linuxインストール済&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="目的"&gt;目的
&lt;/h2&gt;&lt;p&gt;以下を実現することを目的とする。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/dev/nvme1n1&lt;/code&gt; から &lt;code&gt;/dev/nvme0n1&lt;/code&gt; に &lt;code&gt;/home&lt;/code&gt; のデータを移行する&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/dev/nvme1n1&lt;/code&gt; を消去し、新たにext4のパーティションを作成し、それをNixOSの &lt;code&gt;/home&lt;/code&gt; にマウントする&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="データ移行の流れ"&gt;データ移行の流れ
&lt;/h2&gt;&lt;p&gt;大きくは以下の4つの手順を踏む。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;現状の把握&lt;/li&gt;
&lt;li&gt;LUKS鍵の取り出し&lt;/li&gt;
&lt;li&gt;ZFSパーティションのマウントとデータの移行&lt;/li&gt;
&lt;li&gt;ディスクのフォーマットと /home ヘのマウント&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="現状の把握"&gt;現状の把握
&lt;/h2&gt;&lt;h3 id="ディスクの状況"&gt;ディスクの状況
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;lsblk -o NAME,PATH,SIZE,TYPE,FSTYPE,UUID,MOUNTPOINTS,MODEL
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME PATH SIZE TYPE FSTYPE UUID MOUNTPOINTS MODEL
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nvme0n1 /dev/nvme0n1 238.5G disk KBG40ZNT256G TOSHIBA MEMORY
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├─nvme0n1p1 /dev/nvme0n1p1 2G part vfat E29B-9551 /boot
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├─nvme0n1p2 /dev/nvme0n1p2 24G part swap 15f27874-dfbd-4afb-92cb-56bd089cea04 [SWAP]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;└─nvme0n1p3 /dev/nvme0n1p3 212.5G part ext4 ad329431-4846-495f-b312-67d24b2a005c /nix/store
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; /
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nvme1n1 /dev/nvme1n1 465.8G disk Samsung SSD 980 500GB
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├─nvme1n1p1 /dev/nvme1n1p1 1G part vfat FACF-1404
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├─nvme1n1p2 /dev/nvme1n1p2 2G part zfs_member 12601984913637652299
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├─nvme1n1p3 /dev/nvme1n1p3 8G part
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;└─nvme1n1p4 /dev/nvme1n1p4 454.7G part zfs_member 14549146316260236921
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="zfs-の状態"&gt;&lt;code&gt;ZFS&lt;/code&gt; の状態
&lt;/h3&gt;&lt;p&gt;あらかじめ &lt;code&gt;configuration.nix&lt;/code&gt; に以下の記述を入れたうえでビルドしておく必要がある。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-nix" data-lang="nix"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;networking&lt;span style="color:#f92672"&gt;.&lt;/span&gt;hostId &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;1aeba738&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;boot&lt;span style="color:#f92672"&gt;.&lt;/span&gt;supportedFilesystems &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [ &lt;span style="color:#e6db74"&gt;&amp;#34;zfs&amp;#34;&lt;/span&gt; ];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;boot&lt;span style="color:#f92672"&gt;.&lt;/span&gt;zfs&lt;span style="color:#f92672"&gt;.&lt;/span&gt;forceImportRoot &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;なお &lt;code&gt;networking.hostId&lt;/code&gt; には、以下を実行して取得した値を設定する。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;head -c &lt;span style="color:#ae81ff"&gt;8&lt;/span&gt; /etc/machine-id
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;以下のように &lt;code&gt;nix shell nixpkgs#zfs&lt;/code&gt; を実行すれば環境を汚すこともないので便利である。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nix shell nixpkgs#zfs -c zpool import
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;無事に認識されていることがわかる。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; pool: bpool
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; id: 12601984913637652299
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; state: ONLINE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;status: The pool was last accessed by another system.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;action: The pool can be imported using its name or numeric identifier and
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	the &amp;#39;-f&amp;#39; flag.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-EY
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;config:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	bpool ONLINE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	 nvme-eui.002538db11c4531d-part2 ONLINE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; pool: rpool
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; id: 14549146316260236921
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; state: ONLINE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;status: The pool was last accessed by another system.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;action: The pool can be imported using its name or numeric identifier and
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	the &amp;#39;-f&amp;#39; flag.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-EY
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;config:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	rpool ONLINE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	 nvme-eui.002538db11c4531d-part4 ONLINE
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ちなみに &lt;code&gt;rpool&lt;/code&gt; がUbuntu Linuxで言うところの &lt;code&gt;/&lt;/code&gt; である。&lt;/p&gt;
&lt;h2 id="luks鍵の取り出し"&gt;LUKS鍵の取り出し
&lt;/h2&gt;&lt;p&gt;Ubuntu Linuxの &lt;code&gt;/&lt;/code&gt; をマウントするためのディレクトリとして &lt;code&gt;/mnt/zfs-recovery/&lt;/code&gt; を作成する。マウントし &lt;code&gt;rpool&lt;/code&gt; の状態を確認する。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nix shell nixpkgs#zfs -c zpool import -f -o readonly&lt;span style="color:#f92672"&gt;=&lt;/span&gt;on -N -R /mnt/zfs-recovery rpool
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nix shell nixpkgs#zfs -c zfs list -r -o name,mountpoint,canmount,encryption,keystatus rpool
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME MOUNTPOINT CANMOUNT ENCRYPTION KEYSTATUS
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool /mnt/zfs-recovery off aes-256-gcm unavailable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/ROOT none off aes-256-gcm unavailable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/ROOT/ubuntu_094mo3 /mnt/zfs-recovery on aes-256-gcm unavailable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/ROOT/ubuntu_094mo3/srv /mnt/zfs-recovery/srv on aes-256-gcm unavailable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/ROOT/ubuntu_094mo3/usr /mnt/zfs-recovery/usr off aes-256-gcm unavailable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/ROOT/ubuntu_094mo3/usr/local /mnt/zfs-recovery/usr/local on aes-256-gcm unavailable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/ROOT/ubuntu_094mo3/var /mnt/zfs-recovery/var off aes-256-gcm unavailable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/ROOT/ubuntu_094mo3/var/games /mnt/zfs-recovery/var/games on aes-256-gcm unavailable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/ROOT/ubuntu_094mo3/var/lib /mnt/zfs-recovery/var/lib on aes-256-gcm unavailable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/ROOT/ubuntu_094mo3/var/lib/AccountsService /mnt/zfs-recovery/var/lib/AccountsService on aes-256-gcm unavailable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/ROOT/ubuntu_094mo3/var/lib/NetworkManager /mnt/zfs-recovery/var/lib/NetworkManager on aes-256-gcm unavailable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/ROOT/ubuntu_094mo3/var/lib/apt /mnt/zfs-recovery/var/lib/apt on aes-256-gcm unavailable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/ROOT/ubuntu_094mo3/var/lib/dpkg /mnt/zfs-recovery/var/lib/dpkg on aes-256-gcm unavailable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/ROOT/ubuntu_094mo3/var/log /mnt/zfs-recovery/var/log on aes-256-gcm unavailable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/ROOT/ubuntu_094mo3/var/mail /mnt/zfs-recovery/var/mail on aes-256-gcm unavailable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/ROOT/ubuntu_094mo3/var/snap /mnt/zfs-recovery/var/snap on aes-256-gcm unavailable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/ROOT/ubuntu_094mo3/var/spool /mnt/zfs-recovery/var/spool on aes-256-gcm unavailable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/ROOT/ubuntu_094mo3/var/www /mnt/zfs-recovery/var/www on aes-256-gcm unavailable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/USERDATA none off aes-256-gcm unavailable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/USERDATA/home_lqdl5w /mnt/zfs-recovery/home on aes-256-gcm unavailable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/USERDATA/root_lqdl5w /mnt/zfs-recovery/root on aes-256-gcm unavailable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/keystore - - off -
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;rpool/USERDATA/home_lqdl5w&lt;/code&gt; が &lt;code&gt;/home&lt;/code&gt; のデータセットであることがわかる。
&lt;code&gt;KEYSTATUS&lt;/code&gt; が &lt;code&gt;unavailable&lt;/code&gt; になっているので、 &lt;code&gt;encryptionroot&lt;/code&gt; を確認する。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nix shell nixpkgs#zfs -c zfs get -o property,value encryptionroot,keylocation,keyformat,keystatus,mountpoint,canmount rpool
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;PROPERTY VALUE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;encryptionroot rpool
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;keylocation file:///run/keystore/rpool/system.key
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;keyformat raw
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;keystatus unavailable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mountpoint /mnt/zfs-recovery
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;canmount off
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ubuntu Linux では &lt;code&gt;rpool/keystore/system.key&lt;/code&gt; が存在し、起動時に &lt;code&gt;/run/keystore/rpool&lt;/code&gt; にマウントされる。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nix shell nixpkgs#cryptsetup -c cryptsetup open --readonly /dev/zvol/rpool/keystore keystore-rpool
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;以下のコマンドを実行し、確認する。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;lsblk -f /dev/mapper/keystore-rpool
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;keystore-rpool ext4 1.0 keystore-rpool d18e3c3c-d0fb-4507-94bc-61327e95edc4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;期待される場所(&lt;code&gt;keylocation file:///run/keystore/rpool/system.key&lt;/code&gt;)で参照できるようにマウントする。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo mkdir -p /run/keystore/rpool
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo mount -o ro,noload /dev/mapper/keystore-rpool /run/keystore/rpool
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo test -s /run/keystore/rpool
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nix shell nixpkgs#zfs -c zfs load-key rpool
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="zfsパーティションのマウントとデータの移行"&gt;ZFSパーティションのマウントとデータの移行
&lt;/h2&gt;&lt;p&gt;ここまでで rpool を読み込むための鍵を入手できたので &lt;code&gt;rpool/USERDATA/home_lqdl5w&lt;/code&gt; をマウントする。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nix shell nixpkgs#zfs -c zpool get altroot rpool
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nix shell nixpkgs#zfs -c zfs get mountpoint,canmount,keystatus rpool/USERDATA/home_lqdl5w
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;keystatus = available&lt;/code&gt;, &lt;code&gt;canmount = on&lt;/code&gt; であることが確認できる。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME PROPERTY VALUE SOURCE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool altroot /mnt/zfs-recovery local
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME PROPERTY VALUE SOURCE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/USERDATA/home_lqdl5w mountpoint /mnt/zfs-recovery/home local
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/USERDATA/home_lqdl5w canmount on local
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rpool/USERDATA/home_lqdl5w keystatus available -
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;マウントし、内容を確認する。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo mkdir -p /mnt/zfs-recovery/home
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nix shell nixpkgs#zfs -c zfs mount rpool/USERDATA/home_lqdl5w
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo findmnt -S rpool/USERDATA/home_lqdl5w
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ls -la /mnt/zfs-recovery/home
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;TARGET SOURCE FSTYPE OPTIONS
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/mnt/zfs-recovery/home
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; rpool/USERDATA/home_lqdl5w
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; zfs ro,nodev,relatime,xattr,posixac
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;total 22
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;drwxr-xr-x 3 root root 3 Oct 4 09:43 .
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;drwxr-xr-x 3 root root 4096 Oct 25 14:33 ..
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;drwxr-x---+ 32 sonohen 1000 59 Oct 24 23:07 sonohen
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ここまできたら、あとは &lt;code&gt;rsync&lt;/code&gt; を使用してデータを救出すればよい。
&lt;code&gt;/dev/nvme1n1p1&lt;/code&gt; を &lt;code&gt;/mnt/new-home&lt;/code&gt; にマウントし、 &lt;code&gt;/home&lt;/code&gt; の全データを &lt;code&gt;rsync&lt;/code&gt; で移行する。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo mkdir -p /mnt/new-home
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo mount /dev/nvme1n1p1 /mnt/new-home
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nix shell nixpkgs#rsync -c rsync -aHAXx --numeric-ids /home/ /mnt/new-home/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;blkid -s UUID -o value /dev/nvme1n1p1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="ディスクのフォーマットと-home-へのマウント"&gt;ディスクのフォーマットと /home へのマウント
&lt;/h2&gt;&lt;h3 id="rpool-の切り離し"&gt;&lt;code&gt;rpool&lt;/code&gt; の切り離し
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nix shell nixpkgs#zfs -c zfs unmount rpool/USERDATA/home_lqdl5w
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo umount /run/keystore/rpool
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nix shell nixpkgs#cryptsetup -c cryptsetup close keystore-rpool
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nix shell nixpkgs#zfs -c zpool export rpool
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;切り離し後の確認を行う。nvme1n1がマウントされていないことを確認する。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo findmnt -T /
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo findmnt -T /boot
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo findmnt -T /home
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;lsblk -o NAME,SIZE,MODEL,FSTYPE,MOUNTPOINTS /dev/nvme1n1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;TARGET SOURCE FSTYPE OPTIONS
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/ /dev/nvme0n1p3 ext4 rw,relatime
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;TARGET SOURCE FSTYPE OPTIONS
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/boot /dev/nvme0n1p1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; vfat rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=is
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;TARGET SOURCE FSTYPE OPTIONS
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/ /dev/nvme0n1p3 ext4 rw,relatime
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME SIZE MODEL FSTYPE MOUNTPOINTS
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nvme1n1 465.8G Samsung SSD 980 500GB
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├─nvme1n1p1 1G vfat
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├─nvme1n1p2 2G zfs_member
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├─nvme1n1p3 8G
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;└─nvme1n1p4 454.7G zfs_member
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="パーティションを作成する"&gt;パーティションを作成する
&lt;/h3&gt;&lt;p&gt;この作業は破壊的であるため、データのバックアップが完了していることを再確認してから実行する。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nix shell nixpkgs#gptfdisk -c sgdisk --clear --new&lt;span style="color:#f92672"&gt;=&lt;/span&gt;1:0:0 --typecode&lt;span style="color:#f92672"&gt;=&lt;/span&gt;1:8300 -change-name&lt;span style="color:#f92672"&gt;=&lt;/span&gt;1:home /dev/nvme1n1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nix shell nixpkgs#parted -c partprobe /dev/nvme1n1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo udevadm settle
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo wipefs -a /dev/nvme1n1p1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo mkfs.ext4 -L home /dev/nvme1n1p1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS /dev/nvme1n1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME SIZE TYPE FSTYPE MOUNTPOINTS
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nvme1n1 465.8G disk
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;└─nvme1n1p1 465.8G part ext4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="configuration-dot-nix-の修正"&gt;&lt;code&gt;configuration.nix&lt;/code&gt; の修正
&lt;/h3&gt;&lt;p&gt;以下を追記し、リビルドして再起動する。再起動後 &lt;code&gt;/dev/nvme1n1p1&lt;/code&gt; が &lt;code&gt;/home&lt;/code&gt; にマウントされていることを確認する。なお、=/dev/nvme1n1p1= (ext4ファイルシステム) のUUIDは &lt;code&gt;blkid -s UUID -o value /dev/nvme1n1p1&lt;/code&gt; で取得できる。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-nix" data-lang="nix"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;fileSystems&lt;span style="color:#f92672"&gt;.&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;/home&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; device &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;/dev/disk/by-uuid/66cbb556-4c8b-4480-8ec5-b40484996a4b&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; fsType &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;ext4&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="後始末"&gt;後始末
&lt;/h3&gt;&lt;p&gt;冒頭で &lt;code&gt;configuration.nix&lt;/code&gt; に追記した以下の記述は不要なので消す。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-nix" data-lang="nix"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;networking&lt;span style="color:#f92672"&gt;.&lt;/span&gt;hostId &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;1aeba738&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;boot&lt;span style="color:#f92672"&gt;.&lt;/span&gt;supportedFilesystems &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [ &lt;span style="color:#e6db74"&gt;&amp;#34;zfs&amp;#34;&lt;/span&gt; ];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;boot&lt;span style="color:#f92672"&gt;.&lt;/span&gt;zfs&lt;span style="color:#f92672"&gt;.&lt;/span&gt;forceImportRoot &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="感想"&gt;感想
&lt;/h2&gt;&lt;p&gt;順を追って対応すればなんら難しくはないのだが、面倒臭い作業ではある。当面対応したくはないのだが、また機会がありそうなので、記録しておく。&lt;/p&gt;</description></item></channel></rss>