ディスクイメージの縮小方法(for Linux)

SDカードいっぱいにパーティションが作成されている場合、データが無い部分も含まれていて、そのままイメージ化すると無駄が多い。
そこで、データが記録されている部分だけにパーティションを縮小してイメージ化する方法をまとめた。

具体的な例としては、(安価になった)32GB MicroSDを使ってシステム構築したが、そのイメージを保存したり配布したいときに使う。
そうしないと、すっかすかなのに32GBのイメージを配布することになり、実際は8GBあれば余裕なのに32GBのもとと同じブランドのカードを使わないと復元できない。
SDカードはブランドごとに微妙な容量差があるため、同じブランドのカードでないとまるごとイメージは書き込むことができない例があります。

この手順は、完成したシステムの標準SDのイメージを作るときに活用できる。
開発用には、SDカードにOSをインストールし、Updateし、基本設定が終わった状態をイメージ化して保存しておくと便利。

手順概要

準備

SDカードから縮小したイメージを作成

縮小されたイメージからSDカードに復元

↓↓↓ ここからが詳細な手順 ↓↓↓

パーティション縮小したいSDカードをマウントする。

通常、/bootと/の2つがパーティションされているので、USBカードリーダーでつなげて第2パーティションを/mnt/usbあたりにマウント。
その状態から使用量を調べて、アンマウントして、縮小の作業を行う。

ストレージのサイズ変更(縮小)

以下は別PC(Linux専用機)のFedoraでの作業

概要:(容量は例)
SDカードは/dev/sddに接続されたとする。
第2パーティションの使用量は3.5GB。(dfコマンドで確認する)
目標パーティションサイズを4GBとする。(少し余裕を残さないと後で困る)
resize2fsで縮小するサイズは3.8GBとする。(目標より少なめに)
例) パーティションサイズ4GB>ファイルシステムサイズ3.8GB>使用サイズ3.5GB
最終的には、パーティションサイズ=ファイルシステムサイズ>使用サイズにする。(ファイルシステムサイズは使用サイズ+100MB以上とすることを推奨する)

これで、パーティションサイズ4000MBに変更される。
ただし、論理サイズは先に縮小した3800MBのまま。
これを次の操作でパーティションサイズと合致させる。

ファイルシステムのサイズ変更(パーティションサイズと同じサイズに拡張)

# resize2fs -p /dev/sdd2
サイズ指定をしなければ、ファイルシステムはパーティションサイズまで自動で拡張される
これで、ファイルシステムのサイズとパーティションのサイズが合致する

SDカードからイメージを作成

SDカード上で縮小処理した状態から、最小限のサイズだけイメージ化する。
例えば、8GBのカードに縮小構成を作成して上記パーティションの縮小作業をして4GBまで切り詰めたとする。
これをそのままddやWin32DiskImageでイメージ化すると、8GBカードの後半4GBもゴミデータとしてファイルに書き出されてしまう。

これで、出来上がったイメージを4GBを超えるカードに展開することができる。
もし4GBのカードに展開したければ、2つのパーティションのトータルサイズが4000MBより少なくなるようにそれぞれのサイズを計算して実行する。


添付ファイル: fileworking_log.txt 345件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-11-27 (月) 23:39:35