{"code":"var Component=(()=>{var k=Object.create;var l=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var u=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var F=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),y=(s,e)=>{for(var a in e)l(s,a,{get:e[a],enumerable:!0})},h=(s,e,a,d)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of m(e))!g.call(s,n)&&n!==a&&l(s,n,{get:()=>e[n],enumerable:!(d=p(e,n))||d.enumerable});return s};var C=(s,e,a)=>(a=s!=null?k(u(s)):{},h(e||!s||!s.__esModule?l(a,\"default\",{value:s,enumerable:!0}):a,s)),E=s=>h(l({},\"__esModule\",{value:!0}),s);var c=F((f,r)=>{r.exports=_jsx_runtime});var b={};y(b,{default:()=>o});var i=C(c());function t(s){let e={a:\"a\",blockquote:\"blockquote\",code:\"code\",em:\"em\",h2:\"h2\",h3:\"h3\",img:\"img\",li:\"li\",p:\"p\",pre:\"pre\",span:\"span\",strong:\"strong\",table:\"table\",tbody:\"tbody\",td:\"td\",th:\"th\",thead:\"thead\",tr:\"tr\",ul:\"ul\",...s.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(e.p,{children:\"La p\\xE1gina man de macOS 27 Golden Gate incluye ahora una l\\xEDnea que nunca antes hab\\xEDa estado ah\\xED:\"}),`\n`,(0,i.jsxs)(e.blockquote,{children:[`\n`,(0,i.jsx)(e.p,{children:\"En macOS 27.0, hdiutil queda obsoleto. Use diskutil image en su lugar para todas las operaciones con im\\xE1genes de disco.\"}),`\n`]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" ha sido la forma de crear, montar, convertir e inspeccionar im\\xE1genes de disco en el Mac desde Mac OS X 10.0. Si alguna vez ha distribuido un \",(0,i.jsx)(e.code,{children:\".dmg\"}),\", ha escrito un script de instalador, ha construido un job de CI que empaqueta una app de Mac, o ha creado un contenedor cifrado para mantener algo privado, lo ha usado \\u2014 directamente o a trav\\xE9s de algo que lo invoc\\xF3 por usted.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Esta es la parte que la mayor\\xEDa de la cobertura pas\\xF3 por alto: \",(0,i.jsx)(e.strong,{children:\"el reemplazo no est\\xE1 por llegar. Ya est\\xE1 en su Mac.\"}),\" Abra Terminal en macOS 26 Tahoe ahora mismo y ejecute \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\". Responde.\"]}),`\n`,(0,i.jsx)(e.p,{children:(0,i.jsx)(e.img,{alt:\"Obsolescencia de hdiutil en macOS 27\",src:\"/images/blog/hdiutil-deprecated-macos-27-diskutil-image-migration-guide-2026/hero.webp\",width:\"1024\",height:\"541\"})}),`\n`,(0,i.jsx)(e.h2,{id:\"puntos-clave\",children:\"Puntos Clave\"}),`\n`,(0,i.jsxs)(e.ul,{children:[`\n`,(0,i.jsxs)(e.li,{children:[(0,i.jsxs)(e.strong,{children:[(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" ya funciona en macOS 26.\"]}),\" Verificado en macOS 26.5.2 (build 25F84). Puede migrar y probar scripts hoy mismo, antes de que se lance macOS 27.\"]}),`\n`,(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:\"Obsoleto no significa eliminado.\"}),\" \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" sigue funcionando en macOS 27. Nada se rompe el primer d\\xEDa. Pero Apple lleva siete a\\xF1os recort\\xE1ndolo, y la p\\xE1gina man documenta cada paso.\"]}),`\n`,(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:\"La superficie de comandos es mucho m\\xE1s peque\\xF1a.\"}),\" \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" expone 23 verbos. \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" expone 5 subcomandos.\"]}),`\n`,(0,i.jsxs)(e.li,{children:[(0,i.jsxs)(e.strong,{children:[\"No existe \",(0,i.jsx)(e.code,{children:\"detach\"}),\".\"]}),\" Puede montar (attach) una imagen de disco con \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\", pero no desmontarla (detach) \\u2014 eso pasa a \",(0,i.jsx)(e.code,{children:\"diskutil eject\"}),\".\"]}),`\n`,(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:\"Algunas cosas realmente no tienen reemplazo todav\\xEDa\"}),\", incluyendo \",(0,i.jsx)(e.code,{children:\"verify\"}),\", \",(0,i.jsx)(e.code,{children:\"compact\"}),\" y \",(0,i.jsx)(e.code,{children:\"makehybrid\"}),\". Si sus scripts de build usan esos comandos, hoy no tiene una ruta de migraci\\xF3n.\"]}),`\n`]}),`\n`,(0,i.jsx)(e.h2,{id:\"primero-conf\\xEDrmelo-en-su-propio-mac\",children:\"Primero: conf\\xEDrmelo en su propio Mac\"}),`\n`,(0,i.jsx)(e.p,{children:\"No se quede solo con mi palabra. Un comando:\"}),`\n`,(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(e.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,i.jsx)(e.code,{children:(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"diskutil\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" image\"})]})})})}),`\n`,(0,i.jsx)(e.p,{children:\"En macOS 26.5.2 eso imprime:\"}),`\n`,(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(e.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992,3 3,3 h 3 v 11 c 0,0.564129 -0.435871,1 -1,1 H 6 C 5.4358712,21 5,20.564129 5,20 V 4 C 5,3.4358712 5.4358712,3 6,3 Z M 15,3.4140625 18.585937,7 H 16 C 15.435871,7 15,6.5641288 15,6 Z\" fill=\"currentColor\" /></svg>',children:(0,i.jsxs)(e.code,{children:[(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"OVERVIEW: Manipulate disk images (attach, create, etc)\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"USAGE: diskutil image [--verbose] [--stdinpassphrase] [--plist] <subcommand>\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"SUBCOMMANDS:\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"  attach                  Attach a disk image as a device.\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"  info                    Print info regarding a disk image.\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"  create                  Create a disk image. Either blank or from an existing\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"                          source (disk, disk image or folder).\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"  resize                  Resize a given image to a specified size if\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"                          applicable.\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"  chpass                  Change the passphrase of a given encrypted image.\"})})]})})}),`\n`,(0,i.jsxs)(e.p,{children:[\"Cinco subcomandos. Ahora comp\\xE1relo con lo que ofrece \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\", directamente desde su propia p\\xE1gina man:\"]}),`\n`,(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(e.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992,3 3,3 h 3 v 11 c 0,0.564129 -0.435871,1 -1,1 H 6 C 5.4358712,21 5,20.564129 5,20 V 4 C 5,3.4358712 5.4358712,3 6,3 Z M 15,3.4140625 18.585937,7 H 16 C 15.435871,7 15,6.5641288 15,6 Z\" fill=\"currentColor\" /></svg>',children:(0,i.jsxs)(e.code,{children:[(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"Common verbs include attach, detach, verify, create, convert, and compact.\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"The rest of the verbs are currently: help, info, burn, checksum, chpass,\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"erasekeys, imageinfo, isencrypted, mountvol, unmount, plugins, udifrez,\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"udifderez, resize, segment, makehybrid, and pmap.\"})})]})})}),`\n`,(0,i.jsxs)(e.p,{children:[\"Son 23 verbos contra 5 subcomandos. Esa proporci\\xF3n resulta alarmante a primera vista, y tambi\\xE9n es enga\\xF1osa, porque una comparaci\\xF3n verbo por verbo da la respuesta equivocada. Varios verbos de \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" quedaron plegados dentro de \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" bajo otros nombres, varios ya estaban obsoletos desde hace a\\xF1os, y uno importante se traslad\\xF3 por completo a otro comando.\"]}),`\n`,(0,i.jsx)(e.p,{children:\"Averiguar cu\\xE1l es cu\\xE1l es la migraci\\xF3n real, as\\xED que hag\\xE1moslo bien.\"}),`\n`,(0,i.jsx)(e.h2,{id:\"esto-no-sali\\xF3-de-la-nada\",children:\"Esto no sali\\xF3 de la nada\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"Antes de la tabla de migraci\\xF3n, algo de contexto que hace que la obsolescencia parezca menos abrupta. La p\\xE1gina man de \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" contiene una secci\\xF3n de compatibilidad que se lee como un registro de siete a\\xF1os de Apple recortando la herramienta. Esto est\\xE1 en su Mac ahora mismo \\u2014 ejecute \",(0,i.jsx)(e.code,{children:\"man hdiutil\"}),\" y busque los encabezados de versi\\xF3n:\"]}),`\n`,(0,i.jsx)(e.p,{children:(0,i.jsx)(e.strong,{children:\"macOS 10.15\"})}),`\n`,(0,i.jsxs)(e.ul,{children:[`\n`,(0,i.jsx)(e.li,{children:\"Introdujo compresi\\xF3n lzma en el formato ULMO\"}),`\n`,(0,i.jsxs)(e.li,{children:[\"Declar\\xF3 obsoleto el soporte de archivos de doble fork estilo OS 9 (\",(0,i.jsx)(e.code,{children:\"hdiutil flatten\"}),\"/\",(0,i.jsx)(e.code,{children:\"unflatten\"}),\")\"]}),`\n`,(0,i.jsxs)(e.li,{children:[\"Elimin\\xF3 el comando obsoleto \",(0,i.jsx)(e.code,{children:\"hdiutil internet-enable\"}),\" y las flags de attach de IDME\"]}),`\n`]}),`\n`,(0,i.jsx)(e.p,{children:(0,i.jsx)(e.strong,{children:\"macOS 11.0\"})}),`\n`,(0,i.jsxs)(e.ul,{children:[`\n`,(0,i.jsx)(e.li,{children:\"Elimin\\xF3 el soporte para los formatos DiskCopy42, DART y NDIF\"}),`\n`,(0,i.jsx)(e.li,{children:\"Elimin\\xF3 el soporte para las codificaciones AppleSingle y MacBinary\"}),`\n`,(0,i.jsx)(e.li,{children:\"Elimin\\xF3 el soporte de archivos de doble fork estilo OS 9\"}),`\n`,(0,i.jsx)(e.li,{children:\"Cambi\\xF3 el sistema de archivos predeterminado para im\\xE1genes nuevas a APFS\"}),`\n`]}),`\n`,(0,i.jsx)(e.p,{children:(0,i.jsx)(e.strong,{children:\"macOS 12.0\"})}),`\n`,(0,i.jsxs)(e.ul,{children:[`\n`,(0,i.jsx)(e.li,{children:\"Declar\\xF3 obsoleto el formato UDBZ (compresi\\xF3n bzip2)\"}),`\n`,(0,i.jsxs)(e.li,{children:[\"Declar\\xF3 obsoletas las im\\xE1genes UDIF segmentadas (\",(0,i.jsx)(e.code,{children:\"hdiutil segment\"}),\", \",(0,i.jsx)(e.code,{children:\"-segmentSize\"}),\")\"]}),`\n`,(0,i.jsxs)(e.li,{children:[\"Declar\\xF3 obsoletos \",(0,i.jsx)(e.code,{children:\"hdiutil udifrez\"}),\"/\",(0,i.jsx)(e.code,{children:\"udifderez\"}),\" (incrustar y extraer recursos)\"]}),`\n`]}),`\n`,(0,i.jsx)(e.p,{children:(0,i.jsx)(e.strong,{children:\"macOS 13.0\"})}),`\n`,(0,i.jsxs)(e.ul,{children:[`\n`,(0,i.jsxs)(e.li,{children:[\"Elimin\\xF3 la opci\\xF3n \",(0,i.jsx)(e.code,{children:\"encrypted-encoding-version\"}),\"; todas las im\\xE1genes cifradas nuevas usan la versi\\xF3n 2\"]}),`\n`]}),`\n`,(0,i.jsxs)(e.p,{children:[\"La p\\xE1gina man tambi\\xE9n se\\xF1ala, en l\\xEDnea, que \",(0,i.jsx)(e.code,{children:\"-passphrase\"}),\" es insegura, que las im\\xE1genes segmentadas est\\xE1n obsoletas y que UDBZ est\\xE1 obsoleto.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Le\\xEDdo como un solo arco, la obsolescencia de macOS 27 es el \\xFAltimo paso de un proceso que comenz\\xF3 alrededor de 2019, no una decisi\\xF3n tomada este verano. Eso importa para planificar: Apple elimina cosas de esta herramienta despacio y las anuncia primero en la p\\xE1gina man. \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" en macOS 27 est\\xE1 obsoleto, no desaparecido, y no hay fecha de eliminaci\\xF3n anunciada.\"]}),`\n`,(0,i.jsx)(e.h2,{id:\"la-tabla-de-migraci\\xF3n\",children:\"La tabla de migraci\\xF3n\"}),`\n`,(0,i.jsx)(e.p,{children:\"Este es el mapa. Prob\\xE9 cada uno de estos en macOS 26.5.2.\"}),`\n`,(0,i.jsxs)(e.table,{children:[(0,i.jsx)(e.thead,{children:(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.th,{children:\"Qu\\xE9 quiere hacer\"}),(0,i.jsx)(e.th,{children:(0,i.jsx)(e.code,{children:\"hdiutil\"})}),(0,i.jsx)(e.th,{children:(0,i.jsx)(e.code,{children:\"diskutil image\"})})]})}),(0,i.jsxs)(e.tbody,{children:[(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"Montar una imagen\"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.code,{children:\"hdiutil attach x.dmg\"})}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.code,{children:\"diskutil image attach x.dmg\"})})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"Desmontar una imagen\"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.code,{children:\"hdiutil detach /dev/diskN\"})}),(0,i.jsxs)(e.td,{children:[(0,i.jsxs)(e.strong,{children:[\"No est\\xE1 en \",(0,i.jsx)(e.code,{children:\"diskutil image\"})]}),\" \\u2014 use \",(0,i.jsx)(e.code,{children:\"diskutil eject /dev/diskN\"})]})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"Crear una imagen en blanco\"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.code,{children:\"hdiutil create -size 1g -fs APFS x.dmg\"})}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.code,{children:\"diskutil image create blank --size 1g x.dmg\"})})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"Crear una imagen a partir de una carpeta\"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.code,{children:\"hdiutil create -srcfolder ./dir x.dmg\"})}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.code,{children:\"diskutil image create from ./dir x.dmg\"})})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"Convertir formato\"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.code,{children:\"hdiutil convert in.dmg -format UDZO -o out.dmg\"})}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.code,{children:\"diskutil image create from in.dmg out.dmg --format UDZO\"})})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"Inspeccionar una imagen\"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.code,{children:\"hdiutil imageinfo x.dmg\"})}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.code,{children:\"diskutil image info x.dmg\"})})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"Comprobar si est\\xE1 cifrada\"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.code,{children:\"hdiutil isencrypted x.dmg\"})}),(0,i.jsxs)(e.td,{children:[(0,i.jsx)(e.code,{children:\"diskutil image info\"}),\" \\u2192 \",(0,i.jsx)(e.code,{children:\"Is Encrypted:\"})]})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"Redimensionar\"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.code,{children:\"hdiutil resize -size 2g x.dmg\"})}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.code,{children:\"diskutil image resize\"})})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"Cambiar la contrase\\xF1a\"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.code,{children:\"hdiutil chpass x.dmg\"})}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.code,{children:\"diskutil image chpass x.dmg\"})})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"Verificar checksum\"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.code,{children:\"hdiutil verify x.dmg\"})}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.strong,{children:\"Sin equivalente\"})})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"Compactar una imagen sparse\"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.code,{children:\"hdiutil compact x.sparsebundle\"})}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.strong,{children:\"Sin equivalente\"})})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"Crear una imagen h\\xEDbrida/ISO\"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.code,{children:\"hdiutil makehybrid\"})}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.strong,{children:\"Sin equivalente\"})})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"Incrustar un acuerdo de licencia\"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.code,{children:\"hdiutil udifrez\"})}),(0,i.jsxs)(e.td,{children:[(0,i.jsx)(e.strong,{children:\"Sin equivalente\"}),\" (obsoleto desde macOS 12)\"]})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"Grabar en medios \\xF3pticos\"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.code,{children:\"hdiutil burn\"})}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.strong,{children:\"Sin equivalente\"})})]})]})]}),`\n`,(0,i.jsxs)(e.h3,{id:\"la-sorpresa-de-convert\",children:[\"La sorpresa de \",(0,i.jsx)(e.code,{children:\"convert\"})]}),`\n`,(0,i.jsx)(e.p,{children:\"El error m\\xE1s com\\xFAn que he visto en los primeros comentarios es \\xABno existe convert\\xBB. S\\xED existe \\u2014 simplemente no se llama as\\xED.\"}),`\n`,(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(e.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992,3 3,3 h 3 v 11 c 0,0.564129 -0.435871,1 -1,1 H 6 C 5.4358712,21 5,20.564129 5,20 V 4 C 5,3.4358712 5.4358712,3 6,3 Z M 15,3.4140625 18.585937,7 H 16 C 15.435871,7 15,6.5641288 15,6 Z\" fill=\"currentColor\" /></svg>',children:(0,i.jsxs)(e.code,{children:[(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"OVERVIEW: Create a disk image from an existing source (disk, disk image or\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"folder).\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"Source and destination disk image can be the same, which will perform the\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"conversion in place.\"})})]})})}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.code,{children:\"diskutil image create from\"}),\" acepta una imagen de disco como origen, as\\xED que es \",(0,i.jsx)(e.code,{children:\"hdiutil convert\"}),\" con otro nombre, y adem\\xE1s admite conversi\\xF3n in situ, algo que \",(0,i.jsx)(e.code,{children:\"hdiutil convert\"}),\" nunca hizo. Si cuenta verbos en lugar de leer el texto de ayuda, concluir\\xE1 que se elimin\\xF3 una capacidad cuando en realidad se ampli\\xF3.\"]}),`\n`,(0,i.jsxs)(e.h3,{id:\"el-vac\\xEDo-de-detach-es-real\",children:[\"El vac\\xEDo de \",(0,i.jsx)(e.code,{children:\"detach\"}),\" es real\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Este no es un simple cambio de nombre. No hay detach en ninguna parte de \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\":\"]}),`\n`,(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(e.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,i.jsxs)(e.code,{children:[(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"$\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" diskutil\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" image\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" detach\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" /dev/disk12\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"Error:\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" 2\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" unexpected\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" arguments:\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" 'detach',\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" '/dev/disk12'\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"Usage:\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" diskutil\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" image\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\" [--verbose] [--stdinpassphrase] [--plist] \"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"<\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"subcommand\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\">\"})]})]})})}),`\n`,(0,i.jsxs)(e.p,{children:[\"El reemplazo es el comando \",(0,i.jsx)(e.code,{children:\"diskutil\"}),\" de nivel superior:\"]}),`\n`,(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(e.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,i.jsxs)(e.code,{children:[(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"$\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" diskutil\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" eject\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" /dev/disk12\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"Disk\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" /dev/disk12\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" ejected\"})]})]})})}),`\n`,(0,i.jsxs)(e.p,{children:[\"Lo cual funciona bien \\u2014 pero note lo que le hace a un script. La simetr\\xEDa limpia de \",(0,i.jsx)(e.code,{children:\"hdiutil attach\"}),\" / \",(0,i.jsx)(e.code,{children:\"hdiutil detach\"}),\" se convierte en \",(0,i.jsx)(e.code,{children:\"diskutil image attach\"}),\" / \",(0,i.jsx)(e.code,{children:\"diskutil eject\"}),\", dos niveles de subcomando distintos del mismo binario. Cualquier funci\\xF3n wrapper que tenga y que empareje attach con detach necesita reestructurarse, no un simple buscar-y-reemplazar.\"]}),`\n`,(0,i.jsx)(e.p,{children:(0,i.jsx)(e.img,{alt:\"Migrando scripts de im\\xE1genes de disco\",src:\"/images/blog/hdiutil-deprecated-macos-27-diskutil-image-migration-guide-2026/content-1.webp\",width:\"1024\",height:\"572\"})}),`\n`,(0,i.jsxs)(e.h2,{id:\"qu\\xE9-hace-mejor-diskutil-image\",children:[\"Qu\\xE9 hace mejor \",(0,i.jsx)(e.code,{children:\"diskutil image\"})]}),`\n`,(0,i.jsx)(e.p,{children:\"Ser\\xEDa injusto presentar esto como una p\\xE9rdida pura. Hay tres cosas que mejoran de verdad.\"}),`\n`,(0,i.jsx)(e.h3,{id:\"asif-algo-que-hdiutil-no-puede-crear-en-absoluto\",children:\"ASIF, algo que hdiutil no puede crear en absoluto\"}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" admite el Apple Sparse Image Format. \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" no. Si quiere ASIF \\u2014 y para discos de m\\xE1quinas virtuales sobre APFS es el formato hacia el que Apple ha estado orientando todo \\u2014 \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" es la \\xFAnica herramienta que lo produce.\"]}),`\n`,(0,i.jsx)(e.p,{children:\"Vale la pena conocer las listas de formatos:\"}),`\n`,(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(e.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992,3 3,3 h 3 v 11 c 0,0.564129 -0.435871,1 -1,1 H 6 C 5.4358712,21 5,20.564129 5,20 V 4 C 5,3.4358712 5.4358712,3 6,3 Z M 15,3.4140625 18.585937,7 H 16 C 15.435871,7 15,6.5641288 15,6 Z\" fill=\"currentColor\" /></svg>',children:(0,i.jsxs)(e.code,{children:[(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"create blank --format : RAW, ASIF, UDSB          (default RAW)\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"create from  --format : ASIF, RAW, UDRO, UDSB,\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"                        UDZO, ULFO, ULMO         (default ULFO)\"})})]})})}),`\n`,(0,i.jsx)(e.h3,{id:\"monta-por-http-y-crea-discos-ram-directamente\",children:\"Monta por HTTP y crea discos RAM directamente\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"Desde la ayuda de \",(0,i.jsx)(e.code,{children:\"attach\"}),\":\"]}),`\n`,(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(e.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992,3 3,3 h 3 v 11 c 0,0.564129 -0.435871,1 -1,1 H 6 C 5.4358712,21 5,20.564129 5,20 V 4 C 5,3.4358712 5.4358712,3 6,3 Z M 15,3.4140625 18.585937,7 H 16 C 15.435871,7 15,6.5641288 15,6 Z\" fill=\"currentColor\" /></svg>',children:(0,i.jsx)(e.code,{children:(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"Supports 'ram://<size>', file paths, http[s].\"})})})})}),`\n`,(0,i.jsxs)(e.p,{children:[\"Crear un disco RAM en macOS ha sido tradicionalmente el inc\\xF3modo proceso de dos pasos \",(0,i.jsx)(e.code,{children:\"hdiutil attach -nomount ram://<sectors>\"}),\" seguido de \",(0,i.jsx)(e.code,{children:\"newfs_hfs\"}),\" o \",(0,i.jsx)(e.code,{children:\"diskutil eraseVolume\"}),\". Aqu\\xED es un solo argumento para una flag documentada.\"]}),`\n`,(0,i.jsx)(e.h3,{id:\"es-sustancialmente-m\\xE1s-r\\xE1pido\",children:\"Es sustancialmente m\\xE1s r\\xE1pido\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"Jeff Johnson, de Lapcat Software, compar\\xF3 ambos mientras investigaba la obsolescencia a principios de agosto de 2026, y midi\\xF3 que \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" completaba una operaci\\xF3n de create en 40\\u201345 segundos frente a los 110\\u2013115 segundos de \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\", produciendo adem\\xE1s una imagen m\\xE1s peque\\xF1a en el proceso. Eso no es una diferencia de redondeo. Para un job de CI que construye im\\xE1genes de disco en cada commit, es significativo.\"]}),`\n`,(0,i.jsx)(e.h2,{id:\"qu\\xE9-se-romper\\xE1-de-verdad-en-sus-scripts\",children:\"Qu\\xE9 se romper\\xE1 de verdad en sus scripts\"}),`\n`,(0,i.jsx)(e.p,{children:\"Las advertencias de obsolescencia no rompen builds. Estas cosas s\\xED lo har\\xE1n.\"}),`\n`,(0,i.jsxs)(e.h3,{id:\"1--puppetstrings-no-tiene-reemplazo\",children:[\"1. \",(0,i.jsx)(e.code,{children:\"-puppetstrings\"}),\" no tiene reemplazo\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"La flag \",(0,i.jsx)(e.code,{children:\"-puppetstrings\"}),\" de \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" emite salida de progreso parseable por m\\xE1quina, que es precisamente lo que un sistema de build necesita. Johnson se\\xF1ala su ausencia como uno de los vac\\xEDos notables. \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" tiene \",(0,i.jsx)(e.code,{children:\"--plist\"}),\" para \",(0,i.jsx)(e.em,{children:\"resultados\"}),\" estructurados, e imprime progreso legible para humanos como:\"]}),`\n`,(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(e.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992,3 3,3 h 3 v 11 c 0,0.564129 -0.435871,1 -1,1 H 6 C 5.4358712,21 5,20.564129 5,20 V 4 C 5,3.4358712 5.4358712,3 6,3 Z M 15,3.4140625 18.585937,7 H 16 C 15.435871,7 15,6.5641288 15,6 Z\" fill=\"currentColor\" /></svg>',children:(0,i.jsxs)(e.code,{children:[(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"[5% completed] [79% completed] [98% completed] [100% completed]\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"test.dmg created\"})})]})})}),`\n`,(0,i.jsxs)(e.p,{children:[\"Si tiene herramientas que parsean l\\xEDneas \",(0,i.jsx)(e.code,{children:\"PERCENT:\"}),\" de \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\", ese parser se queda sin nada a lo que engancharse.\"]}),`\n`,(0,i.jsxs)(e.h3,{id:\"2-varias-opciones-de-create-simplemente-desaparecieron\",children:[\"2. Varias opciones de \",(0,i.jsx)(e.code,{children:\"create\"}),\" simplemente desaparecieron\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"El art\\xEDculo de Johnson enumera \",(0,i.jsx)(e.code,{children:\"-[no]crossdev\"}),\", \",(0,i.jsx)(e.code,{children:\"-[no]scrub\"}),\", \",(0,i.jsx)(e.code,{children:\"-[no]anyowners\"}),\", \",(0,i.jsx)(e.code,{children:\"-skipunreadable\"}),\", \",(0,i.jsx)(e.code,{children:\"-[no]atomic\"}),\" y \",(0,i.jsx)(e.code,{children:\"-copyuid\"}),\" como opciones sin contraparte. Si construye im\\xE1genes a partir de carpetas de forma controlada \\u2014 instaladores, capturas forenses, cualquier caso donde la propiedad de los archivos o cu\\xE1les se incluyen deba ser exacto \\u2014 lea esa lista con cuidado. \",(0,i.jsx)(e.code,{children:\"-skipunreadable\"}),\" y \",(0,i.jsx)(e.code,{children:\"-copyuid\"}),\" en particular son estructurales para algunos scripts de empaquetado.\"]}),`\n`,(0,i.jsx)(e.h3,{id:\"3-el-comportamiento-de-scrubbing-cambi\\xF3-en-silencio\",children:\"3. El comportamiento de scrubbing cambi\\xF3 en silencio\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"Johnson reporta que \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" excluye autom\\xE1ticamente archivos temporales como las carpetas de papelera, comport\\xE1ndose como si \",(0,i.jsx)(e.code,{children:\"-scrub\"}),\" estuviera siempre activo. \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" solo hac\\xEDa scrub cuando se le ped\\xEDa. Si espera que el contenido de su imagen sea id\\xE9ntico byte a byte a un directorio de origen, esto producir\\xE1 una imagen distinta sin avisarle.\"]}),`\n`,(0,i.jsx)(e.h3,{id:\"4-el-manejo-de-permisos-falla-en-silencio\",children:\"4. El manejo de permisos falla en silencio\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"Esta es la que probar\\xEDa primero. Johnson descubri\\xF3 que donde \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" dispara un aviso de autenticaci\\xF3n al toparse con archivos propiedad de root, \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" no pregunta y simplemente falla. Un script que antes se deten\\xEDa a pedir credenciales ahora producir\\xE1 una imagen incompleta y, dependiendo de c\\xF3mo maneje los errores, puede reportar \\xE9xito.\"]}),`\n`,(0,i.jsx)(e.p,{children:\"Si construye im\\xE1genes a partir de directorios que contienen archivos que no le pertenecen, verifique el resultado en lugar de confiar en el c\\xF3digo de salida.\"}),`\n`,(0,i.jsx)(e.h3,{id:\"5-el-logging-es-m\\xE1s-pobre\",children:\"5. El logging es m\\xE1s pobre\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"La salida verbosa de \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" es menos detallada que la de \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\". Cuando un build falla a las 3 de la madrugada, es entonces cuando lo descubre.\"]}),`\n`,(0,i.jsx)(e.h2,{id:\"c\\xF3mo-migrar-sin-romper-el-soporte-de-macos-26\",children:\"C\\xF3mo migrar sin romper el soporte de macOS 26\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"La mayor\\xEDa tendremos que dar soporte a ambos durante un tiempo. La buena noticia, y el punto pr\\xE1ctico de todo este art\\xEDculo, es que \",(0,i.jsx)(e.strong,{children:\"no tiene que bifurcar seg\\xFAn la versi\\xF3n del sistema\"}),\", porque \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" tambi\\xE9n existe en macOS 26.\"]}),`\n`,(0,i.jsx)(e.p,{children:\"Detecte la capacidad, no la versi\\xF3n:\"}),`\n`,(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(e.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,i.jsxs)(e.code,{children:[(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6A737D\",\"--shiki-dark\":\"#6A737D\"},children:\"#!/bin/bash\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6A737D\",\"--shiki-dark\":\"#6A737D\"},children:\"# Prefer diskutil image; fall back to hdiutil where unavailable.\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\"}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"if\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\" diskutil\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" image\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --help\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\" >\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\"/dev/null\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\" 2>&1\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"; \"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"then\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"  USE_DISKUTIL\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"=\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\"1\"})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"else\"})}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"  USE_DISKUTIL\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"=\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\"0\"})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"fi\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\"}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"make_image_from_folder\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"() {\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"  local\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\" src\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"=\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\"$1\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\" dst\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"=\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\"$2\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"  if\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\" [ \"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"$USE_DISKUTIL\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\" -eq\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" 1\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\" ]; \"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"then\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"    diskutil\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" image\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" create\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" from\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"$src\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"$dst\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --format\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" UDZO\"})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"  else\"})}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"    hdiutil\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" create\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" -srcfolder\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"$src\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" -format\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" UDZO\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"$dst\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"  fi\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"}\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\"}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"attach_image\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"() {\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"  local\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\" img\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"=\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\"$1\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"  if\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\" [ \"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"$USE_DISKUTIL\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\" -eq\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" 1\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\" ]; \"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"then\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"    diskutil\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" image\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" attach\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"$img\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --nobrowse\"})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"  else\"})}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"    hdiutil\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" attach\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"$img\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" -nobrowse\"})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"  fi\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"}\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\"}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"detach_device\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"() {\"})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6A737D\",\"--shiki-dark\":\"#6A737D\"},children:\"  # Note the asymmetry: detach is NOT under `diskutil image`.\"})}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"  local\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\" dev\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"=\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\"$1\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"  if\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\" [ \"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"$USE_DISKUTIL\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\" -eq\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" 1\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\" ]; \"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"then\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"    diskutil\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" eject\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"$dev\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"  else\"})}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"    hdiutil\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" detach\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"$dev\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"  fi\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"}\"})})]})})}),`\n`,(0,i.jsx)(e.p,{children:\"Luego verifique el resultado, porque ah\\xED es donde viven las diferencias silenciosas:\"}),`\n`,(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(e.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,i.jsxs)(e.code,{children:[(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6A737D\",\"--shiki-dark\":\"#6A737D\"},children:\"# Compare what actually landed in the image against the source.\"})}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"diskutil\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" image\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" attach\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" build.dmg\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --nobrowse\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --mountPoint\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" /tmp/verify_mnt\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"diff\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" -rq\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" ./src\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" /tmp/verify_mnt/src\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"diskutil\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" eject\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" /tmp/verify_mnt\"})]})]})})}),`\n`,(0,i.jsxs)(e.p,{children:[\"Ese \",(0,i.jsx)(e.code,{children:\"diff -rq\"}),\" es el paso que no me saltar\\xEDa. Entre el scrubbing siempre activo y los fallos silenciosos de permisos, una imagen que se construye con \\xE9xito no es lo mismo que una imagen que contiene lo que usted pretend\\xEDa.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Si est\\xE1 montando un entorno de desarrollo para Mac desde cero, nuestra \",(0,i.jsx)(e.a,{href:\"/blog/ultimate-apple-silicon-development-environment-setup-guide-2025\",children:\"gu\\xEDa de configuraci\\xF3n del entorno de desarrollo para Apple silicon\"}),\" cubre las herramientas relacionadas, y la \",(0,i.jsx)(e.a,{href:\"/blog/mac-terminal-mastery-2025-command-line-productivity-guide\",children:\"gu\\xEDa de dominio de Terminal\"}),\" cubre los fundamentos de shell que estos scripts dan por sentado.\"]}),`\n`,(0,i.jsx)(e.p,{children:(0,i.jsx)(e.img,{alt:\"Verificando el contenido de la imagen de disco\",src:\"/images/blog/hdiutil-deprecated-macos-27-diskutil-image-migration-guide-2026/content-2.webp\",width:\"1024\",height:\"572\"})}),`\n`,(0,i.jsx)(e.h2,{id:\"un-ejemplo-trabajado-de-principio-a-fin\",children:\"Un ejemplo trabajado, de principio a fin\"}),`\n`,(0,i.jsx)(e.p,{children:\"Aqu\\xED tiene un recorrido completo ejecutado en macOS 26.5.2, para que vea la salida real en lugar de una reconstrucci\\xF3n.\"}),`\n`,(0,i.jsx)(e.p,{children:(0,i.jsx)(e.strong,{children:\"Crear una imagen a partir de una carpeta:\"})}),`\n`,(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(e.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,i.jsxs)(e.code,{children:[(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"$\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" mkdir\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" -p\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" src\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\" && \"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\"echo\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"hello\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\" >\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" src/file.txt\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"$\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" diskutil\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" image\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" create\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" from\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" src\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --format\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" UDZO\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" test.dmg\"})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"[5% completed] [79% completed] [98% completed] [99% completed] [100% completed]\"})}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\"test\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\".dmg\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" created\"})]})]})})}),`\n`,(0,i.jsx)(e.p,{children:(0,i.jsx)(e.strong,{children:\"Inspeccionarla:\"})}),`\n`,(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(e.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,i.jsxs)(e.code,{children:[(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"$\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" diskutil\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" image\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" info\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" test.dmg\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"Image\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" Format:\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" UDZO\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"Format\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" Description:\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" UDIF\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" read-only\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" compressed\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" image\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\" (zlib)\"})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\"}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"\tIdentity\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" Info:\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"\t\tUUID:\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" 061189CB-7502-4EA6-BFE3-424442C16D10\"})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\"}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"\tSize\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" Info:\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"\t\tEmpty\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" Bytes:\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" 3437056\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"\t\tTotal\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" Bytes:\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" 4233216\"})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\"}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"\tCompression\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" Info:\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"\t\tCompressed\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" Bytes:\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" 4124\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"\t\tCompression\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" Type:\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" zlib\"})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\"}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"\tEncryption\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" Info:\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"\t\tIs\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" Encrypted:\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" 0\"})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\"}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"\tMaster\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" Checksum\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" Info:\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"\t\tChecksum\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" Type:\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" crc32\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"\t\tChecksum\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" Value:\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" c4\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" e3\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" 90\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" 4b\"})]})]})})}),`\n`,(0,i.jsxs)(e.p,{children:[\"Note que \",(0,i.jsx)(e.code,{children:\"info\"}),\" cubre lo que antes le daban por separado \",(0,i.jsx)(e.code,{children:\"hdiutil imageinfo\"}),\", \",(0,i.jsx)(e.code,{children:\"isencrypted\"}),\" y parte de \",(0,i.jsx)(e.code,{children:\"checksum\"}),\". Reporta el checksum almacenado \\u2014 no lo verifica. Ese es el vac\\xEDo de \",(0,i.jsx)(e.code,{children:\"hdiutil verify\"}),\".\"]}),`\n`,(0,i.jsx)(e.p,{children:(0,i.jsx)(e.strong,{children:\"Montarla:\"})}),`\n`,(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(e.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,i.jsxs)(e.code,{children:[(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"$\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" diskutil\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" image\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" attach\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" test.dmg\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"/dev/disk12\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\"  \tGUID_partition_scheme\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"/dev/disk13s1\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\"\tApple_APFS_Volume\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\"    \t/Volumes/src\"})]})]})})}),`\n`,(0,i.jsx)(e.p,{children:(0,i.jsx)(e.strong,{children:\"Desmontarla \\u2014 con el comando distinto:\"})}),`\n`,(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(e.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,i.jsxs)(e.code,{children:[(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"$\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" diskutil\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" eject\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" /dev/disk12\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"Disk\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" /dev/disk12\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" ejected\"})]})]})})}),`\n`,(0,i.jsx)(e.h2,{id:\"im\\xE1genes-cifradas\",children:\"Im\\xE1genes cifradas\"}),`\n`,(0,i.jsx)(e.p,{children:\"Si usa im\\xE1genes de disco como contenedores cifrados, la mec\\xE1nica es sencilla, pero las opciones son m\\xE1s limitadas.\"}),`\n`,(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(e.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,i.jsxs)(e.code,{children:[(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6A737D\",\"--shiki-dark\":\"#6A737D\"},children:\"# Create an encrypted blank image\"})}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"diskutil\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" image\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" create\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" blank\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --encrypt\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --size\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" 10g\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --volumeName\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" Vault\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" vault.dmg\"})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\"}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6A737D\",\"--shiki-dark\":\"#6A737D\"},children:\"# Provide the passphrase on stdin rather than interactively\"})}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\"printf\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" '%s'\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"$PASSPHRASE\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\" |\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\" diskutil\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" image\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" create\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" blank\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --encrypt\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --stdinpassphrase\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" \\\\\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\"  --size\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" 10g\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --volumeName\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" Vault\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" vault.dmg\"})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\"}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6A737D\",\"--shiki-dark\":\"#6A737D\"},children:\"# Change the passphrase later\"})}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"diskutil\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" image\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" chpass\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" vault.dmg\"})]})]})})}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.code,{children:\"--encrypt\"}),\" est\\xE1 documentado como AES-256 y no hay elecci\\xF3n de algoritmo, lo cual es una simplificaci\\xF3n m\\xE1s que una p\\xE9rdida \\u2014 Apple elimin\\xF3 la versi\\xF3n de codificaci\\xF3n cifrada anterior all\\xE1 por macOS 13.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"La flag \",(0,i.jsx)(e.code,{children:\"--stdinpassphrase\"}),\" es la que debe usar en cualquier script. La propia p\\xE1gina man de \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" advierte que \",(0,i.jsx)(e.code,{children:\"-passphrase\"}),\" es insegura, por la raz\\xF3n habitual de que una contrase\\xF1a en la l\\xEDnea de comandos es visible en la tabla de procesos para todos los usuarios de la m\\xE1quina.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Si depende de las im\\xE1genes de disco por privacidad y no por conveniencia, vale la pena leer nuestra \",(0,i.jsx)(e.a,{href:\"/blog/mac-security-privacy-guide-2026\",children:\"gu\\xEDa de seguridad y privacidad en Mac\"}),\" para entender d\\xF3nde se sit\\xFAa una imagen cifrada respecto a FileVault \\u2014 resuelven problemas distintos, y un \",(0,i.jsx)(e.code,{children:\".dmg\"}),\" cifrado no protege nada mientras est\\xE1 montado.\"]}),`\n`,(0,i.jsx)(e.h2,{id:\"para-qu\\xE9-siguen-sirviendo-las-im\\xE1genes-de-disco\",children:\"Para qu\\xE9 siguen sirviendo las im\\xE1genes de disco\"}),`\n`,(0,i.jsx)(e.p,{children:\"Vale la pena preguntarse por qu\\xE9 importa todo esto, porque \\xABimagen de disco\\xBB suena a reliquia, y las herramientas a su alrededor son, discretamente, estructurales en varios lugares.\"}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Distribuci\\xF3n de aplicaciones.\"}),\" El \",(0,i.jsx)(e.code,{children:\".dmg\"}),\" sigue siendo la forma est\\xE1ndar de distribuir una app de Mac fuera de la App Store. Una imagen comprimida y de solo lectura que contiene un app bundle y un symlink a \",(0,i.jsx)(e.code,{children:\"/Applications\"}),\" es la convenci\\xF3n de arrastrar-para-instalar que los usuarios conocen. Cada una de esas im\\xE1genes la construye un script que invoca una herramienta de im\\xE1genes de disco.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Contenedores cifrados.\"}),\" Un \",(0,i.jsx)(e.code,{children:\".dmg\"}),\" cifrado es una b\\xF3veda port\\xE1til y autocontenida que se monta como un volumen y funciona en cualquier Mac sin software especial. A diferencia de FileVault, que protege un disco completo en reposo, una imagen cifrada protege un conjunto espec\\xEDfico de archivos que puede mover de un lado a otro \\u2014 a una memoria USB, a almacenamiento en la nube, a un colega.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Discos de m\\xE1quinas virtuales.\"}),\" Aqu\\xED es donde ASIF importa y donde la direcci\\xF3n de Apple se vuelve obvia.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Sparsebundles para backup en red.\"}),\" Cuando Time Machine hace backup hacia un destino de red, almacena el backup dentro de un sparsebundle \\u2014 una imagen de disco dividida en muchos archivos de banda peque\\xF1os, de modo que solo hace falta sincronizar las bandas que cambiaron. Cualquiera que haya mantenido uno de estos ha ejecutado \",(0,i.jsx)(e.code,{children:\"hdiutil compact\"}),\" para recuperar espacio de las bandas eliminadas.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Forense y archivo.\"}),\" Una imagen a nivel de bloque de un volumen, con un checksum, es la forma de preservar el estado exacto de un disco. \",(0,i.jsx)(e.code,{children:\"hdiutil verify\"}),\" es la forma de confirmarlo m\\xE1s tarde.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Compare esa lista con la tabla de migraci\\xF3n y los vac\\xEDos se alinean con comunidades espec\\xEDficas en lugar de ser aleatorios. Los desarrolladores de apps pierden el mecanismo de acuerdo de licencia y \",(0,i.jsx)(e.code,{children:\"-puppetstrings\"}),\". Los usuarios de backup y sparsebundle pierden \",(0,i.jsx)(e.code,{children:\"compact\"}),\". Los usuarios de archivo y forense pierden \",(0,i.jsx)(e.code,{children:\"verify\"}),\". A todo el que hace trabajo rutinario de create-convert-attach le va bien.\"]}),`\n`,(0,i.jsx)(e.h2,{id:\"asif-el-formato-que-solo-crea-la-nueva-herramienta\",children:\"ASIF: el formato que solo crea la nueva herramienta\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"El Apple Sparse Image Format es la se\\xF1al m\\xE1s clara de por qu\\xE9 Apple quiere alejar a la gente de \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\", porque \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" no puede producirlo en absoluto.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Una imagen sparse solo ocupa espacio en disco para los bloques que realmente contienen datos. Una imagen sparse de 100 GB que contiene 10 GB de archivos ocupa unos 10 GB en disco y crece a medida que se a\\xF1aden datos. Los antiguos formatos sparse \",(0,i.jsx)(e.code,{children:\"UDSP\"}),\" y sparsebundle \",(0,i.jsx)(e.code,{children:\"UDSB\"}),\" tambi\\xE9n hac\\xEDan esto, con problemas conocidos: los sparsebundles se fragmentan en miles de archivos de banda, y ambos formatos hist\\xF3ricamente recuperaban espacio de forma deficiente, que es exactamente por qu\\xE9 \",(0,i.jsx)(e.code,{children:\"hdiutil compact\"}),\" ten\\xEDa que existir.\"]}),`\n`,(0,i.jsx)(e.p,{children:\"ASIF est\\xE1 dise\\xF1ado sobre APFS en lugar de atornillado encima de \\xE9l, lo cual deja que el propio soporte de archivos sparse del sistema de archivos haga el trabajo en vez de que el formato de imagen lo emule. En la pr\\xE1ctica, el beneficio se nota m\\xE1s en la virtualizaci\\xF3n, donde el disco virtual de una VM es un archivo grande y en su mayor\\xEDa vac\\xEDo que cambia constantemente \\u2014 el caso que m\\xE1s castigaba a los formatos antiguos.\"}),`\n`,(0,i.jsx)(e.p,{children:\"Puede crear una hoy mismo:\"}),`\n`,(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(e.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,i.jsxs)(e.code,{children:[(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6A737D\",\"--shiki-dark\":\"#6A737D\"},children:\"# A 100GB ASIF image that occupies only what it uses\"})}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"diskutil\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" image\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" create\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" blank\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --format\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" ASIF\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --size\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" 100g\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" \\\\\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\"  --volumeName\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" VMDisk\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" vmdisk.asif\"})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\"}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6A737D\",\"--shiki-dark\":\"#6A737D\"},children:\"# Convert an existing image to ASIF\"})}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"diskutil\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" image\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" create\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" from\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" old.dmg\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" new.asif\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --format\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" ASIF\"})]})]})})}),`\n`,(0,i.jsxs)(e.p,{children:[\"Note que el formato se infiere de la extensi\\xF3n \\u2014 \",(0,i.jsx)(e.code,{children:\"create blank\"}),\" usa \",(0,i.jsx)(e.code,{children:\"RAW\"}),\" por defecto \\xABa menos que la ruta de la imagen tenga extensi\\xF3n .asif o .sparsebundle\\xBB. Nombrar el archivo correctamente basta; pasar \",(0,i.jsx)(e.code,{children:\"--format\"}),\" adem\\xE1s es solo una precauci\\xF3n extra.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"La contrapartida es la portabilidad. ASIF es nuevo, y una imagen ASIF no se abrir\\xE1 en un macOS m\\xE1s antiguo ni en nada que no sea un Mac. Para un disco de VM o un volumen de trabajo local eso es irrelevante. Para cualquier cosa que le entregue a otra persona, use \",(0,i.jsx)(e.code,{children:\"UDZO\"}),\" y conserve la compatibilidad.\"]}),`\n`,(0,i.jsx)(e.h2,{id:\"d\\xF3nde-encaja-esto-en-un-pipeline-de-distribuci\\xF3n\",children:\"D\\xF3nde encaja esto en un pipeline de distribuci\\xF3n\"}),`\n`,(0,i.jsx)(e.p,{children:\"Si distribuye una app de Mac fuera de la App Store, el paso de la imagen de disco se ubica en medio de una cadena, y vale la pena ver d\\xF3nde aterriza el cambio.\"}),`\n`,(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(e.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,i.jsxs)(e.code,{children:[(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6A737D\",\"--shiki-dark\":\"#6A737D\"},children:\"#!/bin/bash\"})}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\"set\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" -euo\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" pipefail\"})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\"}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"APP\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"=\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"build/MyApp.app\"'})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"DMG\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"=\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"dist/MyApp.dmg\"'})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"STAGE\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\"=\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"$('}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"mktemp\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" -d\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:')\"'})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\"}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6A737D\",\"--shiki-dark\":\"#6A737D\"},children:\"# 1. Sign the app bundle (unchanged by any of this)\"})}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"codesign\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --force\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --options\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" runtime\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --timestamp\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" \\\\\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\"  --sign\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"Developer ID Application: Example Inc (TEAMID123)\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" \\\\\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'  \"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"$APP\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\"}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6A737D\",\"--shiki-dark\":\"#6A737D\"},children:\"# 2. Stage the contents the user will see\"})}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"cp\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" -R\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"$APP\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"$STAGE\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'/\"'})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"ln\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" -s\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" /Applications\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"$STAGE\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'/Applications\"'})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\"}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6A737D\",\"--shiki-dark\":\"#6A737D\"},children:\"# 3. Build the image \\u2014 the step this article is about\"})}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"diskutil\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" image\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" create\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" from\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"$STAGE\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"$DMG\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --format\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" UDZO\"})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\"}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6A737D\",\"--shiki-dark\":\"#6A737D\"},children:\"# 4. Sign the image itself\"})}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"codesign\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --force\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --timestamp\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" \\\\\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\"  --sign\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"Developer ID Application: Example Inc (TEAMID123)\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" \\\\\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'  \"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"$DMG\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\"}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6A737D\",\"--shiki-dark\":\"#6A737D\"},children:\"# 5. Notarize and staple\"})}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"xcrun\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" notarytool\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" submit\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"$DMG\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --keychain-profile\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"AC_NOTARY\"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --wait\"})]}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"xcrun\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" stapler\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" staple\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"$DMG\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\"}),`\n`,(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"rm\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" -rf\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"'}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#24292E\",\"--shiki-dark\":\"#E1E4E8\"},children:\"$STAGE\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'\"'})]})]})})}),`\n`,(0,i.jsx)(e.p,{children:\"Solo cambia el paso 3. La firma, la notarizaci\\xF3n y el stapling no se ven afectados \\u2014 operan sobre la imagen terminada y no les importa qu\\xE9 herramienta la produjo.\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"Hay dos cosas que vigilar en un pipeline real. Primero, verifique que el contenido preparado (staged) lleg\\xF3 correctamente, debido al scrubbing silencioso y al comportamiento de permisos descritos antes \\u2014 un \",(0,i.jsx)(e.code,{children:\"diff -rq\"}),\" entre \",(0,i.jsx)(e.code,{children:\"$STAGE\"}),\" y el resultado montado es un seguro barato. Segundo, si su script actual incrusta un acuerdo de licencia con \",(0,i.jsx)(e.code,{children:\"hdiutil udifrez\"}),\", ese paso no tiene reemplazo y est\\xE1 obsoleto desde macOS 12. Mantenga \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" para ese paso mientras exista y planifique una alternativa.\"]}),`\n`,(0,i.jsx)(e.h2,{id:\"soluci\\xF3n-de-problemas-comunes\",children:\"Soluci\\xF3n de problemas comunes\"}),`\n`,(0,i.jsx)(e.h3,{id:\"diskutil-image-command-not-found-o-el-subcomando-no-se-reconoce\",children:\"\\xABdiskutil image: command not found\\xBB o el subcomando no se reconoce\"}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Problema\"}),\": Est\\xE1 en una versi\\xF3n de macOS anterior a 26, donde el verbo \",(0,i.jsx)(e.code,{children:\"image\"}),\" no existe.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Soluci\\xF3n\"}),\": Use la comprobaci\\xF3n de capacidad mostrada antes en lugar de asumir. \",(0,i.jsx)(e.code,{children:\"diskutil image --help >/dev/null 2>&1\"}),\" devuelve un valor distinto de cero en los sistemas que carecen de \\xE9l, lo cual es una bifurcaci\\xF3n confiable. No pruebe \",(0,i.jsx)(e.code,{children:\"sw_vers\"}),\" \\u2014 lo que realmente le importa es la presencia del subcomando.\"]}),`\n`,(0,i.jsx)(e.h3,{id:\"la-imagen-se-construye-pero-le-faltan-archivos\",children:\"La imagen se construye pero le faltan archivos\"}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Problema\"}),\": Dos causas probables. O bien \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" omiti\\xF3 archivos que no pudo leer con su usuario y no pidi\\xF3 autenticaci\\xF3n, o bien su scrubbing siempre activo elimin\\xF3 elementos que \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" habr\\xEDa incluido.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Soluci\\xF3n\"}),\": Monte el resultado y h\\xE1gale \",(0,i.jsx)(e.code,{children:\"diff -rq\"}),\" contra el directorio de origen. Si faltan archivos por un tema de propiedad, ejecute el build con los privilegios necesarios en lugar de esperar un aviso. No conf\\xEDe solo en el c\\xF3digo de salida.\"]}),`\n`,(0,i.jsx)(e.h3,{id:\"el-parseo-de-progreso-se-rompi\\xF3-en-ci\",children:\"El parseo de progreso se rompi\\xF3 en CI\"}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Problema\"}),\": \",(0,i.jsx)(e.code,{children:\"-puppetstrings\"}),\" no tiene equivalente en \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\", as\\xED que los scripts que parseaban el progreso legible por m\\xE1quina de \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" se quedan sin nada que leer.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Soluci\\xF3n\"}),\": Use \",(0,i.jsx)(e.code,{children:\"--plist\"}),\" para el resultado estructurado y trate el progreso como no disponible. Si su CI necesita el progreso espec\\xEDficamente, mantener \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" para ese paso es leg\\xEDtimo \\u2014 est\\xE1 obsoleto, no eliminado, y no hay fecha de eliminaci\\xF3n anunciada.\"]}),`\n`,(0,i.jsx)(e.h3,{id:\"no-se-puede-hacer-detach--resource-busy\",children:\"No se puede hacer detach \\u2014 \\xABresource busy\\xBB\"}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Problema\"}),\": Algo todav\\xEDa tiene el volumen abierto. Esto se comporta igual que siempre.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Soluci\\xF3n\"}),\": \",(0,i.jsx)(e.code,{children:\"lsof +D /Volumes/YourVolume\"}),\" para encontrar qui\\xE9n lo retiene, luego \",(0,i.jsx)(e.code,{children:\"diskutil eject\"}),\". La indexaci\\xF3n de Spotlight y los esc\\xE1neres antivirus son culpables frecuentes; montar con \",(0,i.jsx)(e.code,{children:\"--nobrowse\"}),\" evita parte del problema manteniendo el volumen fuera de Finder.\"]}),`\n`,(0,i.jsxs)(e.h3,{id:\"un-dmg-con-acuerdo-de-licencia-ya-no-se-construye\",children:[\"Un \",(0,i.jsx)(e.code,{children:\".dmg\"}),\" con acuerdo de licencia ya no se construye\"]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Problema\"}),\": El mecanismo de acuerdo de licencia depende de \",(0,i.jsx)(e.code,{children:\"hdiutil udifrez\"}),\", que Apple declar\\xF3 obsoleto all\\xE1 por macOS 12 y que no tiene contraparte en \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\".\"]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Soluci\\xF3n\"}),\": No hay ruta de reemplazo. Siga usando \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" para ese paso mientras exista, y planifique un m\\xE9todo de distribuci\\xF3n que no dependa de un acuerdo incrustado. Esto lleva cuatro a\\xF1os avisado, algo que vale la pena saber si apenas lo est\\xE1 descubriendo ahora.\"]}),`\n`,(0,i.jsx)(e.h2,{id:\"preguntas-frecuentes\",children:\"Preguntas frecuentes\"}),`\n`,(0,i.jsx)(e.h3,{id:\"hdiutil-sigue-funcionando-en-macos-27\",children:\"\\xBFhdiutil sigue funcionando en macOS 27?\"}),`\n`,(0,i.jsx)(e.p,{children:\"S\\xED. Est\\xE1 obsoleto, no eliminado. La obsolescencia es Apple se\\xF1alando una intenci\\xF3n y poniendo en marcha un reloj \\u2014 no es un cambio funcional. Nada de lo que funciona hoy deja de funcionar al instalar macOS 27.\"}),`\n`,(0,i.jsx)(e.h3,{id:\"cu\\xE1ndo-se-eliminar\\xE1-realmente-hdiutil\",children:\"\\xBFCu\\xE1ndo se eliminar\\xE1 realmente hdiutil?\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"Apple no lo ha dicho. Al mirar el propio historial de la p\\xE1gina man, el patr\\xF3n de Apple con esta herramienta ha sido declarar obsoleta una funci\\xF3n en una versi\\xF3n y eliminarla una o m\\xE1s versiones mayores despu\\xE9s \\u2014 \",(0,i.jsx)(e.code,{children:\"internet-enable\"}),\" y el soporte de doble fork de OS 9 tardaron cada uno al menos un ciclo completo. Cualquiera que le d\\xE9 una versi\\xF3n espec\\xEDfica de eliminaci\\xF3n est\\xE1 adivinando.\"]}),`\n`,(0,i.jsx)(e.h3,{id:\"puedo-usar-diskutil-image-en-macos-26-tahoe\",children:\"\\xBFPuedo usar diskutil image en macOS 26 Tahoe?\"}),`\n`,(0,i.jsx)(e.p,{children:\"S\\xED, y este es el dato m\\xE1s \\xFAtil de todo el art\\xEDculo. Verificado en macOS 26.5.2 (build 25F84). Puede migrar sus scripts y probarlos ahora, en el sistema que ya usa, en lugar de esperar a macOS 27.\"}),`\n`,(0,i.jsx)(e.h3,{id:\"es-diskutil-image-un-reemplazo-completo-de-hdiutil\",children:\"\\xBFEs diskutil image un reemplazo completo de hdiutil?\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"No, todav\\xEDa no. \",(0,i.jsx)(e.code,{children:\"verify\"}),\", \",(0,i.jsx)(e.code,{children:\"compact\"}),\", \",(0,i.jsx)(e.code,{children:\"makehybrid\"}),\" y \",(0,i.jsx)(e.code,{children:\"burn\"}),\" no tienen contraparte, y faltan varias opciones de \",(0,i.jsx)(e.code,{children:\"create\"}),\" para controlar exactamente qu\\xE9 archivos se incluyen. Para el camino habitual \\u2014 create, convert, attach, inspect, resize, encrypt \\u2014 s\\xED est\\xE1 completo.\"]}),`\n`,(0,i.jsx)(e.h3,{id:\"por-qu\\xE9-hizo-esto-apple\",children:\"\\xBFPor qu\\xE9 hizo esto Apple?\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"Apple no ha publicado una raz\\xF3n. Lo que se puede observar es que \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" es m\\xE1s r\\xE1pido en benchmarks, produce im\\xE1genes m\\xE1s peque\\xF1as, admite el formato ASIF m\\xE1s nuevo que \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" no puede producir, y presenta una superficie de comandos mucho m\\xE1s peque\\xF1a. Consolidar el manejo de im\\xE1genes de disco dentro de \",(0,i.jsx)(e.code,{children:\"diskutil\"}),\", junto al resto de la gesti\\xF3n de almacenamiento, es una direcci\\xF3n coherente. Esa es una lectura de la evidencia, no una declaraci\\xF3n de Apple.\"]}),`\n`,(0,i.jsx)(e.h3,{id:\"se-romper\\xE1-mi-app-si-invoca-hdiutil-desde-shell\",children:\"\\xBFSe romper\\xE1 mi app si invoca hdiutil desde shell?\"}),`\n`,(0,i.jsx)(e.p,{children:\"No en macOS 27. Planifique migrar de todas formas \\u2014 y use la comprobaci\\xF3n de capacidad para que una sola ruta de c\\xF3digo cubra ambos casos, lo cual es m\\xE1s f\\xE1cil de lo que suena, precisamente porque el comando nuevo ya existe en macOS 26.\"}),`\n`,(0,i.jsx)(e.h2,{id:\"conclusi\\xF3n\",children:\"Conclusi\\xF3n\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"El titular \\u2014 se est\\xE1 retirando un comando de Terminal de 25 a\\xF1os \\u2014 es cierto, pero enga\\xF1oso en ambas direcciones. Subestima el cambio para cualquiera cuyos scripts de build usen \",(0,i.jsx)(e.code,{children:\"verify\"}),\", \",(0,i.jsx)(e.code,{children:\"compact\"}),\", \",(0,i.jsx)(e.code,{children:\"makehybrid\"}),\" o las opciones detalladas de \",(0,i.jsx)(e.code,{children:\"create\"}),\", porque esas no tienen ruta hacia adelante hoy. Y lo sobreestima para todos los dem\\xE1s, porque \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" sigue funcionando en macOS 27, Apple no ha anunciado fecha de eliminaci\\xF3n, y la obsolescencia es el \\xFAltimo paso de un estrechamiento que ha estado documentado en la propia p\\xE1gina man de la herramienta desde macOS 10.15.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Lo genuinamente \\xFAtil de saber es que el reemplazo no est\\xE1 en el futuro. \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" est\\xE1 en su Mac ahora mismo, en macOS 26, con \",(0,i.jsx)(e.code,{children:\"create\"}),\", \",(0,i.jsx)(e.code,{children:\"attach\"}),\", \",(0,i.jsx)(e.code,{children:\"info\"}),\", \",(0,i.jsx)(e.code,{children:\"resize\"}),\" y \",(0,i.jsx)(e.code,{children:\"chpass\"}),\" funcionando. Puede hacer esta migraci\\xF3n un martes por la tarde en el sistema que ya tiene, verificarla con \",(0,i.jsx)(e.code,{children:\"diff -rq\"}),\", y dejar de pensar en ello.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Solo recuerde que \",(0,i.jsx)(e.code,{children:\"detach\"}),\" no est\\xE1 donde lo espera.\"]}),`\n`,(0,i.jsx)(e.p,{children:(0,i.jsxs)(e.em,{children:[\"Lectura relacionada: \",(0,i.jsx)(e.a,{href:\"/blog/mac-terminal-mastery-2025-command-line-productivity-guide\",children:\"Dominio de Terminal en macOS\"}),\", \",(0,i.jsx)(e.a,{href:\"/blog/ultimate-apple-silicon-development-environment-setup-guide-2025\",children:\"Configuraci\\xF3n del entorno de desarrollo para Apple silicon\"}),\", y \",(0,i.jsx)(e.a,{href:\"/blog/encrypted-hfs-plus-dropped-macos-28-convert-apfs-time-machine-guide-2026\",children:\"los vol\\xFAmenes HFS+ cifrados se est\\xE1n eliminando en macOS 28\"}),\".\"]})})]})}function o(s={}){let{wrapper:e}=s.components||{};return e?(0,i.jsx)(e,{...s,children:(0,i.jsx)(t,{...s})}):t(s)}return E(b);})();\n;return Component;","toc":[{"title":"Puntos Clave","url":"#puntos-clave","depth":2},{"title":"Primero: confírmelo en su propio Mac","url":"#primero-confírmelo-en-su-propio-mac","depth":2},{"title":"Esto no salió de la nada","url":"#esto-no-salió-de-la-nada","depth":2},{"title":"La tabla de migración","url":"#la-tabla-de-migración","depth":2},{"title":"La sorpresa de convert","url":"#la-sorpresa-de-convert","depth":3},{"title":"El vacío de detach es real","url":"#el-vacío-de-detach-es-real","depth":3},{"title":"Qué hace mejor diskutil image","url":"#qué-hace-mejor-diskutil-image","depth":2},{"title":"ASIF, algo que hdiutil no puede crear en absoluto","url":"#asif-algo-que-hdiutil-no-puede-crear-en-absoluto","depth":3},{"title":"Monta por HTTP y crea discos RAM directamente","url":"#monta-por-http-y-crea-discos-ram-directamente","depth":3},{"title":"Es sustancialmente más rápido","url":"#es-sustancialmente-más-rápido","depth":3},{"title":"Qué se romperá de verdad en sus scripts","url":"#qué-se-romperá-de-verdad-en-sus-scripts","depth":2},{"title":"1. -puppetstrings no tiene reemplazo","url":"#1--puppetstrings-no-tiene-reemplazo","depth":3},{"title":"2. Varias opciones de create simplemente desaparecieron","url":"#2-varias-opciones-de-create-simplemente-desaparecieron","depth":3},{"title":"3. El comportamiento de scrubbing cambió en silencio","url":"#3-el-comportamiento-de-scrubbing-cambió-en-silencio","depth":3},{"title":"4. El manejo de permisos falla en silencio","url":"#4-el-manejo-de-permisos-falla-en-silencio","depth":3},{"title":"5. El logging es más pobre","url":"#5-el-logging-es-más-pobre","depth":3},{"title":"Cómo migrar sin romper el soporte de macOS 26","url":"#cómo-migrar-sin-romper-el-soporte-de-macos-26","depth":2},{"title":"Un ejemplo trabajado, de principio a fin","url":"#un-ejemplo-trabajado-de-principio-a-fin","depth":2},{"title":"Imágenes cifradas","url":"#imágenes-cifradas","depth":2},{"title":"Para qué siguen sirviendo las imágenes de disco","url":"#para-qué-siguen-sirviendo-las-imágenes-de-disco","depth":2},{"title":"ASIF: el formato que solo crea la nueva herramienta","url":"#asif-el-formato-que-solo-crea-la-nueva-herramienta","depth":2},{"title":"Dónde encaja esto en un pipeline de distribución","url":"#dónde-encaja-esto-en-un-pipeline-de-distribución","depth":2},{"title":"Solución de problemas comunes","url":"#solución-de-problemas-comunes","depth":2},{"title":"«diskutil image: command not found» o el subcomando no se reconoce","url":"#diskutil-image-command-not-found-o-el-subcomando-no-se-reconoce","depth":3},{"title":"La imagen se construye pero le faltan archivos","url":"#la-imagen-se-construye-pero-le-faltan-archivos","depth":3},{"title":"El parseo de progreso se rompió en CI","url":"#el-parseo-de-progreso-se-rompió-en-ci","depth":3},{"title":"No se puede hacer detach — «resource busy»","url":"#no-se-puede-hacer-detach--resource-busy","depth":3},{"title":"Un .dmg con acuerdo de licencia ya no se construye","url":"#un-dmg-con-acuerdo-de-licencia-ya-no-se-construye","depth":3},{"title":"Preguntas frecuentes","url":"#preguntas-frecuentes","depth":2},{"title":"¿hdiutil sigue funcionando en macOS 27?","url":"#hdiutil-sigue-funcionando-en-macos-27","depth":3},{"title":"¿Cuándo se eliminará realmente hdiutil?","url":"#cuándo-se-eliminará-realmente-hdiutil","depth":3},{"title":"¿Puedo usar diskutil image en macOS 26 Tahoe?","url":"#puedo-usar-diskutil-image-en-macos-26-tahoe","depth":3},{"title":"¿Es diskutil image un reemplazo completo de hdiutil?","url":"#es-diskutil-image-un-reemplazo-completo-de-hdiutil","depth":3},{"title":"¿Por qué hizo esto Apple?","url":"#por-qué-hizo-esto-apple","depth":3},{"title":"¿Se romperá mi app si invoca hdiutil desde shell?","url":"#se-romperá-mi-app-si-invoca-hdiutil-desde-shell","depth":3},{"title":"Conclusión","url":"#conclusión","depth":2}],"estimatedTime":23}