ayrılmamış bölüm olmadan bir USB sürücüsünün görüntüsünü oluşturma


13

Sistemime şu şekilde görünen 8GB USB sürücüm var:

[root@host]# fdisk -l /dev/sdb

Disk /dev/sdb: 8462 MB, 8462008320 bytes
255 heads, 63 sectors/track, 1028 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x5c0894d9

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1           9       72261    e  W95 FAT16 (LBA)
/dev/sdb2              10         103      755055   83  Linux
[root@host]# 

Temelde FAT bölümüm yaklaşık 70 MB, ext2 bölüm 740MB civarında ve alanın geri kalanı (~ 7 GB) ayrılmamış. Şimdi USB sabit diskimi şu şekilde gönderirken:

dd if=/dev/sdb of=myimage.img bs=1M

çıktı dosyası (myimage.img) 8GB civarındadır ve bu normal dd işlemidir.

Soru: Aradığım şey, USB sabit diskimi ayrılmamış alan olmadan doğrudan klonlamanın bir yoludur, böylece sonuç dosyam 8 GB yerine 1 GB sıkıştırılmamış olur . Sormamın nedeni, çıktı dosyasının (myimage.img) görüntüyü önyüklemek için bir simülatör programı tarafından kullanılmasıdır. Simülatör 8 GB dosyaları işleyebilir, ancak disk alanımı boşa harcamak istemiyorum.


1
Bu ilginç çözümle biraz benzer bir sorundur: serverfault.com/q/281628/141604
hafta

Yanıtlar:


15

Doğru anlarsam, diskin başlangıcından son bölümün sonuna kadar bir görüntü oluşturmak istersiniz.

Bunun parametresi ddbunu yapar count=. Son bölümünüz 103 ile biter ve sayım 1 ekstra (104) olmalıdır ve birim boyutunuz 8225280 bayttır ( fdisk -lçıktıya göre ). Böylece komutunuzu şu şekilde değiştirebilirsiniz:

dd if=/dev/sdb of=myimage.img bs=8225280 count=104

Ancak fdisk -u -l /dev/sdbbunun yerine koşmanızı öneririm . Silindirler artık bu yaşta gerçekten alakalı değil, bu nedenle yuvarlama hatalarından kaçınmak için sektör sayısını görüyorsanız daha iyi durumdasınız. Sonra koşmanız gerekecek:

dd if=/dev/sdb of=myimage.img count=...

burada sayım fdisk -u -l, önceki bölümün sonunda aldığınız sayıya artı bir önceki değerin yerine 104 olarak ayarlanacaktır. Varsayılan blok boyutu dd512 bayttır, bu da fdisk -u -lçıktıda kullanılacak birimdir .

GPT bölümünün yedek bölüm tablosu diskin sonunda depolanır, ancak GPT kullanmadığınızdan iyi olursunuz.


2

Dd'ye sadece ilgilendiğiniz sürücünün bir kısmını okumasını söylemeniz yeterlidir. Aradığınız parametre count.

Bu nedenle, 8,225,280 silindir boyutunuzu alın ve 103 kullanımdaki silindir sayısıyla çarpın ve 847,203,840 bayt elde edin. Bir megabaytlık blok boyutu kullandığınız için, bu baytı 808 olan megabayta dönüştürün.

Yani emriniz dd if=... of=... bs=1M count=808

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.