@@ -20,6 +20,7 @@ import (
20
20
"github.com/lima-vm/lima/pkg/limayaml"
21
21
"github.com/lima-vm/lima/pkg/localpathutil"
22
22
"github.com/lima-vm/lima/pkg/networks"
23
+ "github.com/lima-vm/lima/pkg/qemu/imgutil"
23
24
"github.com/lima-vm/lima/pkg/store/filenames"
24
25
"github.com/sirupsen/logrus"
25
26
)
@@ -242,6 +243,18 @@ func attachNetwork(driver *driver.BaseDriver, vmConfig *vz.VirtualMachineConfigu
242
243
return nil
243
244
}
244
245
246
+ func validateDiskFormat (diskPath string ) error {
247
+ format , err := imgutil .DetectFormat (diskPath )
248
+ if err != nil {
249
+ return fmt .Errorf ("failed to detect the format of %q: %w" , diskPath , err )
250
+ }
251
+ if format != "raw" {
252
+ return fmt .Errorf ("expected the format of %q to be \" raw\" , got %q" , diskPath , format )
253
+ }
254
+ // TODO: ensure that the disk is formatted with GPT or ISO9660
255
+ return nil
256
+ }
257
+
245
258
func attachDisks (driver * driver.BaseDriver , vmConfig * vz.VirtualMachineConfiguration ) error {
246
259
baseDiskPath := filepath .Join (driver .Instance .Dir , filenames .BaseDisk )
247
260
diffDiskPath := filepath .Join (driver .Instance .Dir , filenames .DiffDisk )
@@ -253,6 +266,9 @@ func attachDisks(driver *driver.BaseDriver, vmConfig *vz.VirtualMachineConfigura
253
266
var configurations []vz.StorageDeviceConfiguration
254
267
255
268
if isBaseDiskCDROM {
269
+ if err = validateDiskFormat (baseDiskPath ); err != nil {
270
+ return err
271
+ }
256
272
baseDiskAttachment , err := vz .NewDiskImageStorageDeviceAttachment (baseDiskPath , true )
257
273
if err != nil {
258
274
return err
@@ -263,6 +279,9 @@ func attachDisks(driver *driver.BaseDriver, vmConfig *vz.VirtualMachineConfigura
263
279
}
264
280
configurations = append (configurations , baseDisk )
265
281
}
282
+ if err = validateDiskFormat (diffDiskPath ); err != nil {
283
+ return err
284
+ }
266
285
diffDiskAttachment , err := vz .NewDiskImageStorageDeviceAttachment (diffDiskPath , false )
267
286
if err != nil {
268
287
return err
@@ -273,6 +292,9 @@ func attachDisks(driver *driver.BaseDriver, vmConfig *vz.VirtualMachineConfigura
273
292
}
274
293
configurations = append (configurations , diffDisk )
275
294
295
+ if err = validateDiskFormat (ciDataPath ); err != nil {
296
+ return err
297
+ }
276
298
ciDataAttachment , err := vz .NewDiskImageStorageDeviceAttachment (ciDataPath , true )
277
299
if err != nil {
278
300
return err
@@ -335,7 +357,7 @@ func attachConsole(_ *driver.BaseDriver, vmConfig *vz.VirtualMachineConfiguratio
335
357
}
336
358
337
359
func attachFolderMounts (driver * driver.BaseDriver , vmConfig * vz.VirtualMachineConfiguration ) error {
338
- mounts := make ( []vz.DirectorySharingDeviceConfiguration , len ( driver . Yaml . Mounts ))
360
+ var mounts []vz.DirectorySharingDeviceConfiguration
339
361
if * driver .Yaml .MountType == limayaml .VIRTIOFS {
340
362
for i , mount := range driver .Yaml .Mounts {
341
363
expandedPath , err := localpathutil .Expand (mount .Location )
@@ -364,7 +386,7 @@ func attachFolderMounts(driver *driver.BaseDriver, vmConfig *vz.VirtualMachineCo
364
386
return err
365
387
}
366
388
config .SetDirectoryShare (share )
367
- mounts [ i ] = config
389
+ mounts = append ( mounts , config )
368
390
}
369
391
}
370
392
@@ -378,7 +400,9 @@ func attachFolderMounts(driver *driver.BaseDriver, vmConfig *vz.VirtualMachineCo
378
400
}
379
401
}
380
402
381
- vmConfig .SetDirectorySharingDevicesVirtualMachineConfiguration (mounts )
403
+ if len (mounts ) > 0 {
404
+ vmConfig .SetDirectorySharingDevicesVirtualMachineConfiguration (mounts )
405
+ }
382
406
return nil
383
407
}
384
408
0 commit comments