#author("2021-02-13T17:00:43+09:00","default:honma","honma")
#author("2021-02-13T17:35:10+09:00","default:honma","honma")
* SDイメージのシュリンク [#x043c88a]

以前「 [[Kali Linux を RaspberryPi にインストールする]]」で作成したSDイメージのバックアップを作成する。~
32GBのSDカードを使用したので、そのままディスクイメージを作成せずシュリンクしてしまう手順のメモ。~
~
作業は仮想マシンで実施している。~

** ディスクイメージの作成 [#i3d7df60]

まずは、カードのアンマウント。

 $ sudo umount /media/developer/BOOT
 $ sudo umount /media/developer/ROOTFS

ディスクイメージを作成。

 $ sudo dd bs=4M if=/dev/sdb of=/mnt/hgfs/share/recovery.img status=progress 
 conv=fsync
 31243370496 bytes (31 GB, 29 GiB) copied, 4998 s, 6.3 MB/s
 7449+0 レコード入力
 7449+0 レコード出力
 31243370496 bytes (31 GB, 29 GiB) copied, 4997.8 s, 6.3 MB/s

ループバックデバイスがあることを確認し、イメージファイルをループバックデバイスに関連付ける。

 $ sudo losetup -f
 /dev/loop0
 $ sudo losetup /dev/loop0 /mnt/hgfs/share/recovery.img


ループバックデバイスのパーティションを認識させる。

 $ sudo partprobe /dev/loop0

gpartedをインストールする。

 $ sudo apt install gparted

gpartedを起動してパーティションの容量を変更する。

 $ sudo gparted /dev/loop0

+パーティション(P) - リサイズ/移動(R)~
/dev/loop0p2(ext4)の空きが19.91GiBなので1GiBほどまで小さくする。
+編集(E) - 保留中の全ての操作を適用する(A) を実行する。

ループバックデバイスの関連付けを解除する。

 $ sudo losetup -d /dev/loop0

作成したディスクイメージの確認。

 $ sudo fdisk -l /mnt/hgfs/share/recovery.img
 Disk /mnt/hgfs/share/recovery.img: 29.1 GiB, 31243370496 bytes, 61022208 sectors
 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: 0x9f1f2384
 
 Device                        Boot  Start      End  Sectors  Size Id Type
 /mnt/hgfs/share/recovery.img1        2048   262143   260096  127M  c W95 FAT32 
 (
 /mnt/hgfs/share/recovery.img2      262144 21561343 21299200 10.2G 83 Linux

ファイルのサイズはもとのままなのでをシュリンクする。~
Linuxパーティションの最後(21561343)に1加算したサイズに切り詰める。

 $ truncate --size=$[(21561343+1)*512] /mnt/hgfs/share/recovery.img

** SDイメージのリサイズ方法 [#j44b894f]

あるあるな話で、切り詰めた領域をSDイメージに書き込んだ後に拡げる方法。~
~
現状の確認。~

 kali@kali:~$ lsblk
 NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 mmcblk0     179:0    0 28.9G  0 disk
   mmcblk0p1 179:1    0  127M  0 part /boot
   mmcblk0p2 179:2    0 10.2G  0 part /

 kali@kali:~$ df -h
 ファイルシス   サイズ  使用  残り 使用% マウント位置
 /dev/root         10G  8.9G  641M   94% /
 devtmpfs         454M     0  454M    0% /dev
 tmpfs            459M     0  459M    0% /dev/shm
 tmpfs            184M  920K  183M    1% /run
 tmpfs            5.0M  4.0K  5.0M    1% /run/lock
 /dev/mmcblk0p1   126M   69M   57M   55% /boot
 tmpfs             92M   56K   92M    1% /run/user/129
 tmpfs             92M   52K   92M    1% /run/user/1000

1Gほど空けたつもりだったが、実際は残りが641Mなので、そのままだと使い勝手が悪そうなのでgrowpartを使用して拡張する。~

 kali@kali:~$ lsblk
 NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 mmcblk0     179:0    0 28.9G  0 disk
 mmcblk0p1 179:1    0  127M  0 part /boot
 mmcblk0p2 179:2    0 10.2G  0 part /

 kali@kali:~$ df -h
 ファイルシス   サイズ  使用  残り 使用% マウント位置
 /dev/root         10G  8.9G  641M   94% /
 devtmpfs         454M     0  454M    0% /dev
 tmpfs            459M     0  459M    0% /dev/shm
 tmpfs            184M  920K  183M    1% /run
 tmpfs            5.0M  4.0K  5.0M    1% /run/lock
 /dev/mmcblk0p1   126M   69M   57M   55% /boot
 tmpfs             92M   56K   92M    1% /run/user/129
 tmpfs             92M   52K   92M    1% /run/user/1000

growpart のインストール。

 kali@kali:~$ sudo apt install cloud-guest-utils
 パッケージリストを読み込んでいます... 完了
 依存関係ツリーを作成しています... 完了
 状態情報を読み取っています... 完了
 提案パッケージ:
   cloud-init
 以下のパッケージが新たにインストールされます:
   cloud-guest-utils
 アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
 23.7 kB のアーカイブを取得する必要があります。
 この操作後に追加で 62.5 kB のディスク容量が消費されます。
 取得:1 http://ftp.jaist.ac.jp/pub/Linux/kali kali-rolling/main arm64 cloud-guest-utils all 0.31-2 [23.7 kB]
 23.7 kB を 1秒 で取得しました (33.4 kB/s)
 以前に未選択のパッケージ cloud-guest-utils を選択しています。
 (データベースを読み込んでいます ... 現在 334167 個のファイルとディレクトリがインストールされています。)
 .../cloud-guest-utils_0.31-2_all.deb を展開する準備をしています ...
 cloud-guest-utils (0.31-2) を展開しています...
 cloud-guest-utils (0.31-2) を設定しています ...
 man-db (2.9.3-2) のトリガを処理しています ...
 kali-menu (2021.1.4) のトリガを処理しています ...

growpart でサイズを拡張する。

 kali@kali:~$ sudo growpart /dev/mmcblk0 2
 CHANGED: partition=2 start=262144 old: size=21299200 end=21561344 new: size=60243935 end=60506079

拡張されたサイズの確認。

 kali@kali:~$ lsblk
 NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 mmcblk0     179:0    0 28.9G  0 disk
   mmcblk0p1 179:1    0  127M  0 part /boot
   mmcblk0p2 179:2    0 28.7G  0 part /

resize2fs で ファイルシステムのサイズを変更する。

 kali@kali:~$ sudo resize2fs /dev/mmcblk0p2
 resize2fs 1.46.1 (9-Feb-2021)
 Filesystem at /dev/mmcblk0p2 is mounted on /; on-line resizing required
 old_desc_blocks = 1, new_desc_blocks = 2
 The filesystem on /dev/mmcblk0p2 is now 7530491 (4k) blocks long.

最終確認。

 kali@kali:~$ df -h
 ファイルシス   サイズ  使用  残り 使用% マウント位置
 /dev/root         29G  8.9G   19G   33% /
 devtmpfs         454M     0  454M    0% /dev
 tmpfs            459M     0  459M    0% /dev/shm
 tmpfs            184M  928K  183M    1% /run
 tmpfs            5.0M  4.0K  5.0M    1% /run/lock
 /dev/mmcblk0p1   126M   69M   57M   55% /boot
 tmpfs             92M   56K   92M    1% /run/user/129
 tmpfs             92M   52K   92M    1% /run/user/1000

これで、バックアップ時はコンパクトに、使用するときは大きなサイズで使うことができた。


~
~
※Raspberry PiはRaspberry Pi財団の登録商標です。
#htmlinsert(rpi3b+.html);


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS