diff --git a/pkg/provision/buildroot.go b/pkg/provision/buildroot.go index 3195c54fb932..cbf2cb5a9001 100644 --- a/pkg/provision/buildroot.go +++ b/pkg/provision/buildroot.go @@ -87,6 +87,13 @@ func (p *BuildrootProvisioner) GenerateDockerOptions(dockerPort int) (*provision driverNameLabel := fmt.Sprintf("provider=%s", p.Driver.DriverName()) p.EngineOptions.Labels = append(p.EngineOptions.Labels, driverNameLabel) + noPivot := true + // Using pivot_root is not supported on fstype rootfs + if fstype, err := rootFileSystemType(p); err == nil { + log.Debugf("root file system type: %s", fstype) + noPivot = fstype == "rootfs" + } + engineConfigTmpl := `[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com @@ -96,8 +103,14 @@ Requires= minikube-automount.service docker.socket [Service] Type=notify +` + if noPivot { + engineConfigTmpl += ` # DOCKER_RAMDISK disables pivot_root in Docker, using MS_MOVE instead. Environment=DOCKER_RAMDISK=yes +` + } + engineConfigTmpl += ` {{range .EngineOptions.Env}}Environment={{.}} {{end}} @@ -155,6 +168,14 @@ WantedBy=multi-user.target }, nil } +func rootFileSystemType(p *BuildrootProvisioner) (string, error) { + fs, err := p.SSHCommand("df --output=fstype / | sed 1d") + if err != nil { + return "", err + } + return strings.TrimSpace(fs), nil +} + // Package installs a package func (p *BuildrootProvisioner) Package(name string, action pkgaction.PackageAction) error { return nil