Files
warewulf/internal/pkg/container/grub.go
Christian Goll 03ef7447e9 copy shim/grub on default profile container change
Signed-off-by: Christian Goll <cgoll@suse.com>
2024-01-17 18:02:04 -07:00

52 lines
1.1 KiB
Go

package container
import (
"os"
"path"
"path/filepath"
"github.com/hpcng/warewulf/internal/pkg/wwlog"
)
func grubDirs() []string {
return []string{
`/usr/share/grub2/x86_64-efi`,
`/usr/share/efi/x86_64/`,
`/boot/efi/EFI/*/`,
}
}
func grubNames() []string {
return []string{
`grub-tpm.efi`,
`grub.efi`,
`grubx64.efi`,
}
}
/*
find a grub.efi in the used container
*/
func GrubFind(container string) string {
wwlog.Debug("Finding grub")
container_path := RootFsDir(container)
if container_path == "" {
return ""
}
for _, grubdir := range grubDirs() {
wwlog.Debug("Checking grub directory: %s", grubdir)
for _, grubname := range grubNames() {
wwlog.Debug("Checking for grub name: %s", grubname)
grubPaths, _ := filepath.Glob(path.Join(container_path, grubdir, grubname))
for _, grubpath := range grubPaths {
wwlog.Debug("Checking for grub path: %s", grubpath)
// Only succeeds if grubpath exists and, if a
// symlink, links to a path that also exists
if _, err := os.Stat(grubpath); err == nil {
return grubpath
}
}
}
}
return ""
}