ทำไม 'dd' ไม่สามารถสร้าง USB ที่สามารถบู๊ตได้?


36

เมื่อเร็ว ๆ นี้ฉันต้องการสร้าง USB ของ Linux มิ้นต์ ฉันพบว่ามีคำแนะนำ / ประสบการณ์ที่ขัดแย้งกันมากมายเกี่ยวกับว่าคำสั่ง 'dd' สามารถใช้เพื่อสร้าง USB ที่สามารถบู๊ตได้หรือไม่ ฉันตัดสินใจดาวน์โหลด ISO แล้วลอง ในขณะที่ววใส่ภาพบนแท่ง USB อย่างแน่นอนมันไม่สามารถบูตได้ ดังนั้นคำถามของฉันคืออะไรเป็นส่วนผสมที่วิเศษที่จะทำให้งานนี้หรือทำไมวิธีการนี้ได้ยืนยันถ้ามันไม่ทำงาน?

นี่คือคำสั่งที่ฉันใช้

dd if=/mint/iso/image of=/dev/sdb1 oflag=direct 

@Sawdust ในขณะที่คุณระบุว่าคำตอบที่โพสต์เป็น "ไม่ไป" บทความนี้ ( community.linuxmint.com/tutorial/view/744 ) แสดงว่านี่เป็นขั้นตอนที่ถูกต้อง
Dave G

1
@DaveG - น่าสนใจเห็นได้ชัดว่า 'dd' เป็นคำสั่งที่ใช้งานได้หากไฟล์ต้นฉบับคือ "ภาพ ISO ไฮบริด" แต่มันไม่ได้เป็นขั้นตอนทั่วไปสำหรับทุกISO บางทีความแตกต่างนั้นอาจเป็นเหตุผลของคำแนะนำที่ขัดแย้งกันที่พบ
ขี้เลื่อย

@ ขอบคุณมากสำหรับคำชี้แจงเพิ่มเติมเกี่ยวกับเรื่องนี้
Dave G

คุณอาจมีระบบแบบติดซึ่งจะต้องใช้ในระบบการบูตของ EFI แต่เครื่องของคุณได้รับการกำหนดค่าให้ใช้การบูตแบบ "คลาสสิค" มีให้เห็นด้วยกับ Linux Mint USB stick
David Tonhofer

นี่คือวิธีแก้ปัญหาแบบง่าย ๆ / อัจฉริยะสำหรับรูปภาพ iso recalcitrant (ตาม Ubuntu Live ISO): 1) ฟอร์แมตแท่งเพื่อให้มีระบบแฟ้มบน (พูด) "/ dev / sdX1", 2) เมานท์เป็น "/ mnt / usb "ตัวอย่างเช่น 3) ติดตั้ง grub2 on stick grub2-install --boot-directory /mnt/usb/boot/ /dev/sdX:, 4) คัดลอกอิมเมจ ISO ที่ดาวน์โหลดก่อนหน้านี้ (เช่น" foolinux.iso ") เพื่อติด: cp foolinux.iso /mnt/usb/5) สร้างไฟล์" /mnt/usb/boot/grub2/grub.cfg "ที่ linux บูทจากภาพ ISO แสดงอยู่บนแท่ง (ต่อ)
David Tonhofer

คำตอบ:


32

คุณกำลังเขียนอิมเมจไปที่พาร์ติชัน 1 ของ / dev / sdb

เปลี่ยนเป็นคำสั่งต่อไปนี้:

dd if=/mint/iso/image of=/dev/sdb oflag=direct

ข้อมูลนี้ได้มาจากที่นี่


2
ฉันกำลังทำ: sudo dd if =. / debian-8.4.0-powerpc-DVD-1.iso จาก = / dev / rdisk3 bs = 1m และไม่สามารถบูตได้ความคิดใด ๆ
Yusufk

ฉันจะ rdisk3 พาร์ทิชันหรือดิสก์ดิบ? คุณกำลังพยายามเขียนภาพไปยังพาร์ติชันเฉพาะ
Dave G

1
ฉันทำ dev / sdb / และก็ยังไม่สามารถบูต
Holms

rdisk3 เป็นดิสก์ที่ 3 บน mac afaik ฉันมีปัญหาเช่นเดียวกับ Yusufk จำเป็นต้องตรวจสอบว่ามันเกี่ยวข้องกับ UEFI
gavit

11

คุณคัดลอกรูปภาพไปยังพาร์ติชันแรก ลองคัดลอกไปยัง / dev / sdb แทน / dev / sdb1

กลไกที่เกิดขึ้นจริงแตกต่างกันเล็กน้อยขึ้นอยู่กับประเภทของภาพที่คุณใช้ แต่สำหรับภาพ DOS / MBR อย่างง่าย ๆ คุณจะต้องได้รับตารางพาร์ทิชันที่ถูกต้อง เริ่มต้น 512 ไบต์ที่ไม่ใช่ตารางพาร์ติชัน - ประกอบด้วยรหัสการเริ่มต้น


ฉันจะทราบว่ามากกว่าการพยายามที่จะคัดลอกทั้ง ISO อีกครั้งเพื่อพาร์ติชันอื่นเพียงแค่การตั้งธงบูตบนพาร์ติชันที่คุณคัดลอกเดิมภาพเกินไปอาจพอเพียง (ตามนัยในคำตอบนี้)
GrayedFox

2

จากประสบการณ์ของฉันกับดิสทริบิวเตอร์ distro อื่น ๆ สิ่งที่คุณต้องทำคือเปลี่ยนไฟล์ syslinux boot loader และแก้ไขมันเพื่อบู๊ต USB มีข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับเรื่องนี้เป็นเรื่องที่วิกิพีเดีย syslinux

ดูเพิ่มเติมนี้การค้นหาของ Google


1

คุณอาจต้องเขียน BPB ลงใน bootloader ของคุณ ดูโพสต์ของ Dex ตั้งแต่วันที่ 24 เม.ย. 2552 เวลา 9:06 น. ที่http://f.osdev.org/viewtopic.php?f=1&t=19681

ส่วนสำคัญคือ "ถ้าผู้ใช้ [เฟิร์มแวร์ usb ของคุณ] ฟลอปปี้อีมูเลชันและคุณไม่มี BPB มันจะไม่บู๊ต"

ด้วยคำแนะนำนั้นฉันสามารถแก้ไขปัญหานี้ได้ ฉันใช้ linux ดังนั้นคำสั่ง dd ของฉันคือ:

sudo dd bs=512 count=2880 if=IMG.bin of=/dev/sdb

คุณจะต้องการแทนที่ sdb ด้วยอุปกรณ์ usb ของคุณ คุณสามารถค้นหาได้โดยเรียกใช้

ls -l /dev/ | grep sd

ก่อนและหลังการแทรก usb ของคุณในขณะที่ linux กำลังทำงาน หากคุณได้รับเช่น sdb1 และ sdb ให้เลือกตัวเลือกที่ไม่ได้จัดทำดัชนี


0

คุณแน่ใจหรือไม่ว่าเมนบอร์ดของคุณถูกตั้งค่าให้บู๊ตจากอุปกรณ์ USB ก่อนที่จะลองบูตจาก HDD ของคุณ? ฉันเดาว่าอาจเป็นปัญหาเดียวของคุณ - ไม่มีอะไรให้ใช้มากเท่าddที่คุณเห็น


1
นี่เป็นปัญหาที่ฉันคิดโดยเฉพาะอย่างยิ่งเพราะฉันทำงานกับคอมพิวเตอร์เก่า ดังนั้นเมื่อมันไม่ทำงานบนเครื่องเป้าหมายของฉันฉันจะตั้งค่าลำดับการบู๊ตบนแล็ปท็อป wifes ของฉัน (shh อย่าบอกเธอ) และมันก็ไม่ได้บู๊ตด้วยเช่นกัน

0

ฉันยังพบปัญหานี้สองสามครั้ง

สิ่งที่ฉันพบว่าใช้งานได้ดีที่สุดสำหรับฉันส่วนใหญ่คือการเติมไดรฟ์ให้เป็นศูนย์ก่อน

  1. เปลี่ยน X เป็นอักษรชื่อไดรฟ์หรือหมายเลขของคุณเพื่อค้นหา:

    • Mac: diskutil list
    • ลินุกซ์: lsblk
  2. เติมไดรฟ์เป็นศูนย์

    • Mac: dd if=/dev/zero of=/dev/rdiskX bs=4m
    • ลินุกซ์: dd if=/dev/zero of=/dev/sdX bs=4M
  3. dd ภาพของคุณอีกครั้ง

(ขนาดบล็อก 4meg ดูเหมือนจะเร็วที่สุดสำหรับฉัน)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.