mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-22 01:13:00 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7176666340 | ||
|
|
0b475a7ce6 | ||
|
|
2e9e5858b9 | ||
|
|
4c8b62d1b1 | ||
|
|
e17780f197 | ||
|
|
b4ea26961f | ||
|
|
be3891c2f0 | ||
|
|
f6f6381eaf | ||
|
|
e5754b4001 | ||
|
|
6838cc9c25 | ||
|
|
d869f6c478 | ||
|
|
f37d29aa21 | ||
|
|
982a754472 | ||
|
|
931ae71019 | ||
|
|
c69a617ecb | ||
|
|
c79beea4ec | ||
|
|
cf1e81c8d1 | ||
|
|
e04937a0f7 | ||
|
|
e838f6dfd8 | ||
|
|
7ccddc086b | ||
|
|
fb9a1fa1a5 | ||
|
|
386ca9618e | ||
|
|
abe571d32c | ||
|
|
131177f3c9 | ||
|
|
c3d396b5fe | ||
|
|
b341d37267 | ||
|
|
cbe8315508 | ||
|
|
a5687bda7f | ||
|
|
8fac3720fb | ||
|
|
a4715debe8 | ||
|
|
da06ca14d4 | ||
|
|
9946357285 | ||
|
|
f5ad6bc9ea | ||
|
|
1698ad6197 | ||
|
|
b3e158fce5 | ||
|
|
5762c75727 | ||
|
|
bb5240e48b | ||
|
|
002c7791ec | ||
|
|
147ffe602f | ||
|
|
d08c3416ec | ||
|
|
c4f24caa94 | ||
|
|
19a0151f68 | ||
|
|
bbbb84fba7 | ||
|
|
ed4fe58fda | ||
|
|
d7812c2ea5 | ||
|
|
ffa23fb9be | ||
|
|
4cf9fd02db | ||
|
|
a5c807abe0 | ||
|
|
b5a292d7dd | ||
|
|
4522d9f217 | ||
|
|
c559b8f2e0 | ||
|
|
4a31df1059 | ||
|
|
965906e2ff | ||
|
|
bcc444f0fe | ||
|
|
949f43853d | ||
|
|
e63275d3a1 | ||
|
|
2abee79c18 | ||
|
|
a844ba7d8c | ||
|
|
e8c9c70e37 | ||
|
|
924567f30b | ||
|
|
0e21dc894b | ||
|
|
f187fee89b | ||
|
|
845e7c13fe | ||
|
|
8c9e36ba5d | ||
|
|
a1a02f2727 | ||
|
|
3ffbef74a8 | ||
|
|
34805dca65 | ||
|
|
8b95c10e39 | ||
|
|
16e72e8741 | ||
|
|
cf591c9813 | ||
|
|
51b0488e66 | ||
|
|
4aa0ab73b3 | ||
|
|
ef7ed89443 | ||
|
|
84860e313f | ||
|
|
0e590e9cbf | ||
|
|
8d647a8e43 | ||
|
|
6fee172c85 | ||
|
|
5c0a4c099e | ||
|
|
3fe7fa5548 | ||
|
|
2120709b68 | ||
|
|
13a50c8b0c | ||
|
|
48718d764b | ||
|
|
ae8a93c4cf | ||
|
|
cbde057bf8 | ||
|
|
f3e058f203 | ||
|
|
c16eeaa9f4 | ||
|
|
681251f899 | ||
|
|
eb1763d49f | ||
|
|
867239c7b8 | ||
|
|
0f1aa30574 | ||
|
|
89146b739a | ||
|
|
7bcbd3c51b | ||
|
|
91374a1155 | ||
|
|
3966f8ed0e | ||
|
|
f708f9b1ed | ||
|
|
055c8dd1ae | ||
|
|
fd4cda35b5 | ||
|
|
a7a630e0d9 | ||
|
|
0c8ce332d1 | ||
|
|
3d088f3e2b | ||
|
|
b691868a83 | ||
|
|
d1659dbbc1 | ||
|
|
8973dc488b | ||
|
|
f71bb73375 | ||
|
|
0c11cea07b | ||
|
|
65b674855a | ||
|
|
71ec4fa220 |
@@ -0,0 +1,41 @@
|
||||
name: 'Restore Build Caches'
|
||||
description: 'Restore dl/ and .ccache/ caches for Buildroot builds'
|
||||
inputs:
|
||||
target:
|
||||
description: 'Build target for cache key differentiation'
|
||||
required: true
|
||||
dl-prefix:
|
||||
description: 'Prefix for dl/ cache key (e.g., "dl", "dl-boot")'
|
||||
required: false
|
||||
default: 'dl'
|
||||
ccache-prefix:
|
||||
description: 'Prefix for .ccache/ cache key (e.g., "ccache", "ccache-boot")'
|
||||
required: false
|
||||
default: 'ccache'
|
||||
enabled:
|
||||
description: 'Set to false to skip cache restoration'
|
||||
required: false
|
||||
default: 'true'
|
||||
runs:
|
||||
using: 'composite'
|
||||
steps:
|
||||
- name: Restore Cache of dl/
|
||||
if: ${{ inputs.enabled == 'true' }}
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: dl/
|
||||
key: ${{ inputs.dl-prefix }}-${{ hashFiles('.git/modules/buildroot/HEAD', 'configs/*', 'package/*/*.hash') }}
|
||||
restore-keys: |
|
||||
${{ inputs.dl-prefix }}-
|
||||
dl-
|
||||
|
||||
- name: Restore Cache of .ccache/
|
||||
if: ${{ inputs.enabled == 'true' }}
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: .ccache/
|
||||
key: ${{ inputs.ccache-prefix }}-${{ inputs.target }}-${{ hashFiles('.git/modules/buildroot/HEAD', 'package/*/*.hash') }}
|
||||
restore-keys: |
|
||||
${{ inputs.ccache-prefix }}-${{ inputs.target }}-
|
||||
${{ inputs.ccache-prefix }}-
|
||||
ccache-
|
||||
@@ -0,0 +1,15 @@
|
||||
name: 'Podman Cleanup'
|
||||
description: 'Clean up stale podman state from previous runs'
|
||||
runs:
|
||||
using: 'composite'
|
||||
steps:
|
||||
- name: Cleanup podman state
|
||||
shell: bash
|
||||
run: |
|
||||
set -x
|
||||
podman ps -a || true
|
||||
podman stop -a || true
|
||||
podman rm -a -f || true
|
||||
podman volume prune -f || true
|
||||
podman system prune -a -f || true
|
||||
podman system migrate || true
|
||||
@@ -22,7 +22,10 @@ jobs:
|
||||
- cn9130_crb_boot
|
||||
- fireant_boot
|
||||
- nanopi_r2s_boot
|
||||
- rpi2_boot
|
||||
- rpi64_boot
|
||||
- sama7g54_ek_emmc_boot
|
||||
- sama7g54_ek_sd_boot
|
||||
env:
|
||||
MAKEFLAGS: -j5
|
||||
steps:
|
||||
@@ -63,24 +66,11 @@ jobs:
|
||||
|
||||
echo "Building ${defconfig}_defconfig, version ${version}-${rev}, artifact ${archive} ..."
|
||||
|
||||
- name: Restore Cache of dl/
|
||||
uses: actions/cache@v4
|
||||
- uses: ./.github/actions/cache-restore
|
||||
with:
|
||||
path: dl/
|
||||
key: dl-boot-${{ hashFiles('.git/modules/buildroot/HEAD', 'configs/*', 'package/*/*.hash') }}
|
||||
restore-keys: |
|
||||
dl-boot-
|
||||
dl-
|
||||
|
||||
- name: Restore Cache of .ccache/
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: .ccache/
|
||||
key: ccache-boot-${{ matrix.defconfig }}-${{ hashFiles('.git/modules/buildroot/HEAD', 'package/*/*.hash') }}
|
||||
restore-keys: |
|
||||
ccache-boot-${{ matrix.defconfig }}-
|
||||
ccache-boot-
|
||||
ccache-
|
||||
target: ${{ matrix.defconfig }}
|
||||
dl-prefix: dl-boot
|
||||
ccache-prefix: ccache-boot
|
||||
|
||||
- name: Configure ${{ matrix.defconfig }}_defconfig
|
||||
run: |
|
||||
|
||||
@@ -8,9 +8,11 @@ on:
|
||||
type: choice
|
||||
required: true
|
||||
options:
|
||||
- raspberrypi-rpi2
|
||||
- raspberrypi-rpi64
|
||||
- bananapi-bpi-r3
|
||||
- friendlyarm-nanopi-r2s
|
||||
- microchip-sama7g54-ek
|
||||
default: 'raspberrypi-rpi64'
|
||||
|
||||
jobs:
|
||||
@@ -49,6 +51,11 @@ jobs:
|
||||
- name: Set bootloader and target based on board
|
||||
run: |
|
||||
case "${{ inputs.board }}" in
|
||||
raspberrypi-rpi2)
|
||||
echo "BOOTLOADER=rpi2-boot" >> $GITHUB_ENV
|
||||
echo "ARCH=arm" >> $GITHUB_ENV
|
||||
echo "BUILD_EMMC=false" >> $GITHUB_ENV
|
||||
;;
|
||||
raspberrypi-rpi64)
|
||||
echo "BOOTLOADER=rpi64-boot" >> $GITHUB_ENV
|
||||
echo "ARCH=aarch64" >> $GITHUB_ENV
|
||||
@@ -65,6 +72,12 @@ jobs:
|
||||
echo "ARCH=aarch64" >> $GITHUB_ENV
|
||||
echo "BUILD_EMMC=false" >> $GITHUB_ENV
|
||||
;;
|
||||
microchip-sama7g54-ek)
|
||||
echo "BOOTLOADER_SD=sama7g54-ek-sd-boot" >> $GITHUB_ENV
|
||||
echo "BOOTLOADER_EMMC=sama7g54-ek-emmc-boot" >> $GITHUB_ENV
|
||||
echo "ARCH=arm" >> $GITHUB_ENV
|
||||
echo "BUILD_EMMC=true" >> $GITHUB_ENV
|
||||
;;
|
||||
*)
|
||||
echo "Error: Unknown board ${{ inputs.board }}"
|
||||
exit 1
|
||||
|
||||
@@ -20,24 +20,16 @@ jobs:
|
||||
runs-on: [self-hosted, release]
|
||||
strategy:
|
||||
matrix:
|
||||
target: [aarch64, x86_64]
|
||||
target: [aarch64, arm, x86_64]
|
||||
fail-fast: false
|
||||
steps:
|
||||
- name: Cleanup podman state
|
||||
run: |
|
||||
set -x
|
||||
podman ps -a || true
|
||||
podman stop -a || true
|
||||
podman rm -a -f || true
|
||||
podman volume prune -f || true
|
||||
podman system prune -a -f || true
|
||||
podman system migrate || true
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
clean: true
|
||||
submodules: recursive
|
||||
|
||||
- uses: ./.github/actions/podman-cleanup
|
||||
|
||||
- name: Set Release Variables
|
||||
id: vars
|
||||
run: |
|
||||
@@ -48,24 +40,10 @@ jobs:
|
||||
echo "dir=infix-$target" >> $GITHUB_OUTPUT
|
||||
echo "tgz=infix-$target.tar.gz" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Restore Cache of dl/
|
||||
if: ${{ inputs.use_cache }}
|
||||
uses: actions/cache@v4
|
||||
- uses: ./.github/actions/cache-restore
|
||||
with:
|
||||
path: dl/
|
||||
key: dl-${{ hashFiles('.git/modules/buildroot/HEAD', 'configs/*', 'package/*/*.hash') }}
|
||||
restore-keys: |
|
||||
dl-
|
||||
|
||||
- name: Restore Cache of .ccache/
|
||||
if: ${{ inputs.use_cache }}
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: .ccache/
|
||||
key: ccache-${{ matrix.target }}-${{ hashFiles('.git/modules/buildroot/HEAD', 'package/*/*.hash') }}
|
||||
restore-keys: |
|
||||
ccache-${{ matrix.target }}-
|
||||
ccache-
|
||||
target: ${{ matrix.target }}
|
||||
enabled: ${{ inputs.use_cache }}
|
||||
|
||||
- name: Configure & Build
|
||||
env:
|
||||
|
||||
@@ -78,15 +78,6 @@ jobs:
|
||||
rm -rf ./* || true
|
||||
rm -rf ./.??* || true
|
||||
ls -la ./
|
||||
- name: Cleanup podman state
|
||||
run: |
|
||||
set -x
|
||||
podman ps -a || true
|
||||
podman stop -a || true
|
||||
podman rm -a -f || true
|
||||
podman volume prune -f || true
|
||||
podman system prune -a -f || true
|
||||
podman system migrate || true
|
||||
|
||||
- name: Checkout infix repo
|
||||
uses: actions/checkout@v4
|
||||
@@ -98,6 +89,8 @@ jobs:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.CHECKOUT_TOKEN || github.token }}
|
||||
|
||||
- uses: ./.github/actions/podman-cleanup
|
||||
|
||||
- name: Run pre-build script
|
||||
if: ${{ inputs.pre_build_script != '' }}
|
||||
run: |
|
||||
@@ -127,22 +120,9 @@ jobs:
|
||||
echo "tgz=${name}-${target}.tar.gz" >> $GITHUB_OUTPUT
|
||||
echo "Building target ${target}_defconfig"
|
||||
|
||||
- name: Restore Cache of dl/
|
||||
uses: actions/cache@v4
|
||||
- uses: ./.github/actions/cache-restore
|
||||
with:
|
||||
path: dl/
|
||||
key: dl-${{ hashFiles('.git/modules/buildroot/HEAD', 'configs/*', 'package/*/*.hash') }}
|
||||
restore-keys: |
|
||||
dl-
|
||||
|
||||
- name: Restore Cache of .ccache/
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: .ccache/
|
||||
key: ccache-${{ env.TARGET }}-${{ hashFiles('.git/modules/buildroot/HEAD', 'package/*/*.hash') }}
|
||||
restore-keys: |
|
||||
ccache-${{ env.TARGET }}-
|
||||
ccache-
|
||||
target: ${{ env.TARGET }}
|
||||
|
||||
- name: Configure ${{ env.TARGET }}
|
||||
run: |
|
||||
@@ -153,10 +133,6 @@ jobs:
|
||||
podman rm -af || true
|
||||
pkill -9 -f rootlessport || true
|
||||
|
||||
- name: Unit Test ${{ env.TARGET }}
|
||||
run: |
|
||||
make test-unit
|
||||
|
||||
- name: Prepare parallel build
|
||||
id: parallel
|
||||
run: |
|
||||
|
||||
@@ -45,22 +45,10 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Restore Cache of dl/
|
||||
uses: actions/cache@v4
|
||||
- uses: ./.github/actions/cache-restore
|
||||
with:
|
||||
path: dl/
|
||||
key: dl-netconf-${{ hashFiles('.git/modules/buildroot/HEAD', 'configs/*', 'package/*/*.hash') }}
|
||||
restore-keys: |
|
||||
dl-netconf-
|
||||
dl-
|
||||
- name: Restore Cache of .ccache/
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: .ccache/
|
||||
key: ccache-x86_64-${{ hashFiles('.git/modules/buildroot/HEAD', 'package/*/*.hash') }}
|
||||
restore-keys: |
|
||||
ccache-x86_64-
|
||||
ccache-
|
||||
target: x86_64
|
||||
dl-prefix: dl-netconf
|
||||
- name: Disk inventory (2/2) ...
|
||||
run: |
|
||||
echo "df -h ========================================================================="
|
||||
|
||||
@@ -48,20 +48,12 @@ jobs:
|
||||
contents: write
|
||||
discussions: write
|
||||
steps:
|
||||
- name: Cleanup podman state
|
||||
run: |
|
||||
set -x
|
||||
podman ps -a || true
|
||||
podman stop -a || true
|
||||
podman rm -a -f || true
|
||||
podman volume prune -f || true
|
||||
podman system prune -a -f || true
|
||||
podman system migrate || true
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: 'true'
|
||||
|
||||
- uses: ./.github/actions/podman-cleanup
|
||||
|
||||
- name: Set Release Variables
|
||||
id: rel
|
||||
run: |
|
||||
|
||||
@@ -60,16 +60,6 @@ jobs:
|
||||
name: Regression Test ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.name || inputs.name }} ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.target || inputs.target }}
|
||||
runs-on: [self-hosted, regression]
|
||||
steps:
|
||||
- name: Cleanup podman state
|
||||
run: |
|
||||
set -x
|
||||
podman ps -a || true
|
||||
podman stop -a || true
|
||||
podman rm -a -f || true
|
||||
podman volume prune -f || true
|
||||
podman system prune -a -f || true
|
||||
podman system migrate || true
|
||||
|
||||
- name: Checkout infix repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
@@ -80,6 +70,8 @@ jobs:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.CHECKOUT_TOKEN || github.token }}
|
||||
|
||||
- uses: ./.github/actions/podman-cleanup
|
||||
|
||||
- name: Run pre-test script
|
||||
if: ${{ inputs.pre_test_script != '' }}
|
||||
run: |
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
name: Kernelkit Trigger
|
||||
name: CI
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
@@ -28,6 +28,7 @@ jobs:
|
||||
outputs:
|
||||
x86_64_target: ${{ steps.set-targets.outputs.x86_64_target }}
|
||||
aarch64_target: ${{ steps.set-targets.outputs.aarch64_target }}
|
||||
arm_target: ${{ steps.set-targets.outputs.arm_target }}
|
||||
steps:
|
||||
- run: |
|
||||
echo "Triggering build, logging meta data ..."
|
||||
@@ -43,25 +44,40 @@ jobs:
|
||||
| grep -q "ci:main"; then
|
||||
echo "x86_64_target=x86_64_minimal" >> $GITHUB_OUTPUT
|
||||
echo "aarch64_target=aarch64_minimal" >> $GITHUB_OUTPUT
|
||||
echo "arm_target=arm_minimal" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "x86_64_target=x86_64" >> $GITHUB_OUTPUT
|
||||
echo "aarch64_target=aarch64" >> $GITHUB_OUTPUT
|
||||
echo "arm_target=arm" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
unit-test:
|
||||
needs: check-trigger
|
||||
uses: ./.github/workflows/unit-test.yml
|
||||
with:
|
||||
name: "infix"
|
||||
target: ${{ needs.check-trigger.outputs.x86_64_target }}
|
||||
|
||||
build-x86_64:
|
||||
needs: check-trigger
|
||||
needs: [check-trigger, unit-test]
|
||||
uses: ./.github/workflows/build.yml
|
||||
with:
|
||||
name: "infix"
|
||||
target: ${{ needs.check-trigger.outputs.x86_64_target }}
|
||||
|
||||
build-aarch64:
|
||||
needs: check-trigger
|
||||
needs: [check-trigger, unit-test]
|
||||
uses: ./.github/workflows/build.yml
|
||||
with:
|
||||
name: "infix"
|
||||
target: ${{ needs.check-trigger.outputs.aarch64_target }}
|
||||
|
||||
build-arm:
|
||||
needs: [check-trigger, unit-test]
|
||||
uses: ./.github/workflows/build.yml
|
||||
with:
|
||||
name: "infix"
|
||||
target: ${{ needs.check-trigger.outputs.arm_target }}
|
||||
|
||||
test-run-x86_64:
|
||||
needs: [check-trigger, build-x86_64]
|
||||
uses: ./.github/workflows/test.yml
|
||||
|
||||
@@ -0,0 +1,116 @@
|
||||
name: unit-test
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
target:
|
||||
description: "Build target (e.g. aarch64 or aarch64_minimal)"
|
||||
default: "x86_64"
|
||||
type: string
|
||||
parallel:
|
||||
description: 'Massive parallel build of each image'
|
||||
default: true
|
||||
type: boolean
|
||||
name:
|
||||
description: "Name (for spin overrides)"
|
||||
default: "infix"
|
||||
type: string
|
||||
infix_repo:
|
||||
description: 'Repo to checkout (for spin overrides)'
|
||||
default: kernelkit/infix
|
||||
type: string
|
||||
infix_branch:
|
||||
description: 'Branch/tag/commit to checkout (for spin overrides)'
|
||||
default: ''
|
||||
type: string
|
||||
|
||||
workflow_call:
|
||||
inputs:
|
||||
target:
|
||||
required: true
|
||||
type: string
|
||||
name:
|
||||
required: true
|
||||
type: string
|
||||
infix_repo:
|
||||
required: false
|
||||
type: string
|
||||
default: kernelkit/infix
|
||||
infix_branch:
|
||||
required: false
|
||||
type: string
|
||||
default: ''
|
||||
description: 'Branch/tag/commit to checkout (for spin overrides). Defaults to github.ref if not specified'
|
||||
parallel:
|
||||
required: false
|
||||
type: boolean
|
||||
default: true
|
||||
pre_build_script:
|
||||
required: false
|
||||
type: string
|
||||
default: ''
|
||||
description: 'Optional script to run after checkout (for spin customization)'
|
||||
secrets:
|
||||
CHECKOUT_TOKEN:
|
||||
required: false
|
||||
description: 'Token for cross-repository access'
|
||||
|
||||
env:
|
||||
NAME: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.name || inputs.name }}
|
||||
TARGET: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.target || inputs.target }}
|
||||
INFIX_REPO: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.infix_repo || inputs.infix_repo }}
|
||||
INFIX_BRANCH: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.infix_branch || inputs.infix_branch }}
|
||||
|
||||
jobs:
|
||||
unit-tests:
|
||||
name: Build ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.name || inputs.name }} ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.target || inputs.target }}
|
||||
runs-on: [ self-hosted, latest ]
|
||||
env:
|
||||
PARALLEL: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.parallel == 'true' || github.event_name != 'workflow_dispatch' && inputs.parallel == true }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
steps:
|
||||
- name: Cleanup Build Folder
|
||||
run: |
|
||||
ls -la ./
|
||||
rm -rf ./* || true
|
||||
rm -rf ./.??* || true
|
||||
ls -la ./
|
||||
|
||||
- name: Checkout infix repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ env.INFIX_REPO }}
|
||||
ref: ${{ env.INFIX_BRANCH != '' && env.INFIX_BRANCH || github.ref }}
|
||||
clean: true
|
||||
fetch-depth: 0
|
||||
submodules: recursive
|
||||
token: ${{ secrets.CHECKOUT_TOKEN || github.token }}
|
||||
|
||||
- uses: ./.github/actions/podman-cleanup
|
||||
|
||||
- name: Run pre-build script
|
||||
if: ${{ inputs.pre_build_script != '' }}
|
||||
run: |
|
||||
cat > ./pre-build.sh << 'EOF'
|
||||
${{ inputs.pre_build_script }}
|
||||
EOF
|
||||
chmod +x ./pre-build.sh
|
||||
bash ./pre-build.sh
|
||||
|
||||
- uses: ./.github/actions/cache-restore
|
||||
with:
|
||||
target: ${{ env.TARGET }}
|
||||
|
||||
- name: Configure ${{ env.TARGET }}
|
||||
run: |
|
||||
make ${{ env.TARGET }}_defconfig
|
||||
|
||||
- name: Cleanup stale containers and ports
|
||||
run: |
|
||||
podman rm -af || true
|
||||
pkill -9 -f rootlessport || true
|
||||
|
||||
- name: Unit Test ${{ env.TARGET }}
|
||||
run: |
|
||||
make test-unit
|
||||
+1
-1
@@ -2,6 +2,7 @@
|
||||
.claude
|
||||
.gdb_history
|
||||
.claude
|
||||
AGENTS.md
|
||||
/.backup
|
||||
/.ccache
|
||||
/dl
|
||||
@@ -11,4 +12,3 @@
|
||||
/test/.log
|
||||
/local.mk
|
||||
/test/spec/Readme.adoc
|
||||
|
||||
|
||||
@@ -167,8 +167,8 @@ APIs.
|
||||
[0]: https://www.kernel.org
|
||||
[1]: https://buildroot.org/ "Buildroot Homepage"
|
||||
[2]: https://www.sysrepo.org/ "Sysrepo Homepage"
|
||||
[3]: https://kernelkit.org/infix/latest/cli/introduction/
|
||||
[4]: https://kernelkit.org/infix/
|
||||
[3]: https://www.kernelkit.org/infix/latest/cli/introduction/
|
||||
[4]: https://www.kernelkit.org/infix/
|
||||
[5]: https://github.com/kernelkit/infix/releases
|
||||
[Latest Build]: https://github.com/kernelkit/infix/releases/tag/latest "Latest build"
|
||||
[License]: https://en.wikipedia.org/wiki/GPL_license
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
config BR2_PACKAGE_ALDER_ALDER
|
||||
bool "Alder"
|
||||
depends on BR2_aarch64
|
||||
select BR2_PACKAGE_LINUX_FIRMWARE_INSIDE_SECURE_MINIFW
|
||||
help
|
||||
Alder
|
||||
|
||||
@@ -5,6 +5,7 @@ config BR2_PACKAGE_BANANAPI_BPI_R3
|
||||
select BR2_PACKAGE_LINUX_FIRMWARE
|
||||
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK
|
||||
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7986
|
||||
select BR2_PACKAGE_LINUX_FIRMWARE_AIROHA_EN8811H
|
||||
select SDCARD_AUX
|
||||
help
|
||||
Build Banana PI R3 support
|
||||
|
||||
@@ -1,20 +1,29 @@
|
||||
# Banana Pi BPI-R3
|
||||
# Banana Pi BPI-R3 / BPI-R3 Mini
|
||||
|
||||
<img src="bananapi-bpi-r3.webp" alt="The board" width=800 padding=10>
|
||||
|
||||
## Overview
|
||||
|
||||
The Banana Pi R3 is a high-performance networking board with full Infix
|
||||
support for all enabled features including switched Ethernet ports, WiFi,
|
||||
and SFP interfaces.
|
||||
The Banana Pi BPI-R3 and BPI-R3 Mini are high-performance networking
|
||||
boards with full Infix support for all enabled features including
|
||||
Ethernet, WiFi, and SFP interfaces.
|
||||
|
||||
Both boards share the same SoC and most peripherals. The key
|
||||
differences are:
|
||||
|
||||
| Feature | BPI-R3 | BPI-R3 Mini |
|
||||
|-----------------|--------------------|-------------------------|
|
||||
| Ethernet switch | Yes (4x LAN + WAN) | No (WAN/LAN ports only) |
|
||||
| SD card slot | Yes | No |
|
||||
|
||||
### Hardware Features
|
||||
|
||||
- MediaTek MT7986 ARM Cortex-A53 quad-core processor @ 2.0 GHz
|
||||
- 2 GB DDR4 RAM
|
||||
- 8 GB eMMC storage + microSD card slot
|
||||
- 5x Gigabit Ethernet ports (4x LAN, 1x WAN)
|
||||
- 2x SFP cages for fiber connectivity (1G/2.5G)
|
||||
- 8 GB eMMC storage
|
||||
- microSD card slot (BPI-R3 only)
|
||||
- 5x Gigabit Ethernet ports with switch core (BPI-R3 only)
|
||||
- 2x SFP cages for fiber connectivity (1G/2.5G) (BPI-R3 only)
|
||||
- Dual-band WiFi (2.4 GHz + 5 GHz)
|
||||
- USB 3.0 port
|
||||
- Mini PCIe slot
|
||||
@@ -23,16 +32,16 @@ and SFP interfaces.
|
||||
|
||||
Infix comes preconfigured with:
|
||||
|
||||
- **LAN ports** (lan1-lan4): Bridged for internal networking
|
||||
- **LAN ports** (lan1-lan4): Bridged for internal networking (BPI-R3 only)
|
||||
- **WAN port**: DHCP client enabled for internet connectivity
|
||||
- **SFP ports** (sfp1, sfp2): Available for configuration
|
||||
- **SFP ports** (sfp1, sfp2): Available for configuration (BPI-R3 only)
|
||||
- **WiFi interfaces** (wifi0, wifi1): Available for configuration
|
||||
|
||||
## Getting Started
|
||||
|
||||
### Quick Start with SD Card
|
||||
### BPI-R3: Quick Start with SD Card
|
||||
|
||||
The easiest way to get started is using an SD card:
|
||||
The easiest way to get started with the BPI-R3 is using an SD card:
|
||||
|
||||
> [!NOTE]
|
||||
> SD card boot works but we have observed stability issues. For production
|
||||
@@ -49,6 +58,12 @@ The easiest way to get started is using an SD card:
|
||||
- Connect to LAN port or console (115200 8N1)
|
||||
- Default login: `admin` / `admin`
|
||||
|
||||
### BPI-R3 Mini: Getting Started
|
||||
|
||||
The BPI-R3 Mini does not have an SD card slot, so you must install
|
||||
directly to eMMC. See [Installing to eMMC — BPI-R3
|
||||
Mini](#bpi-r3-mini) below.
|
||||
|
||||
### Boot Switch Reference
|
||||
|
||||
The BPI-R3 has a 4-position DIP switch that controls boot media:
|
||||
@@ -62,60 +77,44 @@ The BPI-R3 has a 4-position DIP switch that controls boot media:
|
||||
| 1010 | SPI NAND | Boot from SPI NAND (advanced users) |
|
||||
|
||||
> [!NOTE]
|
||||
> Switch position is read from left to right: "0" = OFF, "1" = ON.
|
||||
> Switch position is read from left to right: "0" = OFF, "1" = ON.
|
||||
> When the DIP switch is in the "UP" position it is OFF(0).
|
||||
|
||||
## Advanced: Installing to eMMC
|
||||
## Installing to eMMC
|
||||
|
||||
For production deployments or better performance, you can install Infix
|
||||
to the internal eMMC storage. This is more complex but provides faster
|
||||
boot times and eliminates the external SD card.
|
||||
to the internal eMMC storage.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> While Infix boots on both SD card and eMMC, we have observed stability
|
||||
> issues with SD cards on this platform. **eMMC is recommended** for
|
||||
> reliable operation.
|
||||
|
||||
### Why Use eMMC?
|
||||
|
||||
**Advantages:**
|
||||
|
||||
- More reliable than SD card (stability issues observed with SD cards)
|
||||
- Faster boot and better performance
|
||||
- No external SD card to manage
|
||||
- More robust for industrial/embedded deployments
|
||||
|
||||
**Disadvantages:**
|
||||
|
||||
- More complex installation process
|
||||
- Requires intermediate NAND boot step
|
||||
- Harder to recover from errors
|
||||
> While Infix boots on both SD card and eMMC on the BPI-R3, we have
|
||||
> observed stability issues with SD cards on this platform. **eMMC is
|
||||
> recommended** for reliable operation.
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- FTDI USB-to-serial cable (3.3V) for console access
|
||||
- microSD card with Infix (for initial boot)
|
||||
- USB flash drive (FAT32 formatted)
|
||||
- microSD card with Infix, for initial boot (BPI-R3 only)
|
||||
- Downloaded files (see below)
|
||||
|
||||
### Required Files
|
||||
|
||||
Download and place these files on a FAT32-formatted USB drive:
|
||||
|
||||
1. **Intermediate NAND bootloader** (from Frank-W's U-Boot):
|
||||
- [bpi-r3_spim-nand_bl2.img][5] (BL2 loader)
|
||||
- [bpi-r3_spim-nand_fip.bin][6] (FIP image)
|
||||
2. **Infix eMMC image:**
|
||||
1. **Infix eMMC image:**
|
||||
- [infix-bpi-r3-emmc.img][3] (Complete system image)
|
||||
3. **eMMC bootloader** (extracted from):
|
||||
2. **eMMC bootloader** (extracted from):
|
||||
- [bpi-r3-emmc-boot-2025.01-latest.tar.gz][4]
|
||||
- Extract `bl2.img` from the tarball to your USB drive
|
||||
3. **Intermediate NAND bootloader** (BPI-R3 only, from Frank-W's U-Boot):
|
||||
- [bpi-r3_spim-nand_bl2.img][5] (BL2 loader)
|
||||
- [bpi-r3_spim-nand_fip.bin][6] (FIP image)
|
||||
|
||||
> [!WARNING]
|
||||
> The following process involves multiple boot mode changes. Take your
|
||||
> time verify each step carefully.
|
||||
> time and verify each step carefully.
|
||||
|
||||
### Installation Steps
|
||||
### BPI-R3
|
||||
|
||||
#### Step 1: Boot from SD card
|
||||
|
||||
@@ -177,13 +176,48 @@ mmc partconf 0 1 1 0
|
||||
|
||||
Your BPI-R3 should now boot Infix from internal eMMC storage!
|
||||
|
||||
### BPI-R3 Mini
|
||||
|
||||
The BPI-R3 Mini does not have an SD card slot, so you have to go
|
||||
through the factory-installed Linux (OpenWRT) to flash the Infix
|
||||
bootloader and OS to eMMC.
|
||||
|
||||
#### Step 1: Boot from NAND (factory default)
|
||||
|
||||
<img src="r3mini_nandboot2.png" alt="BPI-R3 Mini NAND boot switch position" width=400>
|
||||
|
||||
1. Ensure boot switches are set to NAND mode (factory default)
|
||||
2. Place `infix-bpi-r3-emmc.img` and `bl2.img` on a USB drive
|
||||
3. Power on and boot into Linux
|
||||
4. Mount the USB drive to `/mnt`
|
||||
|
||||
#### Step 2: Flash Infix to eMMC
|
||||
|
||||
From the Linux shell:
|
||||
|
||||
```
|
||||
echo 0 > /proc/sys/kernel/printk
|
||||
dd if=/mnt/infix-bpi-r3-emmc.img of=/dev/mmcblk0
|
||||
echo 0 > /sys/block/mmcblk0boot0/force_ro
|
||||
dd if=/mnt/bl2.img of=/dev/mmcblk0boot0
|
||||
sync
|
||||
```
|
||||
|
||||
#### Step 3: Boot from eMMC
|
||||
|
||||
<img src="r3mini_emmcboot.png" alt="BPI-R3 Mini eMMC boot switch position" width=400>
|
||||
|
||||
1. Power off the board
|
||||
2. Set boot switches to eMMC mode (see image above)
|
||||
3. Power on
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Board won't boot
|
||||
|
||||
- Verify boot switch positions (check twice!)
|
||||
- Ensure power supply provides adequate current (12V/2A recommended)
|
||||
- Try booting from SD card with switches at **0000**
|
||||
- Try booting from SD card with switches at **0000** (BPI-R3 only)
|
||||
|
||||
### Can't break into U-Boot
|
||||
|
||||
@@ -195,9 +229,9 @@ Your BPI-R3 should now boot Infix from internal eMMC storage!
|
||||
|
||||
- Boot from NAND (**1010**) and verify eMMC image was written
|
||||
- Check USB drive contents - ensure all files are present
|
||||
- Re-run Step 5 (eMMC boot configuration)
|
||||
- Re-run the eMMC boot configuration step
|
||||
|
||||
### Reverting to SD card
|
||||
### Reverting to SD card (BPI-R3 only)
|
||||
|
||||
Simply set boot switches back to **0000** and boot from SD card. The
|
||||
eMMC installation does not affect SD card functionality.
|
||||
@@ -228,8 +262,8 @@ make aarch64
|
||||
./utils/mkimage.sh -odt emmc bananapi-bpi-r3
|
||||
```
|
||||
|
||||
[0]: https://kernelkit.org/posts/flashing-sdcard/
|
||||
[1]: https://kernelkit.org/infix/latest/
|
||||
[0]: https://www.kernelkit.org/posts/flashing-sdcard/
|
||||
[1]: https://www.kernelkit.org/infix/latest/
|
||||
[2]: https://github.com/kernelkit/infix/releases/download/latest-boot/infix-bpi-r3-sdcard.img
|
||||
[3]: https://github.com/kernelkit/infix/releases/download/latest-boot/infix-bpi-r3-emmc.img
|
||||
[4]: https://github.com/kernelkit/infix/releases/download/latest-boot/bpi-r3-emmc-boot-2025.01-latest.tar.gz
|
||||
|
||||
@@ -9,6 +9,7 @@ define BANANAPI_BPI_R3_LINUX_CONFIG_FIXUPS
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MEDIATEK_WATCHDOG)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MEDIATEK_GE_PHY)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_REALTEK_PHY)
|
||||
$(call KCONFIG_SET_OPT,CONFIG_AIR_EN8811H_PHY,m)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_NET_VENDOR_MEDIATEK)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_NET_MEDIATEK_SOC)
|
||||
$(call KCONFIG_SET_OPT,CONFIG_NET_DSA_MT7530,m)
|
||||
|
||||
@@ -1 +1 @@
|
||||
dtb-y += mediatek/mt7986a-bananapi-bpi-r3-sd.dtb mediatek/mt7986a-bananapi-bpi-r3-emmc.dtb
|
||||
dtb-y += mediatek/mt7986a-bananapi-bpi-r3-sd.dtb mediatek/mt7986a-bananapi-bpi-r3-emmc.dtb mediatek/mt7986a-bananapi-bpi-r3-mini.dtb
|
||||
|
||||
@@ -1,2 +1,4 @@
|
||||
#include <arm64/mediatek/mt7986a-bananapi-bpi-r3.dts>
|
||||
|
||||
#include "mt7986a-bananapi-bpi-r3.dtsi"
|
||||
#include "mt7986a-bananapi-bpi-r3-emmc.dtsi"
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
#include <arm64/mediatek/mt7986a-bananapi-bpi-r3-mini.dts>
|
||||
|
||||
#include "mt7986a-bananapi-bpi-r3.dtsi"
|
||||
#include "mt7986a-bananapi-bpi-r3-emmc.dtsi"
|
||||
|
||||
&phy0 {
|
||||
compatible = "ethernet-phy-id03a2.a411";
|
||||
};
|
||||
&phy1 {
|
||||
compatible = "ethernet-phy-id03a2.a411";
|
||||
};
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
#include "mt7986a-bananapi-bpi-r3.dtsi"
|
||||
#include "mt7986a-bananapi-bpi-r3-emmc.dtsi"
|
||||
@@ -1,2 +1,4 @@
|
||||
#include <arm64/mediatek/mt7986a-bananapi-bpi-r3.dts>
|
||||
|
||||
#include "mt7986a-bananapi-bpi-r3.dtsi"
|
||||
#include "mt7986a-bananapi-bpi-r3-sd.dtsi"
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
#include <arm64/mediatek/mt7986a-bananapi-bpi-r3.dts>
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
infix {
|
||||
|
||||
@@ -51,6 +51,11 @@ image #INFIX_ID##VERSION#-bpi-r3-#TARGET#.img {
|
||||
size = 4096s
|
||||
}
|
||||
|
||||
partition en8811h_fw {
|
||||
size = 10M
|
||||
image = "en8811h-fw.bin"
|
||||
}
|
||||
|
||||
partition aux {
|
||||
partition-uuid = D4EF35A0-0652-45A1-B3DE-D63339C82035
|
||||
image = "aux.ext4"
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 111 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 110 KiB |
-3
@@ -1,3 +0,0 @@
|
||||
#!/bin/sh
|
||||
udevadm control --reload-rules
|
||||
udevadm trigger --subsystem-match=net --action=add
|
||||
+445
@@ -0,0 +1,445 @@
|
||||
{
|
||||
"ieee802-dot1ab-lldp:lldp": {
|
||||
"infix-lldp:enabled": true
|
||||
},
|
||||
"ietf-hardware:hardware": {
|
||||
"component": [
|
||||
{
|
||||
"name": "USB",
|
||||
"class": "infix-hardware:usb",
|
||||
"state": {
|
||||
"admin-state": "unlocked"
|
||||
}
|
||||
},
|
||||
{
|
||||
"class": "infix-hardware:usb",
|
||||
"name": "USB2",
|
||||
"state": {
|
||||
"admin-state": "unlocked"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "radio0",
|
||||
"class": "infix-hardware:wifi",
|
||||
"infix-hardware:wifi-radio": {
|
||||
"country-code": "DE",
|
||||
"band": "2.4GHz",
|
||||
"channel": "auto"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "radio1",
|
||||
"class": "infix-hardware:wifi",
|
||||
"infix-hardware:wifi-radio": {
|
||||
"country-code": "DE",
|
||||
"band": "5GHz",
|
||||
"channel": "auto"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ietf-interfaces:interfaces": {
|
||||
"interface": [
|
||||
{
|
||||
"name": "br0",
|
||||
"type": "infix-if-type:bridge",
|
||||
"ietf-ip:ipv4": {
|
||||
"address": [
|
||||
{
|
||||
"ip": "192.168.0.1",
|
||||
"prefix-length": 24
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "lan",
|
||||
"type": "infix-if-type:ethernet",
|
||||
"ietf-ip:ipv6": {},
|
||||
"infix-interfaces:bridge-port": {
|
||||
"bridge": "br0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "lo",
|
||||
"type": "infix-if-type:loopback",
|
||||
"ietf-ip:ipv4": {
|
||||
"address": [
|
||||
{
|
||||
"ip": "127.0.0.1",
|
||||
"prefix-length": 8
|
||||
}
|
||||
]
|
||||
},
|
||||
"ietf-ip:ipv6": {
|
||||
"address": [
|
||||
{
|
||||
"ip": "::1",
|
||||
"prefix-length": 128
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "wan",
|
||||
"type": "infix-if-type:ethernet",
|
||||
"ietf-ip:ipv4": {
|
||||
"infix-dhcp-client:dhcp": {
|
||||
"option": [
|
||||
{
|
||||
"id": "ntp-server"
|
||||
},
|
||||
{
|
||||
"id": "broadcast"
|
||||
},
|
||||
{
|
||||
"id": "domain"
|
||||
},
|
||||
{
|
||||
"id": "hostname"
|
||||
},
|
||||
{
|
||||
"id": "dns-server"
|
||||
},
|
||||
{
|
||||
"id": "router"
|
||||
},
|
||||
{
|
||||
"id": "netmask"
|
||||
},
|
||||
{
|
||||
"id": "vendor-class",
|
||||
"value": "Banana Pi BPI-R3"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ietf-ip:ipv6": {
|
||||
"infix-dhcpv6-client:dhcp": {
|
||||
"option": [
|
||||
{
|
||||
"id": "ntp-server"
|
||||
},
|
||||
{
|
||||
"id": "client-fqdn"
|
||||
},
|
||||
{
|
||||
"id": "domain-search"
|
||||
},
|
||||
{
|
||||
"id": "dns-server"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "wifi0-ap",
|
||||
"type": "infix-if-type:wifi",
|
||||
"infix-interfaces:wifi": {
|
||||
"radio": "radio0",
|
||||
"access-point": {
|
||||
"ssid": "Infix",
|
||||
"security": {
|
||||
"secret": "wifi"
|
||||
}
|
||||
}
|
||||
},
|
||||
"infix-interfaces:bridge-port": {
|
||||
"bridge": "br0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "wifi1-ap",
|
||||
"type": "infix-if-type:wifi",
|
||||
"infix-interfaces:wifi": {
|
||||
"radio": "radio1",
|
||||
"access-point": {
|
||||
"ssid": "Infix5Ghz",
|
||||
"security": {
|
||||
"secret": "wifi"
|
||||
}
|
||||
}
|
||||
},
|
||||
"infix-interfaces:bridge-port": {
|
||||
"bridge": "br0"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ietf-keystore:keystore": {
|
||||
"asymmetric-keys": {
|
||||
"asymmetric-key": [
|
||||
{
|
||||
"name": "genkey",
|
||||
"public-key-format": "infix-crypto-types:ssh-public-key-format",
|
||||
"public-key": "",
|
||||
"private-key-format": "infix-crypto-types:rsa-private-key-format",
|
||||
"cleartext-private-key": "",
|
||||
"certificates": {}
|
||||
}
|
||||
]
|
||||
},
|
||||
"symmetric-keys": {
|
||||
"symmetric-key": [
|
||||
{
|
||||
"name": "wifi",
|
||||
"cleartext-symmetric-key": "aW5maXhpbmZpeA==",
|
||||
"key-format": "infix-crypto-types:passphrase-key-format"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ietf-netconf-acm:nacm": {
|
||||
"enable-nacm": true,
|
||||
"read-default": "permit",
|
||||
"write-default": "permit",
|
||||
"exec-default": "permit",
|
||||
"groups": {
|
||||
"group": [
|
||||
{
|
||||
"name": "admin",
|
||||
"user-name": [
|
||||
"admin"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "operator",
|
||||
"user-name": []
|
||||
},
|
||||
{
|
||||
"name": "guest",
|
||||
"user-name": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"rule-list": [
|
||||
{
|
||||
"name": "admin-acl",
|
||||
"group": [
|
||||
"admin"
|
||||
],
|
||||
"rule": [
|
||||
{
|
||||
"name": "permit-all",
|
||||
"module-name": "*",
|
||||
"access-operations": "*",
|
||||
"action": "permit",
|
||||
"comment": "Allow 'admin' group complete access to all operations and data."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "operator-acl",
|
||||
"group": [
|
||||
"operator"
|
||||
],
|
||||
"rule": [
|
||||
{
|
||||
"name": "permit-system-rpcs",
|
||||
"module-name": "ietf-system",
|
||||
"rpc-name": "*",
|
||||
"access-operations": "exec",
|
||||
"action": "permit",
|
||||
"comment": "Operators can reboot, shutdown, and set system time."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "guest-acl",
|
||||
"group": [
|
||||
"guest"
|
||||
],
|
||||
"rule": [
|
||||
{
|
||||
"name": "deny-all-write+exec",
|
||||
"module-name": "*",
|
||||
"access-operations": "create update delete exec",
|
||||
"action": "deny",
|
||||
"comment": "Guests cannot change anything or exec rpcs."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "default-deny-all",
|
||||
"group": [
|
||||
"*"
|
||||
],
|
||||
"rule": [
|
||||
{
|
||||
"name": "deny-password-access",
|
||||
"path": "/ietf-system:system/authentication/user/password",
|
||||
"access-operations": "*",
|
||||
"action": "deny",
|
||||
"comment": "No user except admins can access password hashes."
|
||||
},
|
||||
{
|
||||
"name": "deny-keystore-access",
|
||||
"module-name": "ietf-keystore",
|
||||
"access-operations": "*",
|
||||
"action": "deny",
|
||||
"comment": "No user except admins can access cryptographic keys."
|
||||
},
|
||||
{
|
||||
"name": "deny-truststore-access",
|
||||
"module-name": "ietf-truststore",
|
||||
"access-operations": "*",
|
||||
"action": "deny",
|
||||
"comment": "No user except admins can access trust store."
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"ietf-netconf-server:netconf-server": {
|
||||
"listen": {
|
||||
"endpoints": {
|
||||
"endpoint": [
|
||||
{
|
||||
"name": "default-ssh",
|
||||
"ssh": {
|
||||
"tcp-server-parameters": {
|
||||
"local-bind": [
|
||||
{
|
||||
"local-address": "::"
|
||||
}
|
||||
]
|
||||
},
|
||||
"ssh-server-parameters": {
|
||||
"server-identity": {
|
||||
"host-key": [
|
||||
{
|
||||
"name": "default-key",
|
||||
"public-key": {
|
||||
"central-keystore-reference": "genkey"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"ietf-system:system": {
|
||||
"hostname": "bpi-%m",
|
||||
"ntp": {
|
||||
"server": [
|
||||
{
|
||||
"name": "default",
|
||||
"udp": {
|
||||
"address": "pool.ntp.org"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"authentication": {
|
||||
"user": [
|
||||
{
|
||||
"name": "admin",
|
||||
"password": "$factory$",
|
||||
"infix-system:shell": "bash"
|
||||
}
|
||||
]
|
||||
},
|
||||
"infix-system:motd-banner": "Li0tLS0tLS0uCnwgIC4gLiAgfCBJbmZpeCBPUyDigJQgSW1tdXRhYmxlLkZyaWVuZGx5LlNlY3VyZQp8LS4gdiAuLXwgaHR0cHM6Ly9rZXJuZWxraXQub3JnCictJy0tLSctJwo="
|
||||
},
|
||||
"infix-dhcp-server:dhcp-server": {
|
||||
"option": [
|
||||
{
|
||||
"id": "ntp-server",
|
||||
"address": "auto"
|
||||
},
|
||||
{
|
||||
"id": "dns-server",
|
||||
"address": "auto"
|
||||
},
|
||||
{
|
||||
"id": "router",
|
||||
"address": "auto"
|
||||
}
|
||||
],
|
||||
"subnet": [
|
||||
{
|
||||
"subnet": "192.168.0.0/24",
|
||||
"pool": {
|
||||
"start-address": "192.168.0.100",
|
||||
"end-address": "192.168.0.250"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"infix-firewall:firewall": {
|
||||
"default": "wan",
|
||||
"zone": [
|
||||
{
|
||||
"name": "lan",
|
||||
"action": "accept",
|
||||
"interface": [
|
||||
"br0"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "wan",
|
||||
"action": "drop",
|
||||
"interface": [
|
||||
"wan"
|
||||
],
|
||||
"service": [
|
||||
"dhcpv6-client"
|
||||
]
|
||||
}
|
||||
],
|
||||
"policy": [
|
||||
{
|
||||
"name": "lan-to-wan",
|
||||
"action": "accept",
|
||||
"ingress": [
|
||||
"lan"
|
||||
],
|
||||
"egress": [
|
||||
"wan"
|
||||
],
|
||||
"masquerade": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"infix-meta:meta": {
|
||||
"version": "1.7"
|
||||
},
|
||||
"infix-services:mdns": {
|
||||
"enabled": true
|
||||
},
|
||||
"infix-services:ssh": {
|
||||
"enabled": true,
|
||||
"hostkey": [
|
||||
"genkey"
|
||||
],
|
||||
"listen": [
|
||||
{
|
||||
"name": "ipv4",
|
||||
"address": "0.0.0.0",
|
||||
"port": 22
|
||||
},
|
||||
{
|
||||
"name": "ipv6",
|
||||
"address": "::",
|
||||
"port": 22
|
||||
}
|
||||
]
|
||||
},
|
||||
"infix-services:web": {
|
||||
"enabled": true,
|
||||
"console": {
|
||||
"enabled": true
|
||||
},
|
||||
"netbrowse": {
|
||||
"enabled": true
|
||||
},
|
||||
"restconf": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
ACTION=="add", SUBSYSTEM=="net", DEVPATH=="/devices/platform/soc/15100000.ethernet/net/eth0", NAME="lan"
|
||||
ACTION=="add", SUBSYSTEM=="net", DEVPATH=="/devices/platform/soc/15100000.ethernet/net/eth1", NAME="wan"
|
||||
@@ -3,6 +3,9 @@ CONFIG_BOOTDELAY=2
|
||||
# CONFIG_MMC_PCI is not set
|
||||
CONFIG_ENV_IS_NOWHERE=y
|
||||
# CONFIG_ENV_IS_IN_MMC is not set
|
||||
CONFIG_MULTI_DTB_FIT=y
|
||||
CONFIG_OF_LIST="mt7986a-bpi-r3-sd mt7986a-bpi-r3-emmc mt7986a-bpi-r3-mini"
|
||||
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_XHCI_HCD=y
|
||||
CONFIG_USB_XHCI_MTK=y
|
||||
@@ -26,8 +29,17 @@ CONFIG_MTD_SPI_NAND=y
|
||||
CONFIG_MTK_SPIM=y
|
||||
CONFIG_MTK_SNOR=y
|
||||
|
||||
CONFIG_DM_MDIO=y
|
||||
CONFIG_DM_ETH_PHY=y
|
||||
CONFIG_PHY_ETHERNET_ID=y
|
||||
|
||||
CONFIG_PHY_AIROHA=y
|
||||
CONFIG_PHY_AIROHA_EN8811H=y
|
||||
CONFIG_PHY_AIROHA_FW_IN_MMC=y
|
||||
|
||||
CONFIG_CMD_SF=y
|
||||
CONFIG_CMD_USB=y
|
||||
CONFIG_CMD_MTD=y
|
||||
CONFIG_CMD_MDIO=y
|
||||
CONFIG_CMD_MTDPARTS=y
|
||||
CONFIG_CMD_DM=y
|
||||
|
||||
@@ -15,6 +15,10 @@
|
||||
scriptaddr = "0x48000000";
|
||||
ramdisk_addr_r = "0x4A000000";
|
||||
|
||||
en8811h_fw_part = "0#en8811h_fw";
|
||||
en8811h_fw_dm_dir = "EthMD32.dm.bin";
|
||||
en8811h_fw_dsp_dir = "EthMD32.DSP.bin";
|
||||
|
||||
/* This is a development platform, keep
|
||||
* developer mode statically enabled.
|
||||
*/
|
||||
|
||||
-3
@@ -1,3 +0,0 @@
|
||||
#!/bin/sh
|
||||
udevadm control --reload-rules
|
||||
udevadm trigger --subsystem-match=net --action=add
|
||||
@@ -1,5 +1,6 @@
|
||||
config BR2_PACKAGE_MARVELL_CN9130_CRB
|
||||
bool "Marvell CN9130-CRB"
|
||||
depends on BR2_aarch64
|
||||
select BR2_PACKAGE_LINUX_FIRMWARE_INSIDE_SECURE_MINIFW
|
||||
help
|
||||
Customer Reference Board for CN9130
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
config BR2_PACKAGE_MARVELL_ESPRESSOBIN
|
||||
bool "Marvell ESPRESSObin"
|
||||
depends on BR2_aarch64
|
||||
select BR2_PACKAGE_LINUX_FIRMWARE_INSIDE_SECURE_MINIFW
|
||||
help
|
||||
Marvell ESPRESSObin
|
||||
|
||||
@@ -312,13 +312,13 @@ While capable of basic routing tasks, be aware of limitations:
|
||||
For applications requiring multiple ports or high performance, consider
|
||||
dedicated networking hardware like the [Banana Pi R3][12].
|
||||
|
||||
[0]: https://kernelkit.org/posts/flashing-sdcard/
|
||||
[1]: https://kernelkit.org/infix/latest/
|
||||
[0]: https://www.kernelkit.org/posts/flashing-sdcard/
|
||||
[1]: https://www.kernelkit.org/infix/latest/
|
||||
[2]: https://github.com/kernelkit/infix/releases/download/latest-boot/infix-rpi64-sdcard.img
|
||||
[3]: https://kernelkit.org/infix/latest/container/#content-mounts
|
||||
[4]: https://kernelkit.org/infix/latest/scripting-restconf/
|
||||
[3]: https://www.kernelkit.org/infix/latest/container/#content-mounts
|
||||
[4]: https://www.kernelkit.org/infix/latest/scripting-restconf/
|
||||
[8]: https://github.com/kernelkit/infix/releases/tag/latest-boot
|
||||
[9]: https://kernelkit.org/infix/latest/networking/#wifi
|
||||
[9]: https://www.kernelkit.org/infix/latest/networking/#wifi
|
||||
[10]: https://www.raspberrypi.com/products/raspberry-pi-touch-display/
|
||||
[11]: https://www.raspberrypi.com/documentation/
|
||||
[12]: https://kernelkit.org/infix/latest/hardware/#banana-pi-bpi-r3
|
||||
[12]: https://www.kernelkit.org/infix/latest/hardware/#banana-pi-bpi-r3
|
||||
|
||||
-4
@@ -1,4 +0,0 @@
|
||||
#!/bin/sh
|
||||
# Workaround for: https://github.com/kernelkit/infix/issues/1357
|
||||
udevadm control --reload-rules
|
||||
udevadm trigger --subsystem-match=net --action=add
|
||||
-4
@@ -1,4 +0,0 @@
|
||||
#!/bin/sh
|
||||
# Workaround for: https://github.com/kernelkit/infix/issues/1357
|
||||
udevadm control --reload-rules
|
||||
udevadm trigger --subsystem-match=net --action=add
|
||||
@@ -1,5 +1,6 @@
|
||||
config BR2_PACKAGE_STYX_DCP_SC_28P
|
||||
bool "Styx DCP-SC-28P"
|
||||
depends on BR2_aarch64
|
||||
select BR2_PACKAGE_LINUX_FIRMWARE_INSIDE_SECURE_MINIFW
|
||||
help
|
||||
Styx DCP-SC-28P
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
if BR2_arm
|
||||
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/board/arm/microchip-sama7g54-ek/Config.in"
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/board/arm/raspberrypi-rpi2/Config.in"
|
||||
|
||||
endif
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
config BR2_PACKAGE_MICROCHIP_SAMA7G54_EK
|
||||
bool "Microchip SAMA7G54-EK Evaluation Kit"
|
||||
depends on BR2_arm
|
||||
select SDCARD_AUX
|
||||
help
|
||||
Support for the Microchip SAMA7G54 Evaluation Kit featuring
|
||||
a Cortex-A7 processor with MACB Gigabit Ethernet and MMC storage.
|
||||
@@ -0,0 +1,13 @@
|
||||
Copyright (c) 2026 The KernelKit Authors
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
@@ -0,0 +1,116 @@
|
||||
Microchip SAMA7G54-EK
|
||||
=====================
|
||||
|
||||
The [SAMA7G54-EK][1] is an evaluation kit for the Microchip SAMA7G5 series,
|
||||
featuring an ARM Cortex-A7 processor @ 800 MHz with 512 MB DDR3L RAM.
|
||||
|
||||
The board features:
|
||||
|
||||
- 2x MACB Gigabit Ethernet ports
|
||||
- 8 GB eMMC (SDMMC0) + microSD card slot (SDMMC1)
|
||||
- QSPI NOR flash
|
||||
- USB 2.0 host ports
|
||||
- CAN bus interfaces
|
||||
- Flexcom serial ports (UART, SPI, I2C)
|
||||
|
||||
How to Build
|
||||
------------
|
||||
|
||||
Since there are no pre-built images for ARM 32-bit, you need to build
|
||||
both Infix and the bootloader from source.
|
||||
|
||||
### SD Card
|
||||
|
||||
1. Build the bootloader
|
||||
|
||||
make O=x-boot-sama7g54 sama7g54_ek_sd_boot_defconfig
|
||||
make O=x-boot-sama7g54
|
||||
|
||||
2. Build Infix
|
||||
|
||||
make O=x-arm arm_defconfig
|
||||
make O=x-arm
|
||||
|
||||
3. Create the SD card image
|
||||
|
||||
./utils/mkimage.sh -b x-boot-sama7g54 -r x-arm microchip-sama7g54-ek
|
||||
|
||||
### eMMC
|
||||
|
||||
1. Build the bootloader
|
||||
|
||||
make O=x-boot-sama7g54-emmc sama7g54_ek_emmc_boot_defconfig
|
||||
make O=x-boot-sama7g54-emmc
|
||||
|
||||
2. Build Infix (same as above, skip if already built)
|
||||
|
||||
make O=x-arm arm_defconfig
|
||||
make O=x-arm
|
||||
|
||||
3. Create the eMMC image
|
||||
|
||||
./utils/mkimage.sh -b x-boot-sama7g54-emmc -r x-arm -t emmc microchip-sama7g54-ek
|
||||
|
||||
Flashing to SD Card
|
||||
-------------------
|
||||
|
||||
[Flash the image][0] to a microSD card (at least 2 GB):
|
||||
|
||||
```bash
|
||||
sudo dd if=x-boot-sama7g54/images/infix-arm-sdcard.img of=/dev/sdX \
|
||||
bs=1M status=progress oflag=direct
|
||||
```
|
||||
|
||||
You can also use `bmaptool` for faster writes:
|
||||
|
||||
```bash
|
||||
sudo bmaptool copy x-boot-sama7g54/images/infix-arm-sdcard.img /dev/sdX
|
||||
```
|
||||
|
||||
> [!WARNING]
|
||||
> Ensure `/dev/sdX` is the correct device for your SD card and not used
|
||||
> by the host system! Use `lsblk` to verify.
|
||||
|
||||
Flashing to eMMC
|
||||
-----------------
|
||||
|
||||
The SAMA7G5EK has an on-board 8 GB eMMC (SDMMC0/mmc0). Jumper J22
|
||||
controls if booting from onboard storage is allowed or not; open means
|
||||
allowed. When open, the SW4 button can also prevent booting from eMMC
|
||||
if held at power on.
|
||||
|
||||
The easiest method is to flash from a running SD card system:
|
||||
|
||||
1. Boot the board from SD card
|
||||
2. Transfer the eMMC image to the board (USB drive, network, etc.)
|
||||
3. Flash the eMMC:
|
||||
|
||||
sudo bmaptool copy emmc.img /dev/mmcblk0
|
||||
|
||||
4. Power off, remove SD card, and boot from eMMC
|
||||
|
||||
Booting the Board
|
||||
-----------------
|
||||
|
||||
1. Insert the flashed SD card (or ensure eMMC is flashed)
|
||||
2. Connect an Ethernet cable
|
||||
3. Power up the board
|
||||
4. Find the assigned IP and SSH in, default login: `admin` / `admin`
|
||||
|
||||
Console Port
|
||||
------------
|
||||
|
||||
The debug console is on Flexcom3 (active by default):
|
||||
|
||||
- Baud rate: 115200
|
||||
- Data bits: 8
|
||||
- Parity: None
|
||||
- Stop bits: 1
|
||||
|
||||
Connect a USB-to-serial adapter to the board's debug UART header.
|
||||
|
||||
> [!WARNING]
|
||||
> Use only 3.3V serial adapters.
|
||||
|
||||
[0]: https://www.kernelkit.org/posts/flashing-sdcard/
|
||||
[1]: https://www.microchip.com/en-us/development-tool/EV21H18A
|
||||
@@ -0,0 +1 @@
|
||||
dtb-y += microchip/at91-sama7g5ek.dtb
|
||||
@@ -0,0 +1,18 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Infix OS device tree for Microchip SAMA7G5 Evaluation Kit
|
||||
*/
|
||||
|
||||
#include <arm/microchip/at91-sama7g5ek.dts>
|
||||
#include "infix.dtsi"
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
};
|
||||
|
||||
/* Thermal sensor disabled until OTP is calibrated */
|
||||
&thermal_sensor {
|
||||
status = "disabled";
|
||||
};
|
||||
@@ -0,0 +1,13 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Common Infix OS defaults
|
||||
*/
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
infix {
|
||||
/* Default admin user password: 'admin' */
|
||||
factory-password-hash = "$5$mI/zpOAqZYKLC2WU$i7iPzZiIjOjrBF3NyftS9CCq8dfYwHwrmUK097Jca9A";
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,85 @@
|
||||
# Disk image for Microchip SAMA7G5EK (sama7g5 evaluation kit)
|
||||
|
||||
image boot.vfat {
|
||||
vfat {
|
||||
files = {
|
||||
"boot.bin",
|
||||
"u-boot.bin"
|
||||
}
|
||||
}
|
||||
|
||||
size = 16M
|
||||
}
|
||||
|
||||
image cfg.ext4 {
|
||||
empty = true
|
||||
temporary = true
|
||||
size = 16M
|
||||
|
||||
ext4 {
|
||||
label = "cfg"
|
||||
use-mke2fs = true
|
||||
features = "uninit_bg"
|
||||
extraargs = "-m 0 -i 4096"
|
||||
}
|
||||
}
|
||||
|
||||
# The /var partition will be expanded automatically at first boot
|
||||
# to use the full size of the SD-card or eMMC media.
|
||||
image var.ext4 {
|
||||
empty = true
|
||||
temporary = true
|
||||
size = 128M
|
||||
|
||||
ext4 {
|
||||
label = "var"
|
||||
use-mke2fs = true
|
||||
features = "uninit_bg"
|
||||
extraargs = "-m 0 -i 4096"
|
||||
}
|
||||
}
|
||||
|
||||
image #INFIX_ID##VERSION#-sama7g54-ek-#TARGET#.img {
|
||||
hdimage {
|
||||
partition-table-type = "hybrid"
|
||||
}
|
||||
|
||||
partition boot {
|
||||
partition-type = 0xC
|
||||
bootable = "true"
|
||||
image = "boot.vfat"
|
||||
offset = 1M
|
||||
}
|
||||
|
||||
partition aux {
|
||||
partition-uuid = D4EF35A0-0652-45A1-B3DE-D63339C82035
|
||||
image = "aux.ext4"
|
||||
}
|
||||
|
||||
partition primary {
|
||||
partition-type-uuid = 0FC63DAF-8483-4772-8E79-3D69D8477DE4
|
||||
bootable = true
|
||||
size = 250M
|
||||
image = "rootfs.squashfs"
|
||||
}
|
||||
|
||||
partition secondary {
|
||||
partition-type-uuid = 0FC63DAF-8483-4772-8E79-3D69D8477DE4
|
||||
bootable = true
|
||||
size = 250M
|
||||
image = "rootfs.squashfs"
|
||||
}
|
||||
|
||||
partition cfg {
|
||||
partition-uuid = 7aa497f0-73b5-47e5-b2ab-8752d8a48105
|
||||
image = "cfg.ext4"
|
||||
}
|
||||
|
||||
partition var {
|
||||
partition-uuid = 8046A06A-E45A-4A14-A6AD-6684704A393F
|
||||
image = "var.ext4"
|
||||
}
|
||||
}
|
||||
|
||||
# Silence genimage warnings
|
||||
config {}
|
||||
@@ -0,0 +1,69 @@
|
||||
# Microchip SAMA7G54-EK kernel configuration fixups
|
||||
define MICROCHIP_SAMA7G54_EK_LINUX_CONFIG_FIXUPS
|
||||
# AT91/Microchip SoC
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_ARCH_AT91)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_SOC_SAMA7G5)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_ATMEL_CLOCKSOURCE_TCB)
|
||||
|
||||
# Serial console (FLEXCOM)
|
||||
# Use ttyAT naming to avoid major/minor conflict with the
|
||||
# 8250 driver (needed by Raspberry Pi 2 in the shared ARM config)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_SERIAL_ATMEL)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_SERIAL_ATMEL_CONSOLE)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_SERIAL_ATMEL_TTYAT)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MFD_ATMEL_FLEXCOM)
|
||||
|
||||
# Network: MACB Ethernet
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_NET_VENDOR_MICROCHIP)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MACB)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MICREL_PHY)
|
||||
|
||||
# MMC/SD
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MMC_SDHCI)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MMC_SDHCI_PLTFM)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_MMC_SDHCI_OF_AT91)
|
||||
|
||||
# Pin control and GPIO
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_PINCTRL_AT91)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_PINCTRL_AT91PIO4)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_GPIO_SYSFS)
|
||||
|
||||
# I2C and SPI
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_I2C_AT91)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_SPI_ATMEL)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_SPI_ATMEL_QUADSPI)
|
||||
|
||||
# Power management and reset
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_POWER_RESET)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_POWER_RESET_AT91_RESET)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_POWER_RESET_AT91_SAMA5D2_SHDWC)
|
||||
|
||||
# Watchdog
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_WATCHDOG)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_SAMA5D4_WATCHDOG)
|
||||
|
||||
# DMA and RTC
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_AT_XDMAC)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_RTC_CLASS)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_RTC_DRV_AT91SAM9)
|
||||
|
||||
# Crypto hardware acceleration
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_DEV_ATMEL_AES)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_DEV_ATMEL_TDES)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_DEV_ATMEL_SHA)
|
||||
|
||||
# USB Host
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_USB_EHCI_HCD)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_USB_OHCI_HCD)
|
||||
|
||||
# Regulators
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_REGULATOR)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_REGULATOR_FIXED_VOLTAGE)
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_REGULATOR_MCP16502)
|
||||
|
||||
# NVMEM for OTP
|
||||
$(call KCONFIG_ENABLE_OPT,CONFIG_NVMEM_MICROCHIP_OTPC)
|
||||
endef
|
||||
|
||||
$(eval $(ix-board))
|
||||
$(eval $(generic-package))
|
||||
@@ -0,0 +1,12 @@
|
||||
[system]
|
||||
compatible=infix-sama7g54-ek
|
||||
bootloader=uboot
|
||||
statusfile=/mnt/aux/rauc.status
|
||||
|
||||
[slot.rootfs.0]
|
||||
device=/dev/disk/by-partlabel/primary
|
||||
bootname=primary
|
||||
|
||||
[slot.rootfs.1]
|
||||
device=/dev/disk/by-partlabel/secondary
|
||||
bootname=secondary
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"@ethtool:driver=macb": {
|
||||
"broken-flow-control": true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
CONFIG_DEVICE_TREE_INCLUDES="infix-env.dtsi infix-key.dtsi sama7g54-ek-env-emmc.dtsi"
|
||||
@@ -0,0 +1,13 @@
|
||||
# Common U-Boot extras for SAMA7G54-EK
|
||||
CONFIG_EFI_PARTITION=y
|
||||
CONFIG_ENV_IMPORT_FDT=y
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_SIGNATURE=y
|
||||
CONFIG_RSA=y
|
||||
CONFIG_RSA_VERIFY=y
|
||||
CONFIG_BLKMAP=y
|
||||
CONFIG_LZ4=y
|
||||
CONFIG_LZMA=y
|
||||
CONFIG_CMD_UNLZ4=y
|
||||
CONFIG_CMD_UNZIP=y
|
||||
CONFIG_CMD_IMI=y
|
||||
@@ -0,0 +1,19 @@
|
||||
/ {
|
||||
config {
|
||||
environment {
|
||||
vendor = "Microchip";
|
||||
bootcmd = "run ixboot";
|
||||
boot_targets = "mmc0";
|
||||
fdtfile = "microchip/at91-sama7g5ek.dtb";
|
||||
fdt_addr_r = "0x62000000";
|
||||
kernel_addr_r = "0x63000000";
|
||||
scriptaddr = "0x68000000";
|
||||
ramdisk_addr_r = "0x69000000";
|
||||
ixbootdelay = "0.5";
|
||||
bootdelay = "-2";
|
||||
bootmenu_delay = "10";
|
||||
ixbtn-devmode = "setenv dev_mode yes; echo Enabled";
|
||||
ixbtn-factory = "echo \"No button, use bootmenu\"";
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,19 @@
|
||||
/ {
|
||||
config {
|
||||
environment {
|
||||
vendor = "Microchip";
|
||||
bootcmd = "run ixboot";
|
||||
boot_targets = "mmc1";
|
||||
fdtfile = "microchip/at91-sama7g5ek.dtb";
|
||||
fdt_addr_r = "0x62000000";
|
||||
kernel_addr_r = "0x63000000";
|
||||
scriptaddr = "0x68000000";
|
||||
ramdisk_addr_r = "0x69000000";
|
||||
ixbootdelay = "0.5";
|
||||
bootdelay = "-2";
|
||||
bootmenu_delay = "10";
|
||||
ixbtn-devmode = "setenv dev_mode yes; echo Enabled";
|
||||
ixbtn-factory = "echo \"No button, use bootmenu\"";
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1 @@
|
||||
CONFIG_DEVICE_TREE_INCLUDES="infix-env.dtsi infix-key.dtsi sama7g54-ek-env-sd.dtsi"
|
||||
@@ -91,5 +91,5 @@ Serial settings: 115200 8N1
|
||||
> [!WARNING]
|
||||
> Use only 3.3V serial adapters. 5V adapters will damage your Raspberry Pi!
|
||||
|
||||
[0]: https://kernelkit.org/posts/flashing-sdcard/
|
||||
[0]: https://www.kernelkit.org/posts/flashing-sdcard/
|
||||
[1]: https://www.raspberrypi.com/products/raspberry-pi-2-model-b/
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
label Infix (arm)
|
||||
kernel /boot/zImage
|
||||
fdtdir /boot
|
||||
append ${bootargs_root} ${bootargs_log} usbcore.authorized_default=2 -- ${bootargs_user}
|
||||
@@ -12,7 +12,7 @@ cat <<EOF >"${gns3a}"
|
||||
"category": "router",
|
||||
"description": "${ARTIFACT} development appliance",
|
||||
"vendor_name": "Kernelkit",
|
||||
"vendor_url": "https://kernelkit.org",
|
||||
"vendor_url": "https://www.kernelkit.org",
|
||||
"product_name": "${ARTIFACT} devel",
|
||||
"registry_version": 6,
|
||||
"status": "experimental",
|
||||
|
||||
@@ -50,7 +50,7 @@ The default credentials for the demo builds is
|
||||
Password:
|
||||
.-------.
|
||||
| . . | Infix OS — Immutable.Friendly.Secure
|
||||
|-. v .-| https://kernelkit.org
|
||||
|-. v .-| https://www.kernelkit.org
|
||||
'-'---'-'
|
||||
|
||||
Run the command 'cli' for interactive OAM
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
# --log-level debug
|
||||
ZEBRA_ARGS="-A 127.0.0.1 -u frr -g frr --log syslog --log-level err"
|
||||
@@ -0,0 +1,2 @@
|
||||
#set DEBUG=1
|
||||
service [2345] <pid/confd,pid/staticd> name:netd netd -- Network route daemon
|
||||
@@ -0,0 +1 @@
|
||||
../available/netd.conf
|
||||
@@ -1,9 +0,0 @@
|
||||
! Default settings for staticd, used for both
|
||||
! confd generated routes, udhcpc and zeroconf
|
||||
frr defaults traditional
|
||||
hostname Router
|
||||
password zebra
|
||||
enable password zebra
|
||||
no log unique-id
|
||||
log syslog informational
|
||||
log facility local2
|
||||
@@ -1,4 +1,4 @@
|
||||
.-------.
|
||||
| . . | Infix OS — Immutable.Friendly.Secure
|
||||
|-. v .-| https://kernelkit.org
|
||||
|-. v .-| https://www.kernelkit.org
|
||||
'-'---'-'
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
# Copy product-specific files (udev rules, factory config, etc.) to /
|
||||
# based on DT compatible strings, before udevd processes any events.
|
||||
#
|
||||
# <hook/mount/all> fires after all filesystems are mounted but before
|
||||
# finit enters runlevel S and starts any service, so the run task is
|
||||
# guaranteed to start ahead of udevd. The <run/preudev/success>
|
||||
# condition below then blocks udevd until pre-udev has finished.
|
||||
#
|
||||
# Systems without a matching product directory exit immediately.
|
||||
run name:preudev cgroup.init [S] <hook/mount/all> log \
|
||||
/usr/libexec/infix/pre-udev -- Probing platform
|
||||
|
||||
# Hold udevd back until pre-udev has had a chance to install any
|
||||
# product-specific udev rules so that they are applied on first pass.
|
||||
service nowarn cgroup.system name:udevd notify:none env:-/etc/default/udevd pid:udevd log \
|
||||
[S12345789] <run/preudev/success> /lib/systemd/systemd-udevd $UDEVD_ARGS -- Device event daemon (udev)
|
||||
service nowarn cgroup.system name:udevd notify:none env:-/etc/default/udevd pid:udevd log \
|
||||
[S12345789] <run/preudev/success> udevd $UDEVD_ARGS -- Device event daemon (udev)
|
||||
@@ -5,5 +5,5 @@ run nowarn if:udevd cgroup.init <service/udevd/ready> log \
|
||||
|
||||
# Now that everything should be probed, do a final pass over the
|
||||
# uevent queue before starting syslogd and everything else
|
||||
run nowarn if:udevd cgroup.init :post <service/udevd/ready> log \
|
||||
run nowarn if:udevd cgroup.init :post <run/preudev/success,service/udevd/ready> log \
|
||||
[S] udevadm settle -t 30 --
|
||||
|
||||
@@ -1,40 +1,22 @@
|
||||
#!/bin/sh
|
||||
# Find, install, and run product specific files and script in /etc
|
||||
# before resuming bootstrap.
|
||||
# Run product specific init scripts and set bootstrap conditions.
|
||||
#
|
||||
# Product-specific files (udev rules, factory config, etc.) are already
|
||||
# copied to / by the pre-udev run task before udevd starts. This
|
||||
# script handles the remaining product init: running custom scripts
|
||||
# from /etc/product/init.d/ and setting finit conditions.
|
||||
#
|
||||
# Use /etc/product/init.d/S01-myscript for scripts, may be a symlink, it
|
||||
# will be called with `start` as its only argument.
|
||||
#
|
||||
# The compatible array is listed in the same order as the device tree,
|
||||
# most significant to least. Hence the reverse.[], to ensure overrides
|
||||
# are applied in order of significance.
|
||||
ident=$(basename "$0")
|
||||
|
||||
PRODUCT_INIT=/etc/product/init.d
|
||||
PREFIXD=/usr/share/product
|
||||
COMPATIBLES=$(jq -r '.compatible | reverse.[] | ascii_downcase' /run/system.json)
|
||||
|
||||
note()
|
||||
{
|
||||
logger -I $$ -k -p user.notice -t "$ident" "$1"
|
||||
}
|
||||
|
||||
found=false
|
||||
for PRODUCT in $COMPATIBLES; do
|
||||
DIR="$PREFIXD/$PRODUCT"
|
||||
if [ -d "$DIR" ]; then
|
||||
note "Using vendor/product-specific defaults for $PRODUCT."
|
||||
for dir in "$DIR"/*; do
|
||||
[ -d "$dir" ] && cp -a "$dir" /
|
||||
done
|
||||
found=true
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$found" = false ]; then
|
||||
note "No vendor/product-specific directory found, using built-in defaults."
|
||||
fi
|
||||
|
||||
# Conditions for bootstrap services, this enables product specific
|
||||
# init scripts to prevent select services from starting.
|
||||
initctl -nbq cond set led
|
||||
|
||||
@@ -290,6 +290,14 @@ def parse_interface_info(ifname):
|
||||
if power_match:
|
||||
result['txpower'] = float(power_match.group(1))
|
||||
|
||||
# wiphy index -> phy/radio name
|
||||
elif stripped.startswith('wiphy '):
|
||||
try:
|
||||
wiphy_idx = int(stripped.split()[1])
|
||||
result['phy'] = normalize_phy_name(f'phy{wiphy_idx}')
|
||||
except (ValueError, IndexError):
|
||||
pass
|
||||
|
||||
return result
|
||||
|
||||
|
||||
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
#!/bin/sh
|
||||
# Copy product-specific files to / based on DT compatible strings.
|
||||
# Designed to run before udevd, so that udev rules are in place when
|
||||
# the kernel starts enumerating devices. No Python, no jq, no syslogd.
|
||||
#
|
||||
# Mirrors the platform detection from 00-probe and the copy logic from
|
||||
# 05-product, but reads the DT directly instead of /run/system.json.
|
||||
|
||||
PREFIXD=/usr/share/product
|
||||
COMPAT=/sys/firmware/devicetree/base/compatible
|
||||
IDENT=$(basename "$0")
|
||||
|
||||
note()
|
||||
{
|
||||
logger -I $$ -k -p user.notice -t "$IDENT" "$*"
|
||||
}
|
||||
|
||||
# Only DT-based systems have product-specific data keyed by compatible.
|
||||
# QEMU and x86/DMI systems have no product dirs to copy.
|
||||
[ -f "$COMPAT" ] || exit 0
|
||||
|
||||
# The DT compatible property is a null-separated list of strings,
|
||||
# ordered most-specific first (e.g. "bananapi,bpi-r3\0mediatek,mt7986a").
|
||||
# Reverse the list so least-specific is applied first and more-specific
|
||||
# overrides it, matching the behaviour of 05-product.
|
||||
reversed=""
|
||||
while IFS= read -r c; do
|
||||
[ -n "$c" ] || continue
|
||||
reversed="$c${reversed:+ $reversed}"
|
||||
done <<EOF
|
||||
$(tr '\0' '\n' < "$COMPAT" | tr '[:upper:]' '[:lower:]')
|
||||
EOF
|
||||
|
||||
found=false
|
||||
for compat in $reversed; do
|
||||
dir="$PREFIXD/$compat"
|
||||
[ -d "$dir" ] || continue
|
||||
|
||||
note "Using product-specific defaults for $compat."
|
||||
for subdir in "$dir"/*; do
|
||||
[ -d "$subdir" ] && cp -a "$subdir" /
|
||||
done
|
||||
found=true
|
||||
done
|
||||
|
||||
$found || note "No product-specific directory found, using built-in defaults."
|
||||
|
||||
exit 0
|
||||
@@ -23,7 +23,8 @@ dir=""
|
||||
all=""
|
||||
env=""
|
||||
port=""
|
||||
force=
|
||||
force=${force:-}
|
||||
reset_volumes=
|
||||
|
||||
# Variable shared across subshells
|
||||
export meta_sha=""
|
||||
@@ -227,7 +228,7 @@ fetch()
|
||||
|
||||
if out=$(eval "$cmd" 2>&1); then
|
||||
log "$file downloaded successfully."
|
||||
if check "$file"; then
|
||||
if [ -n "$force" ] || check "$file"; then
|
||||
echo "$dst"
|
||||
return 0
|
||||
fi
|
||||
@@ -897,6 +898,9 @@ while [ "$1" != "" ]; do
|
||||
shift
|
||||
restart=$1
|
||||
;;
|
||||
-R | --reset-volumes)
|
||||
reset_volumes=true
|
||||
;;
|
||||
-s | --simple)
|
||||
simple=true
|
||||
;;
|
||||
@@ -1108,7 +1112,8 @@ case $cmd in
|
||||
# Remove the old image if it's not used by any other containers
|
||||
if [ -n "$old_image_id" ]; then
|
||||
# Check if the old image is still in use by any containers
|
||||
if ! podman ps -a --format '{{.ImageID}}' | grep -q "^${old_image_id}$"; then
|
||||
old_image_id=${old_image_id:0:12}
|
||||
if ! podman ps -a --format '{{.ImageID}}' | grep -q "^${old_image_id}"; then
|
||||
log "Removing old image $old_image_id"
|
||||
podman rmi "$old_image_id" 2>/dev/null || true
|
||||
else
|
||||
@@ -1250,8 +1255,22 @@ case $cmd in
|
||||
container stop "$name"
|
||||
echo "done"
|
||||
|
||||
# If --reset-volumes requested, delete named volumes so they re-initialize from new image
|
||||
if [ -n "$reset_volumes" ]; then
|
||||
printf ">> Resetting named volumes (all configuration will be lost): "
|
||||
grep -oE -- '-v [^ ]+' "$script" | awk '{print $2}' | cut -d: -f1 | \
|
||||
while read -r vol_name; do
|
||||
if podman volume exists "$vol_name" 2>/dev/null; then
|
||||
printf "%s " "$vol_name"
|
||||
log "Removing volume $vol_name"
|
||||
podman volume rm -f "$vol_name" >/dev/null || true
|
||||
fi
|
||||
done
|
||||
echo "done"
|
||||
fi
|
||||
|
||||
# Set force flag to ensure fresh pull/fetch of image
|
||||
force="-f"
|
||||
export force="-f"
|
||||
|
||||
# For remote images, force re-pull
|
||||
case "$img" in
|
||||
@@ -1273,14 +1292,17 @@ case $cmd in
|
||||
# Recreate container by running the script
|
||||
echo ">> Recreating container ..."
|
||||
if ! "$script"; then
|
||||
force=
|
||||
echo ">> Failed recreating container $name"
|
||||
exit 1
|
||||
fi
|
||||
force=
|
||||
|
||||
# Remove the old image if it's not used by any other containers
|
||||
if [ -n "$old_image_id" ]; then
|
||||
# Check if the old image is still in use by any containers
|
||||
if ! podman ps -a --format '{{.ImageID}}' | grep -q "^${old_image_id}$"; then
|
||||
old_image_id=${old_image_id:0:12}
|
||||
if ! podman ps -a --format '{{.ImageID}}' | grep -q "^${old_image_id}"; then
|
||||
log "Removing old image $old_image_id"
|
||||
podman rmi "$old_image_id" 2>/dev/null || true
|
||||
else
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
#!/bin/sh
|
||||
# Sort and collate all /etc/frr/static.d/*.conf files managed by confd,
|
||||
# udhcpc, and avahi-autoipd before starting staticd.
|
||||
|
||||
DIRD=/etc/frr/static.d
|
||||
NAME=/etc/frr/staticd.conf
|
||||
NEXT=${NAME}+
|
||||
|
||||
rm -f "$NEXT"
|
||||
find "$DIRD" -type f -name '*.conf' ! -name '*~' | sort | while read -r file; do
|
||||
cat "$file" >> "$NEXT"
|
||||
done
|
||||
|
||||
cmp -s "$NAME" "$NEXT" && exit 0
|
||||
mv "$NEXT" "$NAME"
|
||||
@@ -7,7 +7,7 @@ ACTION="$1"
|
||||
IP_CACHE="/var/lib/misc/${interface}.cache"
|
||||
RESOLV_CONF="/run/resolvconf/interfaces/${interface}.conf"
|
||||
NTPFILE="/run/chrony/dhcp-sources.d/${interface}.sources"
|
||||
NAME="/etc/frr/static.d/${interface}-dhcp.conf"
|
||||
NAME="/etc/net.d/${interface}-dhcp.conf"
|
||||
NEXT="${NAME}+"
|
||||
|
||||
[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
|
||||
@@ -75,14 +75,23 @@ was_option_requested()
|
||||
# client MUST ignore the Router option.
|
||||
set_dhcp_routes()
|
||||
{
|
||||
echo "! Generated by udhcpc" > "$NEXT"
|
||||
echo "# Generated by udhcpc" > "$NEXT"
|
||||
echo "" >> "$NEXT"
|
||||
if [ -n "$staticroutes" ]; then
|
||||
if was_option_requested 121; then
|
||||
# format: dest1/mask gw1 ... destn/mask gwn
|
||||
set -- $staticroutes
|
||||
while [ -n "$1" -a -n "$2" ]; do
|
||||
dbg "adding route $1 via $2 metric $metric tag 100"
|
||||
echo "ip route $1 $2 $metric tag 100" >> "$NEXT"
|
||||
cat >> "$NEXT" <<-EOF
|
||||
route {
|
||||
prefix = "$1"
|
||||
nexthop = "$2"
|
||||
distance = $metric
|
||||
tag = 100
|
||||
}
|
||||
|
||||
EOF
|
||||
shift 2
|
||||
done
|
||||
else
|
||||
@@ -91,7 +100,15 @@ set_dhcp_routes()
|
||||
elif [ -n "$router" ] ; then
|
||||
if was_option_requested 3; then
|
||||
for i in $router ; do
|
||||
echo "ip route 0.0.0.0/0 $i $metric tag 100" >> "$NEXT"
|
||||
cat >> "$NEXT" <<-EOF
|
||||
route {
|
||||
prefix = "0.0.0.0/0"
|
||||
nexthop = "$i"
|
||||
distance = $metric
|
||||
tag = 100
|
||||
}
|
||||
|
||||
EOF
|
||||
done
|
||||
else
|
||||
log "ignoring unrequested router (option 3)"
|
||||
@@ -101,8 +118,6 @@ set_dhcp_routes()
|
||||
# Reduce changes needed by comparing with previous route(s)
|
||||
cmp -s "$NAME" "$NEXT" && return
|
||||
mv "$NEXT" "$NAME"
|
||||
|
||||
initctl -nbq restart staticd
|
||||
}
|
||||
|
||||
clr_dhcp_routes()
|
||||
@@ -110,8 +125,6 @@ clr_dhcp_routes()
|
||||
log "deleting DHCP routes"
|
||||
[ -f "$NAME" ] || return
|
||||
rm "$NAME"
|
||||
|
||||
initctl -nbq restart staticd
|
||||
}
|
||||
|
||||
clr_dhcp_addresses()
|
||||
|
||||
+1
-1
Submodule buildroot updated: c3390cbf09...66450a898a
@@ -27,7 +27,7 @@ BR2_ROOTFS_OVERLAY="${BR2_EXTERNAL_INFIX_PATH}/board/common/rootfs ${BR2_EXTERNA
|
||||
BR2_ROOTFS_POST_BUILD_SCRIPT="${BR2_EXTERNAL_INFIX_PATH}/board/common/post-build.sh"
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.8"
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.17"
|
||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="${BR2_EXTERNAL_INFIX_PATH}/board/aarch64/linux_defconfig"
|
||||
BR2_LINUX_KERNEL_INSTALL_TARGET=y
|
||||
@@ -39,7 +39,6 @@ BR2_PACKAGE_E2FSPROGS=y
|
||||
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
|
||||
BR2_PACKAGE_DBUS_CXX=y
|
||||
BR2_PACKAGE_DBUS_GLIB=y
|
||||
BR2_PACKAGE_DBUS_TRIGGERD=y
|
||||
BR2_PACKAGE_EUDEV_RULES_GEN=y
|
||||
# BR2_PACKAGE_EUDEV_ENABLE_HWDB is not set
|
||||
BR2_PACKAGE_GPTFDISK=y
|
||||
@@ -141,14 +140,16 @@ BR2_PACKAGE_MARVELL_CN9130_CRB=y
|
||||
BR2_PACKAGE_MARVELL_ESPRESSOBIN=y
|
||||
BR2_PACKAGE_RASPBERRYPI_RPI64=y
|
||||
BR2_PACKAGE_STYX_DCP_SC_28P=y
|
||||
INFIX_VENDOR_HOME="https://kernelkit.org"
|
||||
INFIX_VENDOR_HOME="https://www.kernelkit.org"
|
||||
INFIX_DESC="Infix is an immutable, friendly, and secure operating system that turns any ARM or x86 device into a powerful, manageable network appliance. Deploy on anything from $35 Raspberry Pi boards to enterprise switches as routers, IoT gateways, or edge devices. Infix models Linux networking features using YANG so you can manage your devices using NETCONF/RESTCONF APIs and focus on your business logic running in isolated containers."
|
||||
INFIX_HOME="https://github.com/kernelkit/infix/"
|
||||
INFIX_DOC="https://kernelkit.org/infix/"
|
||||
INFIX_DOC="https://www.kernelkit.org/infix/"
|
||||
INFIX_SUPPORT="mailto:kernelkit@googlegroups.com"
|
||||
BR2_PACKAGE_FEATURE_GPS=y
|
||||
BR2_PACKAGE_FEATURE_WIFI_MEDIATEK=y
|
||||
BR2_PACKAGE_FEATURE_WIFI_REALTEK=y
|
||||
BR2_PACKAGE_CONFD=y
|
||||
BR2_PACKAGE_NETD=y
|
||||
BR2_PACKAGE_CONFD_TEST_MODE=y
|
||||
BR2_PACKAGE_CURIOS_HTTPD=y
|
||||
BR2_PACKAGE_CURIOS_NFTABLES=y
|
||||
|
||||
@@ -27,7 +27,7 @@ BR2_ROOTFS_OVERLAY="${BR2_EXTERNAL_INFIX_PATH}/board/common/rootfs ${BR2_EXTERNA
|
||||
BR2_ROOTFS_POST_BUILD_SCRIPT="${BR2_EXTERNAL_INFIX_PATH}/board/common/post-build.sh"
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.8"
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.17"
|
||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="${BR2_EXTERNAL_INFIX_PATH}/board/aarch64/linux_defconfig"
|
||||
BR2_LINUX_KERNEL_INSTALL_TARGET=y
|
||||
@@ -39,7 +39,6 @@ BR2_PACKAGE_E2FSPROGS=y
|
||||
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
|
||||
BR2_PACKAGE_DBUS_CXX=y
|
||||
BR2_PACKAGE_DBUS_GLIB=y
|
||||
BR2_PACKAGE_DBUS_TRIGGERD=y
|
||||
BR2_PACKAGE_EUDEV_RULES_GEN=y
|
||||
# BR2_PACKAGE_EUDEV_ENABLE_HWDB is not set
|
||||
BR2_PACKAGE_GPTFDISK=y
|
||||
@@ -119,12 +118,13 @@ BR2_PACKAGE_MARVELL_CN9130_CRB=y
|
||||
BR2_PACKAGE_MARVELL_ESPRESSOBIN=y
|
||||
BR2_PACKAGE_RASPBERRYPI_RPI64=y
|
||||
BR2_PACKAGE_STYX_DCP_SC_28P=y
|
||||
INFIX_VENDOR_HOME="https://kernelkit.org"
|
||||
INFIX_VENDOR_HOME="https://www.kernelkit.org"
|
||||
INFIX_DESC="Infix is an immutable, friendly, and secure operating system that turns any ARM or x86 device into a powerful, manageable network appliance. Deploy on anything from $35 Raspberry Pi boards to enterprise switches as routers, IoT gateways, or edge devices. Infix models Linux networking features using YANG so you can manage your devices using NETCONF/RESTCONF APIs and focus on your business logic running in isolated containers."
|
||||
INFIX_HOME="https://github.com/kernelkit/infix/"
|
||||
INFIX_DOC="https://kernelkit.org/infix/"
|
||||
INFIX_DOC="https://www.kernelkit.org/infix/"
|
||||
INFIX_SUPPORT="mailto:kernelkit@googlegroups.com"
|
||||
BR2_PACKAGE_CONFD=y
|
||||
BR2_PACKAGE_NETD=y
|
||||
BR2_PACKAGE_CONFD_TEST_MODE=y
|
||||
BR2_PACKAGE_GENCERT=y
|
||||
BR2_PACKAGE_STATD=y
|
||||
|
||||
@@ -24,5 +24,6 @@ BR2_TARGET_UBOOT_FORMAT_DTB=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y
|
||||
TRUSTED_KEYS=y
|
||||
TRUSTED_KEYS_DEVELOPMENT=y
|
||||
|
||||
@@ -28,7 +28,7 @@ BR2_ROOTFS_OVERLAY="${BR2_EXTERNAL_INFIX_PATH}/board/common/rootfs ${BR2_EXTERNA
|
||||
BR2_ROOTFS_POST_BUILD_SCRIPT="${BR2_EXTERNAL_INFIX_PATH}/board/common/post-build.sh"
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.8"
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.17"
|
||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="${BR2_EXTERNAL_INFIX_PATH}/board/arm/linux_defconfig"
|
||||
BR2_LINUX_KERNEL_INSTALL_TARGET=y
|
||||
@@ -41,7 +41,6 @@ BR2_PACKAGE_E2FSPROGS=y
|
||||
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
|
||||
BR2_PACKAGE_DBUS_CXX=y
|
||||
BR2_PACKAGE_DBUS_GLIB=y
|
||||
BR2_PACKAGE_DBUS_TRIGGERD=y
|
||||
BR2_PACKAGE_EUDEV_RULES_GEN=y
|
||||
# BR2_PACKAGE_EUDEV_ENABLE_HWDB is not set
|
||||
BR2_PACKAGE_GPTFDISK=y
|
||||
@@ -135,15 +134,18 @@ BR2_PACKAGE_HOST_MTOOLS=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y
|
||||
BR2_PACKAGE_MICROCHIP_SAMA7G54_EK=y
|
||||
BR2_PACKAGE_RASPBERRYPI_RPI2=y
|
||||
INFIX_VENDOR_HOME="https://kernelkit.org"
|
||||
INFIX_VENDOR_HOME="https://www.kernelkit.org"
|
||||
INFIX_DESC="Infix is an immutable, friendly, and secure operating system that turns any ARM or x86 device into a powerful, manageable network appliance. Deploy on anything from $35 Raspberry Pi boards to enterprise switches as routers, IoT gateways, or edge devices. Infix models Linux networking features using YANG so you can manage your devices using NETCONF/RESTCONF APIs and focus on your business logic running in isolated containers."
|
||||
INFIX_HOME="https://github.com/kernelkit/infix/"
|
||||
INFIX_DOC="https://kernelkit.org/infix/"
|
||||
INFIX_DOC="https://www.kernelkit.org/infix/"
|
||||
INFIX_SUPPORT="mailto:kernelkit@googlegroups.com"
|
||||
BR2_PACKAGE_FEATURE_GPS=y
|
||||
BR2_PACKAGE_FEATURE_WIFI_MEDIATEK=y
|
||||
BR2_PACKAGE_FEATURE_WIFI_REALTEK=y
|
||||
BR2_PACKAGE_CONFD=y
|
||||
BR2_PACKAGE_NETD=y
|
||||
BR2_PACKAGE_CONFD_TEST_MODE=y
|
||||
BR2_PACKAGE_GENCERT=y
|
||||
BR2_PACKAGE_STATD=y
|
||||
|
||||
@@ -28,7 +28,7 @@ BR2_ROOTFS_OVERLAY="${BR2_EXTERNAL_INFIX_PATH}/board/common/rootfs ${BR2_EXTERNA
|
||||
BR2_ROOTFS_POST_BUILD_SCRIPT="${BR2_EXTERNAL_INFIX_PATH}/board/common/post-build.sh"
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.8"
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.17"
|
||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="${BR2_EXTERNAL_INFIX_PATH}/board/arm/linux_defconfig"
|
||||
BR2_LINUX_KERNEL_INSTALL_TARGET=y
|
||||
@@ -41,7 +41,6 @@ BR2_PACKAGE_E2FSPROGS=y
|
||||
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
|
||||
BR2_PACKAGE_DBUS_CXX=y
|
||||
BR2_PACKAGE_DBUS_GLIB=y
|
||||
BR2_PACKAGE_DBUS_TRIGGERD=y
|
||||
BR2_PACKAGE_EUDEV_RULES_GEN=y
|
||||
# BR2_PACKAGE_EUDEV_ENABLE_HWDB is not set
|
||||
BR2_PACKAGE_GPTFDISK=y
|
||||
@@ -117,13 +116,15 @@ BR2_PACKAGE_HOST_MTOOLS=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y
|
||||
BR2_PACKAGE_MICROCHIP_SAMA7G54_EK=y
|
||||
BR2_PACKAGE_RASPBERRYPI_RPI2=y
|
||||
INFIX_VENDOR_HOME="https://kernelkit.org"
|
||||
INFIX_VENDOR_HOME="https://www.kernelkit.org"
|
||||
INFIX_DESC="Infix is an immutable, friendly, and secure operating system that turns any ARM or x86 device into a powerful, manageable network appliance. Deploy on anything from $35 Raspberry Pi boards to enterprise switches as routers, IoT gateways, or edge devices. Infix models Linux networking features using YANG so you can manage your devices using NETCONF/RESTCONF APIs and focus on your business logic running in isolated containers."
|
||||
INFIX_HOME="https://github.com/kernelkit/infix/"
|
||||
INFIX_DOC="https://kernelkit.org/infix/"
|
||||
INFIX_DOC="https://www.kernelkit.org/infix/"
|
||||
INFIX_SUPPORT="mailto:kernelkit@googlegroups.com"
|
||||
BR2_PACKAGE_CONFD=y
|
||||
BR2_PACKAGE_NETD=y
|
||||
BR2_PACKAGE_CONFD_TEST_MODE=y
|
||||
BR2_PACKAGE_GENCERT=y
|
||||
BR2_PACKAGE_STATD=y
|
||||
|
||||
@@ -11,6 +11,8 @@ BR2_SSP_NONE=y
|
||||
BR2_INIT_NONE=y
|
||||
BR2_SYSTEM_BIN_SH_NONE=y
|
||||
# BR2_PACKAGE_BUSYBOX is not set
|
||||
BR2_PACKAGE_LINUX_FIRMWARE=y
|
||||
BR2_PACKAGE_LINUX_FIRMWARE_AIROHA_EN8811H=y
|
||||
# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set
|
||||
# BR2_TARGET_ROOTFS_TAR is not set
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE=y
|
||||
|
||||
@@ -50,7 +50,6 @@ BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y
|
||||
BR2_PACKAGE_LINUX_FIRMWARE_RTL_815X=y
|
||||
BR2_PACKAGE_DBUS_CXX=y
|
||||
BR2_PACKAGE_DBUS_GLIB=y
|
||||
BR2_PACKAGE_DBUS_TRIGGERD=y
|
||||
BR2_PACKAGE_EUDEV_RULES_GEN=y
|
||||
# BR2_PACKAGE_EUDEV_ENABLE_HWDB is not set
|
||||
BR2_PACKAGE_GPTFDISK=y
|
||||
@@ -168,15 +167,17 @@ BR2_PACKAGE_HOST_BMAP_TOOLS=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y
|
||||
INFIX_VENDOR_HOME="https://kernelkit.org"
|
||||
INFIX_VENDOR_HOME="https://www.kernelkit.org"
|
||||
INFIX_DESC="Infix is an immutable, friendly, and secure operating system that turns any ARM or x86 device into a powerful, manageable network appliance. Deploy on anything from $35 Raspberry Pi boards to enterprise switches as routers, IoT gateways, or edge devices. Infix models Linux networking features using YANG so you can manage your devices using NETCONF/RESTCONF APIs and focus on your business logic running in isolated containers."
|
||||
INFIX_HOME="https://github.com/kernelkit/infix/"
|
||||
INFIX_DOC="https://kernelkit.org/infix/"
|
||||
INFIX_DOC="https://www.kernelkit.org/infix/"
|
||||
INFIX_SUPPORT="mailto:kernelkit@googlegroups.com"
|
||||
BR2_PACKAGE_FEATURE_GPS=y
|
||||
BR2_PACKAGE_FEATURE_WIFI=y
|
||||
BR2_PACKAGE_FEATURE_WIFI_MEDIATEK=y
|
||||
BR2_PACKAGE_FEATURE_WIFI_REALTEK=y
|
||||
BR2_PACKAGE_CONFD=y
|
||||
BR2_PACKAGE_NETD=y
|
||||
BR2_PACKAGE_GENCERT=y
|
||||
BR2_PACKAGE_STATD=y
|
||||
BR2_PACKAGE_FACTORY=y
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
BR2_arm=y
|
||||
BR2_cortex_a7=y
|
||||
BR2_ARM_FPU_NEON_VFPV4=y
|
||||
BR2_TOOLCHAIN_EXTERNAL=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_GLIBC_STABLE=y
|
||||
BR2_DL_DIR="$(BR2_EXTERNAL_INFIX_PATH)/dl"
|
||||
BR2_CCACHE=y
|
||||
BR2_CCACHE_DIR="$(BR2_EXTERNAL_INFIX_PATH)/.ccache"
|
||||
BR2_PACKAGE_OVERRIDE_FILE="$(BR2_EXTERNAL_INFIX_PATH)/local.mk"
|
||||
BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_INFIX_PATH)/patches"
|
||||
BR2_SSP_NONE=y
|
||||
BR2_INIT_NONE=y
|
||||
BR2_SYSTEM_BIN_SH_NONE=y
|
||||
# BR2_PACKAGE_BUSYBOX is not set
|
||||
# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set
|
||||
# BR2_TARGET_ROOTFS_TAR is not set
|
||||
BR2_TARGET_AT91BOOTSTRAP3=y
|
||||
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL=y
|
||||
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,at91bootstrap,v4.0.9)/at91bootstrap-v4.0.9.tar.gz"
|
||||
BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama7g5ekemmc_uboot"
|
||||
BR2_TARGET_UBOOT=y
|
||||
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
|
||||
BR2_TARGET_UBOOT_CUSTOM_TARBALL=y
|
||||
BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,u-boot-at91,linux4microchip-2025.04)/u-boot-at91-linux4microchip-2025.04.tar.gz"
|
||||
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama7g5ek_mmc"
|
||||
BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_INFIX_PATH)/board/common/uboot/extras.config $(BR2_EXTERNAL_INFIX_PATH)/board/arm/microchip-sama7g54-ek/uboot/extras.config $(BR2_EXTERNAL_INFIX_PATH)/board/arm/microchip-sama7g54-ek/uboot/emmc-extras.config"
|
||||
BR2_TARGET_UBOOT_NEEDS_DTC=y
|
||||
BR2_TARGET_UBOOT_CUSTOM_DTS_PATH="$(BR2_EXTERNAL_INFIX_PATH)/board/arm/microchip-sama7g54-ek/uboot/sama7g54-ek-env-emmc.dtsi"
|
||||
BR2_PACKAGE_HOST_BMAP_TOOLS=y
|
||||
BR2_PACKAGE_HOST_GENIMAGE=y
|
||||
BR2_PACKAGE_HOST_RAUC=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y
|
||||
TRUSTED_KEYS=y
|
||||
TRUSTED_KEYS_DEVELOPMENT=y
|
||||
@@ -0,0 +1,38 @@
|
||||
BR2_arm=y
|
||||
BR2_cortex_a7=y
|
||||
BR2_ARM_FPU_NEON_VFPV4=y
|
||||
BR2_TOOLCHAIN_EXTERNAL=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_GLIBC_STABLE=y
|
||||
BR2_DL_DIR="$(BR2_EXTERNAL_INFIX_PATH)/dl"
|
||||
BR2_CCACHE=y
|
||||
BR2_CCACHE_DIR="$(BR2_EXTERNAL_INFIX_PATH)/.ccache"
|
||||
BR2_PACKAGE_OVERRIDE_FILE="$(BR2_EXTERNAL_INFIX_PATH)/local.mk"
|
||||
BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_INFIX_PATH)/patches"
|
||||
BR2_SSP_NONE=y
|
||||
BR2_INIT_NONE=y
|
||||
BR2_SYSTEM_BIN_SH_NONE=y
|
||||
# BR2_PACKAGE_BUSYBOX is not set
|
||||
# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set
|
||||
# BR2_TARGET_ROOTFS_TAR is not set
|
||||
BR2_TARGET_AT91BOOTSTRAP3=y
|
||||
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL=y
|
||||
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,at91bootstrap,v4.0.9)/at91bootstrap-v4.0.9.tar.gz"
|
||||
BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama7g5eksd_uboot"
|
||||
BR2_TARGET_UBOOT=y
|
||||
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
|
||||
BR2_TARGET_UBOOT_CUSTOM_TARBALL=y
|
||||
BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,u-boot-at91,linux4microchip-2025.04)/u-boot-at91-linux4microchip-2025.04.tar.gz"
|
||||
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama7g5ek_mmc1"
|
||||
BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_INFIX_PATH)/board/common/uboot/extras.config $(BR2_EXTERNAL_INFIX_PATH)/board/arm/microchip-sama7g54-ek/uboot/extras.config $(BR2_EXTERNAL_INFIX_PATH)/board/arm/microchip-sama7g54-ek/uboot/sd-extras.config"
|
||||
BR2_TARGET_UBOOT_NEEDS_DTC=y
|
||||
BR2_TARGET_UBOOT_CUSTOM_DTS_PATH="$(BR2_EXTERNAL_INFIX_PATH)/board/arm/microchip-sama7g54-ek/uboot/sama7g54-ek-env-sd.dtsi"
|
||||
BR2_PACKAGE_HOST_BMAP_TOOLS=y
|
||||
BR2_PACKAGE_HOST_GENIMAGE=y
|
||||
BR2_PACKAGE_HOST_RAUC=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y
|
||||
TRUSTED_KEYS=y
|
||||
TRUSTED_KEYS_DEVELOPMENT=y
|
||||
@@ -26,7 +26,7 @@ BR2_ROOTFS_OVERLAY="${BR2_EXTERNAL_INFIX_PATH}/board/common/rootfs ${BR2_EXTERNA
|
||||
BR2_ROOTFS_POST_BUILD_SCRIPT="board/qemu/x86_64/post-build.sh ${BR2_EXTERNAL_INFIX_PATH}/board/common/post-build.sh"
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.8"
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.17"
|
||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="${BR2_EXTERNAL_INFIX_PATH}/board/x86_64/linux_defconfig"
|
||||
BR2_LINUX_KERNEL_INSTALL_TARGET=y
|
||||
@@ -39,7 +39,6 @@ BR2_PACKAGE_E2FSPROGS=y
|
||||
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
|
||||
BR2_PACKAGE_DBUS_CXX=y
|
||||
BR2_PACKAGE_DBUS_GLIB=y
|
||||
BR2_PACKAGE_DBUS_TRIGGERD=y
|
||||
BR2_PACKAGE_EUDEV_RULES_GEN=y
|
||||
# BR2_PACKAGE_EUDEV_ENABLE_HWDB is not set
|
||||
BR2_PACKAGE_GPTFDISK=y
|
||||
@@ -140,15 +139,17 @@ BR2_PACKAGE_HOST_MTOOLS=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y
|
||||
INFIX_VENDOR_HOME="https://kernelkit.org"
|
||||
INFIX_VENDOR_HOME="https://www.kernelkit.org"
|
||||
INFIX_DESC="Infix is an immutable, friendly, and secure operating system that turns any ARM or x86 device into a powerful, manageable network appliance. Deploy on anything from $35 Raspberry Pi boards to enterprise switches as routers, IoT gateways, or edge devices. Infix models Linux networking features using YANG so you can manage your devices using NETCONF/RESTCONF APIs and focus on your business logic running in isolated containers."
|
||||
INFIX_HOME="https://github.com/kernelkit/infix/"
|
||||
INFIX_DOC="https://kernelkit.org/infix/"
|
||||
INFIX_DOC="https://www.kernelkit.org/infix/"
|
||||
INFIX_SUPPORT="mailto:kernelkit@googlegroups.com"
|
||||
BR2_PACKAGE_FEATURE_GPS=y
|
||||
BR2_PACKAGE_FEATURE_WIFI=y
|
||||
BR2_PACKAGE_FEATURE_WIFI_MEDIATEK=y
|
||||
BR2_PACKAGE_FEATURE_WIFI_REALTEK=y
|
||||
BR2_PACKAGE_CONFD=y
|
||||
BR2_PACKAGE_NETD=y
|
||||
BR2_PACKAGE_CONFD_TEST_MODE=y
|
||||
BR2_PACKAGE_CURIOS_HTTPD=y
|
||||
BR2_PACKAGE_CURIOS_NFTABLES=y
|
||||
|
||||
@@ -26,7 +26,7 @@ BR2_ROOTFS_OVERLAY="${BR2_EXTERNAL_INFIX_PATH}/board/common/rootfs ${BR2_EXTERNA
|
||||
BR2_ROOTFS_POST_BUILD_SCRIPT="board/qemu/x86_64/post-build.sh ${BR2_EXTERNAL_INFIX_PATH}/board/common/post-build.sh"
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.8"
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.17"
|
||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="${BR2_EXTERNAL_INFIX_PATH}/board/x86_64/linux_defconfig"
|
||||
BR2_LINUX_KERNEL_INSTALL_TARGET=y
|
||||
@@ -39,7 +39,6 @@ BR2_PACKAGE_E2FSPROGS=y
|
||||
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
|
||||
BR2_PACKAGE_DBUS_CXX=y
|
||||
BR2_PACKAGE_DBUS_GLIB=y
|
||||
BR2_PACKAGE_DBUS_TRIGGERD=y
|
||||
BR2_PACKAGE_EUDEV_RULES_GEN=y
|
||||
# BR2_PACKAGE_EUDEV_ENABLE_HWDB is not set
|
||||
BR2_PACKAGE_GPTFDISK=y
|
||||
@@ -118,12 +117,13 @@ BR2_PACKAGE_HOST_MTOOLS=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y
|
||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y
|
||||
INFIX_VENDOR_HOME="https://kernelkit.org"
|
||||
INFIX_VENDOR_HOME="https://www.kernelkit.org"
|
||||
INFIX_DESC="Infix is an immutable, friendly, and secure operating system that turns any ARM or x86 device into a powerful, manageable network appliance. Deploy on anything from $35 Raspberry Pi boards to enterprise switches as routers, IoT gateways, or edge devices. Infix models Linux networking features using YANG so you can manage your devices using NETCONF/RESTCONF APIs and focus on your business logic running in isolated containers."
|
||||
INFIX_HOME="https://github.com/kernelkit/infix/"
|
||||
INFIX_DOC="https://kernelkit.org/infix/"
|
||||
INFIX_DOC="https://www.kernelkit.org/infix/"
|
||||
INFIX_SUPPORT="mailto:kernelkit@googlegroups.com"
|
||||
BR2_PACKAGE_CONFD=y
|
||||
BR2_PACKAGE_NETD=y
|
||||
BR2_PACKAGE_CONFD_TEST_MODE=y
|
||||
BR2_PACKAGE_GENCERT=y
|
||||
BR2_PACKAGE_STATD=y
|
||||
|
||||
+48
-3
@@ -3,6 +3,49 @@ Change Log
|
||||
|
||||
All notable changes to the project are documented in this file.
|
||||
|
||||
[v26.02.1][] - 2026-03-13
|
||||
-------------------------
|
||||
|
||||
### Changes
|
||||
|
||||
- Upgrade Linux kernel to 6.18.17 (LTS)
|
||||
- Add support for disabling WiFi and GPS features in builds
|
||||
- Add OSPF point-to-multipoint (P2MP) and hybrid interface type support. This
|
||||
also includes support for setting static neighbors, issue #1426
|
||||
|
||||
### Fixes
|
||||
|
||||
- Fix #1389: legacy name limit in firewalld triggered problems with policy names
|
||||
- Fix #1416: `show firewall` command show an error when the firewall is disabled
|
||||
- Fix #1438: default route from DHCP client not set at boot, regression in v26.02.0
|
||||
- Fix instabilities in Zebra route manager after Frr upgrade in v26.02.0
|
||||
- Fix regression in MVEBU SafeXcel Crypto Engine for Marvell Armada SOCs (37xx,
|
||||
7k, 8k, and CN913x series). Firmware package lost in v26.01.0
|
||||
|
||||
[v26.02.0][] - 2026-03-01
|
||||
-------------------------
|
||||
|
||||
> [!NOTE]
|
||||
> The blog and User Guide have a new address: <https://www.kernelkit.org>
|
||||
|
||||
### Changes
|
||||
|
||||
- Upgrade Linux kernel to 6.18.15 (LTS)
|
||||
- Upgrade Buildroot to 2025.02.11 (LTS)
|
||||
- Upgrade FRR to 10.5.1
|
||||
- Add support for [Microchip SAMA7G54][SAMA7G54-EK] Evaluation Kit, Arm Cortex-A7
|
||||
- Add support for [Banana Pi R3 Mini][BPI-R3-MINI], a 2 port router with 2 WiFi chip,
|
||||
uses the same bootloader as BPI-R3 (eMMC-version)
|
||||
- Add GPS/GNSS receiver support with NTP reference clock integration
|
||||
- Add `reset-volumes` option to `container upgrade foo` command
|
||||
|
||||
### Fixes
|
||||
|
||||
- Fix CLI `copy` command problem to copy to scp/sftp destinations
|
||||
|
||||
[BPI-R3-MINI]: https://wiki.banana-pi.org/Banana_Pi_BPI-R3_Mini
|
||||
[SAMA7G54-EK]: https://www.microchip.com/en-us/development-tool/ev21h18a
|
||||
|
||||
[v26.01.0][] - 2026-02-03
|
||||
-------------------------
|
||||
|
||||
@@ -86,7 +129,7 @@ Noteworthy changes and additions in this release are marked below in bold text.
|
||||
- Prevent MOTD from showing on non-shell user login attempts
|
||||
- Fix mDNS reflector.
|
||||
|
||||
[wifi]: https://kernelkit.org/infix/latest/wifi/
|
||||
[wifi]: https://www.kernelkit.org/infix/latest/wifi/
|
||||
[sd card image]: https://github.com/kernelkit/infix/releases/download/latest-boot/infix-rpi64-sdcard.img
|
||||
|
||||
|
||||
@@ -704,7 +747,7 @@ renamed to ease maintenance, more info below.
|
||||
not supported (yet) in Infix, issue #709
|
||||
- The default builds now include the curiOS nftables container image,
|
||||
which can be used for advanced firewall setups. For an introduction
|
||||
see <https://kernelkit.org/posts/firewall-container/>
|
||||
see <https://www.kernelkit.org/posts/firewall-container/>
|
||||
|
||||
### Fixes
|
||||
|
||||
@@ -1907,7 +1950,9 @@ Supported YANG models in addition to those used by sysrepo and netopeer:
|
||||
- N/A
|
||||
|
||||
[buildroot]: https://buildroot.org/
|
||||
[UNRELEASED]: https://github.com/kernelkit/infix/compare/v25.11.0...HEAD
|
||||
[UNRELEASED]: https://github.com/kernelkit/infix/compare/v26.02.0...HEAD
|
||||
[v26.02.1]: https://github.com/kernelkit/infix/compare/v26.02.0...v26.02.1
|
||||
[v26.02.0]: https://github.com/kernelkit/infix/compare/v26.01.0...v26.02.0
|
||||
[v26.01.0]: https://github.com/kernelkit/infix/compare/v25.11.0...v26.01.0
|
||||
[v25.11.0]: https://github.com/kernelkit/infix/compare/v25.10.0...v25.11.0
|
||||
[v25.10.0]: https://github.com/kernelkit/infix/compare/v25.09.0...v26.10.0
|
||||
|
||||
@@ -668,6 +668,12 @@ set:
|
||||
|
||||
For an example of both, see the next section.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> **VETH Pair Limitation:** When using VETH pairs with containers, at least
|
||||
> one side of the pair must remain in the host namespace. It is currently
|
||||
> not possible to create VETH pairs where both ends are assigned to different
|
||||
> containers. One end must always be accessible from the host.
|
||||
|
||||
[^3]: Something which the container bridge network type does behind the
|
||||
scenes with one end of an automatically created VETH pair.
|
||||
|
||||
|
||||
+2
-2
@@ -295,7 +295,7 @@ linux-pc:# ssh admin@infix-c0-ff-ee.local
|
||||
(admin@infix-c0-ff-ee.local) Password:
|
||||
.-------.
|
||||
| . . | Infix OS — Immutable.Friendly.Secure
|
||||
|-. v .-| https://kernelkit.org
|
||||
|-. v .-| https://www.kernelkit.org
|
||||
'-'---'-
|
||||
|
||||
Run the command 'cli' for interactive OAM
|
||||
@@ -335,7 +335,7 @@ linux-pc:# ssh admin@infix.local
|
||||
(admin@infix.local) Password:
|
||||
.-------.
|
||||
| . . | Infix OS — Immutable.Friendly.Secure
|
||||
|-. v .-| https://kernelkit.org
|
||||
|-. v .-| https://www.kernelkit.org
|
||||
'-'---'-
|
||||
|
||||
Run the command 'cli' for interactive OAM
|
||||
|
||||
@@ -3,6 +3,56 @@
|
||||
The hardware infomation and status is handled by the YANG model [IETF
|
||||
hardware][1], with deviations and augmentations in _infix-hardware_.
|
||||
|
||||
## GPS/GNSS Receivers
|
||||
|
||||
Infix supports GPS/GNSS receivers for hardware status monitoring and NTP
|
||||
time synchronization. USB GPS receivers using the USB ACM interface are
|
||||
supported (e.g., u-blox). When connected, devices are automatically
|
||||
discovered and named `gps0`, `gps1`, etc.
|
||||
|
||||
### Current status
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>show hardware</b>
|
||||
<span class="header">HARDWARE COMPONENTS </span>
|
||||
──────────────────────────────────────────────────────────────
|
||||
<span class="title">GPS/GNSS Receivers </span>
|
||||
Name : gps0
|
||||
Device : /dev/gps0
|
||||
Driver : u-blox
|
||||
Status : Active
|
||||
Fix : 3D
|
||||
Satellites : 10/15 (used/visible)
|
||||
Position : 59.334567N 18.063456E 42.3m
|
||||
PPS : Available
|
||||
</code></pre>
|
||||
|
||||
Available information per receiver:
|
||||
|
||||
| Field | Description |
|
||||
|------------|---------------------------------------------------|
|
||||
| Name | Component name (`gps0`, `gps1`, ...) |
|
||||
| Device | Device path (`/dev/gps0`) |
|
||||
| Driver | Protocol driver (e.g., `u-blox`, `NMEA`, `SiRF`) |
|
||||
| Status | `Active` or `Inactive` |
|
||||
| Fix | `NONE`, `2D`, or `3D` |
|
||||
| Satellites | Used/visible count |
|
||||
| Position | Latitude, longitude, altitude (when fix acquired) |
|
||||
| PPS | Pulse Per Second signal availability |
|
||||
|
||||
### Configure GPS receiver
|
||||
|
||||
GPS receivers are hardware components with class `gps`. The class is
|
||||
auto-inferred from the component name, similar to WiFi radios (`radioN`):
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>configure</b>
|
||||
admin@example:/config/> <b>set hardware component gps0</b>
|
||||
admin@example:/config/> <b>leave</b>
|
||||
</code></pre>
|
||||
|
||||
To use a GPS receiver as an NTP reference clock source, see
|
||||
[NTP — GPS Reference Clock](ntp.md#gps-reference-clock).
|
||||
|
||||
|
||||
## USB Ports
|
||||
|
||||
For Infix to be able to control USB port(s), a device tree modification
|
||||
|
||||
+1
-1
@@ -87,7 +87,7 @@ example login: <b>admin</b>
|
||||
Password:
|
||||
.-------.
|
||||
| . . | Infix OS — Immutable.Friendly.Secure
|
||||
|-. v .-| https://kernelkit.org
|
||||
|-. v .-| https://www.kernelkit.org
|
||||
'-'---'-'
|
||||
|
||||
Run the command 'cli' for interactive OAM
|
||||
|
||||
+64
@@ -28,6 +28,70 @@ admin@example:/config/ntp/> <b>set refclock-master master-stratum 10</b>
|
||||
admin@example:/config/ntp/> <b>leave</b>
|
||||
</code></pre>
|
||||
|
||||
## GPS Reference Clock
|
||||
|
||||
A GPS/GNSS receiver can be used as an NTP reference clock source,
|
||||
providing stratum 1 time derived from the GPS satellite constellation.
|
||||
This requires a GPS hardware component to be configured first, see
|
||||
[Hardware — GPS/GNSS Receivers](hardware.md#gpsgnss-receivers).
|
||||
|
||||
### Basic setup
|
||||
|
||||
Add a GPS receiver as a reference clock source:
|
||||
|
||||
<pre class="cli"><code>admin@example:/config/> <b>edit ntp</b>
|
||||
admin@example:/config/ntp/> <b>edit refclock-master source gps0</b>
|
||||
admin@example:/config/ntp/refclock-master/source/gps0/> <b>set poll 2</b>
|
||||
admin@example:/config/ntp/refclock-master/source/gps0/> <b>set precision 0.1</b>
|
||||
admin@example:/config/ntp/refclock-master/source/gps0/> <b>end</b>
|
||||
admin@example:/config/ntp/> <b>leave</b>
|
||||
</code></pre>
|
||||
|
||||
Tunable parameters:
|
||||
|
||||
| Parameter | Default | Description |
|
||||
|-------------|--------:|----------------------------------------------------|
|
||||
| `poll` | `2` | Polling interval in log2 seconds (2 = 4s) |
|
||||
| `precision` | `0.1` | Assumed precision in seconds (0.1 = 100ms) |
|
||||
| `refid` | `"GPS"`| Reference identifier (e.g., `GPS`, `GNSS`, `GLO`) |
|
||||
| `prefer` | `false` | Prefer this source over other reference clocks |
|
||||
| `pps` | `false` | Enable PPS for microsecond-level accuracy |
|
||||
| `offset` | `0.0` | Constant offset correction in seconds |
|
||||
| `delay` | `0.0` | Assumed maximum delay from the receiver |
|
||||
|
||||
### PPS (Pulse Per Second)
|
||||
|
||||
When the GPS receiver provides a PPS signal, enable the `pps` option for
|
||||
microsecond-level accuracy. With PPS, the GPS time provides the initial
|
||||
lock and the PPS edges discipline the clock:
|
||||
|
||||
<pre class="cli"><code>admin@example:/config/ntp/> <b>edit refclock-master source gps0</b>
|
||||
admin@example:/config/ntp/refclock-master/source/gps0/> <b>set pps true</b>
|
||||
admin@example:/config/ntp/refclock-master/source/gps0/> <b>set precision 0.000001</b>
|
||||
admin@example:/config/ntp/refclock-master/source/gps0/> <b>end</b>
|
||||
admin@example:/config/ntp/> <b>leave</b>
|
||||
</code></pre>
|
||||
|
||||
### Monitoring
|
||||
|
||||
The `show ntp` command shows the GPS receiver as the reference clock source:
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>show ntp</b>
|
||||
Mode : Server (GPS reference clock: gps0)
|
||||
Port : 123
|
||||
Stratum : 1
|
||||
Ref time (UTC) : Sun Feb 08 19:44:36 2026
|
||||
</code></pre>
|
||||
|
||||
Use `show ntp source` to see GPS reference clock details:
|
||||
|
||||
<pre class="cli"><code>admin@example:/> <b>show ntp source</b>
|
||||
Reference Clock : gps0 (u-blox)
|
||||
Status : selected
|
||||
Fix Mode : 3D
|
||||
Satellites : 9/17 (used/visible)
|
||||
</code></pre>
|
||||
|
||||
## Server Mode
|
||||
|
||||
Synchronize from upstream NTP servers while serving time to clients:
|
||||
|
||||
@@ -131,6 +131,66 @@ an Ethernet interface can be done as follows.
|
||||
admin@example:/config/routing/…/ospf/area/0.0.0.0/interface/e0/>
|
||||
</code></pre>
|
||||
|
||||
|
||||
### Point-to-Multipoint
|
||||
|
||||
Point-to-Multipoint (P2MP) is used when multiple OSPF routers share a
|
||||
common network segment but should form individual adjacencies rather
|
||||
than electing a Designated Router (DR). This is common in NBMA-like
|
||||
environments, DMVPN, or hub-and-spoke topologies.
|
||||
|
||||
Infix supports two P2MP variants via the `interface-type` setting:
|
||||
|
||||
| **Interface Type** | **Behavior** |
|
||||
|:----------------------|:-----------------------------------------------|
|
||||
| `hybrid` | P2MP with multicast Hellos (broadcast-capable) |
|
||||
| `point-to-multipoint` | P2MP with unicast Hellos (non-broadcast) |
|
||||
|
||||
#### Hybrid (broadcast-capable P2MP)
|
||||
|
||||
Use `hybrid` when all neighbors on the segment can receive multicast.
|
||||
Hello packets are sent to the standard OSPF multicast address (224.0.0.5)
|
||||
and neighbors are discovered automatically — no manual neighbor
|
||||
configuration is needed.
|
||||
|
||||
<pre class="cli"><code>admin@example:/config/> <b>edit routing control-plane-protocol ospfv2 name default ospf</b>
|
||||
admin@example:/config/routing/…/ospf/> <b>set area 0.0.0.0 interface e0 interface-type hybrid</b>
|
||||
admin@example:/config/routing/…/ospf/> <b>leave</b>
|
||||
admin@example:/>
|
||||
</code></pre>
|
||||
|
||||
#### Non-broadcast P2MP
|
||||
|
||||
Use `point-to-multipoint` when the network does not support multicast.
|
||||
Hello packets are sent as unicast directly to each configured neighbor.
|
||||
Since neighbors cannot be discovered automatically, they must be
|
||||
configured explicitly using static neighbors (see below).
|
||||
|
||||
<pre class="cli"><code>admin@example:/config/> <b>edit routing control-plane-protocol ospfv2 name default ospf</b>
|
||||
admin@example:/config/routing/…/ospf/> <b>set area 0.0.0.0 interface e0 interface-type point-to-multipoint</b>
|
||||
admin@example:/config/routing/…/ospf/> <b>leave</b>
|
||||
admin@example:/>
|
||||
</code></pre>
|
||||
|
||||
|
||||
### Static Neighbors
|
||||
|
||||
When using non-broadcast interface types (such as `point-to-multipoint`),
|
||||
OSPF cannot discover neighbors via multicast. Static neighbors must be
|
||||
configured so the router knows where to send unicast Hello packets.
|
||||
|
||||
<pre class="cli"><code>admin@example:/config/> <b>edit routing control-plane-protocol ospfv2 name default ospf</b>
|
||||
admin@example:/config/routing/…/ospf/> <b>set area 0.0.0.0 interface e0 static-neighbors neighbor 10.0.123.2</b>
|
||||
admin@example:/config/routing/…/ospf/> <b>set area 0.0.0.0 interface e0 static-neighbors neighbor 10.0.123.3</b>
|
||||
admin@example:/config/routing/…/ospf/> <b>leave</b>
|
||||
admin@example:/>
|
||||
</code></pre>
|
||||
|
||||
> [!NOTE]
|
||||
> Static neighbors are only needed for non-broadcast interface types.
|
||||
> With `hybrid` (or `broadcast`), neighbors are discovered automatically
|
||||
> via multicast.
|
||||
|
||||
### OSPF global settings
|
||||
|
||||
In addition to *area* and *interface* specific settings, OSPF provides
|
||||
|
||||
@@ -336,7 +336,7 @@ It should now be possible to access the switch from the PC via SSH (or NETCONF).
|
||||
admin@fe80::0053:00ff:fe06:1101%eth1's password:
|
||||
.-------.
|
||||
| . . | Infix OS — Immutable.Friendly.Secure
|
||||
|-. v .-| https://kernelkit.org
|
||||
|-. v .-| https://www.kernelkit.org
|
||||
'-'---'-'
|
||||
|
||||
Run the command 'cli' for interactive OAM
|
||||
|
||||
+1
-1
@@ -88,7 +88,7 @@ Warning: Permanently added 'fe80::ff:fe00:0%eth0' (ED25519) to the list of known
|
||||
admin@fe80::ff:fe00:0%eth0's password: *****
|
||||
.-------.
|
||||
| . . | Infix OS — Immutable.Friendly.Secure
|
||||
|-. v .-| https://kernelkit.org
|
||||
|-. v .-| https://www.kernelkit.org
|
||||
'-'---'-'
|
||||
|
||||
Run the command 'cli' for interactive OAM
|
||||
|
||||
+1
-1
@@ -152,7 +152,7 @@ infix-00-00-00 login: admin
|
||||
Password:
|
||||
.-------.
|
||||
| . . | Infix OS — Immutable.Friendly.Secure
|
||||
|-. v .-| https://kernelkit.org
|
||||
|-. v .-| https://www.kernelkit.org
|
||||
'-'---'-'
|
||||
|
||||
Run the command 'cli' for interactive OAM
|
||||
|
||||
+1
-1
@@ -170,7 +170,7 @@ example login: <b>admin</b>
|
||||
Password:
|
||||
.-------.
|
||||
| . . | Infix OS — Immutable.Friendly.Secure
|
||||
|-. v .-| https://kernelkit.org
|
||||
|-. v .-| https://www.kernelkit.org
|
||||
'-'---'-'
|
||||
|
||||
Run the command 'cli' for interactive OAM
|
||||
|
||||
+1
-1
@@ -170,6 +170,6 @@ plugins:
|
||||
|
||||
extra:
|
||||
generator: false
|
||||
homepage: https://kernelkit.org/
|
||||
homepage: https://www.kernelkit.org/
|
||||
version:
|
||||
provider: mike
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
menu "Packages"
|
||||
|
||||
comment "Hardware Support"
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/package/feature-gps/Config.in"
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/package/feature-wifi/Config.in"
|
||||
|
||||
comment "Software Packages"
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/package/bin/Config.in"
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/package/confd/Config.in"
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/package/netd/Config.in"
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/package/confd-test-mode/Config.in"
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/package/curios-httpd/Config.in"
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/package/curios-nftables/Config.in"
|
||||
@@ -31,6 +33,7 @@ source "$BR2_EXTERNAL_INFIX_PATH/package/mdns-alias/Config.in"
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/package/netbrowse/Config.in"
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/package/onieprom/Config.in"
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/package/podman/Config.in"
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/package/python-spy/Config.in"
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/package/python-libyang/Config.in"
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/package/python-yangdoc/Config.in"
|
||||
source "$BR2_EXTERNAL_INFIX_PATH/package/skeleton-init-finit/Config.in"
|
||||
|
||||
@@ -30,6 +30,11 @@ CONFD_CONF_OPTS += --enable-wifi
|
||||
else
|
||||
CONFD_CONF_OPTS += --disable-wifi
|
||||
endif
|
||||
ifeq ($(BR2_PACKAGE_FEATURE_GPS),y)
|
||||
CONFD_CONF_OPTS += --enable-gps
|
||||
else
|
||||
CONFD_CONF_OPTS += --disable-gps
|
||||
endif
|
||||
define CONFD_INSTALL_EXTRA
|
||||
for fn in confd.conf resolvconf.conf; do \
|
||||
cp $(CONFD_PKGDIR)/$$fn $(FINIT_D)/available/; \
|
||||
@@ -80,6 +85,12 @@ define CONFD_INSTALL_YANG_MODULES_WIFI
|
||||
$(BR2_EXTERNAL_INFIX_PATH)/utils/srload $(@D)/yang/wifi.inc
|
||||
endef
|
||||
endif
|
||||
ifeq ($(BR2_PACKAGE_FEATURE_GPS),y)
|
||||
define CONFD_INSTALL_YANG_MODULES_GPS
|
||||
$(COMMON_SYSREPO_ENV) \
|
||||
$(BR2_EXTERNAL_INFIX_PATH)/utils/srload $(@D)/yang/gps.inc
|
||||
endef
|
||||
endif
|
||||
|
||||
# PER_PACKAGE_DIR
|
||||
# Since the last package in the dependency chain that runs sysrepoctl is confd, we need to
|
||||
@@ -109,6 +120,7 @@ CONFD_POST_INSTALL_TARGET_HOOKS += CONFD_INSTALL_EXTRA
|
||||
CONFD_POST_INSTALL_TARGET_HOOKS += CONFD_INSTALL_YANG_MODULES
|
||||
CONFD_POST_INSTALL_TARGET_HOOKS += CONFD_INSTALL_YANG_MODULES_CONTAINERS
|
||||
CONFD_POST_INSTALL_TARGET_HOOKS += CONFD_INSTALL_YANG_MODULES_WIFI
|
||||
CONFD_POST_INSTALL_TARGET_HOOKS += CONFD_INSTALL_YANG_MODULES_GPS
|
||||
CONFD_POST_INSTALL_TARGET_HOOKS += CONFD_INSTALL_IN_ROMFS
|
||||
CONFD_TARGET_FINALIZE_HOOKS += CONFD_CLEANUP
|
||||
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
# Override udev rules for gpsd
|
||||
#
|
||||
# This file is Copyright 2010 by the GPSD project
|
||||
# SPDX-License-Identifier: BSD-2-clause
|
||||
|
||||
SUBSYSTEM!="tty", GOTO="gpsd_rules_end"
|
||||
|
||||
# Prolific Technology, Inc. PL2303 Serial Port [linux module: pl2303]
|
||||
# !!! rule disabled in Debian as it matches too many other devices
|
||||
# ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug"
|
||||
# ATEN International Co., Ltd UC-232A Serial Port [linux module: pl2303]
|
||||
ATTRS{idVendor}=="0557", ATTRS{idProduct}=="2008", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug"
|
||||
|
||||
# PS-360 OEM (GPS sold with MS Street and Trips 2005) [linux module: pl2303]
|
||||
ATTRS{idVendor}=="067b", ATTRS{idProduct}=="aaa0", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug"
|
||||
|
||||
# FTDI 8U232AM / FT232 [linux module: ftdi_sio]
|
||||
# !!! rule disabled in Debian as it matches too many other devices
|
||||
# ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug"
|
||||
|
||||
# Cypress M8/CY7C64013 (Delorme uses these) [linux module: cypress_m8]
|
||||
ATTRS{idVendor}=="1163", ATTRS{idProduct}=="0100", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug"
|
||||
|
||||
# Cypress M8/CY7C64013 (DeLorme LT-40)
|
||||
ATTRS{idVendor}=="1163", ATTRS{idProduct}=="0200", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug"
|
||||
|
||||
# Garmin International GPSmap, various models (tested with Garmin GPS 18 USB) [linux module: garmin_gps]
|
||||
ATTRS{idVendor}=="091e", ATTRS{idProduct}=="0003", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug"
|
||||
|
||||
# Cygnal Integrated Products, Inc. CP210x Composite Device (Used by Holux m241 and Wintec grays2 wbt-201) [linux module: cp210x]
|
||||
# !!! rule disabled in Debian as it matches too many other devices
|
||||
#ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug"
|
||||
|
||||
# Cygnal Integrated Products, Inc. [linux module: cp210x]
|
||||
# !!! rule disabled in Debian as it matches too many other devices
|
||||
#ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea71", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug"
|
||||
|
||||
# u-blox AG, u-blox 5 (tested with Navilock NL-402U) [linux module: cdc_acm]
|
||||
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a5", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug"
|
||||
|
||||
# u-blox AG, u-blox 6 (tested with GNSS Evaluation Kit TCXO) [linux module: cdc_acm]
|
||||
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a6", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug"
|
||||
|
||||
# u-blox AG, u-blox 7 [linux module: cdc_acm]
|
||||
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a7", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug"
|
||||
|
||||
# u-blox AG, u-blox 8 (tested with GNSS Evaluation Kit EKV-M8N) [linux module: cdc_acm]
|
||||
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a8", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug"
|
||||
|
||||
# u-blox AG, u-blox 9 (tested with GNSS Evaluation Kit C099-F9P) [linux module: cdc_acm]
|
||||
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a9", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug"
|
||||
|
||||
# MediaTek (tested with HOLUX M-1200E) [linux module: cdc_acm]
|
||||
ATTRS{idVendor}=="0e8d", ATTRS{idProduct}=="3329", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug"
|
||||
|
||||
# Telit wireless solutions (tested with HE910G) [linux module: cdc_acm]
|
||||
ATTRS{interface}=="Telit Wireless Module Port", ATTRS{bInterfaceNumber}=="06", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug"
|
||||
|
||||
# u-blox AG, u-blox 8 (tested with u-blox8 GNSS Mouse Receiver / GR-801) [linux module: cdc_acm]
|
||||
# !!! rule disabled in Debian as it matches too many other devices
|
||||
#ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug"
|
||||
|
||||
ACTION=="remove", RUN+="/usr/lib/udev/gpsd.hotplug"
|
||||
|
||||
LABEL="gpsd_rules_end"
|
||||
@@ -0,0 +1,34 @@
|
||||
config BR2_PACKAGE_FEATURE_GPS
|
||||
bool "Feature GPS/GNSS"
|
||||
select BR2_PACKAGE_GPSD
|
||||
select BR2_PACKAGE_GPSD_MAX_CLIENT
|
||||
select BR2_PACKAGE_GPSD_MAX_DEV
|
||||
select BR2_PACKAGE_GPSD_SQUELCH
|
||||
select BR2_PACKAGE_GPSD_ASHTECH
|
||||
select BR2_PACKAGE_GPSD_EARTHMATE
|
||||
select BR2_PACKAGE_GPSD_EVERMORE
|
||||
select BR2_PACKAGE_GPSD_FURY
|
||||
select BR2_PACKAGE_GPSD_FV18
|
||||
select BR2_PACKAGE_GPSD_GARMIN
|
||||
select BR2_PACKAGE_GPSD_GARMIN_SIMPLE_TXT
|
||||
select BR2_PACKAGE_GPSD_GEOSTAR
|
||||
select BR2_PACKAGE_GPSD_GPSCLOCK
|
||||
select BR2_PACKAGE_GPSD_GREIS
|
||||
select BR2_PACKAGE_GPSD_ISYNC
|
||||
select BR2_PACKAGE_GPSD_ITRAX
|
||||
select BR2_PACKAGE_GPSD_NMEA2000
|
||||
select BR2_PACKAGE_GPSD_OCEANSERVER
|
||||
select BR2_PACKAGE_GPSD_ONCORE
|
||||
select BR2_PACKAGE_GPSD_RTCM104V2
|
||||
select BR2_PACKAGE_GPSD_RTCM104V3
|
||||
select BR2_PACKAGE_GPSD_SIRF
|
||||
select BR2_PACKAGE_GPSD_SKYTRAQ
|
||||
select BR2_PACKAGE_GPSD_SUPERSTAR2
|
||||
select BR2_PACKAGE_GPSD_TRIMBLE_TSIP
|
||||
select BR2_PACKAGE_GPSD_TRIPMATE
|
||||
select BR2_PACKAGE_GPSD_TRUE_NORTH
|
||||
select BR2_PACKAGE_GPSD_UBX
|
||||
help
|
||||
Enables GPS/GNSS support in Infix. Includes gpsd with all
|
||||
receiver protocol drivers and kernel USB ACM support for
|
||||
common USB GPS receivers.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user