Skip to content

Commit 84375ed

Browse files
committed
Fix: Prepare for bootmode validation
1 parent 823d8d1 commit 84375ed

4 files changed

Lines changed: 53 additions & 43 deletions

File tree

alteriso5/work/boot/bootmode.go

Lines changed: 43 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,48 +2,57 @@ package boot
22

33
import "errors"
44

5-
type Mode int
5+
type Mode struct {
6+
name string
7+
validate func() error
8+
}
69

710
var (
8-
BiosSyslinuxMbr Mode = 0
9-
BiosSyslinuxElTorito Mode = 1
10-
UefiIa32SystemdBootEsp Mode = 2
11-
UefiX64SystemdBootEsp Mode = 3
12-
UefiIa32SystemdBootElTorito Mode = 4
13-
UefiX64SystemdBootElTorito Mode = 5
14-
UefiX64GrubEsp Mode = 6
15-
UefiIa32GrubEsp Mode = 7
16-
UefiX64GrubElTorito Mode = 8
17-
UefiIa32GrubElTorito Mode = 9
11+
BiosSyslinuxMbr Mode = Mode{"bios.syslinux.mbr", nil}
12+
BiosSyslinuxElTorito Mode = Mode{"bios.syslinux.eltorito", nil}
13+
UefiIa32SystemdBootEsp Mode = Mode{"uefi-ia32.systemd-boot.esp", nil}
14+
UefiX64SystemdBootEsp Mode = Mode{"uefi-x64.systemd-boot.esp", nil}
15+
UefiIa32SystemdBootElTorito Mode = Mode{"uefi-ia32.systemd-boot.eltorito", nil}
16+
UefiX64SystemdBootElTorito Mode = Mode{"uefi-x64.systemd-boot.eltorito", nil}
17+
UefiX64GrubEsp Mode = Mode{"uefi-x64.grub.esp", nil}
18+
UefiIa32GrubEsp Mode = Mode{"uefi-ia32.grub.esp", nil}
19+
UefiX64GrubElTorito Mode = Mode{"uefi-x64.grub.eltorito", nil}
20+
UefiIa32GrubElTorito Mode = Mode{"uefi-ia32.grub.eltorito", nil}
21+
22+
Modes = []Mode{
23+
BiosSyslinuxMbr,
24+
BiosSyslinuxElTorito,
25+
UefiIa32SystemdBootEsp,
26+
UefiX64SystemdBootEsp,
27+
UefiIa32SystemdBootElTorito,
28+
UefiX64SystemdBootElTorito,
29+
UefiX64GrubEsp,
30+
UefiIa32GrubEsp,
31+
UefiX64GrubElTorito,
32+
UefiIa32GrubElTorito,
33+
}
1834
)
1935

36+
func (m *Mode) String() string {
37+
return m.name
38+
}
39+
40+
func (m *Mode) Validate() error {
41+
if m.validate != nil {
42+
return m.validate()
43+
}
44+
return nil
45+
}
46+
2047
var ErrInvalidMode = errors.New("invalid boot mode")
2148

2249
func getModeFromStr(mode string) (Mode, error) {
23-
switch mode {
24-
case "bios.syslinux.mbr":
25-
return BiosSyslinuxMbr, nil
26-
case "bios.syslinux.eltorito":
27-
return BiosSyslinuxElTorito, nil
28-
case "uefi-ia32.systemd-boot.esp":
29-
return UefiIa32SystemdBootEsp, nil
30-
case "uefi-x64.systemd-boot.esp":
31-
return UefiX64SystemdBootEsp, nil
32-
case "uefi-ia32.systemd-boot.eltorito":
33-
return UefiIa32SystemdBootElTorito, nil
34-
case "uefi-x64.systemd-boot.eltorito":
35-
return UefiX64SystemdBootElTorito, nil
36-
case "uefi-x64.grub.esp":
37-
return UefiX64GrubEsp, nil
38-
case "uefi-ia32.grub.esp":
39-
return UefiIa32GrubEsp, nil
40-
case "uefi-x64.grub.eltorito":
41-
return UefiX64GrubElTorito, nil
42-
case "uefi-ia32.grub.eltorito":
43-
return UefiIa32GrubElTorito, nil
44-
50+
for _, m := range Modes {
51+
if m.name == mode {
52+
return m, nil
53+
}
4554
}
46-
return 0, ErrInvalidMode
55+
return Mode{}, ErrInvalidMode
4756
}
4857

4958
func GetModes(modes ...string) ([]Mode, error) {

alteriso5/work/boot/xorriso.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,10 @@ func (x *xorriso) Args(bootmode ...Mode) *[]string {
2929
args = append(args, xorrisoCommonArgs.args(x)...)
3030

3131
for _, arg := range x.args {
32-
if bootmode[0] == arg.bootMode {
33-
slog.Debug("Adding xorriso args", "mode", arg.bootMode, "args", arg.args)
34-
args = append(args, arg.args(x)...)
32+
for _, mode := range bootmode {
33+
if arg.bootMode.String() == mode.String() {
34+
args = append(args, arg.args(x)...)
35+
}
3536
}
3637
}
3738
return &args

alteriso5/work/task-bootmodes.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,20 @@ import "github.com/FascodeNet/alterlinux/alteriso5/work/boot"
55
// Run each bootmodes
66
var makeBootModes *BuildTask = NewBuildTask("makeBootModes", func(w Work) error {
77
for _, mode := range w.profile.BootModes {
8-
switch mode {
9-
case boot.BiosSyslinuxMbr:
8+
switch mode.String() {
9+
case boot.BiosSyslinuxMbr.String():
1010
if err := w.RunOnce(makeBiosSysLinuxMbr); err != nil {
1111
return err
1212
}
13-
case boot.BiosSyslinuxElTorito:
13+
case boot.BiosSyslinuxElTorito.String():
1414
if err := w.RunOnce(makeBiosSysLinuxElTorito); err != nil {
1515
return err
1616
}
17-
case boot.UefiX64SystemdBootEsp:
17+
case boot.UefiX64SystemdBootEsp.String():
1818
if err := w.RunOnce(makeUefiX64SystemdBootEsp); err != nil {
1919
return err
2020
}
21-
case boot.UefiX64SystemdBootElTorito:
21+
case boot.UefiX64SystemdBootElTorito.String():
2222
if err := w.RunOnce(makeUefiX64SystemdBootElTorito); err != nil {
2323
return err
2424
}

profile/profiledef.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"install_dir": "alter",
3-
"bootmodes": ["bios.syslinux.mbr"],
3+
"bootmodes": ["bios.syslinux.mbr", "bios.syslinux.eltorito"],
44
"use_alter_syslinux": true
55
}

0 commit comments

Comments
 (0)