Il modo più semplice su Linux per ottenere la dimensione del disco è con blockdev --getsz
:
sudo -s
dd bs=512 if=/dev/zero of=/dev/sdx count=2048 seek=$((`blockdev --getsz /dev/sdx` - 2048))
La dimensione di ogni partizione è disponibile in /proc/partitions
. Il seguente comando mostra la dimensione di sdx
(in unità kB):
awk '$4 == "sdx" {print $3}' </proc/partitions
Così:
dd if=/dev/zero of=/dev/sdx bs=1k count=1024 \
seek=$(($(awk '$4 == "sdx" {print $3}' </proc/partitions) - 1024))
L'uso della ricerca per arrivare alla fine del disco funziona molto bene, ad esempio:
seek=$((
blockdev --getsz /dev/sda
- 2048))
Tuttavia, quando lo usi, ti consiglio di sapere che il tuo valore di conteggio è corretto o di non usarlo affatto. Il motivo per cui dico questo è che le unità possono avere settori da 512 byte o settori da 4k, e se usi questa soluzione con un'unità che ha settori da 4k, non andrai alla fine dell'unità con quel valore di conteggio, e potrebbero mancare le informazioni RAID alla fine (mi sono imbattuto in questo).