Conversation
✅ Deploy Preview for jumpstarter-docs ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
WalkthroughSwitches aarch64 flasher bundle to use Fedora kernel artifacts and LZ4-compressed initramfs, adds a new kernel_fedora.sh to extract/compress kernel/DTBs/modules into the overlay, updates ITS/ITB inputs and U-Boot bootcmds to unlz4+imxtract+booti, bumps automotive kernel version, and adjusts manifests and Buildroot config. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
participant Build as build_fits.sh
participant BR as Buildroot
participant KF as kernel_fedora.sh
participant ITS as fedora.its
participant ITB as mkimage -> flasher-fedora.itb
rect rgb(235,245,255)
note over Build: Build-time flow (Fedora kernel + LZ4 initramfs)
Build->>BR: build rootfs (rootfs.cpio.lz4)
Build->>KF: prepare kernel-fedora (vmlinuz.lz4, dtb/, modules)
KF-->>Build: overlay/kernel-fedora artifacts
Build->>ITS: reference new kernel/initrd/DTBs
Build->>ITB: mkimage(fedora.its) -> flasher-fedora.itb
end
sequenceDiagram
autonumber
participant U as U-Boot
participant ITB as flasher-fedora.itb
participant RAM as Memory
rect rgb(245,255,245)
note over U: Boot-time flow (TI variants)
U->>ITB: load ITB @0x90000000
U->>RAM: unlz4 payload -> 0x80000000
U->>RAM: imxtract fdt-<variant> -> 0x88000000
U->>RAM: imxtract initrd -> 0x89000000
U->>U: booti 0x80000000 0x89000000:0x7000000 0x88000000
end
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 inconclusive)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (2)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_automotive.sh (1)
1-1: Harden script: strict mode, quoting, and guarded directory ops (prevents silent failures).Adopt strict bash options, quote vars, guard pushd/popd, and avoid word-splitting in loops and read. This eliminates several fragile spots.
#!/bin/bash +set -euo pipefail - pushd ./kernel-automotive +pushd ./kernel-automotive || exit - for pkg in "${pkgs[@]}"; do - [[ -f $pkg ]] || wget "$url/$pkg" || exit 1 +for pkg in "${pkgs[@]}"; do + [[ -f "$pkg" ]] || wget "$url/$pkg" || exit 1 done - for pkg in "${pkgs[@]}"; do +for pkg in "${pkgs[@]}"; do echo -n "extracting $pkg ... " - rpm2cpio $pkg | cpio -id + rpm2cpio "$pkg" | cpio -id done echo "extracting kernel ..." -unzboot lib/modules/$KVER/vmlinuz vmlinuz +unzboot "lib/modules/$KVER/vmlinuz" vmlinuz ln -sfn lib/modules/$KVER/dtb dtb echo "updating module deps ..." -depmod --errsyms --filesyms lib/modules/$KVER/System.map --basedir $PWD $KVER +depmod --errsyms --filesyms "lib/modules/$KVER/System.map" --basedir "$PWD" "$KVER" echo "building required modules list ..." -for mod in ${KMOD[@]}; do - modprobe -d $PWD -S $KVER --show-depends $mod +for mod in "${KMOD[@]}"; do + modprobe -d "$PWD" -S "$KVER" --show-depends "$mod" done | sed "s|$PWD||; s|^builtin|# builtin|; s|\\.ko\\.zst|.ko|" > modlist -popd +popd || exit echo "installing modules into overlay dir ..." -mkdir -p $ODIR/lib/modules $ODIR/etc/init.d || exit 1 -sed -nr 's|^insmod ||p' < ./kernel-automotive/modlist | while read mod; do - mkdir -p "$ODIR$(dirname $mod)" - zstd -d "./kernel-automotive$mod.zst" -o "$ODIR$mod" +mkdir -p "$ODIR/lib/modules" "$ODIR/etc/init.d" || exit 1 +sed -nr 's|^insmod ||p' < ./kernel-automotive/modlist | while read -r mod; do + mkdir -p "$ODIR$(dirname "$mod")" + zstd -d "./kernel-automotive${mod}.zst" -o "$ODIR${mod}" doneAlso applies to: 18-21, 31-39, 41-49, 52-57
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh (1)
1-1: Address shellcheck warnings and harden script (strict mode, quoting, guarded dir ops).Prevents word-splitting and directory stack failures; improves reliability in CI.
#!/bin/bash +set -euo pipefail [ $# -ne 1 ] && { echo "$0 [target_overlay_dir]"; exit 1; } ODIR=$1 mkdir -p ./kernel-fedora -pushd ./kernel-fedora +pushd ./kernel-fedora || exit -KVER=$(rpm -q kernel | head -1 | cut -d - -f 2,3) +KVER=$(rpm -q --qf '%{VERSION}-%{RELEASE}.%{ARCH}\n' kernel | head -1) unzboot /usr/lib/modules/$KVER/vmlinuz vmlinuz lz4 -12 vmlinuz vmlinuz.lz4 -ln -sfn /lib/modules/$KVER/dtb dtb +ln -sfn "/usr/lib/modules/$KVER/dtb" dtb echo "building required modules list ..." -for mod in ${KMOD[@]}; do - modprobe -S $KVER --show-depends $mod +for mod in "${KMOD[@]}"; do + modprobe -S "$KVER" --show-depends "$mod" done | sed "s|^builtin|# builtin|; s|\\.ko\\.xz|.ko|" > modlist -popd +popd || exit echo "installing modules into overlay dir ..." -mkdir -p $ODIR/etc/init.d || exit 1 -sed -nr 's|^insmod ||p' < ./kernel-fedora/modlist | while read mod; do - echo $mod - mkdir -p "$ODIR$(dirname $mod)" - xz -dc "$mod.xz" > "$ODIR$mod" +mkdir -p "$ODIR/etc/init.d" || exit 1 +sed -nr 's|^insmod ||p' < ./kernel-fedora/modlist | while read -r mod; do + echo "$mod" + mkdir -p "$ODIR$(dirname "$mod")" + xz -dc "$mod.xz" > "$ODIR$mod" doneAlso applies to: 12-16, 22-25, 28-34
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (8)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/build_fits.sh(1 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/buildroot_defconfig(2 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/fedora.its(5 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_automotive.sh(1 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh(1 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/manifest-nxp.yaml(1 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/manifest-ti.yaml(1 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/s32g3.dts(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: michalskrivanek
PR: jumpstarter-dev/jumpstarter#584
File: packages/jumpstarter/jumpstarter/client/grpc.py:38-54
Timestamp: 2025-08-18T07:13:37.619Z
Learning: User michalskrivanek prefers inline code over small helper function extractions when the abstraction doesn't significantly improve readability or reduce complexity. They value straightforward, readable code over reducing minor duplication.
🪛 Shellcheck (0.11.0)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh
[warning] 15-15: Use 'pushd ... || exit' or 'pushd ... || return' in case pushd fails.
(SC2164)
[error] 22-22: Double quote array expansions to avoid re-splitting elements.
(SC2068)
[warning] 26-26: Use 'popd ... || exit' or 'popd ... || return' in case popd fails.
(SC2164)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
- GitHub Check: Redirect rules - jumpstarter-docs
- GitHub Check: Header rules - jumpstarter-docs
- GitHub Check: Pages changed - jumpstarter-docs
🔇 Additional comments (11)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/buildroot_defconfig (2)
18-18: Switch to LZ4 aligns with new Fedora ITB flow.Change is consistent with fedora.its using rootfs.cpio.lz4.
30-37: Disabling kernel build is coherent with external Fedora kernel usage.Commented references retained for fallback; good choice.
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/manifest-ti.yaml (1)
36-37: Update to flasher-fedora.itb looks correct.Matches build_fits.sh output path and address.
Please confirm lab docs/scripts referencing the old flasher-buildroot.itb are updated accordingly.
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/build_fits.sh (1)
21-25: Order and outputs LGTM.Running kernel_fedora.sh before Buildroot and producing flasher-fedora.itb is consistent.
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh (1)
20-21: Verify dtb path on Fedora kernels.Some Fedora kernels ship DTBs under /usr/lib/modules//dtb. Using /usr/lib (vs /lib) avoids relying on symlinks.
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/manifest-nxp.yaml (2)
34-37: LGTM: references Fedora ITB and standard load address.
16-18: Confirm target sysfs path stability across kernel updates.The usd path points to a platform device node. Please confirm it resolves on S32G3 with the Fedora kernel you package.
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/fedora.its (2)
10-16: Kernel/initrd entries look consistent; validate LZ4 support.Kernel is marked lz4; initrd file is .lz4 but compression is "none" (kernel will decompress). Ensure CONFIG_RD_LZ4 is enabled in the Fedora and Automotive kernels.
Also applies to: 22-31
54-61: New s32g3 FDT and configuration are wired correctly.Matches manifest-nxp.yaml bootcmd and load addresses.
Also applies to: 87-95
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/s32g3.dts (2)
1-9: New DTS: high-level structure looks sane.No blocking issues spotted; compile-time validation will come from dtc in the build.
Please confirm the DTS compiles cleanly with dtc and boots to shell on S32G-VNP-RDB3 with networking and USDHC.
652-711: NIC/MDIO minimal binding; verify PHY autoneg and link.PHY1 is declared without further properties. Validate link up and RX/TX queue config on real hardware.
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/build_fits.sh
Show resolved
Hide resolved
ec83fd1 to
c9ab641
Compare
There was a problem hiding this comment.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/build_fits.sh (1)
7-7: Cross-arch hazard: kernel_fedora.sh consumes the container’s installed kernel (may be x86_64), but FIT is arm64.Either force an aarch64 container or make kernel_fedora.sh fetch aarch64 kernel artifacts explicitly.
Minimal hardening for this flow:
- exec podman run --rm -it -v $(pwd):/host:Z -w /host fedora:42 "$0" "$@" + exec podman run --rm -it --arch aarch64 -v $(pwd):/host:Z -w /host fedora:42 "$0" "$@"Alternatively, rework kernel_fedora.sh to download/extract aarch64 kernel RPMs (kernel-core/kernel-modules) with rpm2cpio instead of using the container’s native arch kernel.
Also applies to: 25-26
🧹 Nitpick comments (3)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh (1)
12-16: Shell robustness and quoting (ShellCheck findings).Tighten error handling and quoting to avoid subtle failures.
Apply this diff:
#!/bin/bash +set -euo pipefail @@ [ $# -ne 1 ] && { echo "$0 [target_overlay_dir]"; exit 1; } ODIR=$1 mkdir -p ./kernel-fedora -pushd ./kernel-fedora +pushd ./kernel-fedora || exit 1 @@ -echo "building required modules list ..." -for mod in ${KMOD[@]}; do +echo "building required modules list ..." +for mod in "${KMOD[@]}"; do modprobe -S $KVER --show-depends $mod done | sed "s|^builtin|# builtin|; s|\\.ko\\.xz|.ko|" > modlist @@ -popd +popd || exit 1 @@ -echo "installing modules into overlay dir ..." -mkdir -p $ODIR/etc/init.d || exit 1 -sed -nr 's|^insmod ||p' < ./kernel-fedora/modlist | while read mod; do - echo $mod - mkdir -p "$ODIR$(dirname $mod)" - xz -dc "$mod.xz" > "$ODIR$mod" +echo "installing modules into overlay dir ..." +mkdir -p "$ODIR/etc/init.d" || exit 1 +sed -nr 's|^insmod ||p' < ./kernel-fedora/modlist | while IFS= read -r mod; do + echo "$mod" + mkdir -p "$ODIR$(dirname "$mod")" + xz -dc "$mod.xz" > "$ODIR$mod" done @@ -echo "adding modules start-up script to overlay ..." -script=$ODIR/etc/init.d/S01modules -cat >$script <<EOF +echo "adding modules start-up script to overlay ..." +script="$ODIR/etc/init.d/S01modules" +cat >"$script" <<EOF #!/bin/sh @@ EOF -chmod +x $script +chmod +x "$script"Also applies to: 22-26, 28-35, 37-45
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/fedora.its (1)
22-27: Initrd compression metadata mismatch.rootfs is LZ4-compressed, but the FIT says compression "none". Align to "lz4" for correctness and consistency.
Apply this diff:
- data = /incbin/("/var/tmp/buildroot/output/images/rootfs.cpio.lz4"); + data = /incbin/("/var/tmp/buildroot/output/images/rootfs.cpio.lz4"); type = "ramdisk"; arch = "arm64"; os = "linux"; - compression = "none"; + compression = "lz4";packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/manifest-nxp.yaml (1)
4-4: Board name typo ("vnd" vs "vnp").Elsewhere you use S32G‑VNP‑RDB3. Consider correcting metadata.name for consistency.
Apply this diff:
- name: nxp-s32g-vnd-rdb3 + name: nxp-s32g-vnp-rdb3
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (6)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/build_fits.sh(1 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/buildroot_defconfig(2 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/fedora.its(5 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh(1 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/manifest-nxp.yaml(1 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/manifest-ti.yaml(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/manifest-ti.yaml
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: michalskrivanek
PR: jumpstarter-dev/jumpstarter#584
File: packages/jumpstarter/jumpstarter/client/grpc.py:38-54
Timestamp: 2025-08-18T07:13:37.619Z
Learning: User michalskrivanek prefers inline code over small helper function extractions when the abstraction doesn't significantly improve readability or reduce complexity. They value straightforward, readable code over reducing minor duplication.
🪛 Shellcheck (0.11.0)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh
[warning] 15-15: Use 'pushd ... || exit' or 'pushd ... || return' in case pushd fails.
(SC2164)
[error] 22-22: Double quote array expansions to avoid re-splitting elements.
(SC2068)
[warning] 26-26: Use 'popd ... || exit' or 'popd ... || return' in case popd fails.
(SC2164)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
- GitHub Check: Redirect rules - jumpstarter-docs
- GitHub Check: Header rules - jumpstarter-docs
- GitHub Check: Pages changed - jumpstarter-docs
🔇 Additional comments (3)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/buildroot_defconfig (2)
18-18: LZ4 rootfs switch looks good; verify RD_LZ4 in Fedora kernel.Aligns with fedora.its referencing rootfs.cpio.lz4. Please confirm Fedora kernel has CONFIG_RD_LZ4 enabled to avoid boot issues.
31-37: Deferring kernel build in Buildroot is consistent with the new Fedora-based flow.Good to keep prior kernel config commented for reference.
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/build_fits.sh (1)
12-15: Missing build deps: dtc and rpm2cpio (via rpm-build).These are required for s32g3.dtb generation and kernel_automotive.sh. Please add them to the install list.
Apply this diff:
- dnf install --setopt=install_weak_deps=false -y git make gcc gcc-c++ which file diffutils \ - wget cpio rsync bc lzop zip patch perl tar qemu-system-aarch64 qemu-img unzboot \ - uboot-tools kmod awk zstd lz4 kernel + dnf install --setopt=install_weak_deps=false -y git make gcc gcc-c++ which file diffutils \ + wget cpio rsync bc lzop zip patch perl tar qemu-system-aarch64 qemu-img unzboot \ + uboot-tools kmod awk zstd lz4 kernel dtc rpm-build
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/build_fits.sh
Show resolved
Hide resolved
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh
Show resolved
Hide resolved
c9ab641 to
14ee0e7
Compare
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (7)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/automotive.its (1)
45-53: Declare ramdisk compression explicitly (consistency with Fedora ITS).You switched the initrd to an LZ4 payload. Consider explicitly setting the compression (matching the intended decompressor), or keep it “none” to let the kernel decompress. Align with fedora.its for consistency.
Apply one of:
- initrd { + initrd { description = "Initrd"; data = /incbin/("/var/tmp/buildroot/output/images/rootfs.cpio.lz4"); type = "ramdisk"; arch = "arm64"; os = "linux"; + compression = "none"; hash { algo = "sha256"; }; };or, if you want U‑Boot to decompress:
- os = "linux"; - hash { + os = "linux"; + compression = "lz4"; + hash {packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh (5)
1-2: Harden script: fail fast on errors.Enable strict mode to avoid silent failures in pipelines and unset vars.
#!/bin/bash + +set -euo pipefail
15-15: Guard pushd failure (SC2164).Add an exit on failure.
-pushd ./kernel-fedora +pushd ./kernel-fedora || exit 1
26-26: Guard popd failure (SC2164).Add an exit on failure.
-popd +popd || exit 1
22-25: Quote array expansion (SC2068) and args.Avoid re-splitting and globbing.
-for mod in ${KMOD[@]}; do - modprobe -S $KVER --show-depends $mod +for mod in "${KMOD[@]}"; do + modprobe -S "$KVER" --show-depends "$mod" done | sed "s|^builtin|# builtin|; s|\\.ko\\.xz|.ko|" > modlist
28-34: Quote paths and use read -r.Safer path handling; prevents backslash escapes.
-echo "installing modules into overlay dir ..." -mkdir -p $ODIR/etc/init.d || exit 1 -sed -nr 's|^insmod ||p' < ./kernel-fedora/modlist | while read mod; do +echo "installing modules into overlay dir ..." +mkdir -p "$ODIR/etc/init.d" || exit 1 +sed -nr 's|^insmod ||p' < ./kernel-fedora/modlist | while read -r mod; do echo $mod - mkdir -p "$ODIR$(dirname $mod)" - xz -dc "$mod.xz" > "$ODIR$mod" + mkdir -p "$ODIR$(dirname "$mod")" + xz -dc "$mod.xz" > "$ODIR$mod" donepackages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/build_fits.sh (1)
25-26: Verify container arch aligns with target (aarch64).Even with fixes in kernel_fedora.sh, running this flow on x86_64 will attempt to use x86_64 kernel artifacts. Consider guarding here too or run an aarch64 container image.
Example guard:
- ./kernel_fedora.sh "${BUILDROOT_DIR}/overlay" + if [ "$(uname -m)" != "aarch64" ]; then + echo "ERROR: build_fits.sh must run in an aarch64 container to produce aarch64 FITs." + exit 1 + fi + ./kernel_fedora.sh "${BUILDROOT_DIR}/overlay"
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (5)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/automotive.its(1 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/build_fits.sh(1 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/buildroot_defconfig(2 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/fedora.its(5 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/buildroot_defconfig
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: michalskrivanek
PR: jumpstarter-dev/jumpstarter#584
File: packages/jumpstarter/jumpstarter/client/grpc.py:38-54
Timestamp: 2025-08-18T07:13:37.619Z
Learning: User michalskrivanek prefers inline code over small helper function extractions when the abstraction doesn't significantly improve readability or reduce complexity. They value straightforward, readable code over reducing minor duplication.
🪛 Shellcheck (0.11.0)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh
[warning] 15-15: Use 'pushd ... || exit' or 'pushd ... || return' in case pushd fails.
(SC2164)
[error] 22-22: Double quote array expansions to avoid re-splitting elements.
(SC2068)
[warning] 26-26: Use 'popd ... || exit' or 'popd ... || return' in case popd fails.
(SC2164)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
- GitHub Check: Redirect rules - jumpstarter-docs
- GitHub Check: Header rules - jumpstarter-docs
- GitHub Check: Pages changed - jumpstarter-docs
🔇 Additional comments (8)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/fedora.its (5)
10-16: LGTM: kernel now LZ4-compressed and referenced from kernel-fedora.The kernel image path and compression align with the new Fedora flow.
21-31: Initrd path switched to LZ4; compression set to none.This passes the LZ4-compressed cpio to the kernel without U‑Boot decompression. That’s fine; just confirm your kernel has LZ4 initramfs support enabled.
44-53: DTB path update for AM69 looks correct.Type/arch/compression/load/hash added consistently.
Please confirm the 0x88000000 load address matches your board’s memory map and doesn’t collide with kernel/ramdisk.
54-64: New S32G3 FDT: verify load address.Check that 0x88000000 is suitable for S32G3 with this kernel/ramdisk placement.
87-95: LGTM: added s32g3 configuration.Configuration wiring matches the new fdt-s32g3 image.
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh (1)
17-21: Build is tied to container arch; add an aarch64 guard or fetch aarch64 artifacts.As previously noted, using the container’s kernel RPM can produce the wrong-arch FIT on x86_64 containers. Gate on arch or refactor to fetch aarch64 RPMs.
KVER=$(rpm -q kernel | head -1 | cut -d - -f 2,3) +if [ "$(uname -m)" != "aarch64" ]; then + echo "ERROR: kernel_fedora.sh must run in an aarch64 container (or fetch aarch64 kernel RPMs explicitly)." + exit 1 +fi unzboot /usr/lib/modules/$KVER/vmlinuz vmlinuz lz4 -12 vmlinuz vmlinuz.lz4 -ln -sfn /lib/modules/$KVER/dtb dtb +# Be robust to /lib vs /usr/lib on Fedora +if [ -d "/lib/modules/$KVER/dtb" ]; then + ln -sfn "/lib/modules/$KVER/dtb" dtb +else + ln -sfn "/usr/lib/modules/$KVER/dtb" dtb +fipackages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/build_fits.sh (2)
12-15: Add missing build deps (dtc, rpm2cpio via rpm-build).Prior review still applies: dtc is needed for s32g3.dtb; rpm2cpio is needed by kernel_automotive.sh.
dnf install --setopt=install_weak_deps=false -y git make gcc gcc-c++ which file diffutils \ - wget cpio rsync bc lzop zip patch perl tar qemu-system-aarch64 qemu-img unzboot \ - uboot-tools kmod awk zstd lz4 kernel + wget cpio rsync bc lzop zip patch perl tar qemu-system-aarch64 qemu-img unzboot \ + uboot-tools kmod awk zstd lz4 kernel dtc rpm-build
16-18: Avoid hardcoded aarch64 RPM for unzboot; make arch-aware or use dnf.This will fail on x86_64 containers and/or install the wrong arch.
Option B (prefer repo, fall back to arch-aware URL):
- # FIXME remove in Fedora 43 - # until unzboot is updated, use the build directly - rpm -Uvh https://kojipkgs.fedoraproject.org//packages/unzboot/0.1~git.20250502.0c0c3ad/2.fc43/aarch64/unzboot-0.1~git.20250502.0c0c3ad-2.fc43.aarch64.rpm + # Prefer repo-managed install; fall back to matching container arch + dnf install -y --enablerepo=fedora-updates-testing unzboot || \ + rpm -Uvh "https://kojipkgs.fedoraproject.org//packages/unzboot/0.1~git.20250502.0c0c3ad/2.fc43/$(rpm --eval '%{_arch}')/unzboot-0.1~git.20250502.0c0c3ad-2.fc43.$(rpm --eval '%{_arch}').rpm"
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (7)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh (6)
53-53: Guard pushd/popd failures.Avoid continuing if the working dir change fails.
-pushd ./kernel-fedora +pushd ./kernel-fedora >/dev/null || exit 1 @@ -popd +popd >/dev/null || exit 1Also applies to: 64-64
60-63: Quote array expansion.Prevents unintended word splitting; aligns with ShellCheck SC2068.
-for mod in ${KMOD[@]}; do +for mod in "${KMOD[@]}"; do modprobe -S $KVER --show-depends $mod done | sed "s|^builtin|# builtin|; s|\\.ko\\.xz|.ko|" > modlist
66-73: Harden module copy loop (read -r, quoting).Makes path handling safer and avoids backslash mangling.
echo "installing modules into overlay dir ..." mkdir -p $ODIR/etc/init.d || exit 1 -sed -nr 's|^insmod ||p' < ./kernel-fedora/modlist | while read mod; do - echo $mod - mkdir -p "$ODIR$(dirname $mod)" - xz -dc "$mod.xz" > "$ODIR$mod" +sed -nr 's|^insmod ||p' < ./kernel-fedora/modlist | while read -r mod; do + echo "$mod" + mkdir -p "$ODIR$(dirname "$mod")" + xz -dc "$mod.xz" > "$ODIR$mod" done
75-75: Use the resolved overlay dir and simplify depmod flags.Corrects variable usage and avoids depending on System.map presence.
-depmod --errsyms --filesyms /lib/modules/$KVER/System.map --basedir $1 $KVER +depmod -b "$ODIR" "$KVER"
1-2: Enable strict mode.Fail fast on errors; improves reliability of the build step.
#!/bin/bash +set -Eeuo pipefail
50-52: Preflight: verify required tools exist.Early clear failures for missing dependencies.
[ $# -ne 1 ] && { echo "$0 [target_overlay_dir]"; exit 1; } ODIR=$1 +for cmd in unzboot lz4 modprobe depmod xz sed; do + command -v "$cmd" >/dev/null || { echo "ERROR: required tool '$cmd' not found"; exit 1; } +done mkdir -p ./kernel-fedorapackages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/manifest-ti.yaml (1)
47-51: Extract kernel from the FIT by name instead of using hardcoded 0xd4 offsetUse imxtract to pull the "kernel" subimage, then unlz4 it before booti — imxtract syntax is
imxtract <fit_addr> <name> [dest]; unlz4 isunlz4 <srcaddr> <dstaddr> <dstsize>(verified).- bootcmd: "unlz4 0x900000d4 0x80000000 0x8000000; imxtract 0x90000000 fdt-j784s4 0x88000000; imxtract 0x90000000 initrd 0x89000000; booti 0x80000000 0x89000000:0x7000000 0x88000000" + bootcmd: "imxtract 0x90000000 kernel 0x81000000; unlz4 0x81000000 0x80000000 0x8000000; imxtract 0x90000000 fdt-j784s4 0x88000000; imxtract 0x90000000 initrd 0x89000000; booti 0x80000000 0x89000000:0x7000000 0x88000000" @@ - bootcmd: "unlz4 0x900000d4 0x80000000 0x8000000; imxtract 0x90000000 fdt-am69 0x88000000; imxtract 0x90000000 initrd 0x89000000; booti 0x80000000 0x89000000:0x7000000 0x88000000" + bootcmd: "imxtract 0x90000000 kernel 0x81000000; unlz4 0x81000000 0x80000000 0x8000000; imxtract 0x90000000 fdt-am69 0x88000000; imxtract 0x90000000 initrd 0x89000000; booti 0x80000000 0x89000000:0x7000000 0x88000000" @@ - bootcmd: "unlz4 0x900000d4 0x80000000 0x8000000; imxtract 0x90000000 initrd 0x89000000; booti 0x80000000 0x89000000:0x7000000 0x88000000" + bootcmd: "imxtract 0x90000000 kernel 0x81000000; unlz4 0x81000000 0x80000000 0x8000000; imxtract 0x90000000 initrd 0x89000000; booti 0x80000000 0x89000000:0x7000000 0x88000000"
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/build_fits.sh(1 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh(1 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/manifest-ti.yaml(2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/build_fits.sh
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: michalskrivanek
PR: jumpstarter-dev/jumpstarter#584
File: packages/jumpstarter/jumpstarter/client/grpc.py:38-54
Timestamp: 2025-08-18T07:13:37.619Z
Learning: User michalskrivanek prefers inline code over small helper function extractions when the abstraction doesn't significantly improve readability or reduce complexity. They value straightforward, readable code over reducing minor duplication.
🪛 Shellcheck (0.11.0)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh
[warning] 53-53: Use 'pushd ... || exit' or 'pushd ... || return' in case pushd fails.
(SC2164)
[error] 60-60: Double quote array expansions to avoid re-splitting elements.
(SC2068)
[warning] 64-64: Use 'popd ... || exit' or 'popd ... || return' in case popd fails.
(SC2164)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
- GitHub Check: Redirect rules - jumpstarter-docs
- GitHub Check: Header rules - jumpstarter-docs
- GitHub Check: Pages changed - jumpstarter-docs
🔇 Additional comments (2)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/manifest-ti.yaml (1)
13-13: Confirm bootcmd precedence.Ensure the per-variant bootcmd overrides this top-level bootcmd at runtime; otherwise large kernels may fail to boot.
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh (1)
55-59: Add an aarch64 guard (prevents building FIT from wrong-arch kernel).Without this, running in x86_64 will produce an unusable aarch64 FIT.
Apply this diff:
KVER=$(rpm -q kernel | head -1 | cut -d - -f 2,3) +if [ "$(uname -m)" != "aarch64" ]; then + echo "ERROR: kernel_fedora.sh must run in an aarch64 container (or fetch aarch64 kernel RPMs)." + exit 1 +fi +if [ ! -e "/usr/lib/modules/$KVER/vmlinuz" ]; then + echo "ERROR: /usr/lib/modules/$KVER/vmlinuz not found (kernel $KVER missing?)." + exit 1 +fi
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/manifest-ti.yaml
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (7)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh (7)
1-2: Enable strict mode and basic tool preflight.Reduce silent partial builds and hard-to-debug states.
#!/bin/bash +set -euo pipefail + +# Preflight: required tools +for cmd in rpm unzboot lz4 modprobe sed xz depmod; do + command -v "$cmd" >/dev/null 2>&1 || { echo "Missing tool: $cmd"; exit 1; } +done
53-54: Guard directory stack ops (shellcheck SC2164).Fail immediately if pushd/popd fails.
-mkdir -p ./kernel-fedora -pushd ./kernel-fedora +mkdir -p ./kernel-fedora +pushd ./kernel-fedora >/dev/null || exit 1 @@ -popd +popd >/dev/null || exit 1Also applies to: 64-64
60-62: Quote array expansion and variables (SC2068) and avoid word-splitting.Prevents accidental splitting/globbing if module names ever contain special chars.
-for mod in ${KMOD[@]}; do - modprobe -S $KVER --show-depends $mod +for mod in "${KMOD[@]}"; do + modprobe -S "$KVER" --show-depends "$mod" done | sed "s|^builtin|# builtin|; s|\\.ko\\.xz|.ko|" > modlist
66-72: Harden module copy loop: robust read, quoting, and dirname handling.Avoids issues with whitespace, metacharacters, and unbound vars.
-sed -nr 's|^insmod ||p' < ./kernel-fedora/modlist | while read mod; do - echo $mod - mkdir -p "$ODIR$(dirname $mod)" - xz -dc "$mod.xz" > "$ODIR$mod" +sed -nr 's|^insmod ||p' < ./kernel-fedora/modlist | while IFS= read -r mod; do + echo "$mod" + dir="$(dirname "$mod")" + mkdir -p "$ODIR$dir" + xz -dc "${mod}.xz" > "$ODIR$mod" done
75-75: Use ODIR consistently and prefer canonical System.map path.Aligns with earlier ODIR var and reduces confusion on /lib vs /usr/lib.
-depmod --errsyms --filesyms /lib/modules/$KVER/System.map --basedir $1 $KVER +depmod --errsyms --filesyms "/usr/lib/modules/$KVER/System.map" --basedir "$ODIR" "$KVER"
78-86: Board detection via dmesg head is brittle; use DT model (or full dmesg).The string may not be in the first 10 lines. Query device tree model instead.
-if [ "$1" = "start" ]; then - if dmesg | head | grep -i S32G-VNP-RDB3; then - modprobe micrel - fi -fi +if [ "$1" = "start" ]; then + if grep -qi 'S32G-VNP-RDB3' /proc/device-tree/model 2>/dev/null || dmesg | grep -qi 'S32G-VNP-RDB3'; then + modprobe micrel + fi +fi
3-48: Optional: remove duplicate module and add brief grouping comments.mmc_block appears twice. Trimming avoids redundant work; comments already help.
# S32G3 storage sdhci_esdhc_imx - mmc_block + mmc_block @@ # TI storage sdhci_am654 - mmc_block + # (mmc_block already listed above)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: michalskrivanek
PR: jumpstarter-dev/jumpstarter#584
File: packages/jumpstarter/jumpstarter/client/grpc.py:38-54
Timestamp: 2025-08-18T07:13:37.619Z
Learning: User michalskrivanek prefers inline code over small helper function extractions when the abstraction doesn't significantly improve readability or reduce complexity. They value straightforward, readable code over reducing minor duplication.
🪛 Shellcheck (0.11.0)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh
[warning] 53-53: Use 'pushd ... || exit' or 'pushd ... || return' in case pushd fails.
(SC2164)
[error] 60-60: Double quote array expansions to avoid re-splitting elements.
(SC2068)
[warning] 64-64: Use 'popd ... || exit' or 'popd ... || return' in case popd fails.
(SC2164)
🔇 Additional comments (1)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh (1)
55-59: Blocker: Build uses host-arch kernel artifacts; add an aarch64 guard or fetch aarch64 RPMs.As noted previously, this will silently build an unusable FIT if the container isn’t aarch64. Fail fast on wrong arch (or rework to download aarch64 kernel RPMs and extract artifacts).
Apply this minimal guard (before determining KVER):
+[ "$(uname -m)" = "aarch64" ] || { + echo "ERROR: Must run in an aarch64 environment (or change script to fetch aarch64 kernel RPMs)." + exit 1 +} -KVER=$(rpm -q kernel | head -1 | cut -d - -f 2,3) +KVER=$(rpm -q kernel | head -1 | cut -d - -f 2,3)
3bd85e1 to
2b99ec6
Compare
|
@mangelajo ready to review. verified on all supported boards |
mangelajo
left a comment
There was a problem hiding this comment.
I'd add the warning the @coderabbitai suggested if it makes sense.
2b99ec6 to
cfaf260
Compare
|
reworded the comment a bit |
3dc4d07 to
eb8526b
Compare
using custom DTS since currently the buildroot (nor mainline kernel) does not have DT nodes for ethernet. Custom DTS enables ethernet on connector P3A (GMAC0)
Fedora kernel has better suport or S32G3, and existing TI boards work there fine too. With that we do not need to compile kernel anymore
it allows NXP vendor u-boot decompression. Still requires a bigger BOOTM_LEN than stock, but at least the image is smaller
we do not have larger BOOTM_LEN set for TI uboots, so let's extract the bits manually and use booti to boot
the device tree is not perfect, so it needs a manual modprobe
eb8526b to
d400a67
Compare
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (9)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/fedora.its (1)
23-31: Set initrd compression to lz4 to match the artifact.The blob is rootfs.cpio.lz4 but compression is “none”. Align metadata to reduce confusion and let U‑Boot decompress if needed.
- compression = "none"; + compression = "lz4";packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh (6)
1-2: Add strict bash options and guard pushd/popd.Prevents silent failures; addresses ShellCheck SC2164.
#!/bin/bash + +set -euo pipefail +IFS=$'\n\t' @@ -mkdir -p ./kernel-fedora -pushd ./kernel-fedora +mkdir -p ./kernel-fedora +pushd ./kernel-fedora || exit 1 @@ -popd +popd || exit 1Also applies to: 53-54, 68-69
64-67: Quote array expansion and vars in the modlist loop.Avoids word-splitting; addresses ShellCheck SC2068.
-for mod in ${KMOD[@]}; do - modprobe -S $KVER --show-depends $mod +for mod in "${KMOD[@]}"; do + modprobe -S "$KVER" --show-depends "$mod" done | sed "s|^builtin|# builtin|; s|\\.ko\\.xz|.ko|" > modlist
70-76: Harden module copy loop.Use read -r, quote paths, and enable multi-threaded xz for speed.
-sed -nr 's|^insmod ||p' < ./kernel-fedora/modlist | while read mod; do - echo $mod - mkdir -p "$ODIR$(dirname $mod)" - xz -dc "$mod.xz" > "$ODIR$mod" +sed -nr 's|^insmod ||p' < ./kernel-fedora/modlist | while IFS= read -r mod; do + printf '%s\n' "$mod" + mkdir -p "$ODIR$(dirname "$mod")" + xz -dc --threads=0 "$mod.xz" > "$ODIR$mod" done
78-80: Use ODIR consistently and quote depmod args.Minor clarity and safety improvement.
-depmod --errsyms --filesyms /lib/modules/$KVER/System.map --basedir $1 $KVER +depmod --errsyms --filesyms "/lib/modules/$KVER/System.map" --basedir "$ODIR" "$KVER"
81-91: More robust board detection for conditional micrel load.Use device-tree model and grep -q; drop “head” to avoid missing the string.
cat >$script <<EOF #!/bin/sh if [ "\$1" = "start" ]; then - if dmesg | head | grep -i S32G-VNP-RDB3; then - modprobe micrel - fi + if grep -qi "S32G-VNP-RDB3" /proc/device-tree/model 2>/dev/null; then + modprobe micrel + fi fi EOF
6-12: Deduplicate KMOD entry for mmc_block.Listed twice; harmless but redundant work in the copy loop.
# S32G3 storage sdhci_esdhc_imx - mmc_block + mmc_block # S32G3 networking @@ # TI storage - sdhci_am654 - mmc_block + sdhci_am654packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/manifest-ti.yaml (2)
10-12: Fix grammar, close parenthesis, and reclassify FIXME to NOTE (TI-specific workaround).The parenthesis is unclosed and sentence grammar is off. Also, given the TI constraint (imxtract fails for images > BOOTM_LEN), keep the 0xd4 offset but document it as an intentional, board‑specific note rather than a FIXME.
Apply:
-# NOTE that for bootm to work with larger kernels (like the fedora kernel in flasher-fedora.itb require larger CONFIG_BOOTM_LEN -# Using workaround to extract images manually and boot using booti instead -# FIXME beware - this relies on kernel being the first image and header being 0xd4 bytes large. +# NOTE: For bootm to work with larger kernels (like the Fedora kernel in flasher-fedora.itb) a higher CONFIG_BOOTM_LEN may be required. +# Workaround: extract images manually and boot using booti instead. +# NOTE (TI): imxtract won't work for images larger than BOOTM_LEN; we rely on the FIT header size being 0xd4 bytes so the kernel starts at 0x90000000 + 0xd4. +# If the ITS/FIT structure changes, revisit the 0xd4 offset.
47-51: Avoid hardcoding initrd size; use ${filesize} set by imxtract.This removes a brittle 0x7000000 constant and adapts automatically to different initrd sizes.
Apply:
- bootcmd: "unlz4 0x900000d4 0x80000000 0x8000000; imxtract 0x90000000 fdt-j784s4 0x88000000; imxtract 0x90000000 initrd 0x89000000; booti 0x80000000 0x89000000:0x7000000 0x88000000" + bootcmd: "unlz4 0x900000d4 0x80000000 0x8000000; imxtract 0x90000000 fdt-j784s4 0x88000000; imxtract 0x90000000 initrd 0x89000000; setenv rdsize ${filesize}; booti 0x80000000 0x89000000:${rdsize} 0x88000000"- bootcmd: "unlz4 0x900000d4 0x80000000 0x8000000; imxtract 0x90000000 fdt-am69 0x88000000; imxtract 0x90000000 initrd 0x89000000; booti 0x80000000 0x89000000:0x7000000 0x88000000" + bootcmd: "unlz4 0x900000d4 0x80000000 0x8000000; imxtract 0x90000000 fdt-am69 0x88000000; imxtract 0x90000000 initrd 0x89000000; setenv rdsize ${filesize}; booti 0x80000000 0x89000000:${rdsize} 0x88000000"- bootcmd: "unlz4 0x900000d4 0x80000000 0x8000000; imxtract 0x90000000 initrd 0x89000000; booti 0x80000000 0x89000000:0x7000000 0x88000000" + bootcmd: "unlz4 0x900000d4 0x80000000 0x8000000; imxtract 0x90000000 initrd 0x89000000; setenv rdsize ${filesize}; booti 0x80000000 0x89000000:${rdsize} 0x88000000"Please confirm your U-Boot builds set ${filesize} after imxtract; if not, we can adapt to capture the size via iminfo/imsize.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (8)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/automotive.its(1 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/build_fits.sh(1 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/buildroot_defconfig(2 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/fedora.its(4 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_automotive.sh(1 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh(1 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/manifest-nxp.yaml(2 hunks)packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/manifest-ti.yaml(2 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
- packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/automotive.its
- packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/build_fits.sh
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: mangelajo
PR: jumpstarter-dev/jumpstarter#644
File: packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/build_fits.sh:16-18
Timestamp: 2025-09-24T16:13:14.211Z
Learning: The build script packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/build_fits.sh is designed to run specifically on ARM containers to pick up the Fedora ARM kernel, so hardcoded aarch64 package references are intentional and correct.
Learnt from: michalskrivanek
PR: jumpstarter-dev/jumpstarter#584
File: packages/jumpstarter/jumpstarter/client/grpc.py:38-54
Timestamp: 2025-08-18T07:13:37.619Z
Learning: User michalskrivanek prefers inline code over small helper function extractions when the abstraction doesn't significantly improve readability or reduce complexity. They value straightforward, readable code over reducing minor duplication.
📚 Learning: 2025-09-24T16:13:14.211Z
Learnt from: mangelajo
PR: jumpstarter-dev/jumpstarter#644
File: packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/build_fits.sh:16-18
Timestamp: 2025-09-24T16:13:14.211Z
Learning: The build script packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/build_fits.sh is designed to run specifically on ARM containers to pick up the Fedora ARM kernel, so hardcoded aarch64 package references are intentional and correct.
Applied to files:
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/fedora.itspackages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/manifest-ti.yamlpackages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/buildroot_defconfigpackages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.shpackages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/manifest-nxp.yaml
📚 Learning: 2025-09-24T17:23:12.988Z
Learnt from: michalskrivanek
PR: jumpstarter-dev/jumpstarter#644
File: packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/manifest-ti.yaml:0-0
Timestamp: 2025-09-24T17:23:12.988Z
Learning: In TI board configurations, imxtract doesn't work for images larger than BOOTM_LEN, requiring manual extraction workarounds using unlz4 with specific header offsets like 0xd4 in the bootcmd sequences.
Applied to files:
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/manifest-ti.yaml
🪛 Shellcheck (0.11.0)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh
[warning] 53-53: Use 'pushd ... || exit' or 'pushd ... || return' in case pushd fails.
(SC2164)
[error] 64-64: Double quote array expansions to avoid re-splitting elements.
(SC2068)
[warning] 68-68: Use 'popd ... || exit' or 'popd ... || return' in case popd fails.
(SC2164)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (11)
- GitHub Check: Redirect rules - jumpstarter-docs
- GitHub Check: Header rules - jumpstarter-docs
- GitHub Check: pytest-matrix (macos-15, 3.12)
- GitHub Check: pytest-matrix (macos-15, 3.13)
- GitHub Check: pytest-matrix (ubuntu-24.04, 3.12)
- GitHub Check: pytest-matrix (ubuntu-24.04, 3.13)
- GitHub Check: pytest-matrix (ubuntu-24.04, 3.11)
- GitHub Check: pytest-matrix (macos-15, 3.11)
- GitHub Check: Pages changed - jumpstarter-docs
- GitHub Check: build
- GitHub Check: e2e
🔇 Additional comments (9)
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/fedora.its (2)
10-16: Kernel switch to vmlinuz.lz4 in FIT is correct.Path and compression property align with the new Fedora/LZ4 flow.
34-35: Confirm DTB paths exist under kernel-fedora/dtb.Ensure Fedora’s modules tree ships these DTBs at ./kernel-fedora/dtb/ti/… after creating the dtb symlink.
Also applies to: 45-46
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_fedora.sh (1)
55-59: Arch guard: good catch.Prevents wrong-arch kernel from being packaged; aligns with intended ARM-only build flow.
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/manifest-nxp.yaml (2)
17-17: usd target switch to /dev/mmcblk0 looks fine.Matches typical S32G-VNP-RDB3 block mapping.
34-36: Kernel ITB updated to fedora.itb: OK.Consistent with fedora.its and the new Fedora kernel flow.
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/buildroot_defconfig (2)
18-18: Rootfs switched to LZ4: OK.Aligns with fedora.its and kernel_fedora.sh.
30-37: Kernel build disabled: OK; ensure runtime supports RD_LZ4.Fedora kernel should have CONFIG_RD_LZ4=y so it can consume the LZ4 initramfs.
packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/kernel_automotive.sh (1)
3-3: Automotive kernel bump approved; all three kernel-automotive RPMs confirmed in CBS.packages/jumpstarter-driver-flashers/oci_bundles/aarch64-itb/manifest-ti.yaml (1)
39-39: Confirmed build alignment for flasher-fedora.itb
build_fits.sh mkimage uses fedora.its to generate data/flasher-fedora.itb and both manifest-ti.yaml and manifest-nxp.yaml reference it.
|
Backporting this as it has been tested in the lab alraedy. |
|
Backport failed for Please cherry-pick the changes locally and resolve any conflicts. git fetch origin release-0.7
git worktree add -d .worktree/backport-644-to-release-0.7 origin/release-0.7
cd .worktree/backport-644-to-release-0.7
git switch --create backport-644-to-release-0.7
git cherry-pick -x ef7248708e1a81e2bdf0d4c3b33cbf8f91e12b3b 2a5973d4a1d8aee15ab5231a05b6f9418e749dc2 5c37cee77c100c41331b6a70d1b91a216136df04 93b67ef1e6d37324d35c9de5f80a6ba3801eeb49 3ceb233d9241f3e1468eb3f21ed9d55f0143735c d400a67641c8debfc7341e5a2886af1bdd92b217 |
|
Successfully created backport PR for |
Summary by CodeRabbit