To nie /dev/zerowymazuje czegoś, to ddwymazuje przez skopiowanie. Fakty, że bajty są zerowe i że bajty zerowe pochodzą z /dev/zerojakiegoś innego źródła zer, są drobnymi szczegółami.
Chrylis -on strike-
2
Jeśli chcesz po prostu wyczyścić tablicę partycji, wipefs może być bardziej niezawodny.
rura
Odpowiedzi:
23
Czy dd if=/dev/zero of=/dev/sdawyczyści istniejącą tabelę partycji?
Tak, tablica partycji znajduje się w pierwszej części dysku, więc zapisanie jej zniszczy ją. Że ddnapisze na cały napęd jeśli pozwolisz działać (tak to zajmie trochę czasu).
Coś takiego dd bs=512 count=50 if=/dev/zero of=/dev/sdawystarczyłoby do zastąpienia pierwszych 50 sektorów, w tym tablicy partycji MBR i podstawowego GPT. Chociaż przynajmniej według Wikipedii, GPT ma dodatkową kopię tabeli partycji na końcu dysku, więc nadpisanie tylko części w głowie dysku może nie wystarczyć.
(Nie musisz jednak używać dd. head -c10000 /dev/zero > /dev/sdaLub cat /bin/ls > /dev/sdamiałby ten sam efekt.)
czy fdisk /dev/sda g(dla GPT) wymazuje zera zapisane przez / dev / zero?
Również tak (pod warunkiem, że zapiszesz zmiany).
(Jednak frazowanie w tytule jest po prostu mylące, /dev/zerosamo w sobie nie robi nic więcej niż zwykłe przechowywanie.)
Uwaga dodatkowa: jeśli dane wyjściowe /bin/lssą wystarczająco krótkie, wówczas operacja zapisu może zastąpić tylko kilka bajtów MBR, a najważniejsza część (początkowy i końcowy sektor partycji) może pozostać nienaruszona. Chociaż ponowna instalacja MBR (najczęściej grub --install /dev/sda) jest nadal wymagana, aby system mógł zostać ponownie uruchomiony.
peterh - Przywróć Monikę
8
@peterh Zauważ, że przekierowują rzeczywisty lsplik binarny, a nie dane wyjściowe z jego uruchomienia. Najmniejszy możliwy plik binarny ELF „Hello World” wydaje się mieć 98 bajtów (czyli mniej niż MBR), ale myślę, że można bezpiecznie założyć, że każdy plik binarny z rzeczywistymi funkcjami powinien być większy niż MBR (notorycznie mała implementacja FreeBSD lsto 32784 bajty długie, nawet wystarczająco duże, aby zastąpić część początkową dysku GPT). ;)
n.
O tak, możesz też użyć wyjścia ls. Lista /usr/binprawdopodobnie byłaby wystarczająco długa. Chciałem użyć tego echojako przykładu, ale IIRC potrzebujesz prawie 500 bajtów, aby zastąpić tablicę partycji MBR, więc pisanie jest trochę męczące. (bez względu na dokładną liczbę)
ilkkachu
1
Prawdopodobnie powinieneś użyć do tego bs i policzyć z dd, w przeciwnym razie będzie to trwało przez jakiś czas, wystarczy wyzerować sektor. 512 bajtów dla starszych dysków. (patrz @ n.st poniżej) W rzeczywistości tabela partycji znajduje się na końcu tego i jest wystarczająco mała, aby wykonać kopię i wyzerować w edytorze szesnastkowym przed skopiowaniem z powrotem w celu zachowania zawartości rozruchowej. Są do tego również narzędzia, inicjalizacja dysku NAS jest powszechna.
mckenzm
1
Chciałem tylko dodać, że w przypadku dysków GPT MUSISZ wyczyścić także koniec dysku. Zgodna implementacja GPT sprawdzi tabelę dodatkową na końcu dysku i ponownie napisze również pierwszą część (ignorując wszystko, co już tam masz). Zobacz: news.ycombinator.com/item?id=18541493
wbkang
10
Tablica partycji jest przechowywana w pobliżu początku 1 urządzenia dyskowego (logicznego 2 ).
Zastąpienie tego obszaru czymkolwiek (zerami /dev/zerolub innymi danymi) zastąpi tablicę partycji bełkotem, więc nie będzie już oczywiste, gdzie zaczynają się partycje na urządzeniu.
Nadal można skanować cały dysk i próbować zidentyfikować „bajty magiczne”, które oznaczają początki systemów plików.
I odwrotnie, jeśli użyjesz fdisk(lub innego narzędzia do partycjonowania), aby utworzyć nową tablicę partycji, narzędzie zastąpi kilka pierwszych bajtów dysku, aby zapisać tę nową tabelę.
Dysk ma tylko jeden początek, więc cokolwiek zrobisz jako ostatnie, zostanie na nim „przyklejone”.
Należy jednak pamiętać, że niektóre formaty tablic partycji (jak GPT) przechowują kopie zapasowe w różnych miejscach (np. Na końcu dysku dla GPT), z których można odzyskać niektóre informacje o partycjach.
Prawie w porządku - tablica partycji (stara, typu MBR) znajduje się w bajtach 1BE - 1FD MBR. Pierwsze kilka bajtów zawiera IBL (początkowy moduł ładujący).
RudiC,
@RudiC Dobra uwaga, powiedziałem to teraz dokładniej.
/dev/zero
wymazuje czegoś, todd
wymazuje przez skopiowanie. Fakty, że bajty są zerowe i że bajty zerowe pochodzą z/dev/zero
jakiegoś innego źródła zer, są drobnymi szczegółami.Odpowiedzi:
Tak, tablica partycji znajduje się w pierwszej części dysku, więc zapisanie jej zniszczy ją. Że
dd
napisze na cały napęd jeśli pozwolisz działać (tak to zajmie trochę czasu).Coś takiego
dd bs=512 count=50 if=/dev/zero of=/dev/sda
wystarczyłoby do zastąpienia pierwszych 50 sektorów, w tym tablicy partycji MBR i podstawowego GPT. Chociaż przynajmniej według Wikipedii, GPT ma dodatkową kopię tabeli partycji na końcu dysku, więc nadpisanie tylko części w głowie dysku może nie wystarczyć.(Nie musisz jednak używać
dd
.head -c10000 /dev/zero > /dev/sda
Lubcat /bin/ls > /dev/sda
miałby ten sam efekt.)Również tak (pod warunkiem, że zapiszesz zmiany).
(Jednak frazowanie w tytule jest po prostu mylące,
/dev/zero
samo w sobie nie robi nic więcej niż zwykłe przechowywanie.)źródło
/bin/ls
są wystarczająco krótkie, wówczas operacja zapisu może zastąpić tylko kilka bajtów MBR, a najważniejsza część (początkowy i końcowy sektor partycji) może pozostać nienaruszona. Chociaż ponowna instalacja MBR (najczęściejgrub --install /dev/sda
) jest nadal wymagana, aby system mógł zostać ponownie uruchomiony.ls
plik binarny, a nie dane wyjściowe z jego uruchomienia. Najmniejszy możliwy plik binarny ELF „Hello World” wydaje się mieć 98 bajtów (czyli mniej niż MBR), ale myślę, że można bezpiecznie założyć, że każdy plik binarny z rzeczywistymi funkcjami powinien być większy niż MBR (notorycznie mała implementacja FreeBSDls
to 32784 bajty długie, nawet wystarczająco duże, aby zastąpić część początkową dysku GPT). ;)ls
. Lista/usr/bin
prawdopodobnie byłaby wystarczająco długa. Chciałem użyć tegoecho
jako przykładu, ale IIRC potrzebujesz prawie 500 bajtów, aby zastąpić tablicę partycji MBR, więc pisanie jest trochę męczące. (bez względu na dokładną liczbę)Tablica partycji jest przechowywana w pobliżu początku 1 urządzenia dyskowego (logicznego 2 ).
Zastąpienie tego obszaru czymkolwiek (zerami
/dev/zero
lub innymi danymi) zastąpi tablicę partycji bełkotem, więc nie będzie już oczywiste, gdzie zaczynają się partycje na urządzeniu.Nadal można skanować cały dysk i próbować zidentyfikować „bajty magiczne”, które oznaczają początki systemów plików.
I odwrotnie, jeśli użyjesz
fdisk
(lub innego narzędzia do partycjonowania), aby utworzyć nową tablicę partycji, narzędzie zastąpi kilka pierwszych bajtów dysku, aby zapisać tę nową tabelę.Dysk ma tylko jeden początek, więc cokolwiek zrobisz jako ostatnie, zostanie na nim „przyklejone”.
Należy jednak pamiętać, że niektóre formaty tablic partycji (jak GPT) przechowują kopie zapasowe w różnych miejscach (np. Na końcu dysku dla GPT), z których można odzyskać niektóre informacje o partycjach.
1: np. W pierwszych 512 bajtach dla MBR lub w pierwszych i ostatnich 17408 bajtach dla GPT
2: Dysk może wewnętrznie odwzorowywać logiczne bloki na różne części nośnika fizycznego, ale to mapowanie jest niewidoczne dla (i nieważne dla) system operacyjny.
źródło