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  }