Sonunda bölümlenmemiş alan içeren 16 Gb'lık bir kartın görüntüsü: Kesme mümkün mü?


18

Bazı arkadaşlar için bir dağıtım hazırlamak istedim.
Etrafta yatan başka bir şeyim olmadığından, 16Gb SD kart kullandım.

Varsayılan Debian Weezy 2Gb görüntüsü ile başladım ve yeniden boyutlandırma yapmadım.
Şimdi, yaptığım gibi, yaptığım şeyin bir görüntüsünü oluşturmak istedim, ama sonunda 14Gb bölümlenmemiş (bölümlenmemiş ve boş) alan içeren 16Gb dosyası alıyorum .

[Şu anda rPI'ye yapışmak için hiçbir şeyim olmadığı için Windows // Win32DiskImager kullandım]

Görüntü dosyasını bölümlenmiş alanın hemen arkasında kesebilir ve öndeki parçayı daha küçük bir karta aktarabilir miyim?


2
Bir linux bilgisayara erişiminiz varsa çalıştırın dd if=/dev/path/to/SD/card of=~/SpecialImage.img, ardından GParted'ı kurun ve çalıştırın gparted ~/SpecialImage.img. GParted .imgdosyanızı açtıktan sonra , bölümleri istediğiniz gibi yeniden boyutlandırın! (Her iki komut da kök olarak çalıştırılmalıdır, sudo susize ihtiyacınız olanı almalıdır. A'ya $geçiş #yaptığınızda, Köksünüz. Dikkatli olun, bu Tanrı'nın Linux eşdeğeri.) GParted temelde gizli partiton yönetimi için bir GUI ön ucudur ihtiyacınız olacak araçlar. GParted kullanmak her şeyi çok daha basit ve başarılı hale getirir.
JamesTheAwesomeDude

Plese sorumu dikkatle okudu.
Nippey

Evet, sorunuzu okudum ve size sadece bir disk görüntüsünün kesilmesinin tehlikeli olduğunu söyleyebilirim. Elbette, bir görüntünün son baytını kırpabilirsiniz, ancak özellikle Linux kasıtlı olarak dosyalarını boşluk bıraktığından, herhangi bir dosyayı yanlışlıkla kesmeyeceğinize dair bir garanti yoktur . Ayrıca, dosya sisteminin sonunda bazı önemli meta veriler veya bunun gibi bir şey olabilir. Bir dosyanın sonunu kendiniz silmeye çalışmak yerine, uygun dosya sistemi yeniden boyutlandırma yardımcı programlarını kullanmak genel olarak daha güvenli bir bahistir.
JamesTheAwesomeDude

1
Ama bölümlenmemiş alandan bahsediyorum. Linux bile Disk Alanı'na bölümlenmemiş olarak işaretlenmiş ancak Bölüm Tablosunda yazıldığı gibi blokta kalan hiçbir veri koymaz. Endişem resim dosyası formatından kaynaklandı: Resim dosyasının dosyanın sonunda meta veriler olması olabilir, bu yüzden dosya bilgilerini kesmekten endişeliydim. (Umarım önceki yorumum çok zor gelmedi, sry;)
Nippey

Ohh, şimdi söylediklerini anlıyorum. Herhangi bir bozuk izleyen boş alandan endişe ediyorsanız, kesildikten sonra görüntü üzerinde GParted komutunu çalıştırın. Muhtemelen son alanı "ayrılmamış" veya "bozuk" olarak listeler - bu alanda yeni bir "biçimlendirilmemiş" bölüm oluşturur. O zaman herhangi bir sorununuz olmayacak. :)
JamesTheAwesomeDude

Yanıtlar:


33

Sonunda sorumu açıklayan bir kaynak buldum.

http://softwarebakery.com/shrinking-images-on-linux

Kısa:

Evet, kısaltma mümkündür!

Sürecin özeti:

Bölüm bilgilerini görüntüden çıkarma fdisk:

$ fdisk -lu image.img
Disk image.img: 4096 MB, 4096000000 bytes, 8000000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000a1bc7

      Device Boot      Start         End      Blocks   Id  System
image.img1              2048     5872026     5869978    b  W95 FAT32

Bölümün yaklaşık 2,8 Gb (5872026 * 512) boyutuna sahip olduğunu görüyoruz, geri kalanı bölümlenmemiş .

Böylece, bölümün sona ermesinden sonraki her şey kaldırılabilir.
Bu araçla yapılacaktır truncate. Blok sayıları 0'dan başladığı için sektör sayısına 1 eklemeyi unutmayın.

$ truncate --size=$[(5872026+1)*512] image.img


Düzenle:

Olanlar için Linux'a geçmek tembel olma:
Ayrıca Windows üzerinde çalışır Cygwin 'ın fdisk.exeve truncate.exe!

Cygwin nedir?

Alıntı yapabilirim: "Cygwin: Bu Linux hissini - Windows'da alın" ( https://www.cygwin.com/ ).
Windows altında çalışabilen, ancak genellikle Linux'tan bildiğiniz tüm komut satırı programlarını sağlayan bir dizi yürütülebilir dosyadır. Yükleme sırasında her paketi seçerseniz Cygwin'in yüklenmesi çok uzun sürebilir, ancak bu örneği izlemek için, varsayılan yapılandırmanın yanı sıra util-linux(fdisk) ve coreutils(truncate) paketlerinin de seçildiğinden emin olun.
Ortamınıza bağlı olarak, insanınıza eklemeniz /usr/binve eklemeniz /usr/sbingerekir $PATH.


1
Hangi paketi almak için yüklemek için ihtiyacım yok fdisk.exeve truncate.exe?
PythonNut

1
Merhaba @PythonNut, yukarıdaki cevabımı güncelledim ve gerekli paketleri ekledim: o)
Nippey

Daha az kullanılsa bile bölümün disk boyutu varsa ne olur?
Piegames

5

Bunun eski bir soru olduğunu biliyorum, ancak bu işlemi Mac'te nasıl yapacağımı göstermek istiyorum, çünkü o kadar kolay fdiskdeğil : -lseçenek yok ve truncatevarsayılan olarak yüklü değil:

1. Adım 1: Mac OS X'te kesmeyi yükleyin :

Bunun için MacPorts veya Homebrew'a ihtiyacınız var. MacPorts kullanıyorum. Bunlardan birine sahip değilseniz, önce gidin ve yükleyin. MacPorts'a bağlantı

Şimdi, kesmeyi kurabiliriz . Terminalinizi açın ve şunu yazın:

sudo port install truncate

Demlemek kurulumu için:

brew install truncate

Bunu yapmalı.

2. IMG'mizi diskutil terminal komutuna görünür olacak şekilde monte etmek için Disk Yardımcı Programlarını kullanın .

Bir an için neden bu adıma ihtiyacımız olduğunu göreceksiniz. Disk İzlencesi uygulamasını açın. Dosyaya tıklayın (üst çubuğunda) -> Açık Disk Image ve IMG dosyasını seçin.

3. IMG'nin bölüm boyutunu ve monte edildiği yeri kontrol edin.

Terminalde şunu yazın:

diskutil list

Ve sonunda böyle bir şey göstermeli:

/dev/disk3 (disk image):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        +16.0 GB    disk3
   1:             Windows_FAT_32 boot                    62.9 MB    disk3s1
   2:                      Linux                         3.9 GB     disk3s2

Yani, yaklaşık 12GB'nin bölümlenmemiş olduğunu görüyoruz. Bunları kısaltmamız gerekiyor.

Bu komuta ihtiyacımızın nedeni, disk görüntüsünün nereye monte edildiğini kontrol etmektir. Benim durumumda, altında: / dev / disk3

4. Gerçek bölüm boyutunu bulun.

3,9 GB ve 62,9 MB, kesme ile çalışmayan değerlerdir. Bölüm boyutlarını bayt cinsinden bulmamız gerekir.

5. fdisk'i çalıştırın .

Terminalinizde şu komutu çalıştırın:

   fdisk /dev/diskX

Burada X , önceki adımda bulduğunuz sayıdır. Bu şöyle bir şeyle sonuçlanmalıdır:

         Starting       Ending
 #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
------------------------------------------------------------------------
 1: 0C    0 130   3 -    8  40  32 [      8192 -     122880] Win95 FAT32L
 2: 83    8  40  33 -  478  79  49 [    131072 -    7553024] Linux files*
 3: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
 4: 00    0   0   0 -    0   0   0 [         0 -          0] unused      

6. Kesilme zamanı !

Terminalinizde, cdresminizin bulunduğu dizine. Sonra yaz:

truncate FILE SIZE

DOSYA elbette dosyanızdır.

SIZE, bayt cinsinden boyuttur. Yaptığım , komutun boyut sütununa fdisk, başlangıç sütununa eklemek ve 512 ile çarpmaktır. Yani, benim durumumda SIZE olacak: 512 * (7553024 + 131072) = 3934257152 , yaklaşık 3.9 GB.

Sen gerekecektir başlangıç ve büyüklüğünü ait son bölümü ile gösterilir fdisk. (En büyük değil, IMG dosyasının sonundaki dosya)

Biraz denedim ve her 7553024 * 512 veya (7553024 + 1) * 512 bayt girdiğimde IMG dosyası bozuktu. Yani, sadece emin olmak için, yukarıda belirttiğim gibi yapın. Aslında gerekenden daha fazlasını ekleyebilir, ancak güvenli bir seçenektir.

7. (İsteğe bağlı) IMG'nin bozuk olup olmadığını kolayca test edin.

Disk İzlencesi'nde bir kez daha gidin ve yeni IMG dosyasını daha önce olduğu gibi açmayı deneyin. Takılırsa, yeni (daha küçük) boyutu da görebilirsiniz . Eğer takılmazsa, bir şeyler ters gitti. (Belki komuttaki boyutu artırmaya çalışın truncate)

Bu en iyi test değil, ancak yeni IMG'nin bozuk olup olmadığını kontrol etmenin kesin bir yoludur. Yani, gerçekten güvenmeyin, ama denemeye değer ...

Umarım birisi bunu faydalı bulur!


1
Güzel! Bilgiyi genişlettiğiniz için teşekkürler :) 512*(Size+1)İşe yaramadığına dikkat ettiğiniz iyi . Gördüğünüz gibi, kullandım Endve kullanmadım Size, çünkü birden fazla varsa her iki bölümü de tutmak zorundasınız. Yani, 7553024 + 131072( +1) kullanmak % 100 doğrudur!
Nippey

1

Son Win32DiskImager aslında disk görüntüsüne sadece ayrılmış bölümleri dahil etme seçeneğine sahiptir. Bu, tek bir tıklamayla kırpmayı yapacak.

resim açıklamasını buraya girin


Mükemmel, Windows'da çok daha kolay!
Nippey

0

Dağıtım için RPI görüntülerimi yedeklemek için bu Win32diskimg işlemlerinin çoğunu yaparken son zamanlarda fark ettiğim bir şey. Son zamanlarda, SD kartın teorik aşınma seviyelendirmesi için kullanılmayan kısımlarını temizlemek için SD "düzeltme" testini yapmaya başladım. Etkisi hakkında emin değilim ama bir yan etkisi 16GB SD bölümünü görüntülediğim ve daha sonra sıkıştırmak için 7zip kullandığım oldu. Her zamanki 16GB'den 9.5GB'a, şimdi 2.5GB'lık bir dosyaya gittim. Şimdi hiçbir şeyin yanlış olmadığından emin olmak için test ediyorum, ancak kullanılmayan alanı 0 olarak işaretlemek için TRIM kullanmanın görüntü sıkıştırmayı çok daha verimli hale getirdiği anlaşılıyor (mantıklı). Sadece bunu rapor etmek istedim süper kolay oldu ve hiçbir çoklu adım.


Yanlış olmasa da, soruyu gerçekten ele almıyor.
RalfFriedl
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.