web-dev-qa-db-fra.com

Créez une clé USB amorçable pour installer Windows XP à partir de Linux

J'ai un Dell Inspiron Mini 9 avec seulement Ubuntu installé. Je souhaite également installer Windows XP, mais je n’ai ni ne dispose d’un lecteur de CD externe, je dois donc effectuer une installation Windows à partir de la clé USB.

Tous les tutoriels que j'ai trouvés utilisent Windows pour rendre la clé USB amorçable. Comment puis-je faire la même chose à partir de Linux?

19
user22826

Vous pouvez utiliser VirtualBox et donner à la machine virtuelle un accès au lecteur de disque dur. Installez ensuite Windows XP sur la machine virtuelle et créez une nouvelle partition sur le disque dur réel. Après l'installation, vous pouvez redémarrer l'ordinateur et démarrer Windows normalement.

Pour donner à VirtualBox l'accès à l'intégralité du disque (remplacez x par la lettre appropriée, par exemple, a):

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

Choisissez ensuite le disque dur existant, puis sélectionnez le fichier hdd.vmdk dans votre dossier personnel.

Si les commandes se plaignent de l'absence d'autorisations, ajoutez-vous au groupe disk à l'aide de la commande suivante, puis connectez-vous et déconnectez-vous et réessayez.

Sudo adduser `whoami` disk
  1. Si vous avez déjà installé Linux sur l'ordinateur cible , vous pouvez le faire directement sur cet ordinateur, mais avant de redémarrer sous Windows, exécutez Sudo update-grub et Sudo grub-install /dev/sdx (remplacez la x par la lettre appropriée, par exemple, a) pour vous assurer que vous pourrez toujours démarrer Linux. Pour éviter les problèmes de matériel différent entre votre ordinateur et ce que VirtualBox a émulé dans la VM (ce qui peut entraîner un BSOD ), vous pouvez également créer un deuxième matériel. profil dans Windows avant de quitter la VM. Lorsque vous démarrez directement dans Windows avec GRUB , sélectionnez ce deuxième profil matériel. Vous pouvez éventuellement définir ce nouveau profil matériel comme profil par défaut.

  2. Si l'ordinateur cible est complètement propre , créez un lecteur USB Ubuntu amorçable sur lequel vous placerez également une image de votre CD d'installation Windows (acheté légalement). Ensuite, démarrez Ubuntu sur la machine cible et suivez les instructions ci-dessus.

13
Linus Unnebäck

Téléchargez RUFUSLDR à partir d'ici: https://dl.dropboxusercontent.com/u/20170669/RUFUSLDR Téléchargez ms-sys ici: http://prdownloads.sourceforge.net/ms-sys/ms-sys-2.3.0.tar.gz?download Faites glisser le dossier ms-sys-2.3.0 vers l'extérieur. vers un emplacement qui prend en charge l'indicateur d'exécution (comme votre dossier de base Linux, le plus probablement). cd un terminal là-bas, tapez "make", puis "Sudo make install". Vraiment facile.

Je sympathise avec toi. J'ai essayé des tutoriels sur la création, à partir de Windows, d'une clé USB amorçable dans le programme d'installation WinXP. Les commandes diskpart one, WinToFlash et HP USB Format One ont toutes échoué.

Rufus fonctionne réellement. Mais il s’agit d’un utilitaire Windows uniquement. Vous pouvez installer VirtualBox, installer Windows dans VirtualBox, installer Rufus dans la VM, partager le lecteur USB avec la VM et laisser Rufus rendre le lecteur USB amorçable dans le programme d'installation Windows XP.

Rufus ne prend actuellement pas en charge la création d’un programme d’installation USB WinXP amorçable à l’aide de fichiers d’installation lâches. Il faut voir l'iso. Donc vous avez VirtualBox monté l'iso pour installer XP dans la VM, mais cela se présente sous la forme de fichiers volants (ne verra pas l'iso). Par conséquent, pour que Rufus puisse voir le fichier ISO lui-même, partagez le répertoire de votre ordinateur hôte où l’ISO est stockée sur la machine virtuelle. Puis pointez Rufus sur l'emplacement du fichier iso dans le lecteur réseau de la machine virtuelle (Z:\ou autre).

En passant, vous pouvez également simplement copier une image de disquette FreeDOS dans le lecteur, copier également les fichiers à partir de l'iso et utiliser memdisk pour démarrer à partir de l'image de disquette. À partir de FreeDOS, exécutez i386\winnt.exe. L'inconvénient est que (sauf si vous avez trouvé un pilote DOS NTFS?), Vous ne pourrez installer Windows que sur un volume FAT32, et non sur un volume NTFS.

Vous pouvez trouver le processus Rufus péniblement lent à cause de votre VM (vous ne comprenez pas pourquoi, peut-être que j'étais idiot de la façon dont j'ai défini les paramètres). Pour moi personnellement, sur mon ordinateur portable, cela a pris une heure, 5 minutes et 40 secondes, je crois bien. Je vais vous dire comment le faire sans Rufus sous Linux. Nous allons imiter Rufus, mais d’abord, si vous décidez d’utiliser Rufus à partir du VM, sachez que Linux ne pourra pas voir la partition une fois que Rufus aura terminé:

Rufus ne formate pas seulement la partition, il refait le MBR (y compris la table de partition). Donc, enregistrez d'abord quelque chose sur la clé USB.

Remarque: Rufus établit un truc MBR qui, lorsqu'il est exécuté par le BIOS, permute les deux premiers disques du BIOS (0x80 devient 0x81 et vice versa). De plus, il met un identifiant BIOS dans cette astuce MBR pour que le lecteur démarre sous la forme 0x81 (le second lecteur). Pourquoi je vous dis cela: l'astuce MBR empêche Linux (et Grub2 v2.00) de lire la table de partition. Windows conviendra parfaitement (donnez-lui une lettre de lecteur et tous) et le lecteur sera amorçable. Mais Linux ne verra pas la partition et ne pourra donc pas la monter. Aucun problème. Enregistrez le MBR dans un fichier:

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

Maintenant, utilisez fdisk pour lui donner un nouveau MBR. Vous ne touchez même pas la partition elle-même, vous lui donnez simplement un nouveau MBR. En réalité, rien n’est fait dans fdisk tant que vous n’avez pas appuyé sur "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.

Nous pouvons également créer de nouveaux problèmes avec dd:

HAMMOND - "Ne vous inquiétez pas, je ne fais plus les mêmes erreurs." MALCOLM - "Non, non, vous en faites de toutes nouvelles."

-Jurassic Park II, le monde perdu

Débranchez et rebranchez la clé USB. Si rien d'autre,/dev/sdXY devrait au moins exister maintenant (avant que seul/dev/sdX existait - pas de "Y"). Pour le monter, ntfs-3g doit être installé. S'il est installé, voyez s'il était déjà monté (devrait apparaître sur le bureau ou dans le volet gauche du navigateur de fichiers, le cas échéant). Sinon, montez-le vous-même. Vous pouvez d'abord essayer de le monter avec le navigateur de fichiers. Voici comment le monter manuellement:

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

Faites ce que vous voulez faire avec Linux.

Si vous le souhaitez, remettez rufus_trick_mbr sur:

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

Mais vous n'êtes pas obligé de remettre l'astuce au MBR. Vous pouvez utiliser la commande ntldr de Grub2 pour charger/BOOTMGR à la place. (Vous devrez probablement faire "insmod ntldr" d'abord pour insérer le module ntldr.)

Voici ce qui se passe:

Rufus pose le problème MBR avec une entrée de table de partition, formate cette partition en tant que NTFS, place des éléments dans le secteur de démarrage de cette partition que seuls les chargeurs de démarrage de style ntldr se soucient, copie des fichiers de l'iso vers la partition, copie Le dossier i386 et le place au niveau racine, copie txtsetup.sif du dossier i386, le place au niveau racine, ET ajoute une ligne, que github, c0m/pbatard/rufus/wiki/Targets-Supported ne mentionne pas, donc merci "openssl md5" et cmp de me l'avoir signalé.

drum roll : AND copie SETUPLDR.BIN du dossier i386 au niveau racine, le renomme en tant que BOOTMGR, ET les correctifs binaires. Oui, c'est le truc. SETUPLDR.BIN, lors du démarrage à partir du CD, détecte qu'il a été démarré à partir du CD et recherche des informations dans le dossier i386. S'il est démarré à partir d'un disque dur, il détecte qu'il a démarré depuis un disque dur, recherche un dossier minint et, s'il est trouvé, un dossier $ WIN_NT $ ~ BT pour commencer la deuxième phase de l'installation (après le redémarrage et lorsque vous démarrez dans le disque dur cible). Donc, vous ne pouvez même pas renommer "i386" en "minint". Vous devez modifier SETUPLDR.BIN pour rechercher dans le dossier i386 même après le démarrage d'un disque dur (tel qu'un lecteur USB).

Je pense que c'est un abus de langage pour Rufus d'appeler le binaire modifié "BOOTMGR". C'est ce que Vista et 7 (et 8?) Utilisent, pas XP. BOOTMGR ne recherche même pas un fichier boot.ini comme NTLDR (dont SETUPLDR est une version modifiée). Alors je l'ai renommé "RUFUSLDR" et je l'ai mis en téléchargement. De plus, vous voudriez pouvoir le distinguer des vrais BOOTMGR que vous pourriez avoir.

Rufus vous oblige à formater le lecteur en tant que NTFS si vous appliquez un programme d’installation iso de Windows. Je pense que cela est dû à l'aperçu du développeur x64 de Windows 8 contenant un fichier> 4 Go, que FAT32 ne peut pas prendre en charge. Mais cela ne s'applique pas ici. Nous n'avons aucun fichier proche de 4 Go. Vous pouvez utiliser FAT32 et tout va bien.

Immigrant Rufus sous Linux (ou à peu près n'importe quel unixoïde, je suppose):

  1. Assurez-vous que le lecteur est MBR-schemed. fdisk émettra un avertissement s’il s’agit d’un message GPT et vous donnera également la possibilité de le définir sous forme de schéma MBR (option "o"). De manière moins destructive, gdisk vous permettra de convertir votre lecteur basé sur GPT en un lecteur basé sur MBR si vous avez 4 partitions ou moins. Gdisk vous permettra également de faire de votre lecteur un disque hybride basé sur le modèle MBR/GPT, dans lequel vous pourrez choisir jusqu'à 3 partitions visibles pour les éléments non conscients de la technologie GPT (le quatrième emplacement est utilisé pour une partition de protection recouvrant le reste). Même si vous utilisez simplement fdisk, tant que la nouvelle entrée de la table de partition commence et s’arrête toujours aux mêmes endroits, vous ne perdrez pas votre partition. assurez-vous simplement de mettre à zéro le GPT secondaire à la fin du disque.

  2. Assurez-vous que la partition est au format FAT32 ou NTFS. N'oubliez pas que FAT32 est plus compatible avec plusieurs plates-formes. S'il est déjà formaté en FAT32 ou en ntfs, vous n'avez pas besoin de le formater:

    Sudo blkid/dev/sdXY [dira le système de fichiers ici, ainsi que l'UUID, le libellé, etc.]

Si ce n'est pas FAT32 ou NTFS, effectuez l'une des opérations suivantes:

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

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

3 Appliquez ce truc de secteur de démarrage magique sur lequel DOS/Windows est tellement précis:

Sudo ms-sys -w /dev/sdXY

* A propos de cela - "-w" signifie "écrire" - il suffit d'écrire. Au lieu de spécifier quoi écrire. Ainsi, "-w" est le mode automatique de ms-sys: il détermine le meilleur type de données de secteur de démarrage à écrire pour la situation. J'ai été surpris de constater que l'auto avait raison: pour une partition FAT32, j'ai besoin du FAT32 de ms-sys DOS du secteur de démarrage et non du FAT32 de ms-sys NT secteur de démarrage, dont je pensais qu'il me faudrait charger un dérivé de _NT_LDR (chargeur NT) (SETUPLDR.BIN est une version modifiée de NTLDR et RUFUSLDR une version modifiée de SETUPLDR. POUBELLE).

4 Pour faire bonne mesure, écrivez également des éléments de géométrie sur la partition. Cela ne change pas la géométrie du disque, cela laisse juste une note sur la géométrie pour les choses trop paresseuses pour en savoir plus sur la géométrie:

Sudo ms-sys -p /dev/sdXY

* Remarque: l'étape 4 ne s'applique pas à NTFS. * Autre remarque: assurez-vous que la version de votre noyau Linux est> 2.6. Le noyau 2.6 avait un bogue qui signalait le mauvais nombre de têtes (un problème de géométrie). Ainsi, l'option "-p" peut contenir des informations erronées dans le noyau 2.6. L'option "-H", qui permet à l'utilisateur de spécifier manuellement le nombre de têtes à enregistrer, constitue la solution. Mais vraiment, il suffit de mettre à niveau votre noyau. Si vous utilisez la version 2.6, vous êtes en retard. Pour dire la version de votre noyau, faites:

uname -r

5 Copiez les fichiers de l’iso, du dossier, peu importe. De nombreuses distributions montent des isos en double-cliquant dessus, ou du moins offrent la possibilité d'ouvrir avec un support d'archive sous un clic droit> ouvrir avec. Si ce n'est pas le cas pour vous, procédez comme suit:

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

6 Placez le fichier SETUPLDR.BIN (RUFUSLDR) modifié au niveau racine.

7 Copiez NTDETECT.COM de i386 au niveau racine.

8 Copiez le fichier txtsetup.sif de i386 au niveau racine.

9 Ouvrez la nouvelle copie de txtsetup.sif et Ctrl + F pour "[SetupData]". Juste sous cet en-tête, mettez cette ligne:

SetupSourceDevice = "\device\harddisk1\partition1"

10 Installez un chargeur de démarrage capable de charger des chargeurs de démarrage de style NTLDR sur le lecteur, ou sur un autre lecteur que vous utiliserez pour démarrer ce lecteur, ou utilisez un chargeur de démarrage existant. Si vous avez Grub2 installé sur votre disque dur pour démarrer Ubuntu, vous pouvez simplement appuyer sur "c" une fois que vous voyez le menu pour entrer la ligne de commande de Grub. Si vous utilisez plutôt Syslinux, vous pouvez également l'utiliser. Je vais juste rester avec Grub2 pour le tutoriel.

Pour installer Grub2 sur le disque (ce que vous n’aurez peut-être pas besoin si vous utilisez le chargeur de démarrage existant de votre disque dur):

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

11a. Faites une entrée grub.cfg ou exécutez manuellement les opérations suivantes:

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. En tant qu'entrée grub.cfg, cela ressemblerait à ceci (n'alignez pas les crochets, c'est Grub, pas le collège !!):

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
}

// Notez que ce qui précède est un moyen beaucoup plus sûr de définir le répertoire de travail actuel de Grub. Notez également que "boot" est impliqué pour les entrées de fichier de configuration.

// Notez également que bien qu'il soit habituel de disposer d'une ligne "drivemap -s (hd0) $ {root}" pour démarrer Windows (le lecteur de Windows est le premier lecteur de BIOS), ce qui est le cas pour ma clé USB Windows XP l'installateur l'a simplement redémarré en essayant de démarrer le chargeur de démarrage de style NTLDR. Si les choses ne fonctionnent pas et que vous êtes certain de suivre toutes les étapes, essayez "drivemap -s (hd0) $ {root}"

// Soyez conscient si vous avez plus d'un lecteur USB inséré au démarrage. Votre système démarrera le lecteur USB de démarrage le plus dominant lorsqu'il vous sera demandé de démarrer USB. Vous pouvez systématiquement déterminer quels ports USB sont dominants avec deux lecteurs USB amorçables. Pour moi, je n'ai pas eu à essayer beaucoup de combinaisons, car mes ports USB sont disposés en colonnes et les colonnes entières étaient dominantes par rapport aux autres colonnes. Dans une colonne, la plus haute dominait.

// Notez que si vous démarrez votre installateur Windows XP USB à partir de Grub2 sur un autre lecteur, Grub2 ne verra que le lecteur USB le plus dominant (du moins sur mon système). Assurez-vous donc que votre programme d’installation USB WinXP se trouve dans le logement le plus utilisé. (Ou changez simplement les deux si vous avez deux clés USB et que Grub2 voit le lecteur non-WinXP-Installer.) Bien sûr, cela ne pose pas de problème si un seul lecteur USB est inséré.

// S'il ne fait que redémarrer, assurez-vous que vous avez bien écrit "Sudo ms-sys -w/dev/sdXY" et, si FAT32, "Sudo ms-sys -p/dev/sdXY", ET copié NTDETECT.COM de l'i386 au niveau racine.

// S'il indique qu'il ne trouve rien, vous n'utilisez peut-être pas le chargeur de démarrage modifié. Assurez-vous d'utiliser la version modifiée. (Sera différent de md5 que i386/SETUPLDR.BIN.) Assurez-vous également que txtsetup.sif et NTDETECT.COM sont au niveau racine.

// S'il est dit d'insérer le CD Windows XP SP3, assurez-vous d'avoir ajouté cette ligne à txtsetup.sif ET que vos fichiers d'identification de CD sont corrects (WIN51, WIN51IP, etc.). Supprimez simplement les fichiers CD Indent et recopiez-les en cas de doute.

// S'il est indiqué que vous devez insérer un disque pour prouver que vous êtes qualifié pour l'installation de la mise à niveau, des disques GPT sont-ils insérés? Peut-être que cela cause le problème. Débranchez tous les disques au format GPT ou convertissez-les en MBR sous Linux. (comme dans l'ordinateur éteint, débranchez, réessayez. Pas seulement en tirant.)

// BTW, pour installer TO sur un lecteur USB, vous devrez faire le piratage à l'adresse ngine.de/article/id/8. Oui, il est possible d'installer Windows XP DE USB À USB.

Prendre plaisir,

Jake XD

8
Jake Thomas

Il s'avère que Windows XP se configure lui-même pour une configuration matérielle spécifique au cours de la première phase du programme d'installation.

Donc, si la méthode d'utilisation de VirtualBox, QEMU, etc. en conjonction avec votre disque dur réel doit fonctionner, vous devez créer un deuxième profil matériel. J'espérais que vous pourriez éviter ce problème en éteignant la VM avant de redémarrer à la deuxième étape. Au lieu de cela, démarrez votre machine réelle et laissez-la se configurer pour votre matériel réel. Mais il configure pour le matériel dans la première étape, pas la deuxième étape.

Donc, je recommande vraiment d'imiter Rufus. Copiez simplement les fichiers et faites quelques ajustements. Voir le post existant. Pas besoin de traiter avec un deuxième profil matériel. Même si vous créiez un deuxième profil matériel, comment amorceriez-vous Windows pour installer les pilotes de votre matériel réel dans le deuxième profil? Et si vous trouviez un moyen, l’octroi de licences ne vous arrêterait-il pas (il s’agit de matériel)?

3
SpawnHappyJake

Jetez un coup d'œil à UNetBootIn . Cela devrait faire l'affaire.

1
t0mm13b

C'est seulement crier au vent, mais ...

Pourquoi ne pas essayer VirtualBox? Vous pouvez télécharger le fichier Windows XP iso, le monter et installer la machine virtuelle. Je pense que vous pouvez également accéder aux clés USB pour pouvoir créer une clé de démarrage USB à partir de là.

1
Crowley

Puisque vous n'avez pas eu UNetbootin au travail, demandez à un ami avec un ordinateur Windows (ils ne sont pas exactement une pénurie, vous savez :) pour se préparer une clé USB avec WinToFlash pour vous.

1
Molly7244