{"code":"var Component=(()=>{var k=Object.create;var a=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var m=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var F=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),y=(s,e)=>{for(var n in e)a(s,n,{get:e[n],enumerable:!0})},h=(s,e,n,r)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let l of u(e))!g.call(s,l)&&l!==n&&a(s,l,{get:()=>e[l],enumerable:!(r=o(e,l))||r.enumerable});return s};var C=(s,e,n)=>(n=s!=null?k(m(s)):{},h(e||!s||!s.__esModule?a(n,\"default\",{value:s,enumerable:!0}):n,s)),E=s=>h(a({},\"__esModule\",{value:!0}),s);var d=F((B,t)=>{t.exports=_jsx_runtime});var f={};y(f,{default:()=>p});var i=C(d());function c(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 page de manuel de macOS 27 Golden Gate comporte une ligne qui n'y a jamais figur\\xE9 auparavant :\"}),`\n`,(0,i.jsxs)(e.blockquote,{children:[`\n`,(0,i.jsx)(e.p,{children:\"In macOS 27.0, hdiutil is deprecated. Use diskutil image instead for all disk image operations.\"}),`\n`]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" est le moyen de cr\\xE9er, monter, convertir et inspecter des images disque sur Mac depuis Mac OS X 10.0. Si vous avez d\\xE9j\\xE0 distribu\\xE9 un \",(0,i.jsx)(e.code,{children:\".dmg\"}),\", script\\xE9 un installeur, construit un job CI qui empaquette une app Mac, ou cr\\xE9\\xE9 un conteneur chiffr\\xE9 pour garder quelque chose de priv\\xE9, vous l'avez utilis\\xE9 \\u2014 directement ou via un outil qui l'appelait pour vous.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Voici ce que la plupart des articles ont manqu\\xE9 : \",(0,i.jsx)(e.strong,{children:\"le rempla\\xE7ant n'arrive pas plus tard. Il est d\\xE9j\\xE0 sur votre Mac.\"}),\" Ouvrez Terminal sous macOS 26 Tahoe d\\xE8s maintenant et ex\\xE9cutez \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\". Il r\\xE9pond.\"]}),`\n`,(0,i.jsx)(e.p,{children:(0,i.jsx)(e.img,{alt:\"D\\xE9pr\\xE9ciation de hdiutil dans 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:\"points-cl\\xE9s\",children:\"Points cl\\xE9s\"}),`\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\"}),\" fonctionne d\\xE9j\\xE0 sous macOS 26.\"]}),\" V\\xE9rifi\\xE9 sur macOS 26.5.2 (build 25F84). Vous pouvez migrer et tester vos scripts d\\xE8s aujourd'hui, avant la sortie de macOS 27.\"]}),`\n`,(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:\"D\\xE9pr\\xE9ci\\xE9 ne veut pas dire supprim\\xE9.\"}),\" \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" fonctionne toujours dans macOS 27. Rien ne casse le premier jour. Mais Apple le r\\xE9duit progressivement depuis sept ans, et la page de manuel documente chaque \\xE9tape.\"]}),`\n`,(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:\"La surface de commande est bien plus r\\xE9duite.\"}),\" \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" expose 23 verbes. \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" en expose 5.\"]}),`\n`,(0,i.jsxs)(e.li,{children:[(0,i.jsxs)(e.strong,{children:[\"Il n'y a pas de \",(0,i.jsx)(e.code,{children:\"detach\"}),\".\"]}),\" Vous pouvez attacher une image disque avec \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\", mais pas la d\\xE9tacher \\u2014 cela passe d\\xE9sormais par \",(0,i.jsx)(e.code,{children:\"diskutil eject\"}),\".\"]}),`\n`,(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:\"Certaines fonctions n'ont r\\xE9ellement aucun rempla\\xE7ant pour l'instant\"}),\", notamment \",(0,i.jsx)(e.code,{children:\"verify\"}),\", \",(0,i.jsx)(e.code,{children:\"compact\"}),\" et \",(0,i.jsx)(e.code,{children:\"makehybrid\"}),\". Si vos scripts de build les utilisent, vous n'avez pas de chemin de migration aujourd'hui.\"]}),`\n`]}),`\n`,(0,i.jsx)(e.h2,{id:\"dabord--v\\xE9rifiez-le-sur-votre-propre-mac\",children:\"D'abord : v\\xE9rifiez-le sur votre propre Mac\"}),`\n`,(0,i.jsx)(e.p,{children:\"Ne me croyez pas sur parole. Une seule commande :\"}),`\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:\"Sous macOS 26.5.2, cela affiche :\"}),`\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:[\"Cinq sous-commandes. Comparez maintenant cela avec ce que propose \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\", tir\\xE9 directement de sa propre page de manuel :\"]}),`\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:[\"Cela fait 23 verbes contre 5 sous-commandes. Ce ratio est alarmant au premier abord, et il est \\xE9galement trompeur, car une comparaison verbe \\xE0 verbe donne une r\\xE9ponse fausse. Plusieurs verbes de \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" sont int\\xE9gr\\xE9s dans \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" sous des noms diff\\xE9rents, plusieurs \\xE9taient d\\xE9j\\xE0 d\\xE9pr\\xE9ci\\xE9s depuis des ann\\xE9es, et l'un d'eux, important, est pass\\xE9 sous une commande enti\\xE8rement diff\\xE9rente.\"]}),`\n`,(0,i.jsx)(e.p,{children:\"D\\xE9terminer qui est qui, c'est \\xE7a, la vraie migration. Faisons-le correctement.\"}),`\n`,(0,i.jsx)(e.h2,{id:\"ce-nest-pas-sorti-de-nulle-part\",children:\"Ce n'est pas sorti de nulle part\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"Avant le tableau de migration, un peu de contexte qui rend la d\\xE9pr\\xE9ciation moins brutale qu'il n'y para\\xEEt. La page de manuel de \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" contient une section de compatibilit\\xE9 qui se lit comme sept ann\\xE9es d'un r\\xE9tr\\xE9cissement progressif de l'outil par Apple. Ceci est sur votre Mac d\\xE8s maintenant \\u2014 tapez \",(0,i.jsx)(e.code,{children:\"man hdiutil\"}),\" et cherchez les titres de version :\"]}),`\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:\"Introduction de la compression lzma dans le format ULMO\"}),`\n`,(0,i.jsxs)(e.li,{children:[\"D\\xE9pr\\xE9ciation du support des fichiers \\xE0 double fourche de style OS 9 (\",(0,i.jsx)(e.code,{children:\"hdiutil flatten\"}),\"/\",(0,i.jsx)(e.code,{children:\"unflatten\"}),\")\"]}),`\n`,(0,i.jsxs)(e.li,{children:[\"Suppression de la commande d\\xE9pr\\xE9ci\\xE9e \",(0,i.jsx)(e.code,{children:\"hdiutil internet-enable\"}),\" et des flags d'attachement 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:\"Suppression du support des formats DiskCopy42, DART et NDIF\"}),`\n`,(0,i.jsx)(e.li,{children:\"Suppression du support des encodages AppleSingle et MacBinary\"}),`\n`,(0,i.jsx)(e.li,{children:\"Suppression du support des fichiers \\xE0 double fourche de style OS 9\"}),`\n`,(0,i.jsx)(e.li,{children:\"Changement du syst\\xE8me de fichiers par d\\xE9faut pour les nouvelles images, pass\\xE9 \\xE0 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:\"D\\xE9pr\\xE9ciation du format UDBZ (compression bzip2)\"}),`\n`,(0,i.jsxs)(e.li,{children:[\"D\\xE9pr\\xE9ciation des images UDIF segment\\xE9es (\",(0,i.jsx)(e.code,{children:\"hdiutil segment\"}),\", \",(0,i.jsx)(e.code,{children:\"-segmentSize\"}),\")\"]}),`\n`,(0,i.jsxs)(e.li,{children:[\"D\\xE9pr\\xE9ciation de \",(0,i.jsx)(e.code,{children:\"hdiutil udifrez\"}),\"/\",(0,i.jsx)(e.code,{children:\"udifderez\"}),\" (int\\xE9gration et extraction de ressources)\"]}),`\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:[\"Suppression de l'option \",(0,i.jsx)(e.code,{children:\"encrypted-encoding-version\"}),\" ; toutes les nouvelles images chiffr\\xE9es utilisent d\\xE9sormais la version 2\"]}),`\n`]}),`\n`,(0,i.jsxs)(e.p,{children:[\"La page de manuel signale \\xE9galement, en ligne, que \",(0,i.jsx)(e.code,{children:\"-passphrase\"}),\" n'est pas s\\xFBr, que les images segment\\xE9es sont d\\xE9pr\\xE9ci\\xE9es, et que UDBZ est d\\xE9pr\\xE9ci\\xE9.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Lue comme un arc continu, la d\\xE9pr\\xE9ciation de macOS 27 est la derni\\xE8re \\xE9tape d'un processus entam\\xE9 aux alentours de 2019, et non une d\\xE9cision prise cet \\xE9t\\xE9. C'est important pour la planification : Apple retire des \\xE9l\\xE9ments de cet outil lentement et les annonce d'abord dans la page de manuel. \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" dans macOS 27 est d\\xE9pr\\xE9ci\\xE9, pas disparu, et aucune date de suppression n'a \\xE9t\\xE9 annonc\\xE9e.\"]}),`\n`,(0,i.jsx)(e.h2,{id:\"le-tableau-de-migration\",children:\"Le tableau de migration\"}),`\n`,(0,i.jsx)(e.p,{children:\"Voici la carte. J'ai test\\xE9 chacun de ces \\xE9l\\xE9ments sous 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:\"Ce que vous voulez faire\"}),(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:\"Monter une image\"}),(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:\"D\\xE9monter une image\"}),(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:[\"Absent de \",(0,i.jsx)(e.code,{children:\"diskutil image\"})]}),\" \\u2014 utilisez \",(0,i.jsx)(e.code,{children:\"diskutil eject /dev/diskN\"})]})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"Cr\\xE9er une image vierge\"}),(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:\"Cr\\xE9er une image \\xE0 partir d'un dossier\"}),(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 un format\"}),(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:\"Inspecter une image\"}),(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:\"V\\xE9rifier si elle est chiffr\\xE9e\"}),(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:\"Redimensionner\"}),(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:\"Changer le mot de passe\"}),(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:\"V\\xE9rifier la somme de contr\\xF4le\"}),(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:\"Aucun \\xE9quivalent\"})})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"Compacter une image 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:\"Aucun \\xE9quivalent\"})})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"Cr\\xE9er une image hybride/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:\"Aucun \\xE9quivalent\"})})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"Int\\xE9grer un accord de licence\"}),(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:\"Aucun \\xE9quivalent\"}),\" (d\\xE9pr\\xE9ci\\xE9 depuis macOS 12)\"]})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"Graver sur un support optique\"}),(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:\"Aucun \\xE9quivalent\"})})]})]})]}),`\n`,(0,i.jsxs)(e.h3,{id:\"la-surprise-du-convert\",children:[\"La surprise du \",(0,i.jsx)(e.code,{children:\"convert\"})]}),`\n`,(0,i.jsx)(e.p,{children:\"L'erreur la plus fr\\xE9quente que j'ai vue dans les premiers commentaires est \\xAB il n'y a pas de convert \\xBB. Si, il y en a un \\u2014 il ne porte simplement pas ce nom.\"}),`\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\"}),\" accepte une image disque comme source ; c'est donc \",(0,i.jsx)(e.code,{children:\"hdiutil convert\"}),\" sous un autre nom, et cela prend en plus en charge la conversion sur place, ce que \",(0,i.jsx)(e.code,{children:\"hdiutil convert\"}),\" n'a jamais su faire. Si vous vous contentez de compter les verbes plut\\xF4t que de lire l'aide, vous conclurez qu'une fonctionnalit\\xE9 a \\xE9t\\xE9 supprim\\xE9e alors qu'elle a en r\\xE9alit\\xE9 \\xE9t\\xE9 \\xE9tendue.\"]}),`\n`,(0,i.jsxs)(e.h3,{id:\"labsence-de-detach-est-bien-r\\xE9elle\",children:[\"L'absence de \",(0,i.jsx)(e.code,{children:\"detach\"}),\" est bien r\\xE9elle\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Ce n'est pas un simple renommage. Il n'y a nulle part de detach dans \",(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:[\"Le rempla\\xE7ant est la commande \",(0,i.jsx)(e.code,{children:\"diskutil\"}),\" de premier niveau :\"]}),`\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:[\"Ce qui fonctionne parfaitement \\u2014 mais notez ce que cela fait \\xE0 un script. La sym\\xE9trie propre entre \",(0,i.jsx)(e.code,{children:\"hdiutil attach\"}),\" et \",(0,i.jsx)(e.code,{children:\"hdiutil detach\"}),\" devient \",(0,i.jsx)(e.code,{children:\"diskutil image attach\"}),\" / \",(0,i.jsx)(e.code,{children:\"diskutil eject\"}),\", deux niveaux de sous-commande diff\\xE9rents du m\\xEAme binaire. Toute fonction wrapper qui associe attach et detach doit \\xEAtre restructur\\xE9e, pas simplement retouch\\xE9e par un rechercher-remplacer.\"]}),`\n`,(0,i.jsx)(e.p,{children:(0,i.jsx)(e.img,{alt:\"Migration des scripts d'images disque\",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:\"ce-que-diskutil-image-fait-mieux\",children:[\"Ce que \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" fait mieux\"]}),`\n`,(0,i.jsx)(e.p,{children:\"Il serait injuste de pr\\xE9senter cela comme une perte pure. Trois points sont r\\xE9ellement am\\xE9lior\\xE9s.\"}),`\n`,(0,i.jsx)(e.h3,{id:\"asif-que-hdiutil-ne-sait-pas-du-tout-cr\\xE9er\",children:\"ASIF, que hdiutil ne sait pas du tout cr\\xE9er\"}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" prend en charge l'Apple Sparse Image Format. \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" ne le fait pas. Si vous voulez de l'ASIF \\u2014 et pour les disques de machines virtuelles sur APFS, c'est le format vers lequel Apple oriente les utilisateurs \\u2014 \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" est le seul outil capable de le produire.\"]}),`\n`,(0,i.jsx)(e.p,{children:\"Les listes de formats valent la peine d'\\xEAtre connues :\"}),`\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:\"il-attache-via-http-et-cr\\xE9e-des-disques-ram-directement\",children:\"Il attache via HTTP et cr\\xE9e des disques RAM directement\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"Extrait de l'aide d'\",(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:[\"Cr\\xE9er un disque RAM sous macOS a toujours \\xE9t\\xE9 une man\\u0153uvre en deux temps un peu lourde \\u2014 \",(0,i.jsx)(e.code,{children:\"hdiutil attach -nomount ram://<sectors>\"}),\" suivi de \",(0,i.jsx)(e.code,{children:\"newfs_hfs\"}),\" ou de \",(0,i.jsx)(e.code,{children:\"diskutil eraseVolume\"}),\". Ici, c'est un seul argument pass\\xE9 \\xE0 un flag document\\xE9.\"]}),`\n`,(0,i.jsx)(e.h3,{id:\"il-est-nettement-plus-rapide\",children:\"Il est nettement plus rapide\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"Jeff Johnson, de Lapcat Software, a compar\\xE9 les deux en enqu\\xEAtant sur la d\\xE9pr\\xE9ciation d\\xE9but ao\\xFBt 2026, et a mesur\\xE9 \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" r\\xE9alisant une op\\xE9ration de cr\\xE9ation en 40 \\xE0 45 secondes contre 110 \\xE0 115 secondes pour \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\", tout en produisant une image plus petite. Ce n'est pas une diff\\xE9rence d'arrondi. Pour un job CI qui construit des images disque \\xE0 chaque commit, c'est significatif.\"]}),`\n`,(0,i.jsx)(e.h2,{id:\"ce-qui-va-r\\xE9ellement-casser-dans-vos-scripts\",children:\"Ce qui va r\\xE9ellement casser dans vos scripts\"}),`\n`,(0,i.jsx)(e.p,{children:\"Les avertissements de d\\xE9pr\\xE9ciation ne cassent pas les builds. Ces points-l\\xE0, si.\"}),`\n`,(0,i.jsxs)(e.h3,{id:\"1--puppetstrings-na-pas-de-rempla\\xE7ant\",children:[\"1. \",(0,i.jsx)(e.code,{children:\"-puppetstrings\"}),\" n'a pas de rempla\\xE7ant\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Le flag \",(0,i.jsx)(e.code,{children:\"-puppetstrings\"}),\" de \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" \\xE9met une sortie de progression analysable par une machine, exactement ce qu'un syst\\xE8me de build recherche. Johnson signale son absence comme l'un des manques notables. \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" propose \",(0,i.jsx)(e.code,{children:\"--plist\"}),\" pour des \",(0,i.jsx)(e.em,{children:\"r\\xE9sultats\"}),\" structur\\xE9s, et affiche une progression lisible par un humain de ce type :\"]}),`\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 votre outillage analyse des lignes \",(0,i.jsx)(e.code,{children:\"PERCENT:\"}),\" provenant de \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\", ce parseur n'a plus rien \\xE0 quoi s'accrocher.\"]}),`\n`,(0,i.jsxs)(e.h3,{id:\"2-plusieurs-options-de-create-ont-tout-simplement-disparu\",children:[\"2. Plusieurs options de \",(0,i.jsx)(e.code,{children:\"create\"}),\" ont tout simplement disparu\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"L'article de Johnson liste \",(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\"}),\" et \",(0,i.jsx)(e.code,{children:\"-copyuid\"}),\" comme n'ayant aucun \\xE9quivalent. Si vous construisez des images \\xE0 partir de dossiers de mani\\xE8re contr\\xF4l\\xE9e \\u2014 installeurs, captures forensiques, tout cas o\\xF9 la propri\\xE9t\\xE9 des fichiers ou la s\\xE9lection exacte des fichiers inclus doit \\xEAtre pr\\xE9cise \\u2014 lisez attentivement cette liste. \",(0,i.jsx)(e.code,{children:\"-skipunreadable\"}),\" et \",(0,i.jsx)(e.code,{children:\"-copyuid\"}),\" en particulier sont critiques pour certains scripts d'empaquetage.\"]}),`\n`,(0,i.jsx)(e.h3,{id:\"3-le-comportement-de-nettoyage-a-chang\\xE9-silencieusement\",children:\"3. Le comportement de nettoyage a chang\\xE9 silencieusement\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"Johnson rapporte que \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" exclut automatiquement les fichiers temporaires tels que les dossiers de corbeille, se comportant comme si \",(0,i.jsx)(e.code,{children:\"-scrub\"}),\" \\xE9tait toujours activ\\xE9. \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" ne nettoyait que sur demande explicite. Si le contenu de votre image est cens\\xE9 \\xEAtre identique octet pour octet \\xE0 un r\\xE9pertoire source, cela produira une image diff\\xE9rente sans vous en avertir.\"]}),`\n`,(0,i.jsx)(e.h3,{id:\"4-la-gestion-des-permissions-\\xE9choue-silencieusement\",children:\"4. La gestion des permissions \\xE9choue silencieusement\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"C'est celui que je testerais en premier. Johnson a constat\\xE9 que l\\xE0 o\\xF9 \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" d\\xE9clenche une invite d'authentification en rencontrant des fichiers appartenant \\xE0 root, \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" n'invite pas et \\xE9choue simplement. Un script qui marquait autrefois une pause pour demander des identifiants produira d\\xE9sormais une image incompl\\xE8te et, selon votre gestion des erreurs, pourra signaler un succ\\xE8s.\"]}),`\n`,(0,i.jsx)(e.p,{children:\"Si vous construisez des images \\xE0 partir de r\\xE9pertoires contenant des fichiers dont vous n'\\xEAtes pas propri\\xE9taire, v\\xE9rifiez le r\\xE9sultat plut\\xF4t que de faire confiance au code de sortie.\"}),`\n`,(0,i.jsx)(e.h3,{id:\"5-la-journalisation-est-plus-l\\xE9g\\xE8re\",children:\"5. La journalisation est plus l\\xE9g\\xE8re\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"La sortie d\\xE9taill\\xE9e de \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" est moins fournie que celle de \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\". Quand un build \\xE9choue \\xE0 3 heures du matin, c'est l\\xE0 que vous vous en rendez compte.\"]}),`\n`,(0,i.jsx)(e.h2,{id:\"comment-migrer-sans-casser-la-compatibilit\\xE9-avec-macos-26\",children:\"Comment migrer sans casser la compatibilit\\xE9 avec macOS 26\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"La plupart d'entre nous doivent prendre en charge les deux versions pendant un moment. La bonne nouvelle, et le point pratique de tout cet article, c'est que \",(0,i.jsx)(e.strong,{children:\"vous n'avez pas besoin de brancher sur la version de l'OS\"}),\", parce que \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" existe d\\xE9j\\xE0 sous macOS 26.\"]}),`\n`,(0,i.jsx)(e.p,{children:\"D\\xE9tectez la capacit\\xE9, pas la version :\"}),`\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:\"V\\xE9rifiez ensuite le r\\xE9sultat, car c'est l\\xE0 que se nichent les diff\\xE9rences silencieuses :\"}),`\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:[\"Ce \",(0,i.jsx)(e.code,{children:\"diff -rq\"}),\" est l'\\xE9tape que je ne sauterais pas. Entre le nettoyage syst\\xE9matique et les \\xE9checs silencieux de permissions, une image qui se construit avec succ\\xE8s n'est pas la m\\xEAme chose qu'une image qui contient r\\xE9ellement ce que vous vouliez.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Si vous mettez en place un environnement de d\\xE9veloppement Mac depuis z\\xE9ro, notre \",(0,i.jsx)(e.a,{href:\"/blog/ultimate-apple-silicon-development-environment-setup-guide-2025\",children:\"guide de configuration d'un environnement de d\\xE9veloppement Apple silicon\"}),\" couvre l'outillage environnant, et le \",(0,i.jsx)(e.a,{href:\"/blog/mac-terminal-mastery-2025-command-line-productivity-guide\",children:\"guide de ma\\xEEtrise du Terminal\"}),\" couvre les fondamentaux du shell que ces scripts supposent acquis.\"]}),`\n`,(0,i.jsx)(e.p,{children:(0,i.jsx)(e.img,{alt:\"V\\xE9rification du contenu d'une image disque\",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-exemple-complet-de-bout-en-bout\",children:\"Un exemple complet, de bout en bout\"}),`\n`,(0,i.jsx)(e.p,{children:\"Voici un aller-retour complet ex\\xE9cut\\xE9 sous macOS 26.5.2, pour que vous voyiez la sortie r\\xE9elle plut\\xF4t qu'une reconstitution.\"}),`\n`,(0,i.jsx)(e.p,{children:(0,i.jsx)(e.strong,{children:\"Cr\\xE9er une image \\xE0 partir d'un dossier :\"})}),`\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:\"L'inspecter :\"})}),`\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:[\"Notez que \",(0,i.jsx)(e.code,{children:\"info\"}),\" couvre ce que \",(0,i.jsx)(e.code,{children:\"hdiutil imageinfo\"}),\", \",(0,i.jsx)(e.code,{children:\"isencrypted\"}),\" et une partie de \",(0,i.jsx)(e.code,{children:\"checksum\"}),\" fournissaient auparavant s\\xE9par\\xE9ment. Elle rapporte la somme de contr\\xF4le stock\\xE9e \\u2014 elle ne la v\\xE9rifie pas. C'est l\\xE0 qu'est le manque de \",(0,i.jsx)(e.code,{children:\"hdiutil verify\"}),\".\"]}),`\n`,(0,i.jsx)(e.p,{children:(0,i.jsx)(e.strong,{children:\"L'attacher :\"})}),`\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:\"La d\\xE9tacher \\u2014 avec la commande diff\\xE9rente :\"})}),`\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:\"images-chiffr\\xE9es\",children:\"Images chiffr\\xE9es\"}),`\n`,(0,i.jsx)(e.p,{children:\"Si vous utilisez des images disque comme conteneurs chiffr\\xE9s, la m\\xE9canique est simple mais les options sont plus restreintes.\"}),`\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 document\\xE9 comme utilisant AES-256, et il n'y a pas de choix d'algorithme, ce qui rel\\xE8ve d'une simplification plut\\xF4t que d'une perte \\u2014 Apple a retir\\xE9 l'ancienne version de chiffrement d\\xE8s macOS 13.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Le flag \",(0,i.jsx)(e.code,{children:\"--stdinpassphrase\"}),\" est celui \\xE0 utiliser dans tout script. La propre page de manuel de \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" avertit que \",(0,i.jsx)(e.code,{children:\"-passphrase\"}),\" n'est pas s\\xFBr, pour la raison bien ordinaire qu'un mot de passe pass\\xE9 en ligne de commande est visible dans la table des processus par tout utilisateur de la machine.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Si vous comptez sur les images disque pour la confidentialit\\xE9 plut\\xF4t que pour la simple commodit\\xE9, notre \",(0,i.jsx)(e.a,{href:\"/blog/mac-security-privacy-guide-2026\",children:\"guide de s\\xE9curit\\xE9 et confidentialit\\xE9 Mac\"}),\" vaut la lecture pour comprendre o\\xF9 se situe une image chiffr\\xE9e par rapport \\xE0 FileVault \\u2014 ils r\\xE9solvent des probl\\xE8mes diff\\xE9rents, et un \",(0,i.jsx)(e.code,{children:\".dmg\"}),\" chiffr\\xE9 ne prot\\xE8ge rien tant qu'il est mont\\xE9.\"]}),`\n`,(0,i.jsx)(e.h2,{id:\"\\xE0-quoi-servent-encore-les-images-disque\",children:\"\\xC0 quoi servent encore les images disque\"}),`\n`,(0,i.jsx)(e.p,{children:\"Cela vaut la peine de se demander pourquoi tout cela compte, car \\xAB image disque \\xBB sonne comme une relique alors que l'outillage qui l'entoure reste discr\\xE8tement essentiel \\xE0 plusieurs endroits.\"}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Distribution d'applications.\"}),\" Le \",(0,i.jsx)(e.code,{children:\".dmg\"}),\" reste le moyen standard de distribuer une app Mac en dehors de l'App Store. Une image compress\\xE9e, en lecture seule, contenant un bundle d'app et un lien symbolique vers \",(0,i.jsx)(e.code,{children:\"/Applications\"}),\", c'est la convention du glisser-d\\xE9poser pour installer que connaissent les utilisateurs. Chacune de ces images est construite par un script qui appelle un outil d'image disque.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Conteneurs chiffr\\xE9s.\"}),\" Un \",(0,i.jsx)(e.code,{children:\".dmg\"}),\" chiffr\\xE9 est un coffre portable et autonome qui se monte comme un volume et fonctionne sur n'importe quel Mac sans logiciel sp\\xE9cial. Contrairement \\xE0 FileVault, qui prot\\xE8ge un disque entier au repos, une image chiffr\\xE9e prot\\xE8ge un ensemble sp\\xE9cifique de fichiers que vous pouvez d\\xE9placer \\u2014 sur une cl\\xE9 USB, dans un stockage cloud, vers un coll\\xE8gue.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Disques de machines virtuelles.\"}),\" C'est ici qu'ASIF prend tout son sens, et l\\xE0 que la direction prise par Apple devient \\xE9vidente.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Sparsebundles pour la sauvegarde r\\xE9seau.\"}),\" Time Machine, quand il sauvegarde vers une destination r\\xE9seau, stocke la sauvegarde dans un sparsebundle \\u2014 une image disque d\\xE9coup\\xE9e en de nombreux petits fichiers de bande, de sorte que seules les bandes modifi\\xE9es ont besoin d'\\xEAtre synchronis\\xE9es. Quiconque a entretenu l'un de ces sparsebundles a d\\xE9j\\xE0 ex\\xE9cut\\xE9 \",(0,i.jsx)(e.code,{children:\"hdiutil compact\"}),\" pour r\\xE9cup\\xE9rer l'espace occup\\xE9 par des bandes supprim\\xE9es.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Investigation num\\xE9rique et archivage.\"}),\" Une image au niveau bloc d'un volume, accompagn\\xE9e d'une somme de contr\\xF4le, est le moyen de pr\\xE9server l'\\xE9tat exact d'un disque. \",(0,i.jsx)(e.code,{children:\"hdiutil verify\"}),\" est le moyen de le confirmer plus tard.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Mettez cette liste en regard du tableau de migration, et les manques correspondent \\xE0 des communaut\\xE9s pr\\xE9cises plut\\xF4t qu'\\xE0 un hasard. Les d\\xE9veloppeurs d'applications perdent le m\\xE9canisme d'accord de licence et \",(0,i.jsx)(e.code,{children:\"-puppetstrings\"}),\". Les utilisateurs de sauvegardes et de sparsebundles perdent \",(0,i.jsx)(e.code,{children:\"compact\"}),\". Les utilisateurs d'archivage et d'investigation num\\xE9rique perdent \",(0,i.jsx)(e.code,{children:\"verify\"}),\". Quiconque fait un travail courant de cr\\xE9ation-conversion-attachement s'en sort bien.\"]}),`\n`,(0,i.jsx)(e.h2,{id:\"asif--le-format-que-seul-le-nouvel-outil-sait-cr\\xE9er\",children:\"ASIF : le format que seul le nouvel outil sait cr\\xE9er\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"L'Apple Sparse Image Format est le signal le plus clair de la raison pour laquelle Apple veut \\xE9loigner les utilisateurs de \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\", car \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" ne peut absolument pas le produire.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Une image sparse n'occupe de l'espace disque que pour les blocs qui contiennent r\\xE9ellement des donn\\xE9es. Une image sparse de 100 Go contenant 10 Go de fichiers occupe environ 10 Go sur le disque et cro\\xEEt \\xE0 mesure que vous ajoutez des donn\\xE9es. Les anciens formats sparse \",(0,i.jsx)(e.code,{children:\"UDSP\"}),\" et sparsebundle \",(0,i.jsx)(e.code,{children:\"UDSB\"}),\" faisaient d\\xE9j\\xE0 cela, avec des probl\\xE8mes connus : les sparsebundles se fragmentent en milliers de fichiers de bande, et les deux formats r\\xE9cup\\xE9raient historiquement mal l'espace, ce qui est pr\\xE9cis\\xE9ment la raison d'\\xEAtre de \",(0,i.jsx)(e.code,{children:\"hdiutil compact\"}),\".\"]}),`\n`,(0,i.jsx)(e.p,{children:\"ASIF est con\\xE7u directement pour APFS plut\\xF4t que greff\\xE9 par-dessus, ce qui laisse le support natif des fichiers sparse du syst\\xE8me de fichiers faire le travail au lieu que le format d'image ne l'\\xE9mule. En pratique, le gain se manifeste surtout dans la virtualisation, o\\xF9 le disque virtuel d'une VM est un gros fichier essentiellement vide qui change constamment \\u2014 le cas de figure qui p\\xE9nalisait le plus durement les anciens formats.\"}),`\n`,(0,i.jsx)(e.p,{children:\"Vous pouvez en cr\\xE9er une d\\xE8s aujourd'hui :\"}),`\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:[\"Notez que le format est d\\xE9duit de l'extension \\u2014 \",(0,i.jsx)(e.code,{children:\"create blank\"}),\" utilise RAW par d\\xE9faut, \\xAB sauf si le chemin de l'image comporte l'extension .asif ou .sparsebundle \\xBB. Bien nommer le fichier suffit ; passer \\xE9galement \",(0,i.jsx)(e.code,{children:\"--format\"}),\" rel\\xE8ve de la ceinture et des bretelles.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Le compromis, c'est la portabilit\\xE9. ASIF est r\\xE9cent, et une image ASIF ne s'ouvrira ni sur une version plus ancienne de macOS ni sur quoi que ce soit qui ne soit pas un Mac. Pour un disque de VM ou un volume de travail local, cela n'a aucune importance. Pour tout ce que vous remettez \\xE0 une autre personne, utilisez \",(0,i.jsx)(e.code,{children:\"UDZO\"}),\" et conservez la compatibilit\\xE9.\"]}),`\n`,(0,i.jsx)(e.h2,{id:\"o\\xF9-cela-sinscrit-dans-un-pipeline-de-distribution\",children:\"O\\xF9 cela s'inscrit dans un pipeline de distribution\"}),`\n`,(0,i.jsx)(e.p,{children:\"Si vous distribuez une app Mac en dehors de l'App Store, l'\\xE9tape d'image disque s'ins\\xE8re au milieu d'une cha\\xEEne, et il vaut la peine de voir o\\xF9 atterrit le changement.\"}),`\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:\"Seule l'\\xE9tape 3 change. La signature, la notarisation et l'agrafage ne sont pas affect\\xE9s \\u2014 ils op\\xE8rent sur l'image finie et ne se soucient pas de l'outil qui l'a produite.\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"Deux points \\xE0 surveiller dans un pipeline r\\xE9el. D'abord, v\\xE9rifiez que le contenu mis en sc\\xE8ne a bien \\xE9t\\xE9 ins\\xE9r\\xE9 correctement, \\xE0 cause du nettoyage silencieux et du comportement de permissions d\\xE9crits plus haut \\u2014 un \",(0,i.jsx)(e.code,{children:\"diff -rq\"}),\" entre \",(0,i.jsx)(e.code,{children:\"$STAGE\"}),\" et le r\\xE9sultat mont\\xE9 est une assurance \\xE0 faible co\\xFBt. Ensuite, si votre script actuel int\\xE8gre un accord de licence avec \",(0,i.jsx)(e.code,{children:\"hdiutil udifrez\"}),\", cette \\xE9tape n'a aucun rempla\\xE7ant et est d\\xE9pr\\xE9ci\\xE9e depuis macOS 12. Conservez \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" pour cette \\xE9tape tant qu'il existe, et pr\\xE9voyez une alternative.\"]}),`\n`,(0,i.jsx)(e.h2,{id:\"r\\xE9solution-des-probl\\xE8mes-courants\",children:\"R\\xE9solution des probl\\xE8mes courants\"}),`\n`,(0,i.jsx)(e.h3,{id:\"-diskutil-image--commande-introuvable--ou-la-sous-commande-nest-pas-reconnue\",children:\"\\xAB diskutil image : commande introuvable \\xBB ou la sous-commande n'est pas reconnue\"}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Probl\\xE8me\"}),\" : Vous \\xEAtes sur une version de macOS ant\\xE9rieure \\xE0 26, o\\xF9 le verbe \",(0,i.jsx)(e.code,{children:\"image\"}),\" n'existe pas.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Solution\"}),\" : Utilisez la v\\xE9rification de capacit\\xE9 pr\\xE9sent\\xE9e plus haut plut\\xF4t que de faire une supposition. \",(0,i.jsx)(e.code,{children:\"diskutil image --help >/dev/null 2>&1\"}),\" renvoie un code non nul sur les syst\\xE8mes qui en sont d\\xE9pourvus, ce qui constitue un branchement fiable. Ne testez pas \",(0,i.jsx)(e.code,{children:\"sw_vers\"}),\" \\u2014 c'est la pr\\xE9sence de la sous-commande qui compte r\\xE9ellement.\"]}),`\n`,(0,i.jsx)(e.h3,{id:\"limage-se-construit-mais-il-manque-des-fichiers\",children:\"L'image se construit mais il manque des fichiers\"}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Probl\\xE8me\"}),\" : Deux causes probables. Soit \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" a ignor\\xE9 des fichiers qu'il ne pouvait pas lire avec votre utilisateur sans demander d'authentification, soit son nettoyage syst\\xE9matique a retir\\xE9 des \\xE9l\\xE9ments que \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" aurait inclus.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Solution\"}),\" : Montez le r\\xE9sultat et faites un \",(0,i.jsx)(e.code,{children:\"diff -rq\"}),\" avec le r\\xE9pertoire source. Si des fichiers manquent \\xE0 cause de la propri\\xE9t\\xE9, relancez la construction avec les privil\\xE8ges n\\xE9cessaires plut\\xF4t que d'attendre une invite. Ne vous fiez pas au seul code de sortie.\"]}),`\n`,(0,i.jsx)(e.h3,{id:\"lanalyse-de-la-progression-a-cass\\xE9-en-ci\",children:\"L'analyse de la progression a cass\\xE9 en CI\"}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Probl\\xE8me\"}),\" : \",(0,i.jsx)(e.code,{children:\"-puppetstrings\"}),\" n'a pas d'\\xE9quivalent sous \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\", donc les scripts qui analysaient la progression lisible par machine de \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" n'ont plus rien \\xE0 lire.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Solution\"}),\" : Utilisez \",(0,i.jsx)(e.code,{children:\"--plist\"}),\" pour le r\\xE9sultat structur\\xE9 et consid\\xE9rez que la progression n'est pas disponible. Si votre CI a sp\\xE9cifiquement besoin de la progression, conserver \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" pour cette \\xE9tape est l\\xE9gitime \\u2014 il est d\\xE9pr\\xE9ci\\xE9, pas supprim\\xE9, et aucune date de suppression n'a \\xE9t\\xE9 annonc\\xE9e.\"]}),`\n`,(0,i.jsx)(e.h3,{id:\"impossible-de-d\\xE9tacher---resource-busy-\",children:\"Impossible de d\\xE9tacher \\u2014 \\xAB resource busy \\xBB\"}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Probl\\xE8me\"}),\" : Quelque chose a encore le volume ouvert. Cela se comporte exactement comme avant.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Solution\"}),\" : \",(0,i.jsx)(e.code,{children:\"lsof +D /Volumes/VotreVolume\"}),\" pour trouver le responsable, puis \",(0,i.jsx)(e.code,{children:\"diskutil eject\"}),\". L'indexation Spotlight et les antivirus sont des coupables fr\\xE9quents ; monter avec \",(0,i.jsx)(e.code,{children:\"--nobrowse\"}),\" \\xE9vite une partie du probl\\xE8me en gardant le volume hors du Finder.\"]}),`\n`,(0,i.jsxs)(e.h3,{id:\"un-dmg-avec-un-accord-de-licence-ne-se-construit-plus\",children:[\"Un \",(0,i.jsx)(e.code,{children:\".dmg\"}),\" avec un accord de licence ne se construit plus\"]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Probl\\xE8me\"}),\" : Le m\\xE9canisme d'accord de licence repose sur \",(0,i.jsx)(e.code,{children:\"hdiutil udifrez\"}),\", qu'Apple a d\\xE9pr\\xE9ci\\xE9 d\\xE8s macOS 12 et qui n'a aucun \\xE9quivalent sous \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\".\"]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Solution\"}),\" : Il n'existe aucun chemin de remplacement. Continuez \\xE0 utiliser \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" pour cette \\xE9tape tant qu'il existe, et pr\\xE9voyez une m\\xE9thode de distribution qui ne d\\xE9pende pas d'un accord int\\xE9gr\\xE9. C'est un fait connu depuis quatre ans, ce qui vaut la peine d'\\xEAtre su si vous ne le d\\xE9couvrez que maintenant.\"]}),`\n`,(0,i.jsx)(e.h2,{id:\"faq\",children:\"FAQ\"}),`\n`,(0,i.jsx)(e.h3,{id:\"hdiutil-fonctionne-t-il-toujours-dans-macos-27-\",children:\"hdiutil fonctionne-t-il toujours dans macOS 27 ?\"}),`\n`,(0,i.jsx)(e.p,{children:\"Oui. Il est d\\xE9pr\\xE9ci\\xE9, pas supprim\\xE9. La d\\xE9pr\\xE9ciation est un signal d'intention de la part d'Apple qui d\\xE9clenche un compte \\xE0 rebours \\u2014 ce n'est pas un changement fonctionnel. Rien de ce qui fonctionne aujourd'hui ne cesse de fonctionner lorsque vous installez macOS 27.\"}),`\n`,(0,i.jsx)(e.h3,{id:\"quand-hdiutil-sera-t-il-effectivement-supprim\\xE9-\",children:\"Quand hdiutil sera-t-il effectivement supprim\\xE9 ?\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"Apple ne l'a pas pr\\xE9cis\\xE9. \\xC0 en juger par l'historique propre de la page de manuel, le sch\\xE9ma habituel d'Apple avec cet outil a \\xE9t\\xE9 de d\\xE9pr\\xE9cier une fonctionnalit\\xE9 dans une version et de la supprimer une ou plusieurs versions majeures plus tard \\u2014 \",(0,i.jsx)(e.code,{children:\"internet-enable\"}),\" et le support des fichiers \\xE0 double fourche d'OS 9 ont chacun mis au moins un cycle complet. Quiconque vous donne une version de suppression pr\\xE9cise fait une supposition.\"]}),`\n`,(0,i.jsx)(e.h3,{id:\"puis-je-utiliser-diskutil-image-sous-macos-26-tahoe-\",children:\"Puis-je utiliser diskutil image sous macOS 26 Tahoe ?\"}),`\n`,(0,i.jsx)(e.p,{children:\"Oui, et c'est le fait le plus utile de cet article. V\\xE9rifi\\xE9 sur macOS 26.5.2 (build 25F84). Vous pouvez migrer vos scripts et les tester d\\xE8s maintenant, sur l'OS que vous utilisez d\\xE9j\\xE0, plut\\xF4t que d'attendre macOS 27.\"}),`\n`,(0,i.jsx)(e.h3,{id:\"diskutil-image-remplace-t-il-int\\xE9gralement-hdiutil-\",children:\"diskutil image remplace-t-il int\\xE9gralement hdiutil ?\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"Non, pas aujourd'hui. \",(0,i.jsx)(e.code,{children:\"verify\"}),\", \",(0,i.jsx)(e.code,{children:\"compact\"}),\", \",(0,i.jsx)(e.code,{children:\"makehybrid\"}),\" et \",(0,i.jsx)(e.code,{children:\"burn\"}),\" n'ont aucun \\xE9quivalent, et plusieurs options de \",(0,i.jsx)(e.code,{children:\"create\"}),\" permettant de contr\\xF4ler exactement quels fichiers sont inclus sont absentes. Pour le chemin courant \\u2014 cr\\xE9ation, conversion, attachement, inspection, redimensionnement, chiffrement \\u2014 il est complet.\"]}),`\n`,(0,i.jsx)(e.h3,{id:\"pourquoi-apple-a-t-il-fait-cela-\",children:\"Pourquoi Apple a-t-il fait cela ?\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"Apple n'a publi\\xE9 aucune justification. Ce qu'on peut observer, c'est que \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" est plus rapide dans les benchmarks, produit des images plus petites, prend en charge le format ASIF plus r\\xE9cent que \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" ne peut pas produire, et pr\\xE9sente une surface de commande bien plus r\\xE9duite. Consolider la gestion des images disque au sein de \",(0,i.jsx)(e.code,{children:\"diskutil\"}),\", aux c\\xF4t\\xE9s du reste de la gestion du stockage, est une direction coh\\xE9rente. C'est une lecture des indices disponibles, pas une d\\xE9claration d'Apple.\"]}),`\n`,(0,i.jsx)(e.h3,{id:\"mon-application-va-t-elle-casser-si-elle-ex\\xE9cute-hdiutil-\",children:\"Mon application va-t-elle casser si elle ex\\xE9cute hdiutil ?\"}),`\n`,(0,i.jsx)(e.p,{children:\"Pas dans macOS 27. Pr\\xE9voyez tout de m\\xEAme de migrer \\u2014 et utilisez la v\\xE9rification de capacit\\xE9 pour qu'un seul chemin de code couvre les deux cas, ce qui est plus simple qu'il n'y para\\xEEt, pr\\xE9cis\\xE9ment parce que la nouvelle commande existe d\\xE9j\\xE0 sous macOS 26.\"}),`\n`,(0,i.jsx)(e.h2,{id:\"conclusion\",children:\"Conclusion\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"Le titre accrocheur \\u2014 une commande Terminal vieille de 25 ans part \\xE0 la retraite \\u2014 est vrai mais trompeur dans les deux sens. Il sous-estime le changement pour quiconque a des scripts de build utilisant \",(0,i.jsx)(e.code,{children:\"verify\"}),\", \",(0,i.jsx)(e.code,{children:\"compact\"}),\", \",(0,i.jsx)(e.code,{children:\"makehybrid\"}),\", ou les options fines de \",(0,i.jsx)(e.code,{children:\"create\"}),\", parce que celles-ci n'ont aucun chemin de remplacement aujourd'hui. Et il le surestime pour tous les autres, parce que \",(0,i.jsx)(e.code,{children:\"hdiutil\"}),\" fonctionne toujours dans macOS 27, qu'Apple n'a annonc\\xE9 aucune date de suppression, et que la d\\xE9pr\\xE9ciation est la derni\\xE8re \\xE9tape d'un r\\xE9tr\\xE9cissement document\\xE9 dans la propre page de manuel de l'outil depuis macOS 10.15.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Le fait r\\xE9ellement utile \\xE0 retenir, c'est que le rempla\\xE7ant n'appartient pas au futur. \",(0,i.jsx)(e.code,{children:\"diskutil image\"}),\" est sur votre Mac d\\xE8s maintenant, sous macOS 26, avec \",(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\"}),\" et \",(0,i.jsx)(e.code,{children:\"chpass\"}),\" op\\xE9rationnels. Vous pouvez faire cette migration un mardi apr\\xE8s-midi, sur l'OS que vous avez d\\xE9j\\xE0, la v\\xE9rifier avec \",(0,i.jsx)(e.code,{children:\"diff -rq\"}),\", et ne plus y penser.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Souvenez-vous simplement que \",(0,i.jsx)(e.code,{children:\"detach\"}),\" ne se trouve pas l\\xE0 o\\xF9 vous l'attendez.\"]}),`\n`,(0,i.jsx)(e.p,{children:(0,i.jsxs)(e.em,{children:[\"Lecture connexe : \",(0,i.jsx)(e.a,{href:\"/blog/mac-terminal-mastery-2025-command-line-productivity-guide\",children:\"ma\\xEEtriser le Terminal sous macOS\"}),\", \",(0,i.jsx)(e.a,{href:\"/blog/ultimate-apple-silicon-development-environment-setup-guide-2025\",children:\"configuration d'un environnement de d\\xE9veloppement Apple silicon\"}),\", et \",(0,i.jsx)(e.a,{href:\"/blog/encrypted-hfs-plus-dropped-macos-28-convert-apfs-time-machine-guide-2026\",children:\"les volumes HFS+ chiffr\\xE9s sont abandonn\\xE9s dans macOS 28\"}),\".\"]})})]})}function p(s={}){let{wrapper:e}=s.components||{};return e?(0,i.jsx)(e,{...s,children:(0,i.jsx)(c,{...s})}):c(s)}return E(f);})();\n;return Component;","toc":[{"title":"Points clés","url":"#points-clés","depth":2},{"title":"D'abord : vérifiez-le sur votre propre Mac","url":"#dabord--vérifiez-le-sur-votre-propre-mac","depth":2},{"title":"Ce n'est pas sorti de nulle part","url":"#ce-nest-pas-sorti-de-nulle-part","depth":2},{"title":"Le tableau de migration","url":"#le-tableau-de-migration","depth":2},{"title":"La surprise du convert","url":"#la-surprise-du-convert","depth":3},{"title":"L'absence de detach est bien réelle","url":"#labsence-de-detach-est-bien-réelle","depth":3},{"title":"Ce que diskutil image fait mieux","url":"#ce-que-diskutil-image-fait-mieux","depth":2},{"title":"ASIF, que hdiutil ne sait pas du tout créer","url":"#asif-que-hdiutil-ne-sait-pas-du-tout-créer","depth":3},{"title":"Il attache via HTTP et crée des disques RAM directement","url":"#il-attache-via-http-et-crée-des-disques-ram-directement","depth":3},{"title":"Il est nettement plus rapide","url":"#il-est-nettement-plus-rapide","depth":3},{"title":"Ce qui va réellement casser dans vos scripts","url":"#ce-qui-va-réellement-casser-dans-vos-scripts","depth":2},{"title":"1. -puppetstrings n'a pas de remplaçant","url":"#1--puppetstrings-na-pas-de-remplaçant","depth":3},{"title":"2. Plusieurs options de create ont tout simplement disparu","url":"#2-plusieurs-options-de-create-ont-tout-simplement-disparu","depth":3},{"title":"3. Le comportement de nettoyage a changé silencieusement","url":"#3-le-comportement-de-nettoyage-a-changé-silencieusement","depth":3},{"title":"4. La gestion des permissions échoue silencieusement","url":"#4-la-gestion-des-permissions-échoue-silencieusement","depth":3},{"title":"5. La journalisation est plus légère","url":"#5-la-journalisation-est-plus-légère","depth":3},{"title":"Comment migrer sans casser la compatibilité avec macOS 26","url":"#comment-migrer-sans-casser-la-compatibilité-avec-macos-26","depth":2},{"title":"Un exemple complet, de bout en bout","url":"#un-exemple-complet-de-bout-en-bout","depth":2},{"title":"Images chiffrées","url":"#images-chiffrées","depth":2},{"title":"À quoi servent encore les images disque","url":"#à-quoi-servent-encore-les-images-disque","depth":2},{"title":"ASIF : le format que seul le nouvel outil sait créer","url":"#asif--le-format-que-seul-le-nouvel-outil-sait-créer","depth":2},{"title":"Où cela s'inscrit dans un pipeline de distribution","url":"#où-cela-sinscrit-dans-un-pipeline-de-distribution","depth":2},{"title":"Résolution des problèmes courants","url":"#résolution-des-problèmes-courants","depth":2},{"title":"« diskutil image : commande introuvable » ou la sous-commande n'est pas reconnue","url":"#-diskutil-image--commande-introuvable--ou-la-sous-commande-nest-pas-reconnue","depth":3},{"title":"L'image se construit mais il manque des fichiers","url":"#limage-se-construit-mais-il-manque-des-fichiers","depth":3},{"title":"L'analyse de la progression a cassé en CI","url":"#lanalyse-de-la-progression-a-cassé-en-ci","depth":3},{"title":"Impossible de détacher — « resource busy »","url":"#impossible-de-détacher---resource-busy-","depth":3},{"title":"Un .dmg avec un accord de licence ne se construit plus","url":"#un-dmg-avec-un-accord-de-licence-ne-se-construit-plus","depth":3},{"title":"FAQ","url":"#faq","depth":2},{"title":"hdiutil fonctionne-t-il toujours dans macOS 27 ?","url":"#hdiutil-fonctionne-t-il-toujours-dans-macos-27-","depth":3},{"title":"Quand hdiutil sera-t-il effectivement supprimé ?","url":"#quand-hdiutil-sera-t-il-effectivement-supprimé-","depth":3},{"title":"Puis-je utiliser diskutil image sous macOS 26 Tahoe ?","url":"#puis-je-utiliser-diskutil-image-sous-macos-26-tahoe-","depth":3},{"title":"diskutil image remplace-t-il intégralement hdiutil ?","url":"#diskutil-image-remplace-t-il-intégralement-hdiutil-","depth":3},{"title":"Pourquoi Apple a-t-il fait cela ?","url":"#pourquoi-apple-a-t-il-fait-cela-","depth":3},{"title":"Mon application va-t-elle casser si elle exécute hdiutil ?","url":"#mon-application-va-t-elle-casser-si-elle-exécute-hdiutil-","depth":3},{"title":"Conclusion","url":"#conclusion","depth":2}],"estimatedTime":23}