LNノードのmicroSDカード交換(128GB→16GB、Clonezilla)

LNノードのmicroSDカード交換(128GB→16GB、Clonezilla)

前回はSSDの交換でしたが、そろそろmicroSDカードも交換しておいたほうがいいかなと、思い立ちました。しかし、実際に作業をしてみると思ったより大変だったので、備忘録として残しておきます。

microSDカードを交換する理由

  • microSDカードの領域は、主にOSの起動に必要なファイルやシステムログファイル、ユーザーのホームディレクトリが含まれる重要なものです。
  • SSDのようにSMARTデータが取得できないため、交換時期が読めない。
    3年近く使用しているので、交換しておこうかなぐらいの理由です。

microSDカードのデータを移行する方法

今回は以前から気になっていたClonezillaを使用することにしました。
https://clonezilla.org/

Clonezillaは多彩な機能を持ちながら無料で使用できることがメリットですが、使用してみて少しクセがある(=初心者向けではない)というデメリットがあります。

また、今回microSDカードのサイズが大から小(128GB→16GB)への移行のため、事前に移行元のサイズを移行先と同じかそれより小さくする必要があるのですが、そのサイズの縮小に使用するコマンドもClonezillaのシェルで実行することができます。

用意したもの

  • Umbrel OSをインストールしている移行元のmicroSDカード(今回は SanDisk Ultra 128GB)
  • 移行先のmicroSDカード(今回は SanDisk Industrial 16GB)
  • microSDカードリーダー(USBタイプ x 2)
  • USBメモリ(Clonezillaの起動ディスク作成用、500MB以上)
  • WindowsPC(USBポート x 3ポート)

手順

ClonezillaのUSB起動ディスクの作成

ClonezillaはOSがインストールされたハードドライブにもインストールできるようですが、PC内蔵のHDD/SSDのクローンにも使用できるようにするため、USB起動ディスクを作成するものとします。

流れとしては、
1. Clonezilla Live のイメージファイル(ISO)をここからダウンロード
2. Balena Etcher(※) をPCにインストール
3. PCにUSBメモリを挿入する
4. Balena Etcher を起動し、1.のイメージファイルを選択してUSBメモリにflashする
となります。

※Balena Etcher は Umbrel OS をmicroSDにflashするのにも使用されているもので、複数あるflashの手段の一つです。他の方法についてはこちらを参照ください。

移行元のmicroSDカードの使用量確認

移行元のmicroSDカードがどのくらいデータを使用しているかをあらかじめ確認しておきます。(後ほど移行元のサイズを縮小する時の目安を確認します)

SSHでUmbrel OSにログイン後、以下のコマンドで確認します。

$ df -hP
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       117G  8.9G  104G   8% /
devtmpfs        3.7G     0  3.7G   0% /dev
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           3.9G  300M  3.6G   8% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mmcblk0p1  253M   30M  223M  12% /boot
/dev/sda1       1.8T  763G  987G  44% /mnt/data
tmpfs           782M     0  782M   0% /run/use/1000

移行元のmicroSDカードにはパーティションが2つあり、以下のように確認できます。
・パーティション1 /dev/mmcblk0p1 →Sizeが 253M で 30M を使用
・パーティション2 /dev/root →Sizeが 117G で 8.9G を使用

移行元のmicroSDカードの取り外し

Umbrel OSのGUI(http://umbrel.local/)にログインし、設定>Shutdown を実行します。シャットダウン完了後に移行元のmicroSDカードを取り外します。

PCにmicroSDカードを接続

2つのmicroSDカードリーダーにそれぞれ移行元・移行先のmicroSDカードを挿入し、PCに接続します。
(microSDカードとカードリーダーには相性があるようで、ここで認識されなくて時間を費やしてしまいました)

ClonezillaのUSBディスク起動

PCのBIOS(UEFI)の設定を変更し、ClonezillaのUSBディスクで起動するようにします。(設定変更方法はPCのメーカーにより異なります)

(私が使用するDellのPCの場合、起動時のDellのロゴ表示時にF12キーを連打すると One-Time Boot Menu が表示され、一時的に起動ディスクを変更できました)

Clonezillaの操作

Clonezillaの画面が表示されたら、一番目の「Clonezilla live (VGA 800x600)」のままEnterを押します。

「Choose language」の画面で、デフォルトの「en_US.UTF-8 English」を選択したままEnterを押します。
(「ja_JP.UTF-8 Japanese | 日本語」を選択すると、なぜかmicroSDカードを認識しなくなる確率が上がったので、避けたほうが良いかもしれません)

「Keyboard configuration」の画面で「Change Change keyboard layout」を選択します。
(後ほどシェルでコマンド入力が必要なため)

「Keyboard model」の選択画面で、日本語レイアウト(106が含まれるもの)を選択し、Enterを押します。

次の画面で「Japanese」が表示されていないので「Other」を選択し、Enterを押します。

一覧から「Japanese」を選択し、Enterを押します。

一覧から一番目の「Japanese」を選択し、Enterを押します。

「AltGr」は使用しないので「No AltGr key」を選択し、Enterを押します。

「Compose key」も使用しないので「No compose key」を選択し、Enterを押します。

「Start Clonezilla」の画面で、「Enter_shell   Enter command line prompt」を選択し、Enterを押します。
(この後、シェルのコマンドで移行元のmicroSDカードのサイズを変更します)

シェルのコマンド操作

以下のコマンドでブロックデバイス一覧を確認します。

$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0         7:0    0 367.3M  1 loop /usr/lib/live/mount/rootfs/filesystem.squashfs
                                      /run/live/rootfs/filesystem.squashfs
sda           8:0    1  14.8G  0 disk
sdb           8:16   1 119.1G  0 disk
├─sdb1        8:17   1   256M  0 part
└─sdb2        8:18   1 118.8G  0 part
sdc           8:32   1  28.8G  0 disk
└─sdc1        8:33   1   433M  0 part /usr/lib/live/mount/medium                                      /run/live/medium
nvme0n1     259:0    0 476.9G  0 disk
├─nvme0n1p1 259:1    0   400M  0 part
├─nvme0n1p2 259:2    0   128M  0 part
├─nvme0n1p3 259:3    0   218G  0 part
├─nvme0n1p4 259:4    0 208.7G  0 part
├─nvme0n1p5 259:5    0   1.1G  0 part
├─nvme0n1p6 259:6    0  15.1G  0 part
├─nvme0n1p7 259:7    0   1.5G  0 part
└─nvme0n1p8 259:8    0    32G  0 part /mnt/data

SIZEから sda が移行先microSD、sdb が移行元microSD、sdc がClonezilla起動ディスクであることが分かります。

ここから移行元microSDのサイズの縮小を行なっていきます。
sdb のパーティション1(sdb1)は起動領域のためそのままとし、パーティション2(sdb2)が 118.8G あるのでこの部分を縮小します。

流れとしては、
・sdb2 のファイルシステムサイズを縮小
・sdb2 のパーティションサイズを縮小
・sdb2 のファイルシステムサイズをパーティションサイズまで拡張
となります。

まず、以下のコマンドで sdb2 のファイルシステムのチェックを行ないます。

$ sudo e2fsck -f /dev/sdb2
e2fsck 1.47.1 (20-May-2024)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
rootfs: 286492/7729728 files (0.3% non-contiguous), 2822092/31150587 blocks

次に、以下のコマンドで sdb2 のファイルシステムサイズを縮小します。
(使用量が 8.9G だったので、12Gに縮小)

$ sudo resize2fs /dev/sdb2 12G
resize2fs 1.47.1 (20-May-2024)
Resizing the filesystem on /dev/sdb2 to 3145728 (4k) blocks.
The filesystem on /dev/sdb2 is now 3145728 (4k) blocks long.

次に、以下のコマンドで sdb2 のパーティションサイズを縮小します。
ここでは sdb2 のパーティションを削除し、新たに希望のサイズでパーティションを作成します。
その際に元の sdb2 のパーティションの開始セクタと同じ番号で開始セクタを指定しないとファイルシステムが壊れるので注意してください。

$ sudo fdisk /dev/sdb

Welcome to fdisk (util-linux 2.40.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): p  # パーティション情報の表示
Disk /dev/sdb: 119.08 GiB, 127865454592 bytes, 249737216 sectors
Disk model: Multi-Card
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x2bb0111b

Device     Boot  Start       End   Sectors   Size Id Type
/dev/sdb1         8192    532479    524288   256M  c W95 FAT32 (LBA)
/dev/sdb2       532480 249737182 249204703 118.8G 83 Linux

Command (m for help): d  # パーティションの削除
Partition number (1,2, default 2):

Partition 2 has been deleted.

Command (m for help): n  # パーティションの作成
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p):

Using default response p.
Partition number (2-4, default 2):
First sector (2048-249737215, default 2048): 532480  # 元の sdb2 と開始セクタ番号を合わせる
Last sector, +/-sectors or +/-size{K,M,G,T,P} (532480-249737215, default 249737215): +14G  # サイズを14Gに指定

Created a new partition 2 of type 'Linux' and of size 14 GiB.
Partition #2 contains a ext4 signature.

Do you want to remove the signature? [Y]es/[N]o: Y

The signature will be removed by a write command.

Command (m for help): p
Disk /dev/sdb: 119.08 GiB, 127865454592 bytes, 249737216 sectors
Disk model: Multi-Card
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: 0x2bb0111b

Device     Boot  Start      End  Sectors  Size Id Type
/dev/sdb1         8192   532479   524288  256M  c W95 FAT32 (LBA)
/dev/sdb2       532480 29892607 29360128   14G 83 Linux

Filesystem/RAID signature on partition 2 will be wiped.

Command (m for help): w  # 設定の保存
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

次に、以下のコマンドで sdb2 のファイルシステムサイズをパーティションサイズまで拡張します。

$ sudo e2fsck -f /dev/sdb2
e2fsck 1.47.1 (20-May-2024)
ext2fs_open2: Bad magic number in super-block
e2fsck: Superblock invalid, trying backup blocks...
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
$
$ sudo resize2fs /dev/sdb2
resize2fs 1.46.5 (30-Dec-2021)
Resizing the filesystem on /dev/sdb2 to 3822976 (4k) blocks.
The filesystem on /dev/sda2 is now 3822976 (4k) blocks long.

これで移行元microSDのサイズ縮小は完了です。
以下のコマンドでシェルを抜けます。

$ exit

次に移行元microSDを移行先microSDへクローンしていきます。

Clonezillaの操作

「Start Clonezilla」の画面に戻りますので、「Start_Clonezilla Start Clonezilla」を選択し、Enterを押します。

「Select mode」の画面で、二番目の「device-device work directly from a disk or partition to a disk or partition」を選択し、Enterを押します。

「Choose the mode」の画面で、二番目の「Expert  Expert mode: Choose your own options」を選択し、Enterを押します。

次の画面では「disk_to_local_disk local_disk_to_local_disk_clone」を選択し、Enterを押します。

「Choose local disk as source」(移行元選択)の画面で、「sdb   128GB_...」を選択し、Enterを押します。

「Choose loca disk as target」(移行先選択)の画面で、「sda   15.9GB_...」を選択し、Enterを押します。

「Set the advanced parameters」の画面で、一番上から5つ(デフォルトでON)と、追加で「-icds」をON([Space]キーでON/OFF切替)し、Enterを押します。
(「-icds」を選択しないと、今回のような大→小のクローンが失敗します。)

「Set the advanced parameters」の画面で、「-sfsck  Skip checking/repairing source file system」を選択し、Enterを押します。

次の「Set the advanced parameters」の画面では、上から4番目の「-k2  Enter command line prompt to create partition manually later」を選択し、Enterを押します。
これにより後ほど移行先のmicroSDカードのパーティションをシェルのコマンドで作成します。
(※以下の画像では「-k0」を選択していますが、「-k2」を選択します。「-k2」以外のオプションだと失敗しました)

「The action to perform when everything is finished」の画面で、「-p choose  Choose reboot/shutdown/etc when everything is finished」を選択し、Enterを押します。

画面下部に以下のような表示が出たら、Enterを押します。

念押しの確認で「Are you sure you want to continue? (y/n)」と表示されるので、「y」を入力し、Enterを押します。

その後、画面に多くのメッセージが出力されて、しばらくすると移行先のmicroSDカードのパーティションを作成するため、シェルのコマンドプロンプトに移行します。
以下のコマンドでパーティションを作成します。

$ sudo fdisk /dev/sda

Welcome to fdisk (util-linux 2.40.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): p  # パーティション情報の表示
Disk /dev/sda: 14.9 GiB, 15931539456 bytes, 31116288 sectors
Disk model: Multi-Card
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: 0x2bb0111b

Device     Boot Start      End  Sectors   Size Id Type
/dev/sda1         131 31116287 30583808  14.9G  c W95 FAT32 (LBA)

Command (m for help): d  # 一旦パーティションをすべて削除します
Selected partition 1
Partition 1 has been deleted.

Command (m for help): p
Disk /dev/sda: 14.9 GiB, 15931539456 bytes, 31116288 sectors
Disk model: Multi-Card
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: 0x2bb0111b

Command (m for help): n  # パーティション1の作成
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p):

Using default response p.
Partition number (1-4, default 1):
First sector (2048-3897343, default 2048): 8192  # sdb1 と開始セクタを合わせておきます
Last sector, +/-sectors or +/-size{K,M,G,T,P} (8192-31116287, default 31116287): +256M

Created a new partition 1 of type 'Linux' and of size 256 MiB.

Command (m for help): p
Disk /dev/sda: 14.9 GiB, 15931539456 bytes, 31116288 sectors
Disk model: Multi-Card
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: 0x2bb0111b

Device     Boot Start      End  Sectors  Size Id Type
/dev/sda1        8192   532479   524288  256M 83 Linux

Command (m for help): t  # システムIDの変更(sdb1 と合わせておきます)
Selected partition 1
Hex code or alias (type L to list all): L

00 Empty            27 Hidden NTFS Win  82 Linux swap / So  c1 DRDOS/sec (FAT-
01 FAT12            39 Plan 9           83 Linux            c4 DRDOS/sec (FAT-
02 XENIX root       3c PartitionMagic   84 OS/2 hidden or   c6 DRDOS/sec (FAT-
03 XENIX usr        40 Venix 80286      85 Linux extended   c7 Syrinx
04 FAT16 <32M       41 PPC PReP Boot    86 NTFS volume set  da Non-FS data
05 Extended         42 SFS              87 NTFS volume set  db CP/M / CTOS / .
06 FAT16            4d QNX4.x           88 Linux plaintext  de Dell Utility
07 HPFS/NTFS/exFAT  4e QNX4.x 2nd part  8e Linux LVM        df BootIt
08 AIX              4f QNX4.x 3rd part  93 Amoeba           e1 DOS access
09 AIX bootable     50 OnTrack DM       94 Amoeba BBT       e3 DOS R/O
0a OS/2 Boot Manag  51 OnTrack DM6 Aux  9f BSD/OS           e4 SpeedStor
0b W95 FAT32        52 CP/M             a0 IBM Thinkpad hi  ea Linux extended
0c W95 FAT32 (LBA)  53 OnTrack DM6 Aux  a5 FreeBSD          eb BeOS fs
0e W95 FAT16 (LBA)  54 OnTrackDM6       a6 OpenBSD          ee GPT
0f W95 Ext'd (LBA)  55 EZ-Drive         a7 NeXTSTEP         ef EFI (FAT-12/16/
10 OPUS             56 Golden Bow       a8 Darwin UFS       f0 Linux/PA-RISC b
11 Hidden FAT12     5c Priam Edisk      a9 NetBSD           f1 SpeedStor
12 Compaq diagnost  61 SpeedStor        ab Darwin boot      f4 SpeedStor
14 Hidden FAT16 <3  63 GNU HURD or Sys  af HFS / HFS+       f2 DOS secondary
16 Hidden FAT16     64 Novell Netware   b7 BSDI fs          f8 EBBR protective
17 Hidden HPFS/NTF  65 Novell Netware   b8 BSDI swap        fb VMware VMFS
18 AST SmartSleep   70 DiskSecure Mult  bb Boot Wizard hid  fc VMware VMKCORE
1b Hidden W95 FAT3  75 PC/IX            bc Acronis FAT32 L  fd Linux raid auto
1c Hidden W95 FAT3  80 Old Minix        be Solaris boot     fe LANstep
1e Hidden W95 FAT1  81 Minix / old Lin  bf Solaris          ff BBT
24 NEC DOS

Aliases:
   linux          - 83
   swap           - 82
   extended       - 05
   uefi           - EF
   raid           - FD
   lvm            - 8E
   linuxex        - 85
Hex code or alias (type L to list all): 0c
Changed type of partition 'Linux' to 'W95 FAT32 (LBA)'.

Command (m for help): p
Disk /dev/sda: 14.9 GiB, 15931539456 bytes, 31116288 sectors
Disk model: Multi-Card
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: 0x2bb0111b

Device     Boot Start     End  Sectors  Size Id Type
/dev/sda1        8192  532479   524288  256M  c W95 FAT32 (LBA)

Command (m for help): n  # パーティション2の作成
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p):

Using default response p.
Partition number (2-4, default 2):
First sector (2048-31116287, default 2048): 532480  # sdb2 と開始セクタを合わせておきます
Last sector, +/-sectors or +/-size{K,M,G,T,P} (532480-31116287, default 31116287):

Created a new partition 2 of type 'Linux' and of size 14.6 GiB.

Command (m for help): p
Disk /dev/sda: 14.9 GiB, 15931539456 bytes, 31116288 sectors
Disk model: Multi-CardUnits: 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: 0x2bb0111b

Device     Boot  Start      End  Sectors  Size Id Type
/dev/sda1         8192   532479   524288  256M  c W95 FAT32 (LBA)
/dev/sda2       532480 31116287 30583808 14.6G 83 Linux

Command (m for help): w  # 設定の保存
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

これで移行先microSDのパーティション作成は完了です。以下のコマンドでシェルを抜けると、クローン処理が再開されます。

$ exit

進捗が表示されるので、気長に待ちます。

クローン処理が終わると、以下のようにファイルシステムサイズの調整が行われます。

すべての処理が完了すると、reboot(再起動)/poweroff(シャットダウン)/コマンドプロンプト の選択を聞かれますので、シャットダウンします。

シャットダウン後に移行先microSDカードを取り外し、Raspberry Pi などに挿入してUmbrel OSが正しく起動するか確認します。

以上で作業は終了です。

おわりに

今回のように大きいサイズから小さいサイズへのmicroSDカード交換が大変な作業になることがお分かりいただけたかと思います。microSDカードのサイズ選びはくれぐれも慎重に行うようにしましょう(自戒)。

この続き : 0字 / 画像 0枚
100

会員登録 / ログインして続きを読む

関連記事

記事を書いた人

SNSにシェア

このクリエイターの人気記事

LNノードのSSDを交換してみた話

118

FutureBit Apollo II でソロマイニングを始めるまでにつまづいた話

91