Yanıtlar:
Olabilecek üç şey var:
Teori için şimdiye kadar. Şimdi pratik bir test için.
Bir VM'ye yeni bir Ubuntu 12.10 yükledim. (Win7-x64 üzerinde VMware iş istasyonu, varsayılan seçenekleri ve 10 GB sanal diski kullanarak).
Dd komutu başarıyla tamamlandı ve ben bir çalışma istemi gibi görünüyordu geri düştü. Belli nedenlerden dolayı başarısız olsalar da yeni komutlar girebilirim.
Segmentation fault
ve başarıyla tamamlandığını iddia ediyorsun ...?
Damn Small Linux kullanan bir sanal makinede yapılan hızlı bir deneme, dd komutunun beklendiği gibi tamamlandığını gösterir; program başlangıçta çalıştırmak için belleğe yüklenir ve işlem sırasında yürütülebilir dosyayı tekrar tekrar yüklemek çok az mantıklıdır. Sonunda, dd çıkacak ve 'cihazda boş alan kalmayacağını' bildirecektir.
Daha sonra, işletim sistemi ilk bakışta normal çalışıyor gibi görünüyor, ancak ilk komuttan sonra askıda kalıyor, artık açık nedenlerle çalışamıyor ve yanıt vermiyor. Sabit sürücü içeriğinin kısa bir incelemesi, bölümün gerçekten sıfırlandığını gösterir.
Gönderen mmap
Linux üzerinde sayfa:
MAP_SHARED Share this mapping. Updates to the mapping are visible to other processes that map this file,
and are carried through to the underlying file. The file may not actually be updated until
msync(2) or munmap() is called.
MAP_PRIVATE
Create a private copy-on-write mapping. Updates to the mapping are not visible to other pro‐
cesses mapping the same file, and are not carried through to the underlying file. It is
unspecified whether changes made to the file after the mmap() call are visible in mapped
region.
Yürütülebilir dosyalar mmap
işleve dahili bir çağrı yoluyla çekirdek tarafından belleğe eşlenir . Bir MAP_PRIVATE
tür eşleme istenir ( fs/binfmt_elf.c
çekirdek kaynak ağacına bakın).
Bu nedenle şu davranışa mmap
dayanır: dosyadaki değişikliklerin mi yoksa o dosyanın başvurulduğu temeldeki blok cihazının mı, eşleştirilen ve mevcut olan eşleme sayfalarına geri yayılıp yayılmadığı.
Bu sayfa çekirdek davranışı yerine API standartlarına dayanmaktadır, dolayısıyla "belirtilmemiş". Gerçek davranış, dosyadaki değişikliklerin zaten mevcut olan sayfalara geri yayılmamasıdır. Tabii ki, program aniden sayfalanmamış bir kod sayfasına atlarsa ve silme zaten yapılmışsa, tüm sıfırların bir sayfasını alır.
Ancak, büyük olasılıkla, dd
kendini sildiğinde, silme döngüsüne devam etmek için gereken tüm kod sayfalarında sayfalandı. Döngü sona erdiğinde, mevcut olmayan bir sayfada bulunan bir koda çarpma olasılığı vardır: örneğin, bir işlevin sayfa sınırına yayıldığını varsayalım, bu nedenle iade talimatına ulaşmak için bir sayfa getirilmelidir.
Ancak bu sayfa önceki bir dd
çağrıdan da önbelleğe alınabilir .
Evet. Tabii ki, aynı zamanda dosya sisteminizin çoğuna mal olacak, ancak muhtemelen biliyorsunuz ki ...
Geçenlerde bir hata yaptım. SD Kart üzerine 2 GB img dd amaçladı, ama yanlışlıkla sda yaptı dd if=rasberrypi.img of=/dev/sda
. Hatamı fark ettim ve dd'yi iptal ettiler, ancak o zamana kadar ~ 600MB (~ 500GB kullanılan bir diskte) yazmıştı. Bölme tablosu yıkıldı.
Masaüstü (10 GB bellek ve haftalarca), hiçbir şey olmadıkça birkaç saat çalışmaya devam etti. Son zamanlarda önemli dosyaları dropbox'a almak için yönetilir, normalde kromda göz atılır. Aslında ben aslında istediği gibi iyi çalıştı, SD kart için dd çalıştırabilirsiniz.
Birkaç saat sonra dosya sistemim salt okunur moda geçti ve rastgele programlar ölmeye başladı. Diğer birçok sisteme sshed oldum, bu oturumları kullanmaya devam edebilirdim, ancak yeni oturum yapmak ssh programını bulamıyor hata verdi. Şu anda açık sekmeleri kromda değiştirebilirim, ancak sekmelerin içeriği "asılı" görünüyor. Yenilersem sonsuza dek beyaz ekran alıyorum. rsyslogd nedense% 100 cpu (1 çekirdekli) alıyordu, muhtemelen günlükleri diske akıtamıyor olabilirdi ... belki.
VLC'de 350 MB açılmış (ve duraklatılmış) bir videom vardı, yine de oynatabilirim ve videonun herhangi bir bölümüne atlayabilirim. Muhtemelen onun son bir indirme beri.
GUI kullanarak sistemi normalde kapatabilirim, hata yok.
Yani bu tam olarak sorunuzu cevaplamıyor, ancak diskin başlangıcını silerseniz ne olacağını söyler ..
Diskteki şeylerin çoğu hala kurtarılabilir olabilir, ancak umarım her şey yedeklendiğinden (umarım) rahatsız olmaz.
Büyük olasılıkla tamamlanmayacaktır, çünkü başka bir yürütme bileşeni eksik olan bir dosyayı isteyecek ve çekirdeği panikleyecektir. diski gerçekten sıfırlamak istiyorsanız, canlı bir CD kullanın; aksi halde sonucu asla garanti edemezsiniz.