mirror of
https://github.com/rancher/os.git
synced 2025-04-27 19:15:23 +00:00
95 lines
2.2 KiB
Go
95 lines
2.2 KiB
Go
package install
|
|
|
|
import (
|
|
"bufio"
|
|
"bytes"
|
|
"html/template"
|
|
"io/ioutil"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
|
|
"github.com/rancher/os/pkg/log"
|
|
)
|
|
|
|
func syslinuxConfig(menu BootVars) error {
|
|
log.Debugf("syslinuxConfig")
|
|
|
|
filetmpl, err := template.New("syslinuxconfig").Parse(`{{define "syslinuxmenu"}}
|
|
LABEL {{.Name}}
|
|
LINUX ../vmlinuz-{{.Version}}-rancheros
|
|
APPEND {{.KernelArgs}} {{.Append}}
|
|
INITRD ../initrd-{{.Version}}-rancheros
|
|
{{end}}
|
|
TIMEOUT 20 #2 seconds
|
|
DEFAULT RancherOS-current
|
|
|
|
{{- range .Entries}}
|
|
{{template "syslinuxmenu" .}}
|
|
{{- end}}
|
|
|
|
`)
|
|
if err != nil {
|
|
log.Errorf("syslinuxconfig %s", err)
|
|
return err
|
|
}
|
|
|
|
cfgFile := filepath.Join(menu.BaseName, menu.BootDir+"syslinux/syslinux.cfg")
|
|
log.Debugf("syslinuxConfig written to %s", cfgFile)
|
|
f, err := os.Create(cfgFile)
|
|
if err != nil {
|
|
log.Errorf("Create(%s) %s", cfgFile, err)
|
|
return err
|
|
}
|
|
err = filetmpl.Execute(f, menu)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func ReadGlobalCfg(globalCfg string) (string, error) {
|
|
append := ""
|
|
buf, err := ioutil.ReadFile(globalCfg)
|
|
if err != nil {
|
|
return append, err
|
|
}
|
|
|
|
s := bufio.NewScanner(bytes.NewReader(buf))
|
|
for s.Scan() {
|
|
line := strings.TrimSpace(s.Text())
|
|
if strings.HasPrefix(line, "APPEND") {
|
|
append = strings.TrimSpace(strings.TrimPrefix(line, "APPEND"))
|
|
}
|
|
}
|
|
return append, nil
|
|
}
|
|
|
|
func ReadSyslinuxCfg(currentCfg string) (string, string, error) {
|
|
vmlinuzFile := ""
|
|
initrdFile := ""
|
|
// Need to parse currentCfg for the lines:
|
|
// KERNEL ../vmlinuz-4.9.18-rancher^M
|
|
// INITRD ../initrd-41e02e6-dirty^M
|
|
buf, err := ioutil.ReadFile(currentCfg)
|
|
if err != nil {
|
|
return vmlinuzFile, initrdFile, err
|
|
}
|
|
|
|
DIST := filepath.Dir(currentCfg)
|
|
|
|
s := bufio.NewScanner(bytes.NewReader(buf))
|
|
for s.Scan() {
|
|
line := strings.TrimSpace(s.Text())
|
|
if strings.HasPrefix(line, "KERNEL") {
|
|
vmlinuzFile = strings.TrimSpace(strings.TrimPrefix(line, "KERNEL"))
|
|
vmlinuzFile = filepath.Join(DIST, filepath.Base(vmlinuzFile))
|
|
}
|
|
if strings.HasPrefix(line, "INITRD") {
|
|
initrdFile = strings.TrimSpace(strings.TrimPrefix(line, "INITRD"))
|
|
initrdFile = filepath.Join(DIST, filepath.Base(initrdFile))
|
|
}
|
|
}
|
|
return vmlinuzFile, initrdFile, err
|
|
}
|