Как сделать так, чтобы Windows 7 USB flash установил носитель из Linux?

105

У меня есть:

  • Образ ISO установочного носителя Windows 7
  • Флешка 4 ГБ
  • нет DVD привода
  • Linux установлен
Ян Келлинг
источник
Если вам удастся выполнить все эти задачи на рабочем столе Linux, вы будете раскачивать дом. Я думаю, что самой сложной частью было бы возиться со всеми операциями, которые выполняет Diskpart Windows. Создание раздела, помеченного как «активный» и «загрузочный», «основной» и т. Д.
p.campbell
3
Я думаю, что GParted ( gparted.sourceforge.net ) может нормально обрабатывать все флаги разделов. Смотрите, например, gparted.sourceforge.net/screenshots.php . И я не проверял, но похоже, что rsync может заменить robocopy в этом контрольном списке.
Мэтью Флэшен
1
Есть много подробных ответов на тот же вопрос о askubuntu.com/q/289559/135671
Erik

Ответы:

181

Хорошо, после неудачной попытки всех методов, упомянутых здесь, я наконец получил это работающее. По сути, отсутствующим шагом было записать соответствующий загрузочный сектор на USB-накопитель, что можно сделать из Linux с помощью 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-накопитель (также работает для 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-накопитель, щелкните правой кнопкой мыши на файловой системе, затем нажмите «Управление флагами». Установите флажок загрузки, затем закройте.

...и вы сделали.

После всего этого вы, вероятно, захотите сделать резервную копию вашего 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 iso. Я попытался запустить Ubuntu 16.04, скопировав Win10_1703_SingleLang_English_x64.iso (размер 4 241 291 264 байта) на USB-накопитель емкостью 8 ГБ - только при загрузке без UEFI [небезопасной]. После выполнения dd сообщает: 8300156 + 0 записей в 8300156 + 0 записей, скопировано 4249679872 байт (4,2 ГБ, 4,0 ГБ), 412,880 с, 10,3 МБ / с

В обратном случае, если / в следующий раз вы захотите установить установщик Windows 7 на USB.

jthurner
источник
1
Было бы неплохо упомянуть числовой тип раздела для использования в cfdisk (7, 86, 87?)
Йохан Далин
5
Он работал с типом 7
Ropez
3
Просто примечание: если ваша файловая система ntfs выдает странные ошибки прав доступа при записи в нее даже от имени root, убедитесь, что вы установили ntfs-3g.
Джереми Сальвен
1
Я попробовал это прямо на жесткий диск, и я получил ошибку «Windows не может получить доступ к источникам установки», как только я загрузился с него.
Джереми Сальвен
4
Позвоните syncпосле копирования, чтобы убедиться, что все файлы записаны
Николас Дусарт,
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. Откройте корневую оболочку и размонтируйте диск.

umount /dev/sdb1

Перейдите в каталог, где ваш ISO хранится в корневой оболочке, и введите следующее: (Замените windows7.iso на то, что называется iso, и / dev / sdb на идентификатор устройства вашей флешки).

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

Если ваша материнская плата поддерживает загрузку с pendrive, она должна быть в состоянии загрузиться с нее. Это установит установщик на Pendrive, а не саму ОС.

TrueDuality
источник
21
Не работает для меня
1
Ваша материнская плата поддерживает загрузку с USB? Это будет решающим фактором того, будет ли этот подход работать или нет.
TrueDuality
11
У меня тоже не работает, и моя машина прекрасно поддерживает загрузку с USB. Возможно, этот подход может работать на машинах, которые могут загружать USB-накопители в стиле DVD, но большинство BIOS предполагают размещение в стиле HDD на USB (то есть MBR 512 байт с загрузочным кодом в нем). Стоит упомянуть: образы Fedora CD / DVD, в отличие от W7, на самом деле имеют такую ​​MBR с загрузочным кодом и таблицей разделов, что делает их пригодными для загрузки с HDD / USB.
Троник
9
Для этого требуется, чтобы ваша материнская плата могла загружать USB-CDROM не только USB-HDD
TrueDuality
12
В этом решении отсутствует этап установки MBR, и обычно он не будет работать, если он уже волшебным образом не существует. Решение @Gunthers завершено.
stolsvik
5

Предложение PCambell хорошо, но вы также захотите очистить MBR, эквивалент Linux ниже

Я попробовал это, и это сработало (я не уверен, почему метод dd не удался, но кажется, что раздел должен быть ntfs?):

  • определите, какое устройство / dev / является вашей флешкой и размонтируйте его
  • очистить MBR: dd if = / dev / zero = = / dev / device bs = 446 count = 1
  • запустите fdisk / dev / device
  • удалите все разделы и создайте 1 основной раздел, сделайте его загрузочным и сохраните изменения
  • запустите mkfs.ntfs / dev / device1 (раздел 1)
  • скопируйте все содержимое установки Windows iso на созданный вами раздел

источник
-4

Вместо

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

ты пишешь как root,

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

(ДОБАВЬТЕ 1 в конце или на том месте, где находится USB-накопитель.)

рехнувшийся
источник
3
Нет, of = sdb является правильным согласно предыдущим ответам.
Джеймс Бродхед
1
Это просто неправильно.
Лукад
1
-1: ddнужно записывать на устройства, а не на разделы
ssc