Try multi-kernel initramfs module

This commit is contained in:
Gerald Pinder
2025-02-13 23:40:56 -05:00
parent 2dd169000c
commit a6b63bcac8
2 changed files with 50 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
#!/usr/bin/env nu
def main [_config: string] {
const WRAPPED_DRACUT_PATH = '/usr/libexec/rpm-ostree/wrapped/dracut'
const DRACUT_PATH = '/usr/bin/dracut'
const KERNEL_MODULES_PATH = '/usr/lib/modules'
let rpm_ostree_exists = (^command -v rpm-ostree | complete).exit_code == 0
let bootc_exists = (^command -v bootc | complete).exit_code == 0
if not ($rpm_ostree_exists or $bootc_exists) {
return (error make {
msg: 'This module is only compatible with Fedora Atomic images'
labels: [
{
text: 'Checks for rpm-ostree'
span: (metadata $rpm_ostree_exists).span
}
{
text: 'Checks for bootc'
span: (metadata $bootc_exists).span
}
]
})
}
let dracut_path = if ($WRAPPED_DRACUT_PATH | path exists) {
$WRAPPED_DRACUT_PATH
} else {
$DRACUT_PATH
}
ls $KERNEL_MODULES_PATH
| get name
| path basename
| each {|kernel|
let image_path = [$KERNEL_MODULES_PATH $kernel initramfs.img] | path join
try {
(^$dracut_path
--no-hostonly
--kver $kernel
--reproducible
-v
--add ostree
-f $image_path)
}
chmod 0600 $image_path
}
}

View File

@@ -1,5 +1,6 @@
modules: modules:
- type: initramfs - type: initramfs
source: local
# - type: script # - type: script
# scripts: # scripts:
# - initramfs.sh # - initramfs.sh