Сделайте загрузочный USB для установки Windows XP из Linux

19

У меня Dell Inspiron Mini 9 с установленной только Ubuntu . Я также хочу установить Windows XP, но у меня нет и не могу получить внешний CD-дисковод, поэтому мне нужно выполнить установку Windows с USB.

Все учебники, которые я нашел, используют Windows, чтобы сделать USB загрузочным. Как я могу сделать то же самое из Linux?

Питер Мортенсен
источник
У вас есть доступ к компьютеру с CD-дисководом?
Натаниэль
У меня есть другая машина Linux с CD-приводом.

Ответы:

13

Вы можете использовать VirtualBox и предоставить виртуальной машине доступ к жесткому диску. Затем установите Windows XP на виртуальной машине и создайте новый раздел на реальном жестком диске. После установки вы можете перезагрузить компьютер и загрузить Windows как обычно.

Чтобы предоставить VirtualBox доступ ко всему диску (например, измените его xна соответствующую букву a):

VBoxManage internalcommands createrawvmdk -filename ~/hdd.vmdk -rawdisk /dev/sdx

Затем выберите существующий жесткий диск и выберите файл hdd.vmdkв вашей домашней папке.

Если команды жалуются на отсутствие разрешений, добавьте себя в группу diskс помощью следующей команды, затем войдите и выйдите из системы и повторите попытку.

sudo adduser `whoami` disk
  1. Если у вас уже установлен Linux на целевом компьютере, вы можете сделать это прямо на этом компьютере, но перед перезагрузкой в ​​Windows запустите sudo update-grubи sudo grub-install /dev/sdx(измените x, например, на соответствующую букву a), чтобы убедиться, что вы все равно сможете загрузиться Linux. Чтобы избежать проблем с различным оборудованием между вашим компьютером и тем, что VirtualBox эмулировал в виртуальной машине (что может привести к BSOD ), вы также можете создать второй профиль оборудования в Windows перед выходом из виртуальной машины. При загрузке непосредственно в Windows с GRUB выберите этот второй профиль оборудования. Вы можете в конечном итоге сделать этот новый профиль оборудования по умолчанию.

  2. Если целевой компьютер полностью чист , создайте загрузочный USB-диск Ubuntu, на который вы также поместите образ установочного компакт-диска Windows (приобретенного по закону). Затем загрузите Ubuntu на целевой машине и следуйте инструкциям выше.

Линус Уннебек
источник
1
Это определенно блестящее решение! Кажется, работает до сих пор. :)
RCE
1
Привет, я пытаюсь сделать то же самое на Ubuntu 12.04, но у меня проблемы. Когда я пишу VBoxManage internalcommands createrawvmdk -filename ~/hdd.vmdk -rawdisk /dev/sdxx, мой жесткий диск, я получаю это сообщение. VBoxManage: error: Cannot open the raw disk '/dev/sda1': VERR_ACCESS_DENIED VBoxManage: error: The raw disk vmdk file was not createdЗатем я сделал это как root, но, хотя очевидно, что работал, я могу открыть только hdd.vmdk как root, и это доставляет мне неудобства. Тем не менее, кажется, что виртуальная машина не работает. Я получаю виртуальный ящик с черным экраном, открывающийся как root.
Феникс
1
Как указано в ответе: «Если команды жалуются на отсутствие разрешений, добавьте себя на диск группы с помощью следующей команды, затем войдите и выйдите из системы и попробуйте снова». sudo adduser `whoami` disk
Линус Уннебек
1
Я выполнил вышеизложенное, и виртуальная машина установилась и нормально запускает winxp, но когда я выключаю компьютер и перезагружаюсь, появляется логотип Windows, который сразу же зависает, прежде чем он быстро показывает BSOD и перезагружается.
SaultDon
2
К сожалению, этот метод не работает, если вам не повезло. Вы можете в конечном итоге установить Windows, которая прекрасно работает на виртуальной машине, но не загружается на оборудовании.
jpalecek
8

Загрузите RUFUSLDR здесь: https://dl.dropboxusercontent.com/u/20170669/RUFUSLDR Загрузите ms-sys здесь: http://prdownloads.sourceforge.net/ms-sys/ms-sys-2.3.0.tar. gz? download Перетащите папку ms-sys-2.3.0 куда-нибудь, где поддерживается флаг выполнения (как, например, ваша домашняя папка Linux, скорее всего). Перейдите к терминалу, введите «make», затем «sudo make install». Очень легко.

Я сочувствую тебе. Я пробовал учебные пособия о том, как создать из Windows загрузочный USB-накопитель в установщик WinXP. Первая часть диска, WinToFlash и утилита HP USB Format - все мне не удалось.

Руфус на самом деле работает. Но это утилита только для Windows. Вы можете установить VirtualBox, установить Windows в VirtualBox, установить Rufus на виртуальную машину, предоставить общий доступ к USB-накопителю и заставить Rufus сделать загрузочный USB-накопитель установщиком Windows XP.

В настоящее время Rufus не поддерживает создание загрузочного установщика USB WinXP с использованием свободных установочных файлов. Это должно видеть iso. Таким образом, у вас есть VirtualBox, монтирующий iso для установки XP на виртуальную машину, но это проявляется в виде свободных файлов (не будет видеть iso). Поэтому, чтобы Rufus увидел сам файл iso, поделитесь каталогом на вашем хост-компьютере, где iso хранится на виртуальной машине. Затем укажите Rufus в том месте, где находится iso-файл на сетевом диске виртуальной машины (Z: \ или любой другой).

Кстати, вы также можете просто скопировать образ дискеты FreeDOS на диск, скопировать файлы из iso и использовать memdisk для загрузки образа дискеты. Из FreeDOS запустите i386 \ winnt.exe. Недостатком является то, что (если вы не нашли драйвер NTFS для DOS?), Вы сможете установить Windows только на том FAT32, а не на NTFS.

Вы можете обнаружить, что процесс Rufus мучительно медленен из-за того, что он находится в виртуальной машине (не понимаю почему, может быть, я был глуп, как я устанавливал настройки). Лично для меня, на моем ноутбуке, это заняло один час, 5 минут и 40 секунд. Я расскажу вам, как это сделать без Руфуса в Linux. Мы будем имитировать Rufus, но сначала, если вы решите использовать Rufus с виртуальной машины, помните, что Linux не сможет увидеть раздел после того, как Rufus покончит с ним:

Rufus не только форматирует раздел, но и восстанавливает MBR (включая таблицу разделов). Поэтому сначала сохраните что-нибудь с флешки.

Примечание: Rufus устанавливает специальную MBR, которая при выполнении BIOS меняет местами первые два диска BIOS (0x80 становится 0x81 и наоборот). Кроме того, он вставляет идентификатор BIOS в этот трюк MBR, чтобы привод начинался с 0x81 (второй диск). Почему я говорю вам это: уловка MBR приводит к тому, что Linux (и Grub2 v2.00) не могут прочитать таблицу разделов. Windows будет просто в порядке (укажите букву диска и все), и диск будет загрузочным. Но Linux не увидит раздел и, следовательно, не сможет его смонтировать. Нет проблем. Сохраните MBR в файл:

sudo dd if=/dev/sdX of=~/Desktop/rufus_trick_mbr count=1 bs=512

Теперь используйте fdisk, чтобы присвоить ему новую MBR. Вы даже не касаетесь самого раздела, вы просто даете ему новый MBR. На самом деле в fdisk ничего не делается, пока вы не нажмете "w".

sudo fdisk /dev/sdX

p //Print partition table. fdisk, unlike the kernel, CAN make sense of the partition table as-is.

You'll probably see the partition start on sector 2048 and go to the end.

o  //Tells fdisk to make a new partition table

n //create new partition. By defualt, fdisk should also make the partition start at sector 2048 and go to the end. Make sure the partition starts where it used to and ends where it used to.

select primary

t //change partition type id

7 //for ntfs

p //Make sure everything is right. And no, don't worry about the boot flag.

w //when you're sure. Remember, we saved the old mbr and can undo any mess-ups made here with dd.

Мы также можем создавать новые проблемы с dd:

ХЭММОНД - «Не волнуйся, я больше не повторю тех же ошибок». МАЛЬКОЛЬМ - «Нет, нет, ты делаешь все новые».

Парк Юрского периода II, Затерянный мир

Отключите и снова подключите флэш-накопитель. Если ничего больше, / dev / sdXY должен, по крайней мере, существовать сейчас (до того, как существовал только / dev / sdX - без «Y»). Для его установки необходимо установить ntfs-3g. Если он установлен, посмотрите, был ли он уже смонтирован (должен отображаться на рабочем столе или в левой панели браузера файлов, если это так). Если нет, установите его самостоятельно. Вы можете сначала попытаться смонтировать его с помощью файлового браузера. Вот как это сделать вручную:

sudo mount -t ntfs-3g /dev/sdXY [mount point]

Делайте то, что вы хотите сделать с этим в Linux.

Если хотите, поместите rufus_trick_mbr обратно:

sudo dd if=~/Desktop/rufus_trick_mbr of=/dev/sdX bs=512 count=1 //No "Y"! Just /dev/sdX!

Но вам не нужно снова использовать трюк MBR. Вы можете использовать команду Grub2 ntldr для загрузки / BOOTMGR. (Вероятно, сначала нужно будет выполнить команду «insmod ntldr», чтобы вставить модуль ntldr.)

Вот что происходит:

Rufus устанавливает трюк MBR с одной записью таблицы разделов, форматирует этот раздел как NTFS, помещает содержимое в загрузочный сектор этого раздела, о котором заботятся только загрузчики в стиле ntldr, копирует файлы из iso в раздел, копирует NTDETECT.COM из папку i386 и помещает ее в корневой уровень, копирует txtsetup.sif из папки i386, помещает ее в корневой уровень и добавляет строку, которую github, c0m / pbatard / rufus / wiki / Targets-Supported не упоминает, поэтому спасибо "openssl md5" и cmp за указание на это мне.

барабанная дробь : И копирует SETUPLDR.BIN из папки i386 в корневой уровень, переименовывает его в BOOTMGR и исправляет этот двоичный файл. Да, это хитрость. SETUPLDR.BIN при загрузке с компакт-диска обнаруживает, что он был загружен с компакт-диска, и ищет в папке i386 что-то еще. Если он загружен с жесткого диска, он обнаруживает, что он загрузился с жесткого диска, вместо этого ищет папку minint и, если найден, ищет папку $ WIN_NT $ ~ BT, чтобы начать второй этап установки (после перезапуска и при загрузке на целевой жесткий диск). Так что вы даже не можете просто переименовать "i386" в "minint". Вы должны изменить SETUPLDR.BIN, чтобы искать в папке i386 даже при загрузке с жесткого диска (например, USB-накопителя).

Я думаю, что Руфус неправильно называет модифицированный двоичный файл "BOOTMGR". Это то, что используют Vista и 7 (и 8?), А не XP. BOOTMGR даже не ищет файл boot.ini, как NTLDR (из которых SETUPLDR является модифицированной версией). Поэтому я переименовал его в «RUFUSLDR» и выложил для скачивания. Кроме того, вы хотели бы иметь возможность отличить это от любых реальных BOOTMGR, которые у вас могут быть.

Rufus заставляет вас отформатировать диск как NTFS, если вы используете установщик Windows iso. Я полагаю, что это связано с предварительным просмотром x64 для Windows 8, содержащим файл размером более 4 ГБ, который FAT32 не может поддерживать. Но это не относится здесь. У нас нет файлов где-то рядом с 4 ГБ. Вы можете использовать FAT32 и все будет в порядке.

Давайте подражать Руфусу из Linux (или почти любому юниксоиду, я думаю):

  1. Убедитесь, что диск имеет MBR-схему. fdisk выдаст предупреждение, если это GPT, а также даст вам возможность сделать его MBR-схематичным (опция «o»). Менее разрушительно, gdisk позволит вам преобразовать ваш диск с GPT-схемой в диск с MBR-схемой, если у вас 4 или меньше разделов. Gdisk также позволит вам сделать ваш диск гибридным MBR / GPT-схемным диском, на котором вы можете выбрать до 3 разделов, которые будут видны вещам, не знакомым с GPT (4-й слот занят защитным разделом, который закрывает остальные). Даже если вы просто используете fdisk, пока новая запись таблицы разделов все еще начинается и останавливается в тех же местах, вы не потеряете свой раздел; просто обязательно обнулите вторичный GPT в конце диска.

  2. Убедитесь, что раздел отформатирован как FAT32 или NTFS. Помните, что FAT32 более кроссплатформенный. Если он уже отформатирован как FAT32 или ntfs, вам не нужно форматировать его:

    sudo blkid / dev / sdXY [здесь будет указана файловая система вместе с UUID, меткой и т. д.]

Если это не FAT32 или NTFS, выполните одно из следующих действий:

sudo mkdosfs -F 32 -n [insert volume label (name) here] /dev/sdXY

sudo mkntfs -L [insert volume label here] /dev/sdXY

3 Примените магический загрузочный сектор, к которому DOS / Windows так привередливы:

sudo ms-sys -w /dev/sdXY

* Об этом - "-w" означает "писать" - просто писать. В отличие от указания, что написать. Таким образом, "-w" - это автоматический режим ms-sys: он определяет наилучший тип данных загрузочного сектора для записи в данной ситуации. Я был удивлен, обнаружив , что автомобиль был прав: на разделе FAT32, мне нужно MS-SYS, FAT32 DOS Загрузочным не Ms-SYS, FAT32 NT загрузочный сектор, который я думал , что мне нужно , чтобы загрузить derivitive из _NT_LDR (загрузчик NT) (SETUPLDR. BIN - это модифицированная версия NTLDR, а RUFUSLDR - модифицированная версия SETUPLDR.BIN).

4 Для правильной меры напишите материал геометрии в раздел. Это не меняет геометрию диска, оно просто оставляет примечание о геометрии для вещей, которые слишком ленивы, чтобы узнать о геометрии самостоятельно:

sudo ms-sys -p /dev/sdXY

* Примечание: шаг 4 не относится к NTFS. * Еще одно замечание: убедитесь, что версия вашего ядра Linux> 2.6. В ядре 2.6 была ошибка, сообщавшая о неправильном количестве головок (геометрия). Таким образом, опция -p может записывать неверную информацию в ядре 2.6. Опция "-H", которая позволяет пользователю вручную указать количество головок для записи, является обходным решением. Но на самом деле, просто обновите ваше ядро. Если вы работаете с 2.6, вы просрочили. Чтобы сообщить версию своего ядра, выполните:

uname -r

5 Скопируйте файлы из iso, папки, что угодно. Многие дистрибутивы монтируют iso при двойном щелчке по ним или, по крайней мере, предлагают опцию открытия с помощью монтирования архива, щелкнув правой кнопкой мыши> открыть с помощью. Если это не так, сделайте это:

sudo mount -o loop (path to iso) (path to desired mount point)

6 Поместите измененный файл SETUPLDR.BIN (RUFUSLDR) на корневой уровень.

7 Скопируйте NTDETECT.COM из i386 на корневой уровень.

8 Скопируйте файл txtsetup.sif из i386 на корневой уровень.

9 Откройте новую копию txtsetup.sif и Ctrl + F для «[SetupData]». Прямо под этим заголовком поместите эту строку:

SetupSourceDevice = "\device\harddisk1\partition1"

10 Либо установите загрузчик с возможностью загрузки загрузчиков в стиле NTLDR на диск, либо на другой диск, который вы будете использовать для загрузки этого диска, либо используйте существующий загрузчик. Если у вас на жестком диске установлен Grub2 для загрузки Ubuntu, вы можете просто нажать «c», когда увидите меню, чтобы войти в командную строку Grub. Если у вас есть Syslinux вместо этого, вы можете использовать его тоже. Я просто буду придерживаться Grub2 для обучения.

Чтобы установить Grub2 на диск (что может не потребоваться при использовании существующего загрузчика вашего жесткого диска):

sudo grub-install --boot-directory=[mount point of disk, not iso] [/dev/sdxy]

11а. Либо сделайте запись в grub.cfg, либо вручную выполните следующее:

grub> insmod ntldr //Inserts (loads) the Grub2 module used for loading NTLDR-style bootloaders.
grub> set root=(hdx,msdosy) //Replace x and y as appropriate. Sets the current directory to the target partition. Probably not needed if you booted off the drive you put the WinXP installer files on, but we always do this. Use "ls" to list all drives and partitions. If you only have one MBR-schemed disk with only one (or however many you made) partition(s), you'll be able to pick out which is your thumb drive. If not, try one and do "ls /". It will list the files on the root level of that partition. That should be a dead-giveaway. Notice that "ls" (without slash) lists drives and partitions, and "ls /" (with slash) lists the files on the root level of the partition that is the current working directory.
grub> ntldr /RUFUSLDR //Tells it to load RUFUSLDR.
grub> boot //That's the "go button".

11b. Как запись grub.cfg, это выглядело бы следующим образом (не скобки, это Grub, а не колледж !!):

menuentry "Windows XP Installer" {
  insmod ntldr
  search --no-floppy --fs-uuid --set=root [insert filesystem's UUID here, obtaind by "sudo blkid /dev/sdXY"]
  ntldr /RUFUSLDR
}

// Обратите внимание, что вышеописанное является гораздо более надежным средством настройки текущего рабочего каталога Grub. Также обратите внимание, что «boot» подразумевается для записей файла конфигурации.

// Также обратите внимание, что хотя обычно для загрузки Windows имеется строка «drivemap -s (hd0) $ {root}» (делает диск Window первым BIOS-диском), из-за этого мой установщик USB Windows XP просто перезагрузите компьютер при попытке загрузить загрузчик в стиле ntldr. Если что-то не работает, и вы уверены, что сделали все шаги, попробуйте «drivemap -s (hd0) $ {root}»

// Учтите, если во время загрузки было подключено более одного USB-накопителя. Ваша система загрузит наиболее загружаемый USB-накопитель, когда будет сказано загрузить USB. Вы можете систематически определить, какие порты USB доминируют, а какие - с двумя загрузочными USB-накопителями. Мне не пришлось пробовать много комбинаций, потому что мои USB-порты расположены в столбцах, а целые столбцы доминировали над другими столбцами. Внутри колонны верхний был доминирующим.

// Обратите внимание, что если вы загружаете установщик Windows XP USB из Grub2 на другом диске, Grub2 увидит только наиболее доминирующий USB-накопитель (по крайней мере, в моей системе). Поэтому убедитесь, что ваш установщик WinXP USB находится в наиболее часто используемом слоте. (Или просто переключите два, если у вас есть два USB-накопителя, и Grub2 видит не установщик диска WinXP.) Конечно, это не проблема, если вставлен только один USB-накопитель.

// Если он просто перезагружается, убедитесь, что вы выполнили «sudo ms-sys -w / dev / sdXY» и, если FAT32, «sudo ms-sys -p / dev / sdXY» И скопировали файл NTDETECT.COM из i386 в корневой уровень.

// Если он говорит, что ничего не может найти, возможно, вы не используете модифицированный загрузчик. Убедитесь, что вы используете измененный. (Будет иметь md5, отличный от i386 / SETUPLDR.BIN.) Также убедитесь, что txtsetup.sif и NTDETECT.COM находятся на корневом уровне.

// Если в нем говорится, что нужно вставить компакт-диск с Windows XP SP3, убедитесь, что вы добавили эту строку в txtsetup.sif И что ваши идентификаторы компакт-диска исправны (WIN51, WIN51IP и т. Д.). Просто удалите файлы CD Indent и скопируйте их обратно, если сомневаетесь.

// Если в нем сказано, что вам нужно вставить диск, чтобы подтвердить, что вы подходите для установки обновления, есть ли вставленные GPT-диски? Возможно, это вызывает проблему. Отключите все диски с GPT-схемой или конвертируйте их в MBR в Linux. (как при выключении компьютера, отключите, попробуйте еще раз. Не просто дергать.)

// Кстати, чтобы установить на USB-накопитель, вам нужно будет взломать ngine.de/article/id/8. Да, можно установить Windows XP ОТ USB НА USB.

Наслаждаться,

Джейк XD

Джейк Томас
источник
1
после того, как вы прошли через множество учебников, они пришли к вашему методу, и мне это показалось достаточно убедительным, если ваш метод потерпит неудачу, я попробую автоматическую загрузку tftp (позже для эксперимента), в настоящее время с вашим методом я получаю, NTFS signature is missing. Failed to mount '/dev/sdb': Invalid argument The device '/dev/sdb' doesn't seem to have a valid NTFS.я сначала пошел на машину Win 7 и использовал Руфус и указал на XP iso и отформатировал USB с ISO и подключил USB к машине Linux и теперь начал с вашего метода sudo mount ntfs-3g / dev / sdb1 / media / usb, где я получаю ошибку, первые 2 шага dd прошли нормально
Зарегистрированный пользователь
Вот снимки fdisk sdrv.ms/15UUtRf и еще один снимок экрана sdrv.ms/15UUuVk для fdisk. Я думаю, что я правильно все понял, дайте мне знать, если вы заметите какие-либо проблемы
Зарегистрированный пользователь
1
Я не мог заставить это работать в Linux.
Кенн
1
Это отличный ответ, который наконец дал мне правильную подсказку - эта часть: кстати, вы также можете просто скопировать образ дискеты FreeDOS на диск, скопировать также файлы из iso и использовать memdisk для загрузки на дискету. образ. Из FreeDOS запустите i386 \ winnt.exe. Вам даже не нужно использовать memdisk, установка FreeDOS на флеш-память FAT32 довольно проста (это можно сделать с помощью qemu, или вокруг есть образы usb ). Кроме того, вы можете установить Windows в NTFS таким образом, программа установки Windows сама обрабатывает NTFS.
jpalecek
1
@jpalecek Вы можете сделать полный ответ из своего комментария? Инструкция о том, как на самом деле заставить все работать, как, например, 1. записать FreeDOS на USB 2. скопировать файлы из ISO в раздел usb. 3. ???
ВасяНовиков
3

Оказывается, что Windows XP действительно настраивается для конкретной конфигурации оборудования на первом этапе установки.

Поэтому, если метод использования VirtualBox, QEMU и т. Д. В сочетании с вашим настоящим жестким диском должен работать, вам действительно нужно создать второй профиль оборудования. Я надеялся, что вы сможете обойти это, выключив виртуальную машину перед перезагрузкой на втором этапе, и вместо этого загрузите в нее свою реальную машину и дайте ей сконфигурироваться для реального оборудования. Но он настраивается для оборудования на первом этапе, а не на втором этапе.

Поэтому я определенно рекомендую подражать Руфусу. Просто скопируйте файлы и внесите несколько изменений. Смотрите существующий пост. Не нужно иметь дело со вторым профилем оборудования. Даже если бы вы создали второй профиль оборудования, как бы вы загрузились в Windows, чтобы установить драйверы для вашего реального оборудования под вторым профилем? И если бы вы нашли способ, не остановит ли вас лицензирование (оно касается аппаратного обеспечения)?

SpawnHappyJake
источник
1

Взгляните на UNetBootIn . Это должно сделать свое дело.

t0mm13b
источник
8
Я не мог заставить его работать для Windows XP, он не запускает установщик Windows
2
Можете ли вы опубликовать ссылку (официальную или иную), что это возможно с Windows XP? Вы или кто-то из ваших знакомых сделал эту работу? Я пробовал это несколько раз и потерпел неудачу, я хотел бы знать, что это возможно, прежде чем я попробую снова.
Аннан
1

Это только кричит на ветер, но ...

Как насчет попробовать VirtualBox? Вы можете скачать ISO-файл Windows XP, смонтировать его и установить виртуальную машину. Я думаю, что вы можете получить доступ к USB-накопителям там, так что вы можете сделать загрузочный USB-накопитель оттуда.

Crowley
источник
К сожалению, на самом деле не работает - посмотрите другие ответы
jpalecek
1

Поскольку UNetbootin не работал, попросите друга с компьютером под управлением Windows (это не редкость, вы знаете :) подготовить USB-флешку с WinToFlash для вас.

Питер Мортенсен
источник
Я уже пробовал это, и это не удалось, получил BSOD в какой-то момент времени
Зарегистрированный пользователь
Примечание: WinToFlash является частной собственностью. (Нет доступных источников, у них есть такие вещи, как «Профессиональные» издания и т. Д.).
ВасяНовиков
0

Также возможно установить XP 32-bit из DOS. Вам просто нужно сделать загрузочную флешку для DOS или другой жесткий диск. Скопируйте в него папку i386, а затем:

C:> cd i386
C: \ i386> winnt / b
Теперь программа установки Windows загрузится с загрузочного диска FAT16 / FAT32 DOS!

Если вы загрузились с того же жесткого диска, на который устанавливаете, то, возможно, вы сможете использовать опцию для его преобразования в NTFS.

Алекс Кэннон
источник