Fdiskを実行してパーティションのサイズを変更すると、fdiskの出力の最後に次のように表示されます。
The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8)
再起動せずにそれを実行したいのですが(それを実行するスクリプトを記述します) kpartx を使用してこれを正しく行うにはどうすればよいですか?私はもう試した:
kpartx -f -v /dev/mmcblk0
どの出力:
mmcblk0p1 : 0 102400 /dev/mmcblk0 2048
mmcblk0p2 : 0 7657472 /dev/mmcblk0 104448
そして:
kpartx -a -v /dev/mmcblk0
出力:
device-mapper: reload ioctl on mmcblk0p1 failed: Invalid argument
create/reload failed on mmcblk0p1
add map mmcblk0p1 (0:0): 0 102400 linear /dev/mmcblk0 2048
device-mapper: reload ioctl on mmcblk0p2 failed: Invalid argument
create/reload failed on mmcblk0p2
add map mmcblk0p2 (0:0): 0 7657472 linear /dev/mmcblk0 104448
これは、Debianを実行しているraspiのSDカード用です。
編集:私がやろうとしていることを明確にするため。 SDカードから未使用のp3を削除し、p2のサイズを変更してカードを埋めます。カードには現在小さなブートパーティションp1が含まれており、p2はOSが置かれている場所です。
あなたが欲しいpartx -u
、kpartx
ではありません(デバイスマッパーデバイスで動作します)。
@derobert(元の質問にコメントした人)はおそらく正しいと思います。現在使用されているパーティションをfdiskする場合、再起動するしか方法がないようです。
partprobe
(apt-get install parted
で取得)を使用しても、次の出力が得られます。
Error: Partition(s) 2, 3 on /dev/mmcblk0 have been written, but we have
been unable to inform the kernel of the change, probably because it/they
are in use. As a result, the old partition(s) will remain in use. You
should reboot now before making further changes.
デバイスをアンマウントするのを忘れたため、この問題が発生していました。後:
Sudo umount /dev/sdb
fdiskは正しく動作しました。