Faça um USB inicializável para instalar o Windows XP a partir do Linux

19

Eu tenho um Dell Inspiron Mini 9 com apenas o Ubuntu instalado. Também quero instalar o Windows XP, mas não tenho e não consigo obter uma unidade de CD externa, por isso preciso fazer uma instalação do Windows a partir do USB.

Todos os tutoriais que encontrei usam o Windows para tornar o USB inicializável. Como posso fazer o mesmo no Linux?

Peter Mortensen
fonte
Você tem acesso a um computador com uma unidade de CD?
Nathaniel
Eu tenho outra máquina Linux com uma unidade de CD.

Respostas:

13

Você pode usar o VirtualBox e conceder à máquina virtual acesso à unidade de disco rígido. Em seguida, instale o Windows XP na máquina virtual e crie uma nova partição na unidade de disco rígido real. Após a instalação, você pode reiniciar o computador e inicializar as janelas normalmente.

Para conceder acesso ao VirtualBox a todo o disco (altere a xletra apropriada, por exemplo a):

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

Em seguida, escolha a unidade de disco rígido existente e selecione o arquivo hdd.vmdkna sua pasta pessoal.

Se os comandos reclamarem da falta de permissões, adicione-se ao grupo diskcom o seguinte comando, efetue login e logout e tente novamente.

sudo adduser `whoami` disk
  1. Se você já possui o Linux instalado no computador de destino, pode fazê -lo diretamente nesse computador, mas antes de reiniciar o Windows, execute sudo update-grube sudo grub-install /dev/sdx(altere a xletra apropriada, por exemplo a) para garantir que você ainda possa inicializar Linux. Para evitar problemas com diferentes hardwares entre o computador e o que o VirtualBox emulou na VM (que pode resultar em um BSOD ), você também pode criar um segundo perfil de hardware no Windows antes de sair da VM. Ao inicializar diretamente no Windows com GRUB , selecione este segundo perfil de hardware. Você pode eventualmente tornar esse novo perfil de hardware o padrão.

  2. Se o computador de destino estiver completamente limpo , crie uma unidade USB Ubuntu inicializável na qual você também coloque uma imagem do seu CD de instalação do Windows (adquirido legalmente). Em seguida, inicialize o Ubuntu na máquina de destino e siga as instruções acima.

Linus Unnebäck
fonte
1
Definitivamente, esta é uma solução brilhante! Parece estar funcionando até agora. :)
RCE 15/01
1
Oi, estou tentando fazer isso no Ubuntu 12.04, mas estou tendo problemas. Quando escrevo VBoxManage internalcommands createrawvmdk -filename ~/hdd.vmdk -rawdisk /dev/sdxsendo x meu disco rígido, recebo esta mensagem. VBoxManage: error: Cannot open the raw disk '/dev/sda1': VERR_ACCESS_DENIED VBoxManage: error: The raw disk vmdk file was not createdEntão eu fiz isso como root, mas, embora obviamente funcionou, só posso abrir o hdd.vmdk como root e isso me deixa desconfortável. No entanto, a máquina virtual parece não funcionar. Recebo uma tela preta abrindo o virtualbox como root.
Fénix 21/05/12
1
Conforme descrito na resposta "Se os comandos reclamarem da falta de permissões, adicione-se ao disco do grupo com o seguinte comando, efetue login e logout e tente novamente". sudo adduser `whoami` disk
Linus Unnebäck
1
Fiz o que foi dito acima e a máquina virtual instalou e executa o winxp corretamente, mas quando eu desligo o computador e reinicio, o logotipo do Windows aparece e congela imediatamente, antes de mostrar o BSOD rapidamente e reiniciar.
SaultDon
2
Infelizmente, esse método não funciona realmente, a menos que você tenha sorte. Você pode acabar com uma instalação do Windows que funciona bem na máquina virtual, mas falha ao inicializar no hardware.
precisa saber é o seguinte
8

Faça o download do RUFUSLDR aqui: https://dl.dropboxusercontent.com/u/20170669/RUFUSLDR Faça o download do ms-sys aqui: http://prdownloads.sourceforge.net/ms-sys/ms-sys-2.3.0.tar. gz? download Arraste a pasta ms-sys-2.3.0 para algum lugar que suporte o sinalizador de execução (como a pasta inicial do Linux, provavelmente). cd um terminal lá, digite "make" e "sudo make install". Muito fácil.

Eu simpatizei com você. Eu tentei tutoriais sobre como criar, a partir do Windows, uma unidade USB inicializável no instalador do WinXP. A parte do disco, a WinToFlash e o utilitário HP USB Format falharam comigo.

Rufus realmente funciona. Mas é um utilitário somente para Windows. Você pode instalar o VirtualBox, instalar o Windows no VirtualBox, instalar o Rufus na VM, compartilhar a unidade USB na VM e fazer com que o Rufus torne a unidade USB inicializável no instalador do Windows XP.

Atualmente, a Rufus não oferece suporte à criação de um instalador inicializável USB WinXP usando arquivos de instalação soltos. Deve ver o iso. Então você tem o VirtualBox para montar o iso para instalar o XP na VM, mas isso aparece como arquivos soltos (não verá o iso). Portanto, para que o Rufus veja o próprio arquivo iso, compartilhe o diretório na máquina host em que o iso está armazenado na VM. Em seguida, aponte o Rufus para onde o arquivo iso está na unidade de rede da VM (Z: \ ou o que for).

BTW, você também pode copiar uma imagem de disquete do FreeDOS para a unidade, copiar os arquivos também do iso e usar o memdisk para inicializar na imagem de disquete. No FreeDOS, execute i386 \ winnt.exe. A desvantagem é que (a menos que você tenha encontrado um driver DOS NTFS?), Você poderá instalar o Windows apenas em um volume FAT32, e não em um volume NTFS.

Você pode encontrar o processo Rufus dolorosamente lento devido a estar em uma VM (não entendo o porquê, talvez eu tenha sido burro em como defino as configurações). Para mim, pessoalmente, no meu laptop, demorou uma hora, 5 minutos e 40 segundos, acredito que sim. Vou lhe dizer como fazer isso sem o Rufus no Linux. Imitaremos o Rufus, mas primeiro, caso você decida usar o Rufus a partir da VM, saiba que o Linux não poderá ver a partição depois que o Rufus terminar:

O Rufus não apenas formata a partição, mas também refaz o MBR (incluindo a tabela de partições). Portanto, salve qualquer coisa do pen drive primeiro.

Nota: A Rufus estabelece um MBR de truque que, quando executado pelo BIOS, troca as duas primeiras unidades do BIOS (0x80 se torna 0x81 e vice-versa). Além disso, ele coloca um ID de BIOS nesse truque MBR para fazer com que a unidade comece como 0x81 (a segunda unidade). Por que estou lhe dizendo isso: o truque MBR faz com que o Linux (e o Grub2 v2.00) não consigam ler a tabela de partição. O Windows ficará bem com ele (dê uma letra de unidade e tudo) e a unidade será inicializável. Mas o Linux não verá a partição e, portanto, não poderá montá-la. Sem problemas. Salve o MBR no arquivo:

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

Agora use o fdisk para obter um novo MBR. Você nem está tocando a partição em si, apenas está dando um novo MBR. Na verdade, nada é feito no fdisk até você pressionar "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.

Também podemos fazer novas bagunças com o dd:

HAMMOND - "Não se preocupe, não estou cometendo os mesmos erros novamente." MALCOLM - "Não, não, você está cometendo todos os novos."

-Jurassic Park II, O Mundo Perdido

Desconecte e reconecte o pen drive. Se nada mais, / dev / sdXY deveria existir pelo menos agora (antes apenas existia / dev / sdX - não "Y"). Para montá-lo, o ntfs-3g deve ser instalado. Se estiver instalado, verifique se ele já foi montado (deve aparecer na área de trabalho ou no painel esquerdo do navegador de arquivos). Caso contrário, monte você mesmo. Você pode tentar montá-lo com o navegador de arquivos primeiro. Aqui está como montá-lo manualmente:

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

Faça o que você quer fazer com ele no Linux.

Se desejar, coloque rufus_trick_mbr novamente em:

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

Mas você não precisa recolocar o truque MBR. Você pode usar o comando ntldr do Grub2 para carregar / BOOTMGR. (Provavelmente será necessário executar "insmod ntldr" primeiro para inserir o módulo ntldr.)

Aqui está o que acontece:

O Rufus estabelece o truque MBR com uma entrada na tabela de partições, formata essa partição como NTFS, coloca coisas no setor de inicialização daquela partição com a qual apenas os gerenciadores de inicialização do estilo ntldr se importam, copia arquivos iso para a partição, copia NTDETECT.COM do diretório A pasta i386 e coloca no nível raiz, copia txtsetup.sif da pasta i386, coloca no nível raiz e adiciona uma linha que o github, c0m / pbatard / rufus / wiki / Targets-Supported não menciona, portanto obrigado "openssl md5" e cmp por apontar isso para mim.

drum roll : AND copia SETUPLDR.BIN da pasta i386 para o nível raiz, renomeia-o como BOOTMGR E corrige esse binário. Sim, esse é o truque. SETUPLDR.BIN, quando inicializado a partir do CD, detecta que foi inicializado a partir do CD e procura coisas na pasta i386. Se inicializado a partir de um disco rígido, ele detecta que foi inicializado a partir de um disco rígido, procura uma pasta minint e, se encontrado, procura uma pasta $ WIN_NT $ ~ BT para iniciar a segunda fase da instalação (após a reinicialização e quando você inicializa no disco rígido de destino). Portanto, você não pode simplesmente renomear "i386" para "minint". Você precisa modificar o SETUPLDR.BIN para procurar na pasta i386, mesmo quando inicializado em um disco rígido (como uma unidade USB).

Eu acho que é um nome impróprio para Rufus chamar o binário modificado "BOOTMGR". É isso que Vista e 7 (e 8?) Usam, não XP. O BOOTMGR nem procura um arquivo boot.ini, como o NTLDR (do qual SETUPLDR é uma versão modificada). Então, eu o renomeei como "RUFUSLDR" e o coloquei para download. Além disso, você gostaria de diferenciá-lo de quaisquer BOOTMGRs reais que você possa ter circulando.

O Rufus obriga a formatar a unidade como NTFS se você estiver aplicando um iso do instalador do Windows. Acredito que isso se deva à visualização do desenvolvedor do Windows 8 x64 que contém um arquivo> 4 GB, que o FAT32 não pode suportar. Mas isso não se aplica aqui. Não temos arquivos perto de 4 GB. Você pode usar o FAT32 e ficar bem.

Vamos imitar o Rufus do Linux (ou qualquer unixóide, eu acho):

  1. Verifique se a unidade está com o esquema MBR. O fdisk emitirá um aviso se for GPT e também lhe dará a opção de configurá-lo com o esquema MBR (opção "o"). Menos destrutivamente, o gdisk permitirá converter sua unidade com esquema GPT em uma unidade com MBR, se você tiver 4 ou menos partições. O Gdisk também permitirá que você faça da sua unidade um disco híbrido com esquema MBR / GPT, onde você pode escolher até 3 partições para ficar visível para coisas que não são da GPT (o quarto slot é ocupado por uma partição protetora que cobre o resto). Mesmo se você apenas usar o fdisk, desde que a nova entrada da tabela de partições ainda inicie e pare nos mesmos locais, você não perderá sua partição; apenas certifique-se de zerar a GPT secundária no final do disco.

  2. Verifique se a partição está formatada como FAT32 ou NTFS. Lembre-se, o FAT32 é mais compatível com várias plataformas. Se já estiver formatado como FAT32 ou NTFS, não será necessário formatá-lo:

    sudo blkid / dev / sdXY [dirá o sistema de arquivos aqui, junto com o UUID, o rótulo etc.]

Se não for FAT32 ou NTFS, siga um destes procedimentos:

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

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

3 Aplique as coisas mágicas do setor de inicialização que o DOS / Windows é tão meticuloso sobre:

sudo ms-sys -w /dev/sdXY

* Sobre isso - "-w" significa "write" - apenas escrevendo. Em vez de especificar o que escrever. Assim, "-w" é o modo automático do ms-sys: determina o melhor tipo de dado do setor de inicialização a ser gravado para a situação. Fiquei surpreso ao descobrir que auto estava certa: para uma partição FAT32, eu preciso das ms-sys FAT32 DOS bootsector não FAT32 das ms-sys NT bootsector, que eu pensei que eu iria precisar carregar um derivitive de _NT_LDR (carregador NT) (SETUPLDR. BIN é uma versão modificada do NTLDR e RUFUSLDR uma versão modificada do SETUPLDR.BIN).

4 Para uma boa medida, escreva também itens de geometria na partição. Isso não altera a geometria do disco, apenas deixa uma nota sobre a geometria para itens com preguiça de descobrir por si próprios sobre a geometria:

sudo ms-sys -p /dev/sdXY

* Nota: a etapa 4 não se aplica ao NTFS. * Outra observação: verifique se a sua versão do kernel do linux é> 2.6. O kernel 2.6 teve um bug que relatava o número errado de cabeças (uma coisa de geometria). Portanto, a opção "-p" pode colocar as informações incorretas no kernel 2.6. A opção "-H", que permite ao usuário especificar manualmente o número de cabeças a serem gravadas, é a solução alternativa. Mas, na verdade, basta atualizar seu kernel. Se você estiver executando o 2.6, está muito atrasado. Para informar sua versão do kernel, faça:

uname -r

5 Copie os arquivos da iso, pasta, o que for. Muitas distros montam isos ao clicar duas vezes nelas, ou pelo menos oferecem a opção de abrir com um montador de arquivos em clique com o botão direito do mouse> abrir com. Se esse não for o seu caso, faça o seguinte:

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

6 Coloque o arquivo SETUPLDR.BIN (RUFUSLDR) modificado no nível raiz.

7 Copie o NTDETECT.COM do i386 para o nível raiz.

8 Copie o arquivo txtsetup.sif do i386 para o nível raiz.

9 Abra a nova cópia do txtsetup.sif e Ctrl + F para "[SetupData]". Logo abaixo desse cabeçalho, coloque esta linha:

SetupSourceDevice = "\device\harddisk1\partition1"

10 Instale um gerenciador de inicialização capaz de carregar gerenciadores de inicialização no estilo NTLDR na unidade ou em outra unidade que você usará para inicializar essa unidade ou use um gerenciador de inicialização existente. Se você possui o Grub2 instalado no seu disco rígido para inicializar o Ubuntu, basta pressionar "c" depois de ver o menu para entrar na linha de comando do Grub. Se você possui o Syslinux, também pode usá-lo. Vou ficar com o Grub2 para o tutorial.

Para instalar o Grub2 no disco (o que talvez você não precise fazer se estiver usando o carregador de inicialização existente no disco rígido):

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

11a Crie uma entrada grub.cfg ou execute manualmente o seguinte:

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. Como uma entrada do grub.cfg, ficaria assim (não entre colchetes, esse é o Grub, não a faculdade !!):

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
}

// Note que o acima é um meio muito mais seguro de configurar o diretório de trabalho atual do Grub. Observe também que "boot" está implícito para entradas do arquivo de configuração.

// Observe também que, embora seja habitual ter uma linha "drivemap -s (hd0) $ {root}" para inicializar o Windows (torna a unidade do Windows a primeira unidade do BIOS), fazê-lo no meu instalador USB do Windows XP causou apenas reinicie ao tentar inicializar o carregador de inicialização no estilo ntldr. Se as coisas não estiverem funcionando e você tiver certeza de que executou todas as etapas, tente "drivemap -s (hd0) $ {root}"

// Lembre-se de ter mais de uma unidade USB inserida no momento da inicialização. Seu sistema inicializará a unidade USB inicializável mais dominante quando solicitado a inicializar o USB. Você pode descobrir sistematicamente quais portas USB são dominantes e quais com duas unidades USB inicializáveis. Para mim, não precisei tentar muitas combinações, porque minhas portas USB são organizadas em colunas e colunas inteiras eram dominantes em outras colunas. Dentro de uma coluna, a mais alta era dominante.

// Observe que, se você estiver inicializando o instalador do Windows XP USB a partir do Grub2 em outra unidade, o Grub2 verá apenas a unidade USB mais dominante (pelo menos no meu sistema). Portanto, verifique se o instalador do WinXP USB está no slot usado mais dominante. (Ou apenas troque os dois se você tiver duas unidades USB e o Grub2 vir a unidade que não é do instalador do WinXP.) É claro que isso não é um problema se apenas uma unidade USB estiver inserida.

// Se apenas reiniciar, verifique se você "sudo ms-sys -w / dev / sdXY" e, se FAT32, "sudo ms-sys -p / dev / sdXY", copiou o NTDETECT.COM do i386 para o diretório nível de raiz.

// Se diz que não consegue encontrar nada, talvez você não esteja usando o carregador de inicialização modificado. Verifique se você está usando o modificado. (Terá md5 diferente de i386 / SETUPLDR.BIN.) Verifique também se txtsetup.sif e NTDETECT.COM estão no nível raiz.

// Se for necessário inserir o CD do Windows XP SP3, adicione essa linha ao arquivo txtsetup.sif E se os arquivos de identificação do CD estão em boas condições (WIN51, WIN51IP, etc.). Apenas exclua os arquivos de recuo do CD e copie-os novamente em caso de dúvida.

// Se for necessário inserir um disco para provar que você se qualifica para a instalação da atualização, existem discos GPT inseridos? Talvez isso esteja causando o problema. Desconecte todos os discos planejados pela GPT ou converta-os em MBR no Linux. (como desligar o computador, desconecte-o, tente novamente. Não apenas puxe.)

// BTW, para instalar o TO em uma unidade USB, você precisará fazer o hack em ngine.de/article/id/8. Sim, é possível instalar o Windows XP DE USB PARA USB.

Apreciar,

Jake XD

Jake Thomas
fonte
1
depois de passar por um monte de tutoriais chegou ao seu método e parece convincente o suficiente para mim, se o seu método falhar vou tentar inicialização TFTP autônoma (mais tarde para o experimento) atualmente com o seu método eu recebo NTFS signature is missing. Failed to mount '/dev/sdb': Invalid argument The device '/dev/sdb' doesn't seem to have a valid NTFS.fui pela primeira vez em uma máquina Win 7 e usados rufus e apontou para XP iso e USB formatado com ISO e conectou a máquina USB ao Linux e agora começou com o método sudo mount ntfs-3g / dev / sdb1 / media / usb que é onde eu recebo o erro 2 primeiros passos do dd foram bem
Usuário Registrado
aqui estão os instantâneos de fdisk sdrv.ms/15UUtRf e outra imagem sdrv.ms/15UUuVk de fdisk Penso ter seguido as coisas deixe-me corretamente saber se você notar qualquer problema
Utilizador Registado
1
Eu não poderia fazê-lo funcionar no Linux.
kenn
1
Esta é uma ótima resposta que finalmente me deu a pista certa - esta parte: BTW, você também pode copiar uma imagem de disquete do FreeDOS para a unidade, copiar os arquivos do iso também e usar o memdisk para inicializar no disquete imagem. No FreeDOS, execute i386 \ winnt.exe. Você nem precisa usar o memdisk, a instalação do FreeDOS em um flash FAT32 é bastante fácil (pode ser feito com o qemu ou há imagens USB ao redor ). Além disso, você pode instalar o Windows no NTFS dessa maneira, a instalação do Windows lida com o NTFS por si só.
precisa saber é o seguinte
1
@jpalecek você pode fazer uma resposta completa do seu comentário? Uma instrução sobre como realmente fazer as coisas funcionarem, como por exemplo 1. gravar FreeDOS em USB 2. copiar arquivos da ISO para a partição USB. 3. ???
21816 VasikNovikov
3

Acontece que o Windows XP realmente se configura para uma configuração de hardware específica durante a primeira fase do instalador.

Portanto, se o método de usar o VirtualBox, QEMU etc. em conjunto com o disco rígido real funcionar, você realmente precisa criar um segundo perfil de hardware. Eu esperava que você pudesse ignorar isso desligando a VM antes de reiniciar no segundo estágio e, em vez disso, inicialize sua máquina real nela e deixe-a configurar para o seu hardware real. Mas ele configura para hardware no primeiro estágio, não no segundo estágio.

Então, eu definitivamente recomendo imitar o Rufus. Basta copiar os arquivos e fazer alguns ajustes. Veja a postagem existente. Não há necessidade de lidar com um segundo perfil de hardware. Mesmo se você criou um segundo perfil de hardware, como você inicializaria no Windows para instalar drivers para o seu hardware real sob o segundo perfil? E se você encontrasse uma maneira, o licenciamento não o impediria (parece o hardware)?

SpawnHappyJake
fonte
1

Dê uma olhada no UNetBootIn . Isso deve fazer o truque.

t0mm13b
fonte
8
Eu não poderia fazê-lo funcionar para o Windows XP, não lançar o Windows Installer
2
Você pode postar uma referência (oficial ou não) de que isso é possível no Windows XP? Você ou alguém que você conhece fez isso funcionar? Eu tentei algumas vezes e falhei. Gostaria de saber que é possível antes de tentar novamente.
Annan
1

Está apenas gritando com o vento, mas ...

Que tal experimentar o VirtualBox? Você pode baixar o arquivo iso do Windows XP, montá-lo e instalar uma máquina virtual. Eu acho que você também pode acessar unidades USB por lá, para que você possa fazer a unidade de inicialização USB a partir daí.

Crowley
fonte
Infelizmente, realmente não funciona - veja as outras respostas
jpalecek
1

Como você não conseguiu o UNetbootin para funcionar, peça a um amigo com um computador Windows (eles não são exatamente uma escassez, você sabe :) para preparar um pendrive com o WinToFlash para você.

Peter Mortensen
fonte
Eu já tentei isso e isso falhou, obtive um BSOD em algum momento
Usuário registrado
Nota: WinToFlash é proprietário. (Nenhuma fonte disponível, eles têm itens como edições "Profissionais", etc.).
VasyaNovikov 10/02
0

Também é possível instalar o XP de 32 bits no DOS. Você só precisa criar uma unidade flash inicializável em DOS ou outro disco rígido. Copie a pasta i386 para ela e:

C:> cd i386
C: \ i386> winnt / b
Agora a instalação do Windows será carregada a partir da sua unidade inicializável do FAT16 / FAT32 DOS!

Se você inicializou a partir do mesmo disco rígido em que está instalando, poderá usar a opção de convertê-lo em NTFS.

Alex Cannon
fonte