@@ -5,75 +5,74 @@ import (
55 "path/filepath"
66
77 "github.com/sprat/claylinux/imager/efi"
8+ "github.com/sprat/claylinux/imager/uki"
89)
910
1011// Build the Unified Kernel Image
1112func (i Image ) buildUKI () (string , error ) {
1213 stubPath := efi .GetStubPath ()
13- peFile , err := NewPEFile (stubPath )
14+ stub , err := os . ReadFile (stubPath )
1415 if err != nil {
1516 return "" , err
1617 }
18+ builder := uki .NewBuilder (stub )
1719
1820 // cmdline
19- cmdline := i .getCmdline ()
20- err = peFile .AddSection (".cmdline" , cmdline )
21+ cmdline , err := i .getCmdline ()
2122 if err != nil {
2223 return "" , err
2324 }
25+ builder .AddSection (".cmdline" , []byte (cmdline ))
2426
2527 // initramfs
28+ // TODO: build in memory?
2629 initRamFsPath , err := i .buildInitRamFs ()
2730 if err != nil {
2831 return "" , err
2932 }
30- err = peFile . AddSection ( ".initrd" , initRamFsPath )
33+ initRamFs , err := os . ReadFile ( initRamFsPath )
3134 if err != nil {
3235 return "" , err
3336 }
37+ builder .AddSection (".initrd" , initRamFs )
3438
3539 // kernel release
3640 kernelRelease , err := i .getKernelRelease ()
3741 if err != nil {
3842 return "" , err
3943 }
40- kernelReleasePath := filepath .Join (i .BuildDir , "kernel-release" )
41- os .WriteFile (kernelReleasePath , []byte (kernelRelease ), 0644 )
42- err = peFile .AddSection (".uname" , kernelReleasePath )
43- if err != nil {
44- return "" , err
45- }
44+ builder .AddSection (".uname" , []byte (kernelRelease ))
4645
4746 // os release
48- osReleasePath := filepath .Join (i .RootFsDir , "etc" , "os-release" )
49- err = peFile .AddSection (".osrel" , osReleasePath )
47+ osRelease , err := i .getOSRelease ()
5048 if err != nil {
5149 return "" , err
5250 }
51+ builder .AddSection (".osrel" , []byte (osRelease ))
5352
5453 // TODO: include ucode
5554 // ucodePath, err := findSingleFile(filepath.Join(i.RootFsDir, "boot", "*-ucode.img"))
56- // peFile.AddSection("".ucode", ucodePath)
57-
58- // peFile.AddSection("".dtb", ...)
59- // peFile.AddSection("".splash", ...)
55+ // builder.AddSection(".ucode", ucodePath)
56+ // builder.AddSection(".dtb", ...)
57+ // builder.AddSection(".splash", ...)
6058
6159 // kernel
6260 // Should be the last section because everything after can be overwritten by in-place kernel decompression
63- kernelPath , err := i .findKernel ()
61+ kernelPath , err := i .findKernelPath ()
6462 if err != nil {
6563 return "" , err
6664 }
67- err = peFile . AddSection ( ".linux" , kernelPath )
65+ kernel , err := os . ReadFile ( kernelPath )
6866 if err != nil {
6967 return "" , err
7068 }
69+ builder .AddSection (".linux" , kernel )
7170
72- // run objcopy
7371 outputPath := filepath .Join (i .BuildDir , "claylinux.efi" )
74- err = peFile . Finalize (outputPath )
72+ err = builder . Write (outputPath )
7573 if err != nil {
7674 return "" , err
7775 }
76+
7877 return outputPath , nil
7978}
0 commit comments