github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/engine/pkg/parsers/kernel/kernel_unix.go (about) 1 //go:build linux || freebsd || openbsd 2 // +build linux freebsd openbsd 3 4 // Package kernel provides helper function to get, parse and compare kernel 5 // versions for different platforms. 6 package kernel // import "github.com/docker/docker/pkg/parsers/kernel" 7 8 import ( 9 "bytes" 10 11 "github.com/sirupsen/logrus" 12 ) 13 14 // GetKernelVersion gets the current kernel version. 15 func GetKernelVersion() (*VersionInfo, error) { 16 uts, err := uname() 17 if err != nil { 18 return nil, err 19 } 20 21 // Remove the \x00 from the release for Atoi to parse correctly 22 return ParseRelease(string(uts.Release[:bytes.IndexByte(uts.Release[:], 0)])) 23 } 24 25 // CheckKernelVersion checks if current kernel is newer than (or equal to) 26 // the given version. 27 func CheckKernelVersion(k, major, minor int) bool { 28 if v, err := GetKernelVersion(); err != nil { 29 logrus.Warnf("error getting kernel version: %s", err) 30 } else { 31 if CompareKernelVersion(*v, VersionInfo{Kernel: k, Major: major, Minor: minor}) < 0 { 32 return false 33 } 34 } 35 return true 36 }