Try multi-kernel initramfs module
This commit is contained in:
49
modules/initramfs/initramfs.nu
Normal file
49
modules/initramfs/initramfs.nu
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
modules:
|
modules:
|
||||||
- type: initramfs
|
- type: initramfs
|
||||||
|
source: local
|
||||||
# - type: script
|
# - type: script
|
||||||
# scripts:
|
# scripts:
|
||||||
# - initramfs.sh
|
# - initramfs.sh
|
||||||
|
|||||||
Reference in New Issue
Block a user