Pracuję na systemie wbudowanym z dd w wersji busybox. Próbuję przetestować wymazanie do napędu z jakiegoś zewnętrznego narzędzia, jednak dd nie czyta z dysku ponownie po wymazaniu, ale pokazuje mi buforowane dane.
Zawęziłem go do dd, ponieważ kiedy robię początkowe dd, widzę dane, ponownie uruchamiam system, aby opróżnić pamięć podręczną, wykonałem kasowanie, a potem uruchomiłem dd ponownie, wyszło ze wszystkimi zerami.
Jeśli jednak wykonam polecenie dd w ustawieniach fabrycznych, usuń dysk i ponownie uruchom program dd bez ponownego uruchamiania, nie pokaże mi wszystkich zer do momentu ponownego uruchomienia.
Przeczytałem na stronie GNU, że dd obsługuje opcję iflag, z flagą nocache, ale busybox nie obsługuje tej opcji, więc nie ma mowy.
Moje pytanie brzmi: jak zmusić dd do ponownego odczytu z dysku zamiast z pamięci podręcznej?
Odpowiedzi:
Możesz spróbować
która upuszcza różnego rodzaju skrytki.
Szczegółowe informacje można znaleźć
/usr/src/linux/Documentation/sysctl/vm.txt
nadrop_caches
.(Uwaga: pytanie dotyczyło busybox dd, które do tej pory nie obsługuje
iflag=direct
).źródło
/proc
system plików jest wyłączony w niektórych osadzonych konfiguracjach systemu Linux.dd
ich wyrzuceniu w trakcie przesyłania dużych ilości danych.Na podstawie odpowiedzi @ sendmoreinfo:
Nie wpływa na pamięć podręczną odczytu.
źródło
Bezpośrednie we / wy (tryb otwarty
O_DIRECT
) powinno działać, ale twoje jądro i / lubdd
może go nie obsługiwać.źródło
Mały rozkwit do iflag = bezpośrednia odpowiedź; podaj też pasek postępu:
Bez iflag / oflag pv zgłasza, że jest skończony, a następnie wygląda na zawieszony; ale dd na urządzeniu nadal działa w pamięci podręcznej.
źródło