วิธีทำให้ Windows 7 USB flash ติดตั้งสื่อจาก Linux


105

ฉันมี:

  • อิมเมจ ISOของ Windows 7 สื่อการติดตั้ง
  • แฟลชไดรฟ์ USB 4 GB
  • ไม่มีไดรฟ์ดีวีดี
  • ติดตั้ง Linux แล้ว

หากคุณสามารถจัดการทำงานเหล่านี้ได้จากภายในลินุกซ์เดสก์ท็อปของคุณคุณจะต้องตะลึงบ้าน ฉันคิดว่าส่วนที่ยากที่สุดจะเล่นซอกับการดำเนินการทั้งหมดที่ Diskpart ของ Windows ทำ การทำพาร์ติชันที่ระบุว่า 'ใช้งานอยู่' และ 'บูต', 'หลัก' ฯลฯ
p.campbell

3
ฉันคิดว่า GParted ( gparted.sourceforge.net ) สามารถจัดการการตั้งค่าสถานะพาร์ติชันทั้งหมดได้ดี ดูเช่นgparted.sourceforge.net/screenshots.php และฉันยังไม่ได้ทดสอบ แต่ดูเหมือนว่า rsync สามารถทดแทน robocopy ในรายการตรวจสอบนั้นได้
Matthew Flaschen

1
มีคำตอบโดยละเอียดมากมายสำหรับคำถามเดียวกันที่askubuntu.com/q/289559/135671
erik

คำตอบ:


181

ตกลงหลังจากทดลองวิธีการทั้งหมดที่กล่าวถึงที่นี่ไม่สำเร็จในที่สุดฉันก็ใช้งานได้ โดยทั่วไปขั้นตอนที่ขาดหายไปคือการเขียนบูตเซกเตอร์ที่เหมาะสมในการติด USB ซึ่งสามารถทำได้จากลินุกซ์ด้วยหรือms-sys lilo -Mสิ่งนี้ใช้ได้กับ Windows 7 รุ่นที่วางจำหน่าย

นี่คือบทสรุปที่สมบูรณ์อีกครั้ง:

ติดตั้ง MS-SYS - ถ้ามันไม่ได้อยู่ในที่เก็บของคุณได้รับมันนี่ หรือมิฉะนั้นให้ตรวจสอบให้แน่ใจว่าติดตั้ง lilo เรียบร้อยแล้ว (แต่อย่ารันขั้นตอน liloconfig ในกล่องท้องถิ่นของคุณหากติดตั้ง Grub เช่นที่นั่น!)

ตรวจสอบว่าอุปกรณ์สื่อ USB ของคุณจะได้รับมอบหมาย - /dev/sdbที่นี่เราจะถือว่าเป็น ลบพาร์ติชันทั้งหมดสร้างพาร์ติชันใหม่ที่ใช้พื้นที่ทั้งหมดตั้งค่าชนิดเป็น NTFS (7) และอย่าลืมตั้งค่าให้บูตได้:

# cfdisk /dev/sdb   หรือ   fdisk /dev/sdb ( ประเภทพาร์ติชัน7และตั้งค่าสถานะที่สามารถบูตได้ )

สร้างระบบไฟล์ NTFS:

# mkfs.ntfs -f /dev/sdb1

เขียน Windows 7 MBRบน USB stick (ใช้ได้กับ windows 8) หลายตัวเลือกที่นี่:

  1. # ms-sys -7 /dev/sdb
  2. หรือ (เช่นการติดตั้ง Ubuntu ที่ใหม่กว่า) sudo lilo -M /dev/sdb mbr( ข้อมูล )
  3. หรือ (หากติดตั้ง syslinux) คุณสามารถเรียกใช้ sudo dd if=/usr/lib/syslinux/mbr/mbr.bin of=/dev/sdb

เมานท์ ISO และสื่อ USB:

# mount -o loop win7.iso / mnt / iso
# mount / dev / sdb1 / mnt / usb

คัดลอกไฟล์ทั้งหมด:

# cp -r /mnt/iso/* /mnt/usb/   ... หรือใช้ไฟล์ GUI เบราว์เซอร์มาตรฐานของระบบของคุณ

โทรsyncเพื่อตรวจสอบว่าไฟล์ทั้งหมดถูกเขียน

เปิด gparted เลือกไดรฟ์ USB คลิกขวาที่ระบบไฟล์จากนั้นคลิกที่ "Manage Flags" ทำเครื่องหมายในช่องบูทจากนั้นปิด

... และคุณทำเสร็จแล้ว

หลังจากนั้นคุณอาจต้องการสำรองสื่อ USB สำหรับการติดตั้งเพิ่มเติมและกำจัดไฟล์ ISO ... เพียงแค่ใช้ dd: # dd if=/dev/sdb of=win7.img

หมายเหตุนี่เป็นการคัดลอกอุปกรณ์ทั้งหมด! - ซึ่งมักจะใหญ่กว่าไฟล์ที่คัดลอกมา ดังนั้นแทนที่จะเสนอ

# dd count=[(size of the ISO file in MB plus some extra MB for boot block) divided by default dd blocksize] if=/dev/sdb of=win7.img

ตัวอย่างเช่นด้วย 8 M ไบต์พิเศษ:

# dd count=$(((`stat -c '%s' win7.iso` + 8*1024*1024) / 512)) if=/dev/sdb of=win7.img status=progress

ddและเช่นเคยตรวจสอบชื่ออุปกรณ์อย่างระมัดระวังเมื่อทำงานกับ

วิธีการสร้าง USB ที่สามารถบู๊ตได้ที่นำเสนอข้างต้นสามารถใช้ได้กับ Win10 installer iso ด้วย ฉันลองใช้ Ubuntu 16.04 การคัดลอก Win10_1703_SingleLang_English_x64.iso (ขนาด 4,241,291,264 ไบต์) ไปยังแท่ง USB ขนาด 8 GB - ในการบูตแบบ non-UEFI [ไม่ปลอดภัย] เท่านั้น หลังจากเรียกใช้รายงาน dd: 8300156 + 0 บันทึกใน 8300156 + 0 บันทึก 4249679872 ไบต์ (4.2 GB, 4.0 GiB) คัดลอก 412.807 วินาที 10.3 MB / s

ย้อนกลับถ้า / ในครั้งถัดไปที่คุณต้องการติดตั้ง Windows 7 ลงบน USB


1
จะดีที่จะพูดถึงประเภทพาร์ทิชันที่เป็นตัวเลขที่จะใช้ใน cfdisk เช่นกัน (7, 86, 87?)
Johan Dahlin

5
มันทำงานกับประเภท 7
Ropez

3
เพียงข้อสังเกต: หากระบบไฟล์ ntfs ของคุณให้ข้อผิดพลาดเกี่ยวกับการอนุญาตแปลก ๆ เมื่อคุณเขียนถึงแม้จะเป็นรูทตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง ntfs-3g
Jeremy Salwen

1
ฉันลองทำสิ่งนี้โดยตรงบนฮาร์ดไดรฟ์และฉันพบข้อผิดพลาด "windows ไม่สามารถเข้าถึงแหล่งที่มาของการติดตั้ง" เมื่อฉันบูทจากมัน
Jeremy Salwen

4
โทรsyncหลังจากคัดลอกเพื่อให้แน่ใจว่าไฟล์ทั้งหมดถูกเขียน
Nicolas Dusart

13

คุณสามารถทำสิ่งนี้ได้ด้วย dd หากพีซีของคุณรองรับ UEFI และโดยส่วนขยายดิสก์ GPT

เปิดเทอร์มินัลคุณจะต้องค้นหาอุปกรณ์ที่คุณจะใช้เป็น pendrive หากคุณติดตั้งไดรฟ์คุณสามารถค้นหาชื่อของอุปกรณ์โดยพิมพ์ "mount" และดูที่รายการ สิ่งต่อไปนี้:

/dev/sdb1 on /media/USBDISK type vfat (rw,nosuid,nodev,uhelper=hal,uid=1000,utf8,shortname=mixed)

ในกรณีนี้ส่วนแรกของ / dev / sdb ถูกเมาท์ที่ / media / USBDISK เปิดรูทเชลล์และ unmount ไดรฟ์

umount /dev/sdb1

ไปที่ไดเรกทอรีที่เก็บ ISO ของคุณไว้ในรูทเชลล์และพิมพ์ต่อไปนี้: (แทนที่ windows7.iso ด้วยสิ่งที่เรียกว่า iso และ / dev / sdb ด้วยรหัสอุปกรณ์ของยูเอสบีสติ๊กของคุณ)

dd if=windows7.iso of=/dev/sdb

หากแผงวงจรหลักของคุณรองรับการบูทออกจากหน่วยความจำมันควรจะสามารถบู๊ตได้ นี่จะเป็นตัวติดตั้งบน pendrive ไม่ใช่ระบบปฏิบัติการ


21
ใช้งานไม่ได้สำหรับฉัน

1
เมนบอร์ดของคุณรองรับการบูทจาก USB หรือไม่? นั่นจะเป็นปัจจัยตัดสินขั้นสุดท้ายว่าวิธีนี้จะใช้ได้หรือไม่
TrueDuality

11
ไม่ได้ผลสำหรับฉันเช่นกันและเครื่องของฉันรองรับการบูท USB ได้ด้วยดี บางทีวิธีการนี้สามารถทำงานกับเครื่องที่สามารถบู๊ต USB สไตล์ DVD ได้ แต่ BIOSes ส่วนใหญ่ใช้เลย์เอาต์แบบ HDD บน USB (หมายถึง 512 byte MBR พร้อมรหัสสำหรับบูต) สิ่งที่ควรค่าแก่การกล่าวถึง: ภาพจากซีดี / ดีวีดีของ Fedora ซึ่งแตกต่างจาก W7 จริง ๆ แล้วมี MBR เช่นนั้นพร้อมรหัสบู๊ตและตารางพาร์ติชั่นซึ่งเหมาะสำหรับ HDD / USB เช่นกัน
Tronic

9
สิ่งนี้ต้องการให้เมนบอร์ดของคุณสามารถบูต USB-CDROM ไม่ใช่แค่ USB-HDD
TrueDuality

12
วิธีนี้จะหายไปจากขั้นตอนการติดตั้ง MBR และโดยทั่วไปจะใช้งานไม่ได้ยกเว้นว่ามันจะมีอยู่อย่างน่าอัศจรรย์ การแก้ปัญหาโดย @Gunthers เสร็จสมบูรณ์
stolsvik

5

คำแนะนำของ PCambell เป็นสิ่งที่ดี แต่คุณจะต้องล้าง MBR ด้วยซึ่งเทียบเท่ากับ linux อยู่ด้านล่าง

ฉันลองและใช้งานได้ (ฉันไม่แน่ใจว่าทำไมเมธอด dd ล้มเหลว แต่ดูเหมือนว่าพาร์ติชันจะต้องเป็น ntfs?):

  • หาว่าอุปกรณ์ใด / dev / อุปกรณ์คือแฟลชไดรฟ์ usb และยกเลิกการต่อเชื่อม
  • ล้าง MBR: dd if = / dev / ศูนย์ของ = / dev / อุปกรณ์ bs = 446 count = 1
  • เรียกใช้ fdisk / dev / อุปกรณ์
  • ลบพาร์ติชันทั้งหมดและสร้าง 1 พาร์ติชันหลักทำให้สามารถบูตได้จากนั้นบันทึกการเปลี่ยนแปลง
  • รัน mkfs.ntfs / dev / device1 (พาร์ติชัน 1)
  • คัดลอกเนื้อหาทั้งหมดของ windows install iso ไปยังพาร์ติชั่นที่คุณสร้างขึ้น

-4

แทน

dd if=windows7.iso of=/dev/sdb

คุณเขียนเป็นroot,

dd if=windows7.iso of=/dev/sdb1 

(เพิ่ม 1 ที่ส่วนท้ายหรือสิ่งที่ไดรฟ์ USB ของคุณอยู่ที่)


3
ไม่คำตอบของ = sdb นั้นถูกต้องตามคำตอบก่อนหน้า
James Broadhead

1
นี่เป็นเพียงผิดธรรมดา
lukad

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