Önyüklenebilir bir USB çubuğunu farklı boyuttaki bir çubuğa klonlama


11

DONANIM: 2 8GB USB flash sürücüler
DISTRO: Nane 9 Xfce kalıcı Canlı Cd

Bir USB flash sürücünün iki bölümü vardır:
1) FAT32 700MB Mint 9 bölümü
2) ext3 7.3GB casper-rwbölümü

HEDEF:
Bu USB flash sürücünün bir kopyasını yapmak istiyorum, çünkü tekrar sıfırdan yükleme ve yapılandırma zamanından geçmek istemiyorum.

DENEYİM:
1) ddBu iş için işe yaramadı, çünkü flash sürücülerimden birinin boyutu bazen 1 MB farklıysa, ki bazen bunlar bozulur, kopya bozulur.

2) gpartedİkinci sürücüyü birincisi gibi kullanmanın ve önceden biçimlendirmenin ve sonra rsyncher bir bölümü ayrı ayrı çalışmanın işe yaramadığını fark ettim, çünkü bazı nedenlerden dolayı bazı dosyalar kopyalanmıyor ve sürücü önyüklenemiyor.

Çalışma çubuğumu saklamak ve sadece kopyalarını çıkarmak ve çubukları arkadaşlarım için yapılandırmak istiyorum. Bu şekilde başka bir çubuğu kaldırırsam, her zaman taban çubuğumun beklemede oturmasını sağlayacağım.


hangi bootloader kullanıyorsunuz (syslinux?). Lütfen bu gönderiyi yayınınızdan kaldırmayı düşünün, sorunuza hiçbir değer katmaz.
Mat

Nane canlı usb yükleyicisini kullandım, bu yüzden hepsi otomatikti. Klonlama sürecinin bootloader'larla çalışmaktan kaçınacağını ve mevcut bootloader'ımı kopyalayacağımı umuyorum
Joshua Robison

Yanıtlar:


6

Giriş

PC bölümleri olan bir sürücü için (çoğu USB bellekte bulacağınız şey), önyükleyici sürücünün en başında küçük bir kısımdan oluşur (sürücünün önyükleme sektöründe 1. aşama önyükleyici) ve bir başka bir yerde (bir dosyada 2. aşama önyükleyici). Aşama 1 verileri, aşama 2'nin fiziksel konumunu içerir. Tüm cihazı (denediğinizi dd) kopyalarsanız, aşama 1 kısmı aynı fiziksel konumdadır ve çubuk çalışır, ancak yeni çubuğun en azından orijinal olarak büyük. Bölümleri yeniden oluşturup dosyaları kopyalarsanız, dosya olmadığı için 1. aşamayı kaçırırsınız.

Aşama 2'nin ilk (FAT32) bölümünde olduğunu düşünüyorum (ama kontrol etmedim). Öyleyse, bu bölüm toptancısını kopyalayabilir ve önyükleme kesimini de kopyalayabilir, ardından ikinci bölümü tam olarak kalan alanı kaplayacak şekilde bölüm tablosunu düzenleyebilir ve ikinci bölümdeki dosyaları kopyalayabilirsiniz. Önyükleme sektörünün ve ilk bölümün ham görüntüsünü sabit diskteki bir dosyada da saklayabilirsiniz (ancak bunları bir USB çubuğundan da klonlayabilirsiniz).

Farklı boyutta bir klon yapmak

Aşağıda orijinal çubuğu /dev/sdbiçeren cihazı ve klonu içeren cihazı arayacağım /dev/sdc; isimleri gerektiği gibi değiştirin. Gerekirse bağlama noktaları oluşturun. FAT32 bölümünün (diskin başında) 1 ve ext3 bölümünün 2 numaralı olduğunu varsayıyorum; gerekirse farklı numaralar kullanın.

İlk kısım, bir çubuktan klonlanıyorsa:

head -c 512 </dev/sdb >/dev/sdc
partprobe /dev/sdc
cat </dev/sdb1 >/dev/sdc1

İlk bölüm, eğer resim dosyalarından klonlanıyorsa:

cat boot_sector.img >/dev/sdc
partprobe /dev/sdc
cat first_partition.img >/dev/sdc1

partprobeÇekirdeğin bölüm tablosunu diskten yeniden yükleyebilmesi için çağrı gereklidir (önyükleme kesimindedir ve yukarıdaki senaryolarda ilk komut önyükleme kesimini değiştirir). Bunu atlarsanız, ya hata alırsınız ya da çekirdek sessizce çubuğa çöp yazar.

Görüntü dosyalarını yapmak için:

head -c 512 </dev/sdb >boot_sector.img 
cat /dev/sdb1 >first_partition.img

Önyükleme sektörünü ve ilk bölümü aldıktan sonra, ikinci bölümü yeniden boyutlandırmak için bölüm tablosunu yeniden düzenlemeniz gerekir. Doğru girişi besleyerek bunu otomatik olarak yapabilirsiniz fdisk. Uyarı, bu son derece hata eğilimli ve ben test etmedim. Bu parça ile tamamen rahat hissetmiyorsanız, elle yapın.

sed -e 's/ *#.*//' <<EOF | tr -s ' ' '\n' | tr -d _ | fdisk /dev/sdc
d 2         # delete partition 2
n p 2       # new primary partition 2...
_ _         # ... using all available space
w q         # write and quit
EOF

Son olarak bölüm tablosunu yeniden yükleyin, bir ext3 dosya sistemi oluşturun ve dosyaları oraya kopyalayın.

partprobe /dev/sdc
mke2fs -j /dev/sdc2
mount /dev/sdc2 /media/sdc2
cp -a /media/sdb2/ /media/sdc2/
umount /media/sdc2

Daha büyük bir klon yapmak için basitleştirilmiş yöntem

İsterseniz, tüm çubuğun bir görüntüsünü saklayabilirsiniz. Bu görüntüyü en azından büyük olan herhangi bir çubukta doğrudan kullanabilirsiniz: bölüm tablosunu yeniden okumak için bu görüntüyü yeni çubuğa kopyalayın cat <whole.img >/dev/sdc, ardından çalıştırın partprobe /dev/sdc(veya çubuğu çıkarın ve tekrar takın ).

Sonra, isterseniz, klonu büyütebilirsiniz. Bu sırayla:

  1. Bölümü büyütün. Ne yazık ki, bunu basit bir şekilde nasıl yapacağımı bilmiyorum. partedbunu movekomutla yapabilir (değil resize, dosya sistemini yeniden boyutlandırır), ancak doğru bağımsız değişkenleri bulmanız gerekir - unit syuvarlama hatalarını önlemek için sektörlere ( ) geçin.
  2. Dosya sistemini büyütün. Bu bölüm kolaydır: resize2fs /dev/sdc2Dosya sisteminin tüm bölüm boyutunu kullanmasını sağlamak için çalıştırın .

Gerekenden daha büyük bir çubuktan başlıyorsanız, yukarıdaki adımları ters sırayla takip ederek küçültebilirsiniz (önce dosya sistemini küçültün resize2fs, sonra bölümü küçültün parted).

Alternatif olarak, önce çubuğu bir görüntü dosyasına kopyalayabilir, ardından bu görüntü dosyası üzerinde çalışabilirsiniz. Bölümlere erişmek için , özellikle dosyanın bir bölümünü bir diske ilişkilendiren bir döngü aygıtı kullanın . Görüntüyü daraltmak istiyorsanız (uyarı, test edilmemiş, dikkatlice ilerleyin ve matematiği iki kez kontrol edin) adımların bir taslağını burada bulabilirsiniz.

fdisk -lu whole.img  # note starting sector of partition 2: $S
losetup -fs -o $(($S * 512)) whole.img
# Let $D be the desired size of partition 2, in kB
resize2fs /dev/loop0 $  # replace /dev/loop0 by whatever losetup prints
losetup -d /dev/loop0
parted whole.img
# Use parted to resize the second partition
dd if=/dev/null of=/file/to/truncate seek=1 bs=$(($S/2+$D+1))k

hı. Sadece ikinci bölümün ilk 300 mb'sini bir img dosyasına kopyalamak için head'i kullanamaz mıyım? Bu, dosyanın sonundaki tüm boş alanı / boş blokları kesmeyecek mi?
Joshua Robison

1
@Joshua: Hayır, çünkü tüm dosya verilerinin ilk 300MB'de olmasının bir nedeni yoktur ve öyle olsa bile böyle bir dosya sisteminin parçası olamazsınız. Doğru boyutta geçerli bir dosya sistemi oluşturmanız gerekir. Ayrıca doğru boyutta bir bölümünüz olması gerekir; bölümün boyutu önyükleme sektöründe depolanır. Minimum boyutlu bir görüntüden başlamayı ve istenirse büyütmeyi tercih ederseniz, cevabımda bunu yapmanın bir yolunu ekledim.
Gilles 'SO- kötü olmayı kes

hı. Dosyaları daha önce kopyalamayı denedim ama bazı nedenlerden dolayı her şey kopyalanmadı. Sudo ile de rsync'i denedim. ve sanırım su root denedim ve ben de yaptım .... Benim için çalışmıyor. Eminim sürücüler monte edilmemiş ... zaten. Sürücüyü gparted içinde küçültmeye ve sonra img dosyalarını yapmaya ve daha sonra daha küçük bir diske geri yüklemeye karar verdim. Sıkıştırılmış halde ön daralma bulabildiğim tek basit çözümdü. Gerçi yardımın için teşekkürler.
Joshua Robison

Cevabınız muhtemelen doğrudur ve büyük olasılıkla istediğimi yapacağım. Benim için çok karmaşık. Ben de önceden yapılmış shrink yöntemiyle gittim.
Joshua Robison

bu satırda bir yazım hatası var head -c 512 </dev/sdb >/bev/sdcmı?
antonio

3

~ $: sudo uygun-get install gddrescue ddrescue

~ $: ddrescue / dev / sda / dev / sdb -v

;

Sözdizimi: yardımcı program / kaynak / sürücü / hedef / sürücü --verbose

Yorum: ilerleme ve hata kontrolünü gösterir, böylece kabul edilebilir mi yoksa bir yerde asılı mı olduğunu bilirsiniz. İstediğiniz boyut bloklarını da b = ekleyebilirsiniz . "gddrescue", "ddrescue" nun GUI tabanlı bir sürümüdür, ancak ddrescue'yu yalnızca yukarıda yazıldığı gibi kullanıyorum çünkü sorunsuz çalışıyor.


2
Uygun biçim olduğunu unutmayın ddrescue -v /dev/sda /dev/sdb(seçenekler aygıtların / dosyaların adlarından önce gelir). Bu aracı işaret ettiğiniz için teşekkürler! Kullanmaktan çok daha kolay dd!
xmnboy

0

Son zamanlarda Kali canlı şifreli kalıcılığı 16GB'dan 64GB 3.0 USB'ye klonladım, Ana bilgisayar işletim sistemim Windows 10 pro. Herhangi bir Linux dağıtımını kullanarak klonlama girişiminde bulunmamıştım, eminim yukarıdaki cevaplar ihtiyacınız olan şeydir, ancak herhangi bir Windows kullanıcısı için; AOMEI disk bölümü yardımcısını kullanmıştım. Kullanımı çok basit, SSD'mi Ubuntu'ya uyacak şekilde bölümlemek için kullandım, ama kazıyorum.

Klonladığım USB'nin canlı önyükleme için zaten biçimlendirilmiş olduğundan emin olmalıydım. Her iki USB'ye de takılı ve 8GB sürücüsüne sağ tıklayın; tıkladıktan copysonra 64GB sürücüyü seçtiyseniz, size "bu doğru sürücü olduğundan emin misiniz, her şey silinecek" gibi bir sürü şey soracaktır. Sadece okuyun ve her şeyin yolunda olduğundan emin olun, gerçekten fazla bir şey yapmanız gerekmez.

İşlemin bitmesini bekleyin ve hazırsınız. USB denendi ve her şey çalıştı!

Bunu en azından benim için en kolay yol olarak buldum, USB'den USB'ye canlı dağıtımları klonlama.

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.