108 votos

¿Cómo crear un medio de instalación de Windows 7 en un USB desde Linux?

Tengo:

  • imagen ISO del medio de instalación de Windows 7
  • Memoria USB flash de 4 GB
  • no tengo unidad de DVD
  • Linux instalado

0 votos

Si logras hacer todas estas tareas desde tu escritorio de Linux, estarás dando un gran paso adelante. Creo que la parte más difícil sería trastear con todas las operaciones que hace Diskpart de Windows. Marcar la partición como 'activa' y 'de arranque', 'primaria', etc.

3 votos

Creo que GParted (gparted.sourceforge.net) puede manejar todas las banderas de partición muy bien. Ver por ejemplo gparted.sourceforge.net/screenshots.php. Y no lo he probado, pero parece que rsync puede sustituir a robocopy en esa lista de verificación.

1 votos

Hay muchas respuestas detalladas a la misma pregunta en askubuntu.com/q/289559/135671

187voto

jthurner Puntos 1156

OK, después de intentar sin éxito todos los métodos mencionados aquí, finalmente lo conseguí funcionando. Básicamente, el paso que faltaba era escribir un sector de arranque adecuado en el USB, lo cual se puede hacer desde Linux con ms-sys o lilo -M. Esto funciona con la versión de Windows 7 retail.

Aquí está la descripción completa nuevamente:

Instalar ms-sys - si no está en tus repositorios, consíguelo aquí. O alternativamente, asegúrate de que lilo esté instalado (¡pero no ejecutes el paso de liloconfig en tu máquina local si por ejemplo Grub está instalado allí!)

Verifica a qué dispositivo se asigna tu medio USB - aquí asumiremos que es /dev/sdb. Elimina todas las particiones, crea una nueva que ocupe todo el espacio, establece el tipo en NTFS (7), y acuérdate de marcarlo como arrancable:

# cfdisk /dev/sdb   o   fdisk /dev/sdb (tipo de partición 7, y flag de arranque)

Crea un sistema de archivos NTFS:

# mkfs.ntfs -f /dev/sdb1

Escribe el MBR de Windows 7 en el stick USB (también funciona para Windows 8), múltiples opciones aquí:

  1. # ms-sys -7 /dev/sdb
  2. o (por ejemplo en instalaciones más recientes de Ubuntu) sudo lilo -M /dev/sdb mbr (info)
  3. o (si syslinux está instalado), puedes ejecutar sudo dd if=/usr/lib/syslinux/mbr/mbr.bin of=/dev/sdb

Monta la ISO y el medio USB:

\# mount -o loop win7.iso /mnt/iso
# mount /dev/sdb1 /mnt/usb

Copia todos los archivos:

# cp -r /mnt/iso/* /mnt/usb/   ...o usa el navegador de archivos GUI estándar de tu sistema

Llama a sync para asegurarte de que todos los archivos se hayan escrito.

Abre gparted, selecciona el USB drive, haz clic derecho en el sistema de archivos, luego haz clic en "Gestionar flags". Marca la opción de arranque, luego cierra.

...y listo.

Después de todo eso, probablemente quieras hacer una copia de seguridad de tu medio USB para futuras instalaciones y deshacerte del archivo ISO... Solo usa dd: # dd if=/dev/sdb of=win7.img

Nota, ¡esto copia todo el dispositivo! — que generalmente es (mucho) más grande que los archivos copiados en él. Así que en su lugar propongo

# dd count=[(tamaño del archivo ISO en MB más algunos MB adicionales para el bloque de arranque) dividido por el tamaño de bloque dd estándar] if=/dev/sdb of=win7.img

Así, por ejemplo, con 8 MB extra:

# dd count=$(((`stat -c '%s' win7.iso` + 8*1024*1024) / 512)) if=/dev/sdb of=win7.img status=progress

Como siempre, verifica muy cuidadosamente los nombres de los dispositivos cuando trabajes con dd.

El método de creación de un USB arrancable presentado anteriormente también funciona con la iso del instalador de Win10. Lo intenté ejecutando Ubuntu 16.04 copiando Win10_1703_SingleLang_English_x64.iso (tamaño 4,241,291,264 bytes) en un USB de 8 GB—sólo en un arranque no-UEFI [no seguro]. Después de ejecutarlo, dd reporta: 8300156+0 registros in 8300156+0 registros out 4249679872 bytes (4.2 GB, 4.0 GiB) copiados, 412.807 s, 10.3 MB/s

La próxima vez que quieras poner el instalador de Windows 7 en USB, revertir if/of.

1 votos

Sería bueno mencionar también el tipo de partición numérica a usar en cfdisk (7, 86, 87?)

5 votos

Funcionó con el tipo 7

3 votos

Solo un recordatorio: Si tu sistema de archivos ntfs te da errores de permisos extraños cuando intentas escribir en él incluso como root, asegúrate de haber instalado ntfs-3g.

13voto

TrueDuality Puntos 1318

Puedes lograr esto con dd, si tu PC es compatible con UEFI y, por extensión, discos GPT.

Abre una terminal, necesitarás encontrar cuál es tu pendrive. Si la unidad está montada, puedes encontrar el nombre del dispositivo escribiendo "mount" y mirando su entrada. Algo como lo siguiente:

/dev/sdb1 en /media/USBDISK tipo vfat (rw,nosuid,nodev,uhelper=hal,uid=1000,utf8,shortname=mixed)

En este caso, la primera partición de /dev/sdb está montada en /media/USBDISK. Abre un shell de root y desmonta la unidad.

umount /dev/sdb1

Ve al directorio donde se encuentra tu ISO almacenado en un shell de root y escribe lo siguiente: (Reemplaza windows7.iso con el nombre real de la iso, y /dev/sdb con el identificador del dispositivo de tu memoria USB).

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

Si tu placa base admite arrancar desde un pendrive debería poder arrancar desde él. Esto pondrá el instalador en el pendrive, no el sistema operativo en sí.

22 votos

No funciona para mí.

1 votos

¿Tu placa base admite el arranque desde USB? Ese será el factor decisivo definitivo para determinar si este enfoque funcionará o no.

11 votos

Tampoco me funciona a mí, y mi máquina sí admite el arranque USB perfectamente. Tal vez este enfoque pueda funcionar en máquinas que puedan arrancar USB de estilo DVD, pero la mayoría de las BIOS asumen un diseño de estilo HDD en los USB (lo que significa un MBR de 512 bytes con código de arranque). Vale la pena mencionar una cosa: las imágenes de CD/DVD de Fedora, a diferencia de W7, sí tienen ese MBR con código de arranque y tabla de particiones, lo que las hace adecuadas también para el arranque desde HDD/USB.

11voto

Kyle Cronin Puntos 35834

Si pudieras lograr hacer todas estas tareas desde tu escritorio de linux, estarías arrasando.

Creo que la parte más difícil sería jugar con todas las operaciones que realiza Diskpart de Windows. Hacer que la partición esté marcada como 'activa' y 'de arranque', 'primaria', etc.

5voto

La sugerencia de PCambell es buena, pero también querrás limpiar el MBR, el equivalente en Linux está abajo

Intenté esto y funcionó (no estoy seguro por qué falló el método dd, pero parece que la partición tenía que ser ntfs?):

  • Descubre cuál es tu unidad flash USB /dev/dispositivo y desmóntala
  • limpia el MBR: dd if=/dev/zero of=/dev/dispositivo bs=446 count=1
  • ejecuta fdisk /dev/dispositivo
  • elimina todas las particiones y crea 1 partición primaria, hazla booteable y luego guarda los cambios
  • ejecuta mkfs.ntfs /dev/dispositivo1 (partición 1)
  • copia todo el contenido del archivo iso de instalación de Windows en la partición que creaste

-4voto

zhaorufei Puntos 626

En lugar de

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

escribes como root,

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

(AGREGA 1 al final o donde sea que esté ubicado tu unidad USB.)

3 votos

No, el of=sdb es correcto según las respuestas anteriores.

2 votos

Esto simplemente está mal.

1 votos

-1: dd necesita escribir en dispositivos, no en particiones

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X