ISO'nun USB çubuğuma hatasız yazıldığını nasıl kontrol edebilirim?


11

Ben takip bunlar DebianEeePC HowTo InstallUsingStandardInstaller benim USB Debian ISO yazmak için, Debian Wiki talimatları.

dd if=debian-*-netinst.iso of=/dev/sdX

Kullanarak sha1sum, indirilen ISO dosyamın sağlama toplamlarını kontrol edebilirim. USB çubuğunun herhangi bir sorunu olmadığından ve ISO'nun mükemmel bir şekilde kopyalandığından emin olmak için USB çubuğu aygıtının sağlama toplamını nasıl kontrol edebilirim?


USB evrensel seri veri yoludur. Şüphesiz o veri yoluna bağlı bir çeşit cihaz mı (flashdrive, ethernet veya ses kartı gibi)?
Stéphane Chazelas

@StephaneChazelas, soruyu düzenledi.
maxschlepzig

Yanıtlar:


18

Her cmpşeyin iyi kopyalanıp kopyalanmadığını kontrol etmek için kullanabilirsiniz :

$ cmp -n `stat -c '%s' debian-X-netinst.iso` debian-X-netinst.iso /dev/sdX

Bu çözüm, sizin sağlama toplamınızı açıkça hesaplamaz /dev/sdX- ancak bunu yapmanız gerekmez, çünkü bunu karşılaştırma kaynağı için zaten yapmışsınızdır (yani debian-X-netinst.iso).

Sadece bir yapmak dd if=/dev/sdX | sha1sum, sondaki blokları (yanlış bir /dev/sdXşekilde iso dosyasından daha büyüktür) almanız nedeniyle yanlış eşleşen bir sağlama toplamı sağlayabilir .

Via cmp -nEğer senin üzerinde hiçbir sondaki bayt emin /dev/sdXkarşılaştırılır.

Aradığınız USB yığın depolama aygıtınızın kalitesi konusunda paranoyaksanız sync, çıkarın, yeniden takın ve ardından karşılaştırmayı yapın - aksi takdirde tüm veya bazı bloklar VM'den (önbellek) gelebilir - gerçekte belki de bit olduğunda donanım üzerinde vidalı.


1
Selam! Bunu yaptığımda, ilk satırda anında uyumsuzluk alıyorum. Sebep ne olabilir?
SarpSTA

3

Julien'in cevabı işi yapıyor, ancak bunu yapmanın daha basit ve daha hızlı bir yolu var:

sudo head -c <image size> /dev/sdX | sha1sum

Yani, tek bir satırda:head -c $(stat -c '%s' the.iso) /dev/sdc | sha1sum
Julien Palard

3

Sadece ddve md5sum/ kullanmak sha1sumyeterlidir, ancak daha önce de belirtildiği gibi, dikkatli olun, cihazınız dosyanızla aynı boyutta değildir, bu nedenle toplamlar farklı olacaktır.

İşte hala nasıl yapabilirsin

İlk önce dosyanın boyutunu bilmeniz gerekir:

$ stat -c '%s' debian-live-8.2.0-amd64-lxde-desktop.iso
1003487232

Sonra, sistem çağrılarınızla serin olmak için, bunu iki gibi güzel bir gücün katları olarak alsanız iyi olur, ikisinin 4096çarpımı tam olarak dosyanın boyutunu vermelidir, başka bir şekilde, çok azını kontrol edersiniz veya çok fazla bayt, yanlış bir sağlama toplamı verir.

$ bc
bc 1.06.95
scale = 9
1003487232 / 4096
244992.000000000

Mutluyum, 4096 × 244992 = 1003487232bu yüzden 4096 benim için iyi (ve muhtemelen sizin için olacak), böylece bir blok boyutu 4096(tipik) ve bir blok sayısı kullanabilirsiniz 244992.

Dosyayı USB anahtarına yazmayı unutmayın ...

$ dd if=debian-live-8.2.0-amd64-lxde-desktop.iso of=/dev/sd? && sync

Ve bilinen blok boyutunu ve blok sayısını kullanarak anahtardan tam bayt sayısını okuyabilir ve kontrol edebilirsiniz:

$ dd if=/dev/sdb bs=4096 count=244992 | sha1sum
b0dbe4ca8f526d1e43555459c538607d4a987184

(Evet md5sumçok daha hızlı sha1sumama buradaki darboğaz açıkça değil, darboğaz USB düşüncesi, fark ettiğiniz için teşekkürler).

Veya kısaca:

dd if=/dev/sdb bs=4096 count=$(($(stat -c '%s' the.iso) / 4096)) | sha1sum

İle teşekkür $ dd if=/dev/sdb1 bs=4096 count=<filesize/4096> | md5sum I usb sopa yazılmış bir Debian görüntünün md5sum kontrol etmek ve Debian md5sums karşılaştırmak olabilir.
Paul Rougieux

0

@Kyle Jones yanıtına göre

diff <(md5sum debian-XYZ-netinst.iso | awk '{print $1}') <(dd if=/dev/sdX | md5sum | awk '{print $1}')

kullanmanız gerekir md5sumçünkü daha hızlıdır sha1sum(büyük dosyayı kontrol ettiğinizde zaman kazanır)


6
Yani md5sumen az iki kat daha hızlı mı? OP zaten sha1sumindirme sitesinden beri olduğundan ve bunu hesaplamak zorunda değildir. Ve USB'den okumak sha1 / md5 hesaplamasını değil sınırlayıcı faktör olacak.
Anthon

1
ZFS'yi işlem gücü bakımından orta menzilli bir sistemde SHA-256 sağlama toplamıyla çalıştırıyorum. Eğirme pasında bulunan havuzlardaki fırçalamalarda (tüm verileri okuyan ve tüm sağlama toplamlarını doğrulayan) bile, sınırlayıcı faktör CPU değil disk G / Ç işlemidir. Birçok USB bellek çubuğunun, özellikle USB 2.0 üzerinden bağlıysa, bundan daha iyi bir verim sağlayacağından şüpheliyim.
CVn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.