Existe um script pronto que automatiza todo esse processo. Manualmente é como mencionado em MacWorld , mas usando as ferramentas do Linux:
InstallESD.dmg
é uma imagem de um disco GPT com partição HFS + que contém arquivos do instalador, mas não é inicializável por conta própria.
Trabalhando como root
, converta InstallESD.dmg
no formato de imagem não processada e monte-o usando kpartx
:
dmg2img InstallESD.dmg InstallESD.img
kpartx -a InstallESD.img
mount /dev/mapper/loop0p2 /mnt/installesd
InstallESD.dmg
contém outra imagem de disco, BaseSystem.dmg
, que é um disco de instalação inicializável. Mas escrevê-lo diretamente na unidade USB não funciona, porque isso criaria uma partição com quase nenhum espaço livre e ainda faltaria alguns arquivos importantes.
Extraia a imagem do sistema de base BaseSystem.dmg
, converta-a em raw e monte também:
dmg2img /mnt/installesd/BaseSystem.dmg BaseSystem.img
kpartx -a BaseSystem.img
mount /dev/mapper/loop1p1 /mnt/basesystem
Formate a unidade flash USB como HFS +:
sgdisk -o /dev/sdb
sgdisk -n 1:0:0 -t 1:AF00 -c 1:"disk image" -A 1:set:2 /dev/sdb
mkfs.hfsplus -v "OS X Base System" /dev/sdb1
mount /dev/sdb1 /mnt/usbstick
Copie os arquivos do instalador que faltam (cuidado para finalizar /
):
rsync -aAEHW --info=progress2 /mnt/basesystem/ /mnt/usbstick/
rm -f /mnt/usbstick/System/Installation/Packages
rsync -aAEHW -P /mnt/installesd/Packages /mnt/usbstick/System/Installation/
rsync -aAEHW -P /mnt/installesd/BaseSystem.dmg /mnt/usbstick/
rsync -aAEHW -P /mnt/installesd/BaseSystem.chunklist /mnt/usbstick/
sync
É possível copiar com outras ferramentas (tar, cpio), apenas fornecer parâmetros preservando a maioria dos metadados de arquivo. rsync
suporta também o parâmetro -X
, supostamente copia os atributos estendidos do HFS +, mas na prática ele falha com o erro "Operação não suportada".