Berikut adalah repost yang dimodifikasi dan diperluas dari jawaban saya untuk pertanyaan Anda sebelumnya:
sfill
dari secure-delete
paket dapat melakukan apa yang Anda inginkan.
Tidak seperti zerofree (yang hanya bekerja dengan sistem file ext2, ext3, dan ext4), sfill akan bekerja dengan sistem file apa pun.
misalnya
sfill -l -l -z /mnt/X
Halaman beranda sfill / secure-delete sekarang tampaknya telah menghilang, tetapi dipaket untuk debian dan ubuntu. mungkin distro lain juga. jika Anda memerlukan kode sumber, itu dapat ditemukan di arsip debian jika Anda tidak dapat menemukannya di tempat lain.
CATATAN: sfill hanya berfungsi pada sistem file yang terpasang. Jika Anda nol-mengisi file gambar dari sistem host daripada dari dalam VM, Anda harus me-mount gambar fs pada host. Metode yang tepat bervariasi tergantung pada jenis file gambar apa itu (mis. Qcow2 atau mentah).
Memasang gambar 'mentah' mudah dan langsung. Cukup gunakan kpartx
pada file gambar untuk membuat perangkat loopback dan / dev / mapper / entri untuk setiap partisi kemudian dapat dipasang secara individual.
inilah skrip parsial yang dimodifikasi dari fragmen skrip yang saya gunakan untuk me-mount gambar hard-disk freedos net-bootable (digunakan untuk pembaruan bios pada mesin di mana flashrom tidak berfungsi):
image="myrawimagefile.img"
# use kpartx to build /dev/mapper device nodes
KP=$(kpartx -a -v "$image")
# now mount each partition under ./hd/
for p in $(echo "$KP" | awk '/^add map/ {print $3}') ; do
dm="/dev/mapper/$p"
fp=$(echo "$p" | sed -r -e 's/^loop[0-9]+//')
mkdir -p "./hd/$fp"
mount "$dm" "./hd/$fp"
sfill -l -l -v "./hd/$fp"
umount "$dm"
done
# now remove the loopback device and /dev/mapper entries
kpartx -d "$image"
CATATAN: mengasumsikan setiap partisi dalam gambar dapat dipasang. benar dalam kasus penggunaan saya (gambar hd freedos dengan satu partisi). tidak benar jika salah satu partisi, katakanlah, bertukar ruang. Mendeteksi partisi seperti itu dan menggunakan dd ke nol partisi swap dibiarkan sebagai latihan untuk pembaca :)
Metode ini, atau varian dari itu, harus bekerja untuk volume LVM juga.
Jika gambar Anda qcow maka Anda dapat menggunakan qemu-nbd
alat dari qemu-utils
paket, yang akan menyajikan file gambar dan partisi-partisi sebagai perangkat blok jaringan - misalnya / dev / nbd0 / dev / ndb0p1 - yang dapat digunakan dengan cara yang mirip dengan / perangkat dev / mapper di atas.
Mungkin lebih mudah dan lebih mudah (tetapi lebih memakan waktu) untuk digunakan qemu-img
untuk mengkonversi dari qcow ke mentah, menggunakan metode untuk mentah di atas, dan kemudian mengubah gambar mentah yang dimodifikasi kembali ke qcow2 terkompresi. Ini mungkin akan menghasilkan gambar yang sedikit lebih kecil daripada menggunakan qemu-nbd karena Anda akan mengompres gambar qcow2 yang baru saat sedang dibuat.
sfill
sarannya ? Sepertinya tidak memerlukan extX.