用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/coreos/ai-helpers --skill initramfs-investigation命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
OCP release queries - latest versions, RHCOS images, and RPM package lists
Deduplication logic for CI pipeline failures - check Jira for existing tracking with semantic analysis
Investigate Jenkins CI pipeline failures - failure patterns, root cause analysis, and debugging workflows
正在显示 SKILL.md
基于 SOC 职业分类
| name | initramfs-investigation |
| description | Investigate initramfs issues - extraction, module analysis, and comparing working vs failing builds |
Knowledge for investigating initramfs-related boot failures by comparing working and failing builds in FCOS and RHCOS.
Related:
pipeline-failures(CI failures),rhcos-cosa(cosa builds),rhcos-artifacts(build artifacts)
# Check magic bytes
head -c 6 initramfs.img | od -A x -t x1z
| Magic Bytes | Format | Tool |
|---|---|---|
28 b5 2f fd | zstd | zstdcat |
1f 8b | gzip | zcat |
fd 37 7a 58 | xz | xzcat |
30 37 30 37 | CPIO (uncompressed) | Direct cpio |
# For zstd-compressed (FCOS/RHCOS default)
mkdir extracted && cd extracted
zstdcat ../initramfs.img | cpio -idm
# For gzip-compressed
zcat ../initramfs.img | cpio -idm
# For multi-segment (early microcode + main)
skipcpio initramfs.img | zstdcat | cpio -idm
# Using lsinitrd
lsinitrd initramfs.img
# Manual listing
zstdcat initramfs.img | cpio -t | head -50
# List kernel modules
find extracted -name "*.ko*" | head -20
# Find specific module
find extracted -name "scsi_transport_iscsi*"
# Decompress module first (if .ko.xz)
xz -d extracted/usr/lib/modules/*/kernel/drivers/scsi/module.ko.xz
# List all ELF sections
readelf -S module.ko
# Check module architecture
readelf -h module.ko | grep -E "Data|Machine|Class"
# List available builds
curl -s "https://builds.coreos.fedoraproject.org/prod/streams/<stream>/builds/builds.json" | jq -r '.builds[].id' | head -10
# Get build metadata
curl -s "https://builds.coreos.fedoraproject.org/prod/streams/<stream>/builds/<version>/<arch>/meta.json" | jq .
# Download initramfs
curl -LO "https://builds.coreos.fedoraproject.org/prod/streams/<stream>/builds/<version>/<arch>/fedora-coreos-<version>-live-initramfs.<arch>.img"
Streams: stable, testing, next, rawhide
# Get package diff from meta.json (shows what changed from previous build)
curl -s ".../meta.json" | jq '.pkgdiff'
# Check specific package (e.g., kernel)
curl -s ".../meta.json" | jq '.pkgdiff[] | select(.[0] | test("kernel"))'
Base URL: https://releases-rhcos--prod-pipeline.apps.int.prod-stable-spoke1-dc-iad2.itup.redhat.com
# List available builds for a stream
curl -s "https://releases-rhcos--prod-pipeline.apps.int.prod-stable-spoke1-dc-iad2.itup.redhat.com/storage/prod/streams/<stream>/builds/builds.json" | jq -r '.builds[].id' | head -10
# Get build metadata
curl -s "https://releases-rhcos--prod-pipeline.apps.int.prod-stable-spoke1-dc-iad2.itup.redhat.com/storage/prod/streams/<stream>/builds/<buildid>/<arch>/meta.json" | jq .
# Get initramfs path from metadata
curl -s ".../meta.json" | jq -r '.images["live-initramfs"].path'
# Download initramfs
curl -LO "https://releases-rhcos--prod-pipeline.apps.int.prod-stable-spoke1-dc-iad2.itup.redhat.com/storage/prod/streams/<stream>/builds/<buildid>/<arch>/<initramfs-filename>"
Streams: rhel-9.4, rhel-9.6, rhel-10.0, rhel-10.2, etc.
From CI failure logs or build history, identify:
45.20260323.91.1)45.20260324.91.1)# FCOS example
curl -LO ".../45.20260323.91.1/<arch>/fedora-coreos-45.20260323.91.1-live-initramfs.<arch>.img"
curl -LO ".../45.20260324.91.1/<arch>/fedora-coreos-45.20260324.91.1-live-initramfs.<arch>.img"
mv *323* initramfs-working.img
mv *324* initramfs-failing.img
mkdir working failing
cd working && zstdcat ../initramfs-working.img | cpio -idm 2>/dev/null && cd ..
cd failing && zstdcat ../initramfs-failing.img | cpio -idm 2>/dev/null && cd ..
ls working/usr/lib/modules/
ls failing/usr/lib/modules/
# Compare dracut modules included
diff <(ls working/usr/lib/dracut/modules.d/) <(ls failing/usr/lib/dracut/modules.d/)
# Compare a specific module's ELF sections
diff <(readelf -S working/usr/lib/modules/*/kernel/path/to/module.ko) \
<(readelf -S failing/usr/lib/modules/*/kernel/path/to/module.ko)
# Compare file sizes
find working -type f -name "*.ko*" -exec ls -la {} \; | sort > /tmp/working-modules.txt
find failing -type f -name "*.ko*" -exec ls -la {} \; | sort > /tmp/failing-modules.txt
diff /tmp/working-modules.txt /tmp/failing-modules.txt
# Compare dracut config
diff working/usr/lib/dracut/dracut.conf.d/ failing/usr/lib/dracut/dracut.conf.d/
# Check specific dracut scripts
diff working/usr/lib/dracut/modules.d/95iscsi/parse-iscsiroot.sh \
failing/usr/lib/dracut/modules.d/95iscsi/parse-iscsiroot.sh
When investigating boot failures from kola tests:
# Extract kola artifacts
tar -xf kola-upgrade-<arch>.tar.xz
# Find console logs
find . -name "console.txt"
# Look for first error (not cascade failures)
grep -n -E "FATAL|failed to|Failed to|error:" console.txt | head -10
# Check module loading
grep -E "modprobe|insmod|systemd-modules-load" console.txt