Skip to content

Commit 231b2d4

Browse files
authored
Merge pull request #445 from open-edge-platform/feb26_debug
fix bug on elxr ISO and fix rpm dlstreamer version
2 parents caecffd + 5a2aeed commit 231b2d4

File tree

4 files changed

+67
-7
lines changed

4 files changed

+67
-7
lines changed

image-templates/azl3-x86_64-dlstreamer.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@ systemConfig:
9595
- ffmpeg
9696
- gstreamer
9797
- opencv
98-
- intel-dlstreamer
99-
- openvino-2025.2.0
98+
- intel-dlstreamer-2025.2.0
99+
- openvino-2025.3.0
100100
- linux-firmware-i915
101101

102102
kernel:

image-templates/emt3-x86_64-dlstreamer.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,8 @@ systemConfig:
9393
- ffmpeg
9494
- gstreamer
9595
- opencv
96-
- intel-dlstreamer
97-
- openvino-2025.2.0
96+
- intel-dlstreamer-2025.2.0
97+
- openvino-2025.3.0
9898

9999
# Kernel Configuration
100100
kernel:

internal/image/imageboot/imageboot.go

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -191,10 +191,33 @@ func updateInitramfsForGrub(installRoot, kernelVersion string, template *config.
191191
log.Debugf("No extra modules specified in enableExtraModules")
192192
}
193193

194-
// Run update-initramfs to regenerate the initramfs
195-
cmd := fmt.Sprintf("update-initramfs -u -k %s", kernelVersion)
194+
updateInitramfsExists, err := shell.IsCommandExist("update-initramfs", installRoot)
195+
if err != nil {
196+
return fmt.Errorf("failed to check update-initramfs availability: %w", err)
197+
}
198+
199+
var cmd string
200+
if updateInitramfsExists {
201+
cmd = fmt.Sprintf("update-initramfs -u -k %s", kernelVersion)
202+
} else {
203+
dracutExists, dracutCheckErr := shell.IsCommandExist("dracut", installRoot)
204+
if dracutCheckErr != nil {
205+
return fmt.Errorf("failed to check dracut availability: %w", dracutCheckErr)
206+
}
207+
if !dracutExists {
208+
return fmt.Errorf("neither update-initramfs nor dracut found in the install root")
209+
}
210+
211+
initrdPath := fmt.Sprintf("/boot/initrd.img-%s", kernelVersion)
212+
cmd = fmt.Sprintf("dracut --force --kver %s %s", kernelVersion, initrdPath)
213+
if extraModules != "" {
214+
cmd = fmt.Sprintf("%s --add-drivers '%s'", cmd, extraModules)
215+
}
216+
log.Infof("update-initramfs not found, using dracut fallback")
217+
}
218+
196219
log.Debugf("Executing: %s", cmd)
197-
_, err := shell.ExecCmd(cmd, true, installRoot, nil)
220+
_, err = shell.ExecCmd(cmd, true, installRoot, nil)
198221
if err != nil {
199222
log.Errorf("Failed to update initramfs: %v", err)
200223
return fmt.Errorf("failed to update initramfs: %w", err)

internal/image/imageboot/imageboot_test.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1196,6 +1196,7 @@ func TestUpdateInitramfsForGrub_NoExtraModules(t *testing.T) {
11961196
originalExecutor := shell.Default
11971197
defer func() { shell.Default = originalExecutor }()
11981198
mockExpectedOutput := []shell.MockCommand{
1199+
{Pattern: "command -v update-initramfs", Output: "/usr/sbin/update-initramfs\n", Error: nil},
11991200
{Pattern: "update-initramfs -u -k " + kernelVersion, Output: "update-initramfs: Generating /boot/initrd.img-" + kernelVersion, Error: nil},
12001201
}
12011202
shell.Default = shell.NewMockExecutor(mockExpectedOutput)
@@ -1222,6 +1223,7 @@ func TestUpdateInitramfsForGrub_WithSingleExtraModule(t *testing.T) {
12221223
defer func() { shell.Default = originalExecutor }()
12231224
mockExpectedOutput := []shell.MockCommand{
12241225
{Pattern: "echo 'intel_vpu' >> /etc/initramfs-tools/modules", Output: "", Error: nil},
1226+
{Pattern: "command -v update-initramfs", Output: "/usr/sbin/update-initramfs\n", Error: nil},
12251227
{Pattern: "update-initramfs -u -k " + kernelVersion, Output: "update-initramfs: Generating /boot/initrd.img-" + kernelVersion, Error: nil},
12261228
}
12271229
shell.Default = shell.NewMockExecutor(mockExpectedOutput)
@@ -1250,6 +1252,7 @@ func TestUpdateInitramfsForGrub_WithMultipleExtraModules(t *testing.T) {
12501252
{Pattern: "echo 'intel_vpu' >> /etc/initramfs-tools/modules", Output: "", Error: nil},
12511253
{Pattern: "echo 'nvidia_drm' >> /etc/initramfs-tools/modules", Output: "", Error: nil},
12521254
{Pattern: "echo 'i915' >> /etc/initramfs-tools/modules", Output: "", Error: nil},
1255+
{Pattern: "command -v update-initramfs", Output: "/usr/sbin/update-initramfs\n", Error: nil},
12531256
{Pattern: "update-initramfs -u -k " + kernelVersion, Output: "update-initramfs: Generating /boot/initrd.img-" + kernelVersion, Error: nil},
12541257
}
12551258
shell.Default = shell.NewMockExecutor(mockExpectedOutput)
@@ -1277,6 +1280,7 @@ func TestUpdateInitramfsForGrub_WithWhitespaceInModules(t *testing.T) {
12771280
mockExpectedOutput := []shell.MockCommand{
12781281
{Pattern: "echo 'intel_vpu' >> /etc/initramfs-tools/modules", Output: "", Error: nil},
12791282
{Pattern: "echo 'nvidia_drm' >> /etc/initramfs-tools/modules", Output: "", Error: nil},
1283+
{Pattern: "command -v update-initramfs", Output: "/usr/sbin/update-initramfs\n", Error: nil},
12801284
{Pattern: "update-initramfs -u -k " + kernelVersion, Output: "update-initramfs: Generating /boot/initrd.img-" + kernelVersion, Error: nil},
12811285
}
12821286
shell.Default = shell.NewMockExecutor(mockExpectedOutput)
@@ -1302,19 +1306,49 @@ func TestUpdateInitramfsForGrub_UpdateInitramfsFails(t *testing.T) {
13021306
originalExecutor := shell.Default
13031307
defer func() { shell.Default = originalExecutor }()
13041308
mockExpectedOutput := []shell.MockCommand{
1309+
{Pattern: "command -v update-initramfs", Output: "/usr/sbin/update-initramfs\n", Error: nil},
13051310
{Pattern: "update-initramfs -u -k " + kernelVersion, Output: "", Error: fmt.Errorf("update-initramfs failed")},
13061311
}
13071312
shell.Default = shell.NewMockExecutor(mockExpectedOutput)
13081313

13091314
err := updateInitramfsForGrub(tmpDir, kernelVersion, template)
13101315
if err == nil {
13111316
t.Error("Expected error when update-initramfs fails")
1317+
return
13121318
}
13131319
if !strings.Contains(err.Error(), "failed to update initramfs") {
13141320
t.Errorf("Expected update initramfs error, got: %v", err)
13151321
}
13161322
}
13171323

1324+
func TestUpdateInitramfsForGrub_FallbackToDracut(t *testing.T) {
1325+
tmpDir := t.TempDir()
1326+
kernelVersion := "6.2.0-26-generic"
1327+
1328+
template := &config.ImageTemplate{
1329+
SystemConfig: config.SystemConfig{
1330+
Kernel: config.KernelConfig{
1331+
EnableExtraModules: "intel_vpu",
1332+
},
1333+
},
1334+
}
1335+
1336+
originalExecutor := shell.Default
1337+
defer func() { shell.Default = originalExecutor }()
1338+
mockExpectedOutput := []shell.MockCommand{
1339+
{Pattern: "echo 'intel_vpu' >> /etc/initramfs-tools/modules", Output: "", Error: nil},
1340+
{Pattern: "command -v update-initramfs", Output: "", Error: nil},
1341+
{Pattern: "command -v dracut", Output: "/usr/bin/dracut\n", Error: nil},
1342+
{Pattern: "dracut --force --kver " + kernelVersion + " /boot/initrd.img-" + kernelVersion + " --add-drivers 'intel_vpu'", Output: "", Error: nil},
1343+
}
1344+
shell.Default = shell.NewMockExecutor(mockExpectedOutput)
1345+
1346+
err := updateInitramfsForGrub(tmpDir, kernelVersion, template)
1347+
if err != nil {
1348+
t.Errorf("Expected no error when falling back to dracut, got: %v", err)
1349+
}
1350+
}
1351+
13181352
func TestUpdateInitramfsForGrub_ModuleAddFailsContinues(t *testing.T) {
13191353
tmpDir := t.TempDir()
13201354
kernelVersion := "5.15.0-73-generic"
@@ -1332,6 +1366,7 @@ func TestUpdateInitramfsForGrub_ModuleAddFailsContinues(t *testing.T) {
13321366
mockExpectedOutput := []shell.MockCommand{
13331367
{Pattern: "echo 'intel_vpu' >> /etc/initramfs-tools/modules", Output: "", Error: fmt.Errorf("failed to add module")},
13341368
{Pattern: "echo 'nvidia_drm' >> /etc/initramfs-tools/modules", Output: "", Error: nil},
1369+
{Pattern: "command -v update-initramfs", Output: "/usr/sbin/update-initramfs\n", Error: nil},
13351370
{Pattern: "update-initramfs -u -k " + kernelVersion, Output: "update-initramfs: Generating /boot/initrd.img-" + kernelVersion, Error: nil},
13361371
}
13371372
shell.Default = shell.NewMockExecutor(mockExpectedOutput)
@@ -1396,6 +1431,7 @@ func TestInstallImageBoot_GrubWithEnableExtraModules(t *testing.T) {
13961431
{Pattern: "blkid.*UUID", Output: "UUID=test-uuid\n", Error: nil},
13971432
{Pattern: "blkid.*PARTUUID", Output: "PARTUUID=test-partuuid\n", Error: nil},
13981433
{Pattern: "command -v grub2-mkconfig", Output: "/usr/sbin/grub2-mkconfig", Error: nil},
1434+
{Pattern: "command -v update-initramfs", Output: "/usr/sbin/update-initramfs\n", Error: nil},
13991435
{Pattern: "mkdir", Output: "", Error: nil},
14001436
{Pattern: "cp", Output: "", Error: nil},
14011437
{Pattern: "sed", Output: "", Error: nil},
@@ -1470,6 +1506,7 @@ func TestInstallImageBoot_GrubWithEnableExtraModulesUbuntu(t *testing.T) {
14701506
{Pattern: "blkid.*UUID", Output: "UUID=ubuntu-uuid\n", Error: nil},
14711507
{Pattern: "blkid.*PARTUUID", Output: "PARTUUID=ubuntu-partuuid\n", Error: nil},
14721508
{Pattern: "command -v grub2-mkconfig", Output: "/usr/sbin/grub2-mkconfig", Error: nil},
1509+
{Pattern: "command -v update-initramfs", Output: "/usr/sbin/update-initramfs\n", Error: nil},
14731510
{Pattern: "mkdir", Output: "", Error: nil},
14741511
{Pattern: "cp", Output: "", Error: nil},
14751512
{Pattern: "sed", Output: "", Error: nil},

0 commit comments

Comments
 (0)