Oto zmodyfikowana i znacznie rozszerzona odpowiedź na moje poprzednie pytanie:
sfill
z secure-delete
paczki możesz robić co chcesz.
W przeciwieństwie do zerofree (który działa tylko z systemami plików ext2, ext3 i ext4), sfill będzie działał z każdym systemem plików.
na przykład
sfill -l -l -z /mnt/X
Wygląda na to, że strona główna sfill / secure-delete zniknęła, ale jest spakowana dla Debiana i Ubuntu. prawdopodobnie inne dystrybucje też. jeśli potrzebujesz kodu źródłowego, możesz go znaleźć w archiwach Debiana, jeśli nie możesz go znaleźć nigdzie indziej.
UWAGA: sfill działa tylko na zamontowanym systemie plików. Jeśli wypełniasz zero plików obrazów z systemu hosta, a nie z maszyny wirtualnej, musisz zainstalować obraz fs na hoście. Dokładna metoda różni się w zależności od rodzaju pliku obrazu (np. Qcow2 lub raw).
Montowanie „surowych” obrazów jest łatwe i proste. Wystarczy użyć kpartx
pliku obrazu, aby utworzyć urządzenie zwrotne, a / dev / mapper / wpisy dla każdej partycji można następnie zamontować osobno.
oto częściowy skrypt zmodyfikowany z fragmentu skryptu, którego używam do montowania obrazów dysku twardego freedos z uruchamianiem sieciowym (używanych do aktualizacji bios na komputerach, na których Flashrom nie działa):
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"
UWAGA: zakłada, że każdą partycję na obrazie można zamontować. prawda w moim przypadku użycia (obraz HD Freedos z jedną partycją). nieprawda, jeśli jedną z partycji jest, powiedzmy, przestrzeń wymiany. Wykrywanie takich partycji i używanie dd do zerowania partycji wymiany pozostawia się jako ćwiczenie dla czytelnika :)
Ta metoda lub jej wariant powinien również działać w przypadku woluminów LVM.
Jeśli twoje obrazy to qcow, możesz użyć qemu-nbd
narzędzia z qemu-utils
pakietu, które przedstawi plik obrazu i jego partycje jako urządzenia blokujące sieć - np. / Dev / nbd0 / dev / ndb0p1 - które mogą być używane w podobny sposób jak / urządzenia deweloperskie / mapujące powyżej.
Być może jest to łatwiejsze i mniej kłopotliwe (ale bardziej czasochłonne), aby użyć qemu-img
do konwersji z Qcow na Raw, użyj powyższej metody dla Raw, a następnie przekonwertować zmodyfikowany surowy obraz z powrotem do skompresowanego qcow2. Prawdopodobnie spowoduje to nieco mniejsze obrazy niż użycie qemu-nbd, ponieważ będziesz kompresował nowy obraz qcow2 podczas jego tworzenia.
sfill
sugestię ? Wygląda na to, że nie wymaga extX.