Ось модифікований і значно розширений репост моєї відповіді на ваше попереднє запитання:
sfill
з secure-delete
пакета можна робити те, що ти хочеш.
На відміну від zerofree (який працює лише з файловими системами ext2, ext3 та ext4), sfill працюватиме з будь-якою файловою системою.
напр
sfill -l -l -z /mnt/X
Домашня сторінка sfill / secure-delete начебто зникла, але вона упакована для debian та ubuntu. ймовірно, інші дистрибутиви теж. якщо вам потрібен вихідний код, його можна знайти в архівах debian, якщо ви не можете його знайти більше ніде.
ПРИМІТКА: sfill працює лише у змонтованій файловій системі. Якщо ви заповнюєте нульові файли зображень з хост-системи, а не з VM, вам потрібно буде встановити зображення fs на хості. Точний метод залежить від типу файлу зображення (наприклад, qcow2 або raw).
Монтаж «сирих» зображень простий і простий. Просто використовуйте kpartx
файл зображення для створення пристрою циклу зворотного зв'язку, і / dev / mapper / записи для кожного розділу можуть бути змонтовані окремо.
ось частковий скрипт, модифікований з фрагмента сценарію, який я використовую для монтажу зображень на жорсткому диску, завантажених мережею, що завантажуються (використовується для оновлення біосу на машинах, де flashrom не працюватиме):
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"
ПРИМІТКА: передбачається, що кожен розділ на зображенні може бути встановлений. вірно в моєму випадку використання (зображення hd-фрідесона з одним розділом). Не відповідає дійсності, якщо один з розділів є, скажімо, свопом простору. Виявлення таких розділів та використання dd для нульового розміщення розділів залишається як вправа для читача :)
Цей метод або його варіант також повинен працювати для обсягів LVM.
Якщо ваші зображення є qcow, ви можете використовувати qemu-nbd
інструмент із qemu-utils
пакета, який подасть файл зображення та його розділи як пристрої мережевого блоку - наприклад / dev / nbd0 / dev / ndb0p1 - який може бути використаний аналогічно / пристрої для розробників / картографів вище.
Можливо, простіше і менше клопотів (але забирає більше часу) використовувати qemu-img
для перетворення з qcow в сировину, використовувати метод для сировини вище, а потім перетворити модифікований вихідний образ назад в стислий qcow2. Це, ймовірно, призведе до трохи менших зображень, ніж використання qemu-nbd, оскільки ви будете стискати нове зображення qcow2 під час його створення.
sfill
пропозицію ? Схоже, для цього не потрібен extX.