Linux'ta komut satırı ile önyüklenebilir bir ISO'dan önyüklenebilir bir USB nasıl oluşturulur?


50

Ubuntu’nun özel bir sürümünü plop linux üzerinden yüklemek için kullandığım bir ISO dosyasından oluşturulan bir CD’m var.

CD iyi çalışıyor ancak bunun yerine önyüklenebilir bir USB sürücü kullanmak istiyorum. Önyüklenebilir USB'yi denemek ve oluşturmak için dd komutunu kullandım:

dd if=filename.iso of=/dev/sdb1 bs=4k

Şimdi bu dosyaları kopyalar ve USB'yi önyüklenebilir yapar ancak "İşletim sistemi eksik" hatası alıyorum

Herhangi bir fikir?


Sadece komut satırına erişiminiz var mı? Çok iyi çalışan ve Linux üzerinde çalışan Unetbootin gibi arayüzler var ..
dashboard

3
@dashboard Komut satırını tercih ederim çünkü her linux makinesinde mevcut.
xsdf


@dashboard - GUI araçları benim için hiçbir zaman iyi çalışmadı ve bu uzun yıllar boyunca tutarlı bir şekilde gerçekleşti. Komut satırı yöntemini bildiğim için mutluyum. Daha kolay ve daha güvenilir buluyorum. Çok daha az sinir bozucu!
MountainX

Yanıtlar:


58

Tamam, bazı araştırmalardan sonra bir çözüm buldum ve adım adım ilerleyeceğim. Sorun iki katıydı.

  1. USB flash sürücüyü takın ve aşağıdaki komutla takılı olduğu cihazı belirleyin:

    sudo fdisk -l
    

    Bu sefer benim için / dev / sdc1 oldu, bu yüzden bunu benim örnek olarak kullanacağım.

  2. Cihazı çıkar

    umount /dev/sdc1
    
  3. Gerekirse emin değilim, ancak sürücüyü FAT32'de biçimlendirdim, tam olması durumunda

    sudo mkdosfs -n 'USB-Drive-Name' -I /dev/sdc -F 32
    
  4. Şimdi ISO'm syslinux değil isolinux kullanıyordu. CD'lerle çalıştığını biliyordum, bu yüzden ISO'nun BIOS tarafından sabit sürücüden tanınmasını sağlayan isohybrid komutunu çağırmam gerektiğini düşündüm.

     isohybrid filename.iso
    

    Bu komut hakkında daha fazla bilgiyi burada bulabilirsiniz , ancak bu "İşletim Sistemi Yok" mesajının nedeni idi. İlk sorun çözüldü, ancak şimdi "isolinux.bin eksik veya bozuk" dedi.

  5. Bir sonraki adım, iso'yu kopyalamak. İkinci sorunum burada yatıyordu, burada aygıta kopyaladım, sdc1, aygıt değil, sdc.

    sudo dd if=filename.iso of=/dev/sdc bs=4k
    

    Bu iyi çalışıyor gibi görünüyor, ancak son düzeltmeyi aldığım forumda, aygıtı çıkarmadan önce aşağıdakileri yapmanız önerildi:

    sync
    sudo eject /dev/sdc
    

3
DD'nin ilerlemesini kontrol etmenin bir yolu: unix.stackexchange.com/a/11264/13011 .
Nikos Alexandris

3
Burada bir varsayımda bulunmakla birlikte, mkdosfskomutun gerekli olmayabileceğini düşünüyorum , çünkü izo zaten üzerinde bulunan bir dosya sistemine (muhtemelen MBR dahil, emin değil) blok cihazının başına kopyalandı. Dostum, isohybridharika bir emirdir, bilmiyordum!
Ehtesh Choudhury

1
Windows 7 için önyüklenebilir USB kurulumu, ayrıca bkz superuser.com/questions/256869/…
cwd

7
Adım # 3 gerekli değildir; dd5. adımında komut ISO içeriğiyle yeni oluşturulan dosya sistemini yoketmek olacaktır.
ewhac

Mesajınızı burada bulana kadar 12 saate kadar aynı sorunu arıyorum ve takip edip adım atabildim ve işe yaradı! (5. adım da benim prosorunumdu, henüz linux'ta değilim , o yüzden teşekkür ederim)
Ismael

3

Bu, SanDisk USB çubuklarla veya FAT32'de biçimlendirilmemiş çubuklarla yaygın bir sorundur.

Bunlardan biri değilse, kesinlikle çubuk bölüm düzeninizle veya syslinux.cfg dosyanızla ilgili bir sorun var.


USB flash sürücü Verbatim'den. Emin olmak için FAT32'de yeniden biçimlendirdim ve hala aynı hatayı aldım.
xsdf

1

isohybridher zaman çalışmayabilir. Örneğin, FreeDOS'lu bir .iso'm vardı ve isohybrid orada bazı önemli dosyaları bulamadı (orada kullandığım syslinux tarafından da kullanılıp kullanılmadıklarını bilmiyorum). Burada birkaç alternatif öneriyorum.

1) GRUB gibi başka bir önyükleyici kurun. Bu açıklanmıştır burada :

"USB belleğinizin ilk bölümünün FAT32 ve bölümünün / dev / sdy1 olduğunu varsayalım" ( grub2Fedora Core'umdaydı , bu yüzden komutları biraz değiştirdim):

# mkdir -p /mnt/usb ; mount /dev/sdy1 /mnt/usb
# grub2-install --target=i386-pc --recheck --debug --boot-directory=/mnt/usb/boot /dev/sdy
# grub2-mkconfig -o /mnt/usb/boot/grub2/grub.cfg

# optional, backup config files of grub.cfg
# mkdir -p /mnt/usb/etc/default
# cp /etc/default/grub /mnt/usb/etc/default
# cp -a /etc/grub.d /mnt/usb/etc

# sync; umount /mnt/usb

2) FreeDOS wiki burada GRUB ve syslinux ile birleşik bir yöntem sunar (nasıl başlatıldıklarını anlamıyorum grub>- USB'den o aşamaya kadar önyükleme yapamadım).

3) İşte yararlı olabilecek bir yazı - 'command.com, kernel.sys, syslinux.cfg, ldlinux.sys ve fat32lba.bss dosyaları sürücünün kökünde ve MBR ve açılışında sektör yeniden yazılmış değil, sürücünün önyüklenebilir kalması gerekiyor. '

4) Burada syslinux bootloader ile çalıştırılabilir bir .iso dosyasının nasıl oluşturulacağı açıklanmaktadır. Hatta isohybrid kullanmıyorlar. Ne yazık ki bu bana yardımcı olmadı (belki de syslinux yüzünden).

5 *) aracılığıyla bir windows programı kullanın wine. Rufus'u denedim, ancak bu işe yaramadı, cihazı bulamadı.

Sizi uyarıyorum, ne yazık ki bu sorunu çözemedim, cihazım değiştirilemezdi, ancak umarım bu diğer insanlar için de faydalı olabilir (USB'ye linux kurmak istemeyenler). Chtaube tarafından üretilen usb görüntü benim için çalıştı, ancak bu yöntemlerin doğru olduğunu düşünüyorum.

UPD: 3. yöntem gerçekten çalışıyor ( özel bir yükleme dosyası için düzeltme yapıldı ).

UPD2: (sabit bağlantılar). isohybridMuhtemelen sorun , iso ve sistemimdeki isolinux.bin sürümlerinin farklı olmasıydı. Buradagenisoimage önerilen şekilde kullanılarak iso yeniden derlendi :

genisoimage -l -r -J -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -c isolinux/boot.cat -o fd11new.iso fd11new

De onlar yöntemle çözüldü bazı sorunlar oluştu burada genisoimage önce:

cp /boot/extlinux/*.c32 fd11new/isolinux/
extlinux --install /boot/isolinux

== son UPD2 ==



2nd: freedos.sourceforge.net/wiki/index.php/USB#Linux_2 Sistem sizi benden daha fazla güveniyorsa, bu bağlantıları gönderiye ekleyebilirsiniz. StackOverflow zaten beni iyi tanıyor, öyleyse neden superuser'da böyle bir sorun var? Ayrıca bunu gönderirken sorun yaşadım, bana cevabımın gönderildiğini göstermedi.
Yaroslav Nikitenko

Süper kullanıcı referanslarına göre bağlantıları sayar, yani aynı kaynağa iki kez bağlarsam sayılır. Bu bir hata gibi görünüyor. UPD’de bir geçici çözüm spiderbird.com/tag/fat32lba-bss
Yaroslav Nikitenko

Yorumlardaki tüm bağlantılar düzeltildi. Bu politikanın ne kadar problem getirdiğini göstermek için onları burada bırakıyorum.
Yaroslav Nikitenko

0

Bunu tam olarak yapan güvenli bir bootisoprogram kullanabilirsiniz :

bootiso -d /dev/sdb filename.iso

bootiso, seçilen cihazın /dev/sdbUSB üzerinden bağlandığını kontrol eder ve kurulmazsa başarısız olur, ki bu büyük bir güvenlik önlemidir . Sisteminize bağlı tam olarak bir USB sürücüsü varsa, USB aygıtını otomatik olarak algılayacaktır, çalışırken görün:

@Xsdf tarafından belirtilen sorunları aşmak için syslinux bootloader'ı kurmak istiyorsanız, aşağıdaki -bseçeneği kullanın:

 bootiso -b -d /dev/sdb filename.iso

Yüklemek için:

curl -L https://rawgit.com/jsamr/bootiso/latest/bootiso -O
chmod +x bootiso
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.