@@ -29,6 +29,7 @@ import (
2929 "github.com/lima-vm/lima/v2/pkg/driverutil"
3030 "github.com/lima-vm/lima/v2/pkg/guestpatch/macos"
3131 "github.com/lima-vm/lima/v2/pkg/hostagent/events"
32+ "github.com/lima-vm/lima/v2/pkg/imgutil/nativeimgutil"
3233 "github.com/lima-vm/lima/v2/pkg/imgutil/nativeimgutil/asifutil"
3334 "github.com/lima-vm/lima/v2/pkg/limatype"
3435 "github.com/lima-vm/lima/v2/pkg/limatype/filenames"
@@ -193,7 +194,17 @@ func (l *LimaVzDriver) FillConfig(ctx context.Context, cfg *limatype.LimaYAML, _
193194 vzOpts .Rosetta .BinFmt = ptr .Of (false )
194195 }
195196 if vzOpts .DiskImageFormat == nil {
196- vzOpts .DiskImageFormat = ptr .Of (raw .Type )
197+ // Default to ASIF for macOS guests on macOS 26+, raw otherwise.
198+ if cfg .OS != nil && * cfg .OS == limatype .DARWIN {
199+ macOSProductVersion , err := osutil .ProductVersion ()
200+ if err == nil && ! macOSProductVersion .LessThan (* semver .New ("26.0.0" )) {
201+ vzOpts .DiskImageFormat = ptr .Of (asif .Type )
202+ } else {
203+ vzOpts .DiskImageFormat = ptr .Of (raw .Type )
204+ }
205+ } else {
206+ vzOpts .DiskImageFormat = ptr .Of (raw .Type )
207+ }
197208 }
198209
199210 var opts any
@@ -375,7 +386,7 @@ func (l *LimaVzDriver) CreateDisk(ctx context.Context) error {
375386//
376387// The function creates the following files:
377388// - `image.ipsw`: hardlink to `image` (".ipsw" suffix is required by VZMacOSInstaller)
378- // - `disk`: ASIF disk
389+ // - `disk`: raw or ASIF disk (ASIF requires macOS 26+)
379390//
380391// After successful installation, `image.ipsw` and `image` are removed.
381392func (l * LimaVzDriver ) createDiskMacOSGuest (ctx context.Context ) error {
@@ -385,8 +396,20 @@ func (l *LimaVzDriver) createDiskMacOSGuest(ctx context.Context) error {
385396 if err != nil {
386397 return fmt .Errorf ("invalid disk size %q: %w" , * l .Instance .Config .Disk , err )
387398 }
388- if err := asifutil .NewASIF (disk , diskSize ); err != nil {
389- return err
399+
400+ switch l .diskImageFormat {
401+ case asif .Type :
402+ if err := asifutil .NewASIF (disk , diskSize ); err != nil {
403+ return err
404+ }
405+ case raw .Type :
406+ logrus .Debugf ("Using %s disk image for macOS guest" , l .diskImageFormat )
407+ diskUtil := & nativeimgutil.NativeImageUtil {}
408+ if err := diskUtil .CreateDisk (ctx , disk , diskSize ); err != nil {
409+ return fmt .Errorf ("failed to create %s disk %q: %w" , l .diskImageFormat , disk , err )
410+ }
411+ default :
412+ return fmt .Errorf ("unsupported disk format for macOS guest: %s" , l .diskImageFormat )
390413 }
391414
392415 if err = ensureIPSW (l .Instance .Dir ); err != nil {
0 commit comments