sd_card.imgが512000000バイト(488 MBなど)であるとします。
$file sd_card.img
sd_card.img:DOS / MBRブートセクタ。パーティション1:ID = 0xc、開始CHS(0x0,1,1)、終了CHS(0xdf、15,54)、開始セクター63、999873セクター、拡張パーティションテーブル(最終)
fdisk
示す:
Selected partition 1
Device: sd_card.img1
Start: 63
End: 999935
Sectors: 999873
Cylinders: 1158
Size: 488.2M
Id: c
Type: W95 FAT32 (LBA)
Start-C/H/S: 0/1/1
End-C/H/S: 223/15/54
次のコマンドを使用してサイズを変更してみました。
$cp sd_card.img test.img
$dd if=/dev/zero of=test_zeros bs=1 count=1 seek=2G
$cat test_zeros >> test.img
$sudo parted test.img resizepart 1 2.5GB
$file test.img
test.img:DOS / MBRブートセクタ。パーティション1:ID = 0xc、CHS開始(0x0、1、1)、CHS終了(0x12f、239,61)、開始セクタ63、4882750セクタ
fdisk
示す:
Selected partition 1
Device: test.img1
Start: 63
End: 4882812
Sectors: 4882750
Cylinders: 334
Size: 2.3G
Id: c
Type: W95 FAT32 (LBA)
Start-C/H/S: 0/1/1
End-C/H/S: 303/239/61
その後、画像を32GBのSDカードに書き込みます。
dd if=test.img of=/dev/mmcblk0 conv=fsync status=progress
SDカードを装着すると...
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mmcblk0 179:0 0 29.7G 0 disk
`-mmcblk0p1 179:1 0 2.3G 0 part /run/media/mmcblk0p1
これは有望に見えましたが、df -h
そうではありませんでした。元のsd_card.imgをSDカードに書き込んで修正した後に表示される内容は次のとおりです。
Filesystem Size Used Avail Use% Mounted on
/dev/mmcblk0p1 485M 159M 326M 33% /run/media/mmcblk0p1
lsblk
ブロックデバイスサイズとファイルシステムサイズが表示されるため、df
これはパーティションに問題があることを示します。
残念ながら、より簡単な方法はFAT32パーティションでは機能しないため、これに限定されます。必要なライブラリをインストールした後に試しましたが、sudo gparted sd_card.img
成功しませんでした。代わりに、さまざまなタスクが表示されました。sd_card.img1ファイルが存在しないと出てきます。
私のプログラムにどのような問題があるのか、それを正しく実行する方法についての提案はありますか?
注: GNU Parted 3.4
修正する
@eyoung100の提案に従って、元のsd_card.imgをSDカードに書き込んでから、parted
GPartedと共にインストールされたコマンドラインツールを使用して利用可能なスペースを拡張してみました。
sudo parted
select /dev/mmcblk0
print free
Number Start End Size Type File system Flags
1 32.3kB 512MB 512MB primary fat32 lba
512MB 31.9GB 31.4GB Free Space
resizepart 1 100%
print free
Number Start End Size Type File system Flags
1 32.3kB 31.9GB 31.9GB primary fat32 lba
quit
GPartedは変更を適用するように指示されるまで何もしないので、何も保存せずに終了したいかどうか疑問に思いましたが、SDカードから起動すると変更が表示されるので、「parted
The」ハンドに近いと思います。 off」バージョンでは、自分が何をしているのかを知っておく必要があります。
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mmcblk0p1 485M 172M 313M 36% /run/media/mmcblk0p1
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mmcblk0 179:0 0 29.7G 0 disk
`-mmcblk0p1 179:1 0 29.7G 0 part /run/media/mmcblk0p1
前述のように変更が実装parted
されましたが、Free Spaceまたはdf -h
。 FAT32パーティションの実際のサイズはまだ約488MBです。
# fdisk -x /dev/mmcblk0
Disk /dev/mmcblk0: 29.72 GiB, 31914983424 bytes, 62333952 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: 0xe847ab93
Device Boot Start End Sectors Id Type Start-C/H/S End-C/H/S Attrs
/dev/mmcblk0p1 63 62333951 62333889 c W95 FAT32 (LBA) 0/1/1 1023/254/63
このsd_card.imgを別のデバイスに接続して起動すると、そのデバイスによってインストールされます。まだ何をすべきかわかりませんが、これを見ました>
# cat /run/systemd/transient/run-media-mmcblk0p1.mount
# This is a transient unit file, created programmatically via the systemd API. Do not edit.
[Unit]
After=dev-mmcblk0p1.device
BindsTo=dev-mmcblk0p1.device
[Mount]
What=/dev/mmcblk0p1
Options=umask=007,gid=6
[Unit]
[email protected]
[email protected]
答え1
私たち全員を混乱から救うために、今回の答えでこの記事を書いています。
何をするのか分からない
完了した後も、元の画像がまだマウントされているか、サイズが正しく調整されていない可能性があります。
新しいスタート
- すべてのSDカードをマウント解除します。
- これに従ってくださいコマンドラインチュートリアル、またはこれを使用してくださいツール/Etcherこのチュートリアルリンクでは、小さな500MBの画像ファイルをより大きな32GBのSDカードまたは他のデバイスに書き込んでください。
ノート:上記のチュートリアルはPiベースのオペレーティングシステム用に書かれていますが、この手順はすべてのSDカードに適用されます。また、埋め込まれたコマンドを再構築しなかったため、混乱が最小限に抑えられました。
- これで、抽出された488MBのイメージファイルが32GBのカードに書き込まれ、約31.5GBが残ります。
私が正しく理解したら、あなた(OP)は完全な32GBを満たすようにパーティションを拡張したいと思います。
拡張パーティション
- 上記の手順2では、元の小さな画像を大きなSDカードに書き込んだため、もう2枚目の画像の作成について心配する必要はありません。
- GPartedを起動します。
- GPartedがデバイスノードを再スキャンして更新できるように、32 GB SDカードを取り外して再挿入します。
- SDカードには小さな500 GBのパーティションが表示され、バーの左側にはターコイズボックスで囲まれ、右側にはマークされた大きな灰色の塊があります
Free Space
。 - ターコイズボックスの端にある矢印を使用可能なスペースの端まで(最大右に)ドラッグします。
- 変更を適用/保存するには、ツールバーのチェックマークをクリックします。
これがあなたが達成したいことを教えてください。そうでない場合は、質問に明確または詳細を提供する必要があります。