Skip to content

Commit 2d7f291

Browse files
authored
vfkit: Add vfkit.log (#21096)
Like krunkit and vmnet-helper, we redirect vfkit logs to $MINIKUBE_HOME/.minikube/machines/name/vfkit.log This will be helpful to debug case when vfkit exits with an error. Currently this error goes to /dev/null which makes debugging impossible. It will be also useful if we need to get help from vfkit folks. Example log: time="2025-07-20T02:48:43+03:00" level=info msg="&{2 6144 {[efi variable-store=/Users/nir/.minikube/machines/minikube/vfkit.efivars create] true} [virtio-net,nat,mac=1e:ac:f2:43:84:b3 virtio-rng virtio-blk,path=/Users/nir/.minikube/machines/minikube/boot2docker.iso virtio-blk,path=/Users/nir/.minikube/machines/minikube/disk.img virtio-serial,logFilePath=/Users/nir/.minikube/machines/minikube/serial.log] unix:///Users/nir/.minikube/machines/minikube/vfkit.sock debug false {[] false}}" time="2025-07-20T02:48:43+03:00" level=info msg="boot parameters: &{EFIVariableStorePath:/Users/nir/.minikube/machines/minikube/vfkit.efivars CreateVariableStore:true}" time="2025-07-20T02:48:43+03:00" level=info time="2025-07-20T02:48:43+03:00" level=info msg="virtual machine parameters:" time="2025-07-20T02:48:43+03:00" level=info msg="\tvCPUs: 2" time="2025-07-20T02:48:43+03:00" level=info msg="\tmemory: 6144 MiB" time="2025-07-20T02:48:43+03:00" level=info time="2025-07-20T02:48:43+03:00" level=info msg="Adding virtio-net device (nat: true macAddress: [1e:ac:f2:43:84:b3])" time="2025-07-20T02:48:43+03:00" level=info msg="Adding virtio-rng device" time="2025-07-20T02:48:43+03:00" level=info msg="Adding virtio-blk device (imagePath: /Users/nir/.minikube/machines/minikube/boot2docker.iso)" time="2025-07-20T02:48:43+03:00" level=info msg="Adding virtio-blk device (imagePath: /Users/nir/.minikube/machines/minikube/disk.img)" time="2025-07-20T02:48:43+03:00" level=info msg="Adding virtio-serial device (logFile: /Users/nir/.minikube/machines/minikube/serial.log)" time="2025-07-20T02:48:43+03:00" level=info msg="virtual machine is running" time="2025-07-20T02:48:43+03:00" level=info msg="waiting for VM to stop"
1 parent 97d8a29 commit 2d7f291

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

pkg/drivers/vfkit/vfkit.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ const (
5757
isoFilename = "boot2docker.iso"
5858
pidFileName = "vfkit.pid"
5959
sockFilename = "vfkit.sock"
60+
logFileName = "vfkit.log"
6061
serialFileName = "serial.log"
6162
efiVarsFileName = "vfkit.efivars"
6263
defaultSSHUser = "docker"
@@ -251,7 +252,8 @@ func (d *Driver) startVfkit(socketPath string) error {
251252
startCmd = append(startCmd,
252253
"--memory", fmt.Sprintf("%d", d.Memory),
253254
"--cpus", fmt.Sprintf("%d", d.CPU),
254-
"--restful-uri", fmt.Sprintf("unix://%s", d.sockfilePath()))
255+
"--restful-uri", fmt.Sprintf("unix://%s", d.sockfilePath()),
256+
"--log-level", "debug")
255257

256258
efiVarsPath := d.ResolveStorePath(efiVarsFileName)
257259
startCmd = append(startCmd,
@@ -294,6 +296,13 @@ func (d *Driver) startVfkit(socketPath string) error {
294296
// to terminate the entire process group without harming the vfkit process.
295297
cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
296298

299+
logfile, err := d.openLogfile()
300+
if err != nil {
301+
return fmt.Errorf("failed to open vfkit logfile: %w", err)
302+
}
303+
defer logfile.Close()
304+
cmd.Stderr = logfile
305+
297306
if err := cmd.Start(); err != nil {
298307
return err
299308
}
@@ -342,6 +351,11 @@ func isBootpdError(err error) bool {
342351
return strings.Contains(err.Error(), "could not find an IP address")
343352
}
344353

354+
func (d *Driver) openLogfile() (*os.File, error) {
355+
logfile := d.ResolveStorePath(logFileName)
356+
return os.OpenFile(logfile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o600)
357+
}
358+
345359
func (d *Driver) stopVfkit() error {
346360
if err := d.SetVFKitState("Stop"); err != nil {
347361
// vfkit may be already stopped, shutting down, or not listening.

0 commit comments

Comments
 (0)