TIP: crear un pen USB booteable UEFI con Windows (cuando windows ocupa más del tamaño de un DVD). Ej: Server 2016

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • jmtella
    Administrator
    • Nov
    • 20594

    TIP: crear un pen USB booteable UEFI con Windows (cuando windows ocupa más del tamaño de un DVD). Ej: Server 2016

    Una imagen de Windows "customizado", o bien incluso el Server 2016 que distribuye Microsoft, el install.win ocupa mas de 4 GB (el server 2016 ocupa 5,29 GB).

    En este caso tenemos un problema: en un DVD normal no cabe. Y en un PEN, si lo queremos UEFI, debe ser FAT32, y el limite de un archivo (en este caso el install.wim) en FAT32 es 4 GB por lo cual no podremos tampoco crearlo.

    Trampa: partir el fichero install.win en trozos inferiores a 4GB mediante la utilidad de Windows DISM.

    El código powershell que dejo debajo, lo hace. (por favor, leer los comentarios en el codigo)

    Código:
    # Tamaño minimo del pen USB stick 5.29GB
    # Poner aquí donde tenemos el ISO de W2016
    
    $iso = 'C:\Users\localuser\Downloads\en_windows_server_2016_x64_dvd_9327751.iso'
    
    # Limpiar el USB. [COLOR=#FF0000][B]Poner en NN en la linea inferior el Numero de Disco del Pen que se ve en DISKPART[/B][/COLOR]
    # [U][B][COLOR=#FF0000]Ser cuidadoso con esto o borraremos un disco que no procede.[/COLOR][/B][/U]
    
    $disk=[SIZE=14px][B][COLOR=#FF0000]NN[/COLOR][/B][/SIZE]
    
    Get-Disk | Where Number -eq $disk | Clear-Disk -RemoveData -Confirm:$true -PassThru
    
    # Convertir a  GPT
    if ((Get-Disk | Where Number -eq $disk).PartitionStyle -eq 'RAW') {
        Get-Disk | Where Numer -eq $disk |
        Initialize-Disk -PartitionStyle GPT
    } else {
        Get-Disk | Where Number -eq $disk |
        Set-Disk -PartitionStyle GPT
    }
    
    # Crear partition primaria y format a FAT32
    $volume = Get-Disk | Where Number -eq $disk |
    New-Partition -UseMaximumSize -AssignDriveLetter |
    Format-Volume -FileSystem FAT32
    
    if (Test-Path -Path "$($volume.DriveLetter):\") {
        # Mount iso
        $miso = Mount-DiskImage -ImagePath $iso -StorageType ISO -PassThru
        # Driver letter
        $dl = ($miso | Get-Volume).DriveLetter
    }
    
    if (Test-Path -Path "$($dl):\sources\install.wim") {
        # Copiar ISO excepto el install.wim
        & (Get-Command "$($env:systemroot)\system32\robocopy.exe") @(
            "$($dl):\",
            "$($volume.DriveLetter):\"
            ,'/S','/R:0','/Z','/XF','install.wim','/NP'
        )
    
        # Trocear el install.wim
        & (Get-Command "$($env:systemroot)\system32\dism.exe") @(
            '/split-image',
            "/imagefile:$($dl):\sources\install.wim",
            "/SWMFile:$($volume.DriveLetter):\sources\install.swm",
            '/FileSize:4096'
        )
    }
    
    
    # Eject USB
    (New-Object -comObject Shell.Application).NameSpace(17).
    ParseName("$($volume.DriveLetter):").InvokeVerb('Eject')
    
    # Dismount ISO
    Dismount-DiskImage -ImagePath $iso
  • jmtella
    Administrator
    • Nov
    • 20594

    #2
    Es importante que no perdáis esto de vista: cada vez las imágenes ocupan mas.

    Comentario

    • barnastudios
      Member
      • Jan
      • 86

      #3
      Hola Jm

      he intentado el script....mira que curioso:

      Number Friendly Name Serial Number HealthStatus OperationalStatus Total Size Partition
      Style
      ------ ------------- ------------- ------------ ----------------- ---------- ----------
      3 SanDisk Ultra 4C531001340608115562 Healthy Online 57.84 GB GPT
      Format-Volume : Size Not Supported
      Activity ID: {3efd4550-3875-4d24-b46a-8847576c575e}
      At D:\aa\aa.ps1:25 char:1
      + Format-Volume -FileSystem FAT32
      + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      + CategoryInfo : NotSpecified: (StorageWMI:ROOT/Microsoft/...age/MSFT_Volume) [Format-Volume], CimException
      + FullyQualifiedErrorId : StorageWMI 4097,Format-Volume

      You cannot call a method on a null-valued expression.
      At D:\aa\aa.ps1:54 char:14
      + ParseName("$($volume.DriveLetter):").InvokeVerb('E ject')
      + ~~~~~~~~~~~~~~~~~~~
      + CategoryInfo : InvalidOperation: ( [], RuntimeException
      + FullyQualifiedErrorId : InvokeMethodOnNull


      subo una imagen que es mejor
      Haga clic en la imagen para ver una versión más grande

Nombre:	aaa.PNG
Visitas:	2376
Size:	14,5 KB
ID:	35207
      Editado por última vez por barnastudios; 24/11/2018, 20:35:12.

      Comentario

      • jmtella
        Administrator
        • Nov
        • 20594

        #4
        Ejecuta UNA a UNA y dime en cual falla...

        Comentario

        • barnastudios
          Member
          • Jan
          • 86

          #5
          Haga clic en la imagen para ver una versión más grande

Nombre:	bb.PNG
Visitas:	2352
Size:	19,8 KB
ID:	35216 en esta:

          $volume = Get-Disk | Where Number -eq $disk |
          New-Partition -UseMaximumSize -AssignDriveLetter |
          Format-Volume -FileSystem FAT32
          Editado por última vez por barnastudios; 24/11/2018, 20:48:58.

          Comentario

          • barnastudios
            Member
            • Jan
            • 86

            #6
            Eso de tamaño no soportado.....raro
            Editado por última vez por barnastudios; 24/11/2018, 20:51:53.

            Comentario

            • jmtella
              Administrator
              • Nov
              • 20594

              #7
              Originalmente publicado por barnastudios Ver Mensaje
              Eso de tamaño no soportado.....raro
              Efectivamente, ya que se usa el parámetro
              -UseMaximumSize por tanto usa el que le informa la unidad y luego da error... Ese pen no me gusta... (bueno,,si es SanDisk no me extraña...)

              Comentario

              • barnastudios
                Member
                • Jan
                • 86

                #8
                oki. Mañana pruebo con otro y te cuento

                Comentario

                • barnastudios
                  Member
                  • Jan
                  • 86

                  #9
                  Perdón JM por no darte respuesta aún. Es que no he probado con un nuevo pendrive todavía

                  Estoy liado con la red de casa (cableando, configurando y todo eso) y poco tiempo tengo, de momento.

                  Un saludo

                  Comentario

                  • jmtella
                    Administrator
                    • Nov
                    • 20594

                    #10
                    Originalmente publicado por barnastudios Ver Mensaje
                    Perdón JM por no darte respuesta aún. Es que no he probado con un nuevo pendrive todavía

                    Estoy liado con la red de casa (cableando, configurando y todo eso) y poco tiempo tengo, de momento.

                    Un saludo
                    Me he cansado de hacerlo...funciona. Hubo con un pen mindundi que me paso lo mismo, lo tiré

                    Comentario

                    • Waldin
                      Senior Member
                      • Jul
                      • 1132

                      #11
                      Hola!!
                      Estoy intentando crear un pen y parece que copia todos los ficheros, menos el que tiene que trocear.
                      El resultado es este:

                      ------------------------------------------------------------------------------

                      Total Copiado OmitidoNo coincidencia ERROR Extras
                      Director.: 85 84 1 0 0 1
                      Archivos: 899 898 1 0 0 0
                      Bytes: 4.210 g 729.04 m 3.498 g 0 0 0
                      Tiempo: 0:01:23 0:01:13 0:00:00 0:00:09


                      Velocidad: 10331815 Bytes/s
                      Velocidad: 591.191 Megabytes/min
                      Finalizado: jueves, 13 de febrero de 2020 20:10:33


                      Herramienta Administración y mantenimiento de imágenes de implementación
                      Versión: 10.0.19041.1


                      Error: 87

                      El parámetro no es correcto.

                      El archivo de registro de DISM se encuentra en C:\WINDOWS\Logs\DISM\dism.log

                      Comentario

                      • jmtella
                        Administrator
                        • Nov
                        • 20594

                        #12
                        Originalmente publicado por Waldin Ver Mensaje
                        Hola!!
                        Estoy intentando crear un pen y parece que copia todos los ficheros, menos el que tiene que trocear.
                        El resultado es este:

                        ------------------------------------------------------------------------------

                        Total Copiado OmitidoNo coincidencia ERROR Extras
                        Director.: 85 84 1 0 0 1
                        Archivos: 899 898 1 0 0 0
                        Bytes: 4.210 g 729.04 m 3.498 g 0 0 0
                        Tiempo: 0:01:23 0:01:13 0:00:00 0:00:09


                        Velocidad: 10331815 Bytes/s
                        Velocidad: 591.191 Megabytes/min
                        Finalizado: jueves, 13 de febrero de 2020 20:10:33


                        Herramienta Administración y mantenimiento de imágenes de implementación
                        Versión: 10.0.19041.1


                        Error: 87

                        El parámetro no es correcto.

                        El archivo de registro de DISM se encuentra en C:\WINDOWS\Logs\DISM\dism.log
                        Tendria que actualizar el script ya que es muy dependiente de la version de powershell... y este ha evolucionado...

                        En cualquie caso, parte el install.wim a tamaño 4096 con el dism ejecutado en modo administrado a pelo en una consola cmd, de acuerdo a esto:

                        https://docs.microsoft.com/en-us/win...-multiple-dvds

                        Comentario

                        • Waldin
                          Senior Member
                          • Jul
                          • 1132

                          #13
                          Gracias. Probaré y ya comentaré resultados

                          Comentario

                          • noSign
                            Super Moderator
                            • Dec
                            • 4386

                            #14
                            El comando para trocearlo?
                            Dism /Split-Image /ImageFile:E:\sources\install.wim /SWMFile:C:\sources\install.swm /FileSize:4096


                            Otro sistema.:

                            Si formateamos en dos particiones el USB (Fat32 /NTFS)

                            Averiguar nº disco USB
                            diskpart
                            list disk (ejemplo 1)



                            # Reemplace con numero de disco USB obtenido anteriormente en select disk (ejemplo 1)

                            diskpart.dat (archivo con los datos siguientes)

                            select disk 1
                            clean
                            convert gpt
                            create partition primary size=1000
                            create partition primary
                            select partition 1
                            format fs=fat32 quick
                            assign letter=Q
                            active
                            select partition 2
                            format fs=ntfs quick
                            assign letter=R
                            exit


                            usbcreate.bat (archivo con los datos siguientes)

                            c:
                            cd \usbcreate
                            rd "baseiso" /s /q
                            md "baseiso"
                            xcopy E:\*.* "c:\usbcreate\baseiso" /s /y
                            diskpart /s "c:\usbcreate\diskpart.dat"
                            label Q:USB-FAT32
                            label R:USB-NTFS
                            xcopy "c:\usbcreate\install.wim" "c:\usbcreate\baseiso\sources" /y
                            xcopy "c:\usbcreate\baseiso\*.*" R:\ /s /y
                            rd "c:\usbcreate\baseiso\sources" /s /q
                            md "c:\usbcreate\baseiso\sources"
                            xcopy "c:\usbcreate\baseiso\*.*" Q:\ /s /y /e
                            xcopy "E:\sources\boot.wim" "Q:\sources" /y


                            Notas.:
                            E: (ruta disco montado)
                            Q y R letras libres

                            Ejecutar usbcreate.bat (con derechos Adm)

                            Comentario

                            • Carlomajno
                              Junior Member
                              • May
                              • 2

                              #15
                              Originalmente publicado por jmtella Ver Mensaje
                              Una imagen de Windows "customizado", o bien incluso el Server 2016 que distribuye Microsoft, el install.win ocupa mas de 4 GB (el server 2016 ocupa 5,29 GB).

                              En este caso tenemos un problema: en un DVD normal no cabe. Y en un PEN, si lo queremos UEFI, debe ser FAT32, y el limite de un archivo (en este caso el install.wim) en FAT32 es 4 GB por lo cual no podremos tampoco crearlo.

                              Trampa: partir el fichero install.win en trozos inferiores a 4GB mediante la utilidad de Windows DISM.

                              El código powershell que dejo debajo, lo hace. (por favor, leer los comentarios en el codigo)

                              Código:
                              # Tamaño minimo del pen USB stick 5.29GB
                              # Poner aquí donde tenemos el ISO de W2016
                              
                              $iso = 'C:\Users\localuser\Downloads\en_windows_server_2016_x64_dvd_9327751.iso'
                              
                              # Limpiar el USB. [COLOR=#FF0000][B]Poner en NN en la linea inferior el Numero de Disco del Pen que se ve en DISKPART[/B][/COLOR]
                              # [U][B][COLOR=#FF0000]Ser cuidadoso con esto o borraremos un disco que no procede.[/COLOR][/B][/U]
                              
                              $disk=[SIZE=14px][B][COLOR=#FF0000]NN[/COLOR][/B][/SIZE]
                              
                              Get-Disk | Where Number -eq $disk | Clear-Disk -RemoveData -Confirm:$true -PassThru
                              
                              # Convertir a GPT
                              if ((Get-Disk | Where Number -eq $disk).PartitionStyle -eq 'RAW') {
                              Get-Disk | Where Numer -eq $disk |
                              Initialize-Disk -PartitionStyle GPT
                              } else {
                              Get-Disk | Where Number -eq $disk |
                              Set-Disk -PartitionStyle GPT
                              }
                              
                              # Crear partition primaria y format a FAT32
                              $volume = Get-Disk | Where Number -eq $disk |
                              New-Partition -UseMaximumSize -AssignDriveLetter |
                              Format-Volume -FileSystem FAT32
                              
                              if (Test-Path -Path "$($volume.DriveLetter):\") {
                              # Mount iso
                              $miso = Mount-DiskImage -ImagePath $iso -StorageType ISO -PassThru
                              # Driver letter
                              $dl = ($miso | Get-Volume).DriveLetter
                              }
                              
                              if (Test-Path -Path "$($dl):\sources\install.wim") {
                              # Copiar ISO excepto el install.wim
                              & (Get-Command "$($env:systemroot)\system32\robocopy.exe") @(
                              "$($dl):\",
                              "$($volume.DriveLetter):\"
                              ,'/S','/R:0','/Z','/XF','install.wim','/NP'
                              )
                              
                              # Trocear el install.wim
                              & (Get-Command "$($env:systemroot)\system32\dism.exe") @(
                              '/split-image',
                              "/imagefile:$($dl):\sources\install.wim",
                              "/SWMFile:$($volume.DriveLetter):\sources\install.swm",
                              '/FileSize:4096'
                              )
                              }
                              
                              
                              # Eject USB
                              (New-Object -comObject Shell.Application).NameSpace(17).
                              ParseName("$($volume.DriveLetter):").InvokeVerb('Eject')
                              
                              # Dismount ISO
                              Dismount-DiskImage -ImagePath $iso
                              Hola he probado el script y salvo formatear la unidad no me hace nada más.

                              Necesito crear un USB de w10 booteable que esté en fat32 para que lo pueda leer un Mac y poder hacer una instalación limpia. No quiero un dual system. Hasta ahora lo hacía con rufus pero este detecta que la iso es grande y al seleccionar la iso y mbr me pone por defecto nfts...

                              Comentario

                              Trabajando...
                              X