MCPcopy Index your code
hub / github.com/linuxkit/linuxkit / runcInit

Function runcInit

pkg/init/cmd/service/runc.go:34–219  ·  view source on GitHub ↗
(rootPath, serviceType string)

Source from the content-addressed store, hash-verified

32}
33
34func runcInit(rootPath, serviceType string) int {
35 // do nothing if the path does not exist
36 if _, err := os.Stat(rootPath); err != nil && os.IsNotExist(err) {
37 return 0
38 }
39
40 // get files; note ReadDir already sorts them
41 files, err := os.ReadDir(rootPath)
42 if err != nil {
43 log.Fatalf("Cannot read files in %s: %v", rootPath, err)
44 }
45
46 tmpdir, err := os.MkdirTemp("", filepath.Base(rootPath))
47 if err != nil {
48 log.Fatalf("Cannot create temporary directory: %v", err)
49 }
50
51 // need to set ourselves as a child subreaper or we cannot wait for runc as reparents to init
52 if err := setSubreaper(1); err != nil {
53 log.Fatalf("Cannot set as subreaper: %v", err)
54 }
55
56 status := 0
57
58 logDir := path.Join(logDirBase, serviceType)
59 varLogLink := path.Join(varLogDir, serviceType)
60
61 if err := os.MkdirAll(logDir, 0755); err != nil {
62 log.Fatalf("Cannot create log directory %s: %v", logDir, err)
63 }
64
65 logger := GetLog(logDir)
66 v2, err := isCgroupV2()
67 if err != nil {
68 log.Fatalf("Cannot determine cgroup version: %v", err)
69 }
70 msg := "cgroup v1"
71 if v2 {
72 msg = "cgroup v2"
73 }
74 log.Printf("Using %s", msg)
75
76 // did we choose to run in debug mode? If so, runc will be in debug, and all messages will go to stdout/stderr in addition to the log
77 var runcDebugMode, runcConsoleMode bool
78 dt, err := os.ReadFile("/proc/cmdline")
79 if err != nil {
80 log.Fatalf("error reading /proc/cmdline: %v", err)
81 }
82
83 debugLogger := log.New()
84 debugLogger.Level = log.InfoLevel
85
86 for _, s := range strings.Fields(string(dt)) {
87 if s == "linuxkit.runc_debug=1" {
88 runcDebugMode = true
89 debugLogger.Level = log.DebugLevel
90 }
91 if s == "linuxkit.runc_console=1" {

Callers 1

mainFunction · 0.85

Calls 13

setSubreaperFunction · 0.85
GetLogFunction · 0.85
isCgroupV2Function · 0.85
getRuntimeConfigFunction · 0.85
prepareFilesystemFunction · 0.85
prepareProcessFunction · 0.85
WaitMethod · 0.80
RemoveMethod · 0.80
cleanupFunction · 0.70
OpenMethod · 0.65
DumpMethod · 0.65
SymlinkMethod · 0.65

Tested by

no test coverage detected