19

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

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

6 ответов6

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 на целевой машине и следуйте инструкциям выше.

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. Недостаток в том, что (если вы не нашли драйвер DOS NTFS?) вы сможете установить Windows только на том FAT32, а не на NTFS.

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

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

Примечание: Rufus устанавливает специальную MBR, которая при выполнении BIOS меняет местами первые два диска BIOS (0x80 становится 0x81 и наоборот). Кроме того, в этот трюк MBR добавляется идентификатор BIOS, чтобы привод начинался с 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 И что ваши идентификаторы CD хороши (WIN51, WIN51IP и т.д.). Просто удалите файлы CD Indent и скопируйте их обратно, если сомневаетесь.

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

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

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

Джейк XD

3

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

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

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

1

Посмотрите на UNetBootIn. Это должно сделать свое дело.

1

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

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

1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .