添加构建Allwinner H616四核2GB RAM SoC WiFi(蓝莓)

This commit is contained in:
root 2023-09-19 11:24:52 +08:00
commit c97506efcc
10383 changed files with 16797445 additions and 0 deletions

43
.editorconfig Normal file
View File

@ -0,0 +1,43 @@
# EditorConfig is awesome: http://EditorConfig.org
# top-most EditorConfig file
root = true
[*]
charset = utf-8
end_of_line = lf
indent_style = tab
indent_size = 8
trim_trailing_whitespace = true
insert_final_newline = true
[*.patch]
trim_trailing_whitespace = false
[*.md]
indent_style = space
indent_size = 4
insert_final_newline = false
[*.json]
indent_style = space
indent_size = 4
# Custom Armbian formatting for bash sources and configuration
[*.{sh,inc,conf,eos,wip,tvb,csc}]
indent_size = 4
shell_variant = bash
binary_next_line = false
switch_case_indent = true
space_redirects = true
keep_padding = false
function_next_line = false
[*.{yaml,yml}]
indent_style = space
indent_size = 2
insert_final_newline = false
[*.py]
indent_size = 4
max_line_length = 150

186
.github/CODEOWNERS vendored Normal file
View File

@ -0,0 +1,186 @@
# PLEASE DON'T EDIT THIS FILE
# Auto generated by ".github/generate_CODEOWNERS.sh"
# Default code owner
* @igorpecovnik
# the last matching pattern takes the most
*.md @EvilOlaf @littlecxm @TheLinuxBug @TRSx80 @igorpecovnik
.github/ @igorpecovnik @rpardini @hzyitc
lib/ @armbian/build-scripts
packages/ @armbian/build-scripts
packages/bsp/jethub/ @armbian/build-scripts @adeepn
tools/ @iav @neheb @hzyitc @mhoffrog
# The following contents are generated by board configs
config/boards/aml-s9xx-box.tvb @SteeManMI
config/boards/bananapi.csc @DylanHP
config/boards/bananapicm4io.conf @pyavitz
config/boards/bananapim2s.conf @jeanrhum @pyavitz
config/boards/bananapim3.conf @AaronNGray
config/boards/bananapim5.conf @bretmlw
config/boards/bananapim64.conf @devdotnetorg
config/boards/bananapipro.conf @teknoid
config/boards/bigtreetech-cb1.conf @bigtreetech
config/boards/clearfogpro.conf @Heisath
config/boards/espressobin.conf @ManoftheSea
config/boards/firefly-rk3399.conf @150balbes
config/boards/fxblox-rk1.wip @mahdichi
config/boards/helios4.conf @Heisath
config/boards/indiedroid-nova.csc @lanefu
config/boards/jethubj100.conf @adeepn
config/boards/jethubj80.conf @adeepn
config/boards/jetson-nano.conf @150balbes
config/boards/khadas-edge2.conf @igorpecovnik
config/boards/khadas-vim1.conf @igorpecovnik
config/boards/khadas-vim1s.wip @rpardini @viraniac
config/boards/khadas-vim2.conf @igorpecovnik
config/boards/khadas-vim3.conf @NicoD-SBC @rpardini
config/boards/khadas-vim3l.conf @rpardini
config/boards/khadas-vim4.wip @rpardini
config/boards/lafrite.conf @Tonymac32
config/boards/lepotato.conf @Tonymac32
config/boards/licheepi-4a.wip @chainsx
config/boards/mangopi-mq.wip @Zinput
config/boards/mekotronics-r58-minipc.wip @monkaBlyat
config/boards/mekotronics-r58x-4g.wip @monkaBlyat
config/boards/mekotronics-r58x.wip @monkaBlyat
config/boards/mixtile-blade3.wip @rpardini
config/boards/nanopct6.wip @Tonymac32
config/boards/nanopi-r4s.conf @Manouchehri
config/boards/nanopi-r6s.conf @efectn
config/boards/nanopiduo.conf @sgjava
config/boards/nanopiduo2.conf @viraniac
config/boards/nanopineoplus2.conf @teknoid
config/boards/odroidc2.conf @teknoid
config/boards/odroidm1.wip @rpardini
config/boards/odroidxu4.conf @joekhoobyar
config/boards/olimex-teres-a64.conf @Kreyren
config/boards/onecloud.conf @hzyitc
config/boards/orangepi-r1.conf @schwar3kat
config/boards/orangepi-r1plus-lts.conf @schwar3kat
config/boards/orangepi4-lts.conf @paolosabatino
config/boards/orangepi4.conf @paolosabatino
config/boards/orangepi5-plus.conf @efectn
config/boards/orangepi5.conf @efectn
config/boards/orangepione.conf @StephenGraf
config/boards/orangepipc.conf @lbmendes
config/boards/orangepiprime.conf @viraniac
config/boards/orangepizero2.conf @AGM1968 @krachlatte
config/boards/orangepizeroplus.conf @schwar3kat
config/boards/pine64.conf @PanderMusubi @joshaspinall
config/boards/pine64so.conf @joshaspinall
config/boards/pinebook-pro.conf @TRSx80 @ahoneybun
config/boards/qemu-uboot-arm64.wip @rpardini
config/boards/qemu-uboot-x86.wip @rpardini
config/boards/radxa-e25.wip @krachlatte
config/boards/radxa-zero.conf @clee @engineer-80
config/boards/radxa-zero2.wip @monkaBlyat
config/boards/recore.csc @eliasbakken
config/boards/renegade.conf @Tonymac32
config/boards/rock-3a.conf @ZazaBR @amazingfate @catalinii @vamzii
config/boards/rock-5a.wip @amazingfate
config/boards/rock-5b.conf @amazingfate @linhz0hz
config/boards/rock64.conf @clee
config/boards/rockpi-4a.conf @clee
config/boards/rockpi-e.conf @krachlatte
config/boards/rockpi-s.conf @brentr
config/boards/rockpro64.conf @joekhoobyar
config/boards/rpi4b.conf @PanderMusubi @teknoid
config/boards/sk-am62b.conf @glneo
config/boards/sk-am64b.conf @glneo
config/boards/station-m1.conf @150balbes
config/boards/station-m2.conf @150balbes
config/boards/station-m3.conf @150balbes
config/boards/station-p1.conf @150balbes
config/boards/station-p2.conf @150balbes
config/boards/thinkpad-x13s.wip @rpardini
config/boards/tinkerboard.conf @paolosabatino
config/boards/tritium-h3.conf @Tonymac32
config/boards/tritium-h5.conf @Tonymac32
config/boards/uefi-arm64.conf @rpardini
config/boards/uefi-x86.conf @rpardini
config/kernel/linux-arm64-*.config @rpardini
config/kernel/linux-bcm2711-*.config @PanderMusubi @teknoid
config/kernel/linux-d1-*.config @Zinput
config/kernel/linux-k3-*.config @glneo
config/kernel/linux-media-*.config @150balbes
config/kernel/linux-meson-*.config @hzyitc
config/kernel/linux-meson-s4t7-*.config @rpardini @viraniac
config/kernel/linux-meson64-*.config @NicoD-SBC @SteeManMI @Tonymac32 @adeepn @bretmlw @clee @engineer-80 @igorpecovnik @jeanrhum @monkaBlyat @pyavitz @rpardini @teknoid
config/kernel/linux-mvebu-*.config @Heisath
config/kernel/linux-mvebu64-*.config @ManoftheSea
config/kernel/linux-odroidxu4-*.config @joekhoobyar
config/kernel/linux-rk3568-odroid-*.config @rpardini
config/kernel/linux-rk35xx-*.config @Tonymac32 @ZazaBR @amazingfate @catalinii @efectn @igorpecovnik @krachlatte @lanefu @linhz0hz @mahdichi @monkaBlyat @rpardini @vamzii
config/kernel/linux-rockchip-*.config @paolosabatino
config/kernel/linux-rockchip-rk3588-*.config @Tonymac32 @amazingfate @efectn @lanefu @linhz0hz
config/kernel/linux-rockchip64-*.config @Manouchehri @TRSx80 @Tonymac32 @ZazaBR @ahoneybun @amazingfate @brentr @catalinii @clee @joekhoobyar @krachlatte @paolosabatino @schwar3kat @vamzii
config/kernel/linux-rockpis-*.config @brentr
config/kernel/linux-sun50iw9-*.config @AGM1968 @krachlatte
config/kernel/linux-sun50iw9-btt-*.config @bigtreetech
config/kernel/linux-sunxi-*.config @AaronNGray @DylanHP @StephenGraf @Tonymac32 @lbmendes @schwar3kat @sgjava @teknoid @viraniac
config/kernel/linux-sunxi64-*.config @AGM1968 @Kreyren @PanderMusubi @Tonymac32 @bigtreetech @devdotnetorg @eliasbakken @joshaspinall @krachlatte @schwar3kat @teknoid @viraniac
config/kernel/linux-thead-*.config @chainsx
config/kernel/linux-uefi-arm64-*.config @rpardini
config/kernel/linux-uefi-x86-*.config @rpardini
patch/kernel/NEED-*/ @bigtreetech
patch/kernel/archive/bcm2711-*/ @PanderMusubi @teknoid
patch/kernel/archive/meson-*/ @hzyitc
patch/kernel/archive/meson-s4t7-*/ @rpardini @viraniac
patch/kernel/archive/meson64-*/ @NicoD-SBC @SteeManMI @Tonymac32 @adeepn @bretmlw @clee @engineer-80 @igorpecovnik @jeanrhum @monkaBlyat @pyavitz @rpardini @teknoid
patch/kernel/archive/mvebu-*/ @Heisath
patch/kernel/archive/odroidxu4-*/ @joekhoobyar
patch/kernel/archive/rk3568-odroid-*/ @rpardini
patch/kernel/archive/rk35xx-*/ @Tonymac32 @ZazaBR @amazingfate @catalinii @efectn @igorpecovnik @krachlatte @lanefu @linhz0hz @mahdichi @monkaBlyat @rpardini @vamzii
patch/kernel/archive/rockchip-*/ @paolosabatino
patch/kernel/archive/rockchip64-*/ @Manouchehri @TRSx80 @Tonymac32 @ZazaBR @ahoneybun @amazingfate @brentr @catalinii @clee @joekhoobyar @krachlatte @paolosabatino @schwar3kat @vamzii
patch/kernel/archive/rockpis-*/ @brentr
patch/kernel/archive/sun50iw9-*/ @AGM1968 @krachlatte
patch/kernel/archive/sunxi-*/ @AGM1968 @AaronNGray @DylanHP @Kreyren @PanderMusubi @StephenGraf @Tonymac32 @bigtreetech @devdotnetorg @eliasbakken @joshaspinall @krachlatte @lbmendes @schwar3kat @sgjava @teknoid @viraniac
patch/kernel/archive/uefi-arm64-*/ @rpardini
patch/kernel/arm64-*/ @rpardini
patch/kernel/bcm2711-*/ @PanderMusubi @teknoid
patch/kernel/d1-*/ @Zinput
patch/kernel/k3-*/ @glneo
patch/kernel/media-*/ @150balbes
patch/kernel/meson-*/ @hzyitc
patch/kernel/meson64-*/ @NicoD-SBC @SteeManMI @Tonymac32 @adeepn @bretmlw @clee @engineer-80 @igorpecovnik @jeanrhum @monkaBlyat @pyavitz @rpardini @teknoid
patch/kernel/mvebu-*/ @Heisath
patch/kernel/mvebu64-*/ @ManoftheSea
patch/kernel/odroidxu4-*/ @joekhoobyar
patch/kernel/rk35xx-*/ @Tonymac32 @ZazaBR @amazingfate @catalinii @efectn @igorpecovnik @krachlatte @lanefu @linhz0hz @mahdichi @monkaBlyat @rpardini @vamzii
patch/kernel/rockchip-*/ @paolosabatino
patch/kernel/rockchip-rk3588-*/ @Tonymac32 @amazingfate @efectn @lanefu @linhz0hz
patch/kernel/rockchip64-*/ @Manouchehri @TRSx80 @Tonymac32 @ZazaBR @ahoneybun @amazingfate @brentr @catalinii @clee @joekhoobyar @krachlatte @paolosabatino @schwar3kat @vamzii
patch/kernel/rockpis-*/ @brentr
patch/kernel/sun50iw9-*/ @AGM1968 @krachlatte
patch/kernel/thead-*/ @chainsx
patch/kernel/uefi-arm64-*/ @rpardini
patch/kernel/uefi-x86-*/ @rpardini
sources/families/arm64.conf @rpardini
sources/families/bcm2711.conf @PanderMusubi @teknoid
sources/families/d1.conf @Zinput
sources/families/k3.conf @glneo
sources/families/media.conf @150balbes
sources/families/meson-s4t7.conf @rpardini @viraniac
sources/families/meson.conf @hzyitc
sources/families/meson64.conf @NicoD-SBC @SteeManMI @Tonymac32 @adeepn @bretmlw @clee @engineer-80 @igorpecovnik @jeanrhum @monkaBlyat @pyavitz @rpardini @teknoid
sources/families/mvebu.conf @Heisath
sources/families/mvebu64.conf @ManoftheSea
sources/families/odroidxu4.conf @joekhoobyar
sources/families/rk3568-odroid.conf @rpardini
sources/families/rk35xx.conf @Tonymac32 @ZazaBR @amazingfate @catalinii @efectn @igorpecovnik @krachlatte @lanefu @linhz0hz @mahdichi @monkaBlyat @rpardini @vamzii
sources/families/rockchip-rk3588.conf @Tonymac32 @amazingfate @efectn @lanefu @linhz0hz
sources/families/rockchip.conf @paolosabatino
sources/families/rockchip64.conf @Manouchehri @TRSx80 @Tonymac32 @ZazaBR @ahoneybun @amazingfate @brentr @catalinii @clee @joekhoobyar @krachlatte @paolosabatino @schwar3kat @vamzii
sources/families/rockpis.conf @brentr
sources/families/sun50iw9-btt.conf @bigtreetech
sources/families/sun50iw9.conf @AGM1968 @krachlatte
sources/families/sunxi.conf @AaronNGray @DylanHP @StephenGraf @Tonymac32 @lbmendes @schwar3kat @sgjava @teknoid @viraniac
sources/families/sunxi64.conf @AGM1968 @Kreyren @PanderMusubi @Tonymac32 @bigtreetech @devdotnetorg @eliasbakken @joshaspinall @krachlatte @schwar3kat @teknoid @viraniac
sources/families/thead.conf @chainsx
sources/families/x86.conf @rpardini

16
.github/CODE_OF_CONDUCT.md vendored Normal file
View File

@ -0,0 +1,16 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of experience,
education, socio-economic status, nationality, personal appearance, race,
religion, or sexual identity and orientation.
## Our Standards
* Don't shit on people's work
* Listen (with your eyes since its code)

75
.github/ISSUE_TEMPLATE/bugreport.yml vendored Normal file
View File

@ -0,0 +1,75 @@
name: Armbian Linux Build Framework Bug Report
description: Create a bug report if there is something wrong with build framework mechanism.
title: "Problem found ... "
labels: ["bug"]
assignees: "armbian/build-scripts"
body:
- type: markdown
attributes:
value: |
Thank you for helping us make Armbian better!
- type: textarea
id: what-happened
attributes:
label: What happened?
description: "
<br>
Tell us, what did you expect to happen?
"
placeholder: Tell us what you see!
value: "A bug happened!"
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: How to reproduce?
description: "
<br>
Provide command line or explain steps which you did?
"
placeholder: Tell us how you did it!
value: "Command you gave to the framework!"
validations:
required: true
- type: dropdown
id: version
attributes:
label: Branch
description: "
<br>
Which branch are you using?
"
options:
- main (main development branch)
- other
validations:
required: true
- type: dropdown
id: host
attributes:
label: On which host OS are you observing this problem?
multiple: false
options:
- Jammy
- Bullseye
- Other
validations:
required: true
- type: input
id: logs
attributes:
label: Relevant log URL
description: |
Run with `SHARE_LOG=yes`, at the end of log you will get something like this
```[🌿] Log uploaded, share URL: [ https://paste.armbian.com/xxx ]```
Paste the URL on here.
placeholder: https://paste.armbian.com/xxx
- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/armbian/build/blob/master/.github/CODE_OF_CONDUCT.md)
options:
- label: I agree to follow this project's Code of Conduct
required: true

20
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1,20 @@
blank_issues_enabled: false
contact_links:
- name: Armbian OS Bug Report
url: https://www.armbian.com/bugs/
about: Use our bug reporting wizzard to file your bug in the correct place
- name: Armbian OS Feature Requests
url: https://forum.armbian.com/forum/38-feature-requests/
about: Feature requests and enhancement ideas. A request does not guarantee consideration.
- name: Armbian Linux kernel related bug report
url: https://www.armbian.com/bugs/
about: For changes to the kernel code made by Armbian
- name: Vanilla Linux kernel related bug report
url: https://bugzilla.kernel.org/
about: If you are using upstream Linux kernel
- name: Issue with armbian-config
url: https://github.com/armbian/config/issues/new
about: Utility for configuring your board, adjusting services and installing applications.
- name: Issue with infrastructure
url: https://github.com/armbian/mirror/issues/new
about: Broken download links or just slow download

28
.github/ISSUE_TEMPLATE/feature.yml vendored Normal file
View File

@ -0,0 +1,28 @@
name: Armbian Linux Build Framework Feature request
description: Suggest a feature that you want to see implemented
title: "I would like to ..."
labels: ["feature"]
assignees: "igorpecovnik"
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out a feature reqest. A request does not guarantee consideration.
- type: textarea
id: what
attributes:
label: Which feature would you like to have?
description: "<br>What do you miss?<br>"
placeholder: Tell us what is missing!
value: "I think ..."
validations:
required: true
- type: checkboxes
id: financing
attributes:
label: Funding
description: "
You are welcome to submit your feature request, but keep in mind we can only afford to cover minor tasks. If we decide to.<br>"
options:
- label: "[I am willing to cover expenses](https://www.armbian.com/contact/)"
required: false

21
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,21 @@
# Description
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
Jira reference number [AR-9999]
# How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Please also note any relevant details for your test configuration.
- [ ] Test A
- [ ] Test B
# Checklist:
- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] Any dependent changes have been merged and published in downstream modules

BIN
.github/README.gif vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

8
.github/Releases-wip.md vendored Normal file
View File

@ -0,0 +1,8 @@
<p align='center'>
<a href='https://www.armbian.com'>
<img src='https://raw.githubusercontent.com/armbian/.github/master/profile/tux-two.png' width='400' height='226' alt='Armbian Linux'></a>
<br>
<img src=https://raw.githubusercontent.com/armbian/.github/master/profile/progress.gif width=50>
<br><br>
<a href="https://github.com/armbian/build/actions">Build in progress</a></p>
</p>

20
.github/Releases.md vendored Normal file
View File

@ -0,0 +1,20 @@
<p align='center'>
<a href='https://www.armbian.com'>
<img src='https://raw.githubusercontent.com/armbian/.github/master/profile/tux-two.png' width='400' height='226' alt='Armbian Linux'></a>
<br>
- Images below are built on every Linux kernel code, config or patches changes,
- We provide here only a small selection of images that are currently interested for developers,
- If you want to enable more build targets in this list, edit <a href="https://github.com/armbian/build/blob/master/config/targets-cli-beta.conf">CLI</a> or <a href="https://github.com/armbian/build/blob/master/config/targets-desktop-beta.conf">desktop</a> build config files.</p>
<br>
If you don't find what you are looking for, check those images:
<p>
- <a href=https://www.armbian.com/download/ target=_blanks>officially supported</a> (known support status and suitable for production deployments),
- <a href=https://github.com/armbian/community/>community supported</a> (unknown support status),
- <a href=https://archive.armbian.com target=_blank>archived</a> (old builds with unknown support status),
<br>
&nbsp;
</p>

BIN
.github/armbian-logo.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

6
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"

96
.github/generate_CODEOWNERS.sh vendored Executable file
View File

@ -0,0 +1,96 @@
#!/bin/bash
SRC="$(realpath "${BASH_SOURCE%/*}/../")"
# Dummy function for successful source
function display_alert() {
:
}
function enable_extension() {
:
}
# $1: board config
function generate_for_board() {
local board_config="$1"
(
source "${SRC}/config/boards/${board_config}"
LINUXFAMILY="${BOARDFAMILY}"
[[ -n "${BOARD_MAINTAINER}" ]] || return
maintainers="$(echo "${BOARD_MAINTAINER}" | xargs -n1 | sed -E 's|^.+$|@\0|' | tr '\n' ' ')"
while read -r BRANCH; do
(
source "${SRC}/config/sources/families/${LINUXFAMILY}.conf"
source "${SRC}/config/sources/common.conf"
source "${SRC}/config/sources/${ARCH}.conf"
[[ -z $LINUXCONFIG ]] && LINUXCONFIG="linux-${LINUXFAMILY}-${BRANCH}"
[[ -z $KERNELPATCHDIR ]] && KERNELPATCHDIR="$LINUXFAMILY-$BRANCH"
cat <<-EOF
config/boards/${board_config} ${maintainers}
config/kernel/${LINUXCONFIG%-*}-*.config ${maintainers}
sources/families/${LINUXFAMILY}.conf ${maintainers}
patch/kernel/${KERNELPATCHDIR%-*}-*/ ${maintainers}
EOF
local patch_archive="$(readlink "patch/kernel/${KERNELPATCHDIR}" || true)"
if [[ -n "${patch_archive}" ]]; then
patch_archive="${patch_archive%/}"
echo "patch/kernel/${patch_archive%-*}-*/ ${maintainers}"
fi
)
done < <(echo "${KERNEL_TARGET}" | tr ',' '\n')
)
}
function generate_for_all_board() {
local board_config
while read -r board_config; do
local type="${board_config##*.}"
[[ "conf wip csc eos tvb" == *"${type}"* ]] || continue
generate_for_board "${board_config}"
done < <(ls "${SRC}/config/boards/")
}
function merge() {
local line
declare -A codeowners
while read -r line; do
local file="$(echo "${line}" | tr -s '[:space:]' ' ' | cut -d' ' -f1)"
local maintainers="$(echo "${line}" | tr -s '[:space:]' ' ' | cut -d' ' -f2-)"
codeowners["$file"]+=" ${maintainers}"
done
local file
while read -r file; do
declare -a maintainers
readarray -t maintainers < <(echo "${codeowners["$file"]}" | xargs -n1 | sort -u)
echo "${file} ${maintainers[*]}"
done < <(printf "%s\n" "${!codeowners[@]}" | sort)
}
cat <<-EOF >"${SRC}/.github/CODEOWNERS"
# PLEASE DON'T EDIT THIS FILE
# Auto generated by ".github/generate_CODEOWNERS.sh"
# Default code owner
* @igorpecovnik
# the last matching pattern takes the most
*.md @EvilOlaf @littlecxm @TheLinuxBug @TRSx80 @igorpecovnik
.github/ @igorpecovnik @rpardini @hzyitc
lib/ @armbian/build-scripts
packages/ @armbian/build-scripts
packages/bsp/jethub/ @armbian/build-scripts @adeepn
tools/ @iav @neheb @hzyitc @mhoffrog
# The following contents are generated by board configs
$(generate_for_all_board | merge)
EOF

36
.github/labeler.yml vendored Normal file
View File

@ -0,0 +1,36 @@
# This configures label matching for PR's.
#
# The keys are labels, and the values are lists of minimatch patterns
# to which those labels apply.
#
# NOTE: This can only add labels, not remove them.
# NOTE: Due to YAML syntax limitations, patterns or labels which start
# with a character that is part of the standard YAML syntax must be
# quoted.
#
# Please keep the labels sorted and deduplicated.
"Hardware :gear:":
- patch/u-boot/*
- patch/u-boot/**/*
- patch/atf/*
- config/bootenv/*
- config/bootscripts/*
- patch/kernel/*
- patch/kernel/**/*
- patch/misc/*
- config/kernel/*
- config/sources/*
- config/sources/**/*
- config/boards/*
- config/bootscripts/*
- config/bootenv/*
"Software :chains:":
- lib/*
- tools/*
- config/cli/*
- .github/workflows/*
"Desktop :desktop_computer:":
- config/desktop/*

63
.github/workflows/README.md vendored Normal file
View File

@ -0,0 +1,63 @@
# Runners requirements
- big (6-16 cores, 64Gb SSD, 16Gb memory, 2Gb swap)
- small (4 cores, 64Gb SSD, 8Gb memory, 2Gb swap)
## Preparation
Adding x86 runner to your Jammy VM (check [here](https://docs.github.com/en/actions/hosting-your-own-runners/adding-self-hosted-runners) if any changes):
$ mkdir actions-runner
$ cd actions-runner
$ curl -o actions-runner-linux-x64-2.294.0.tar.gz -L https://github.com/actions/runner/releases/download/v2.294.0/actions-runner-linux-x64-2.294.0.tar.gz
$ tar xzf ./actions-runner-linux-x64-2.294.0.tar.gz
## Configuration
Once asked, tag your runner accordingly:
- small
- big
- arm64
Start the configuration experience
$ ./config.sh --url https://github.com/armbian --token XXXXXXXXXXXXXXXXXXXXXXXXXXX
You need to get a valid token from our DevOps team to proceed.
## Create startup scripts
sudo ./svc.sh install # install
sudo ./svc.sh start # start
sudo ./svc.sh status # check
## Use workflows in forked repositories
`forked-helper.yml` workflow helper can help to run custom workflows on the forked repositories.
1. Set `ARMBIAN_SELF_DISPATCH_TOKEN` secret on your repository with `security_events` permissions.
2. Helper will dispatch `repository_dispatch` event `armbian` on `push`, `release`, `deployment`,
`pull_request` and `workflow_dispatch` events. All needed event details you can find in `client_payload`
property of the event.
4. Create empty default branch in forked repository
5. Create workflow with `repository_dispatch` in default branch.
6. Run any need actions in this workflow.
Workflow example:
```yaml
name: Test Armbian dispatch
on:
repository_dispatch:
types: ["armbian"]
jobs:
show-dispatch:
name: Show dispatch event details
runs-on: ubuntu-latest
steps:
- uses: hmarr/debug-action@v2
```

20
.github/workflows/build-board-list.yml vendored Normal file
View File

@ -0,0 +1,20 @@
name: Rebuild board list in GHA menu
on:
push:
paths:
- 'config/boards/*.*'
branches: [ main ]
jobs:
Run:
name: "Execute workflow"
if: ${{ github.repository_owner == 'Armbian' }}
runs-on: ubuntu-latest
steps:
- name: Repository Dispatch
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ secrets.ACCESS_TOKEN }}
repository: armbian/os
event-type: "Refresh board list"

21
.github/workflows/build-train.yml vendored Normal file
View File

@ -0,0 +1,21 @@
name: Run build train on config changes
on:
push:
branches:
- 'main'
paths:
- 'config/*.config'
jobs:
Run:
name: "Execute workflow"
if: ${{ github.repository_owner == 'Armbian' }}
runs-on: ubuntu-latest
steps:
- name: Repository Dispatch
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ secrets.ACCESS_TOKEN }}
repository: armbian/os
event-type: "Repository update"

42
.github/workflows/forked-helper.yml vendored Normal file
View File

@ -0,0 +1,42 @@
name: Forked Helper
on:
push:
release:
deployment:
pull_request:
workflow_dispatch:
jobs:
fork-repository-dispatch:
name: 📢 Run repository dispatch to default fork branch
if: ${{ github.repository_owner != 'armbian' }}
runs-on: ubuntu-latest
steps:
- name: Assign secret
id: get_dispatch_secret
run: echo '::set-output name=dispatch_secret::${{ secrets.ARMBIAN_SELF_DISPATCH_TOKEN }}'
- name: Get event details
id: get_event_details
# Process JSON according https://github.community/t5/GitHub-Actions/set-output-Truncates-Multiline-Strings/td-p/37870
run: |
JSON=$(cat ${{ github.event_path }})
JSON="${JSON//'%'/'%25'}"
JSON="${JSON//$'\n'/'%0A'}"
JSON="${JSON//$'\r'/'%0D'}"
echo "::set-output name=event_details::${JSON}"
- name: Dispatch event on forked repostitory
if: steps.get_dispatch_secret.outputs.dispatch_secret
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ steps.get_dispatch_secret.outputs.dispatch_secret }}
repository: ${{ github.repository }}
event-type: armbian
client-payload: >
{
"event": "${{ github.event_name }}",
"ref": "${{ github.ref }}",
"base_ref": "${{ github.base_ref }}",
"sha": "${{ github.sha }}",
"event_details": ${{ steps.get_event_details.outputs.event_details }}
}

View File

@ -0,0 +1,48 @@
name: Kernel hardening analysis
#
# Check the Linux kernel options against security hardening
#
# Attention! Changing security parameters may also affect system performance and functionality of userspace software!
# More info:
# https://github.com/a13xp0p0v/kconfig-hardened-check/blob/master/README.md
on:
workflow_dispatch:
pull_request:
types: [ready_for_review, opened, reopened, synchronize]
permissions:
contents: read
jobs:
Analysis:
name: Analyse
runs-on: ubuntu-latest
if: ${{ github.repository_owner == 'Armbian' }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v39
- name: Checkout repository
uses: actions/checkout@v4
with:
repository: a13xp0p0v/kconfig-hardened-check
path: kconfig-hardened-check
- name: Check kernel config for security issues
run: |
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
if [[ "${file}" = config/kernel/*.config ]]; then
kconfig-hardened-check/bin/kconfig-hardened-check -m show_fail -c $file | sed -e 's/^/ /' >> $GITHUB_STEP_SUMMARY
fi
done

17
.github/workflows/labeler.yml vendored Normal file
View File

@ -0,0 +1,17 @@
name: "Automatic Labeler"
on:
- pull_request_target
permissions:
contents: read
jobs:
triage:
permissions:
contents: read # for actions/labeler to determine modified files
pull-requests: write # for actions/labeler to add labels to PRs
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v4
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"

56
.github/workflows/lint-scripts-pr.yml vendored Normal file
View File

@ -0,0 +1,56 @@
name: Lint On Scripts
#
# Run ShellCheck on all scripts and generates report as build artefact
#
on:
workflow_dispatch:
pull_request:
types: [opened, reopened, edited, synchronize]
permissions:
contents: read
jobs:
Shellcheck:
name: Shell script analysis
runs-on: ubuntu-latest
if: ${{ github.repository_owner == 'Armbian' }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v39
- name: List all changed files
run: |
# use framework internal mechanism for checking `lib` and `extensions` code only one file is passed,
# and source's are followed, thus the whole project is "understood" by shellcheck.
# For example, when checking individual files, one variable might be thought "unused" because it
# is only used in another file, which does not happen when done properly.
bash lib/tools/shellcheck.sh
ret=0
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
if [[ ! "${file}" =~ lib/|extensions/|.py|.service|.rules|.network|.netdev ]]; then
if grep -qE "^#\!/.*bash" $file; then
shellcheck --severity=error $file || ret=$?
fi
fi
done
exit $ret

19
.github/workflows/open-jira-ticket.yml vendored Normal file
View File

@ -0,0 +1,19 @@
name: Jira Sync
on:
issues:
types: [opened]
jobs:
sync:
name: Sync Items
runs-on: ubuntu-latest
steps:
- name: Sync
uses: igorpecovnik/github-action-issue-to-jira@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
jiraHost: armbian.atlassian.net
jiraUsername: ${{ secrets.JIRA_USER }}
jiraPassword: ${{ secrets.JIRA_PASSWORD }}
project: AR
assignee: default_assignee

29
.github/workflows/rebase.yml vendored Normal file
View File

@ -0,0 +1,29 @@
name: Automatic Rebase
#
# If you comment "/rebase" to the PR this action rebase the PR
#
on:
issue_comment:
types: [created]
jobs:
rebase:
permissions:
contents: write # for cirrus-actions/rebase to push code to rebase
pull-requests: read # for cirrus-actions/rebase to get info about PR
name: Rebase
if: github.event.issue.pull_request != '' && contains(github.event.comment.body, '/rebase')
runs-on: ubuntu-latest
steps:
- name: Checkout the latest code
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0 # otherwise, you will fail to push refs to dest repo
- name: Automatic Rebase
uses: cirrus-actions/rebase@1.8
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

64
.github/workflows/scorecard.yml vendored Normal file
View File

@ -0,0 +1,64 @@
name: Scorecards Security Scan
on:
# Only the default branch is supported.
branch_protection_rule:
schedule:
# Weekly on Saturdays.
- cron: '30 1 * * 6'
push:
branches: [ main ]
# Declare default permissions as read only.
permissions: read-all
jobs:
analysis:
if: ${{ github.repository_owner == 'Armbian' }}
name: Scorecards analysis
runs-on: ubuntu-latest
permissions:
# Needed to upload the results to code-scanning dashboard.
security-events: write
# Used to receive a badge. (Upcoming feature)
id-token: write
actions: read
contents: read
steps:
- name: "Checkout code"
uses: actions/checkout@v4
with:
persist-credentials: false
- name: "Run analysis"
uses: ossf/scorecard-action@v2.2.0
with:
results_file: results.sarif
results_format: sarif
# (Optional) Read-only PAT token. Uncomment the `repo_token` line below if:
# - you want to enable the Branch-Protection check on a *public* repository, or
# - you are installing Scorecards on a *private* repository
# To create the PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-pat.
repo_token: ${{ secrets.SCORECARD_READ_TOKEN }}
# Publish the results for public repositories to enable scorecard badges. For more details, see
# https://github.com/ossf/scorecard-action#publishing-results.
# For private repositories, `publish_results` will automatically be set to `false`, regardless
# of the value entered here.
publish_results: true
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
# format to the repository Actions tab.
- name: "Upload artifact"
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
with:
name: SARIF file
path: results.sarif
retention-days: 5
# Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@v2
#5f532563584d71fdef14ee64d17bafb34f751ce5 # v1.0.26
with:
sarif_file: results.sarif

32
.gitignore vendored Normal file
View File

@ -0,0 +1,32 @@
### Specific to building Armbian ###
/.vagrant/
ubuntu-*-cloudimg-console.log
### to ignore changes in a working copy
.ignore_changes
### compile configurations added by users
/config-*.conf
### but not default (supplied) files
!/config-docker.conf
!/config-vagrant.conf
### output directories
/.tmp/
/output/
/cache/
/*userpatches*/
/userpatches
### General annoyances ###
.DS_Store
*~
*.swp
/__pycache__/*
# Mainly generated by merge tools like 'meld'
*.orig
# Dockerfile and .dockerignore is generated by docker.sh
Dockerfile
.dockerignore

6
.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,6 @@
{
"recommendations": [
"editorconfig.editorconfig",
"foxundermoon.shell-format"
]
}

5
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,5 @@
{
"[*.inc]": {
"editor.defaultFormatter": "foxundermoon.shell-format"
}
}

141
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,141 @@
# Contributing to Armbian Linux build framework
We would love to have you join the Armbian community! Below summarizes the processes that we follow.
## Reporting issues
Before [reporting an issue](https://github.com/armbian/build/issues/new/choose), check our [backlog of open issues](https://github.com/armbian/build/issues) and [pull requests](https://github.com/armbian/build/pulls) to see if someone else has already reported or working on it. If an issues is already open, feel free to add your scenario, or additional information, to the discussion. Or simply "subscribe" to it to be notified when it is updated.
If you find a new issue with the project please let us hear about it! The most important aspect of a bug report is that it includes enough information for us to reproduce it. So, please include as much detail as possible and try to remove the extra stuff that does not really relate to the issue itself. The easier it is for us to reproduce it, the faster it will be fixed!
Please do not include any private/sensitive information in your issue! We are not responsible for your privacy, this is open source software.
## Working on issues
Once you have decided to contribute to Armbian by working on an issue, check our backlog of open (or [JIRA](https://armbian.atlassian.net/jira/dashboards/10000) issues open by the team) looking for any that do not have an "In Progress" label attached to it. Often issues will be assigned to someone, to be worked on at a later time. If you have the time to work on the issue now add yourself as an assignee, and set the "In Progress" label if you are a member of the “Containers” GitHub organization. If you can not set the label, just add a quick comment in the issue asking that the “In Progress” label be set and a member will do so for you.
Please be sure to review the [Development Code Review Procedures and Guidelines](https://docs.armbian.com/Development-Code_Review_Procedures_and_Guidelines/) as well before you begin.
## Contributing
This section describes how to start contributing to Armbian.
### Prepare your environment
* Create an Ubuntu 22.04 VM with VirtualBox or any other suitable hypervisor.
* Install [Github CLI tool](https://github.com/cli/cli/blob/trunk/docs/install_linux.md)
* Configure git:
```bash
git config --global user.email "your@email.com"
git config --global user.name "Your Name"
```
* Generate GPG key
```bash
gpg --generate-key
```
* Generate Github login [token](https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/creating-a-personal-access-token)
* Login to Github (you only have to do the steps above once)
```bash
gh auth login --with-token <<< 'your_token'
```
### Fork and clone Armbian
* Fork armbian/build, clone and add remote
```bash
gh repo fork armbian/build --clone=true --remote=true
```
* Create branch
```bash
cd build
git checkout -b your_branch_name # change branch name for your patch
```
### Generate new patch template
* Compile Armbian (this use case is to change something in the device tree and test the built image)
```bash
./compile.sh CREATE_PATCHES="yes"
```
* Full OS image for flashing
* Do not change the kernel configuration
* Choose a board
* Choose a kernel
* Choose a release package base
* Choose image type
* Configuring apt-cacher-ng
* Wait for prompt to make u-boot changes (press Enter after making changes in specified directory)
```bash
[ o.k. ] * [l][c] enable-distro-bootcmd.patch
[ warn ] Make your changes in directory: [ /home/yourhome/build/cache/sources/u-boot-odroidxu/odroidxu4-v2017.05 ]
[ warn ] Press <Enter> after you are done [ waiting ]
```
### Work on your patch
* Open another terminal or files window
* In this case I want to add gpio-line-names to the Odroid XU4 device tree when prompted to do so
```bash
sudo nano build/cache/sources/linux-odroidxu4/odroid-5.4.y/arch/arm/boot/dts/exynos5420-pinctrl.dtsi
```
* Wait for prompt to make kernel changes (press Enter after making changes in specified directory)
```bash
[ warn ] Make your changes in this directory: [ /home/yourhome/build/cache/sources/linux-odroidxu4/odroid-5.4.y ]
[ warn ] Press <Enter> after you are done [ waiting ]
```
* Test the changes you made on your board
* Mine was located in `/home/yourhome/build/output/images/Armbian_21.02.0-trunk_Odroidxu4_focal_current_5.4.83.img`
* Rename patch to something meaningful and move to proper location
```bash
mv output/patch/kernel-odroidxu4-current.patch patch/kernel/odroidxu4-current/add-gpio-line-names.patch
```
Next, you can prepare to submit your patch to the Armbian project.
## Submitting pull requests
No Pull Request (PR) is too small! Typos, additional comments in the code, new test cases, bug fixes, new features, more documentation, ... everything is welcome!
While bug fixes can first be identified via an "issue", that is not required for things mentioned above. It is fine to just open up a PR with the fix, but make sure you include the same information you would have included in an actual issue - like how to reproduce it.
PRs for new features should include some background on what use cases the new code is trying to address. When possible and when it makes sense, try to break-up larger PRs into smaller parts - it is easier to [review](https://github.com/armbian/build/pulls?q=is%3Apr+is%3Aopen+review%3Arequired+label%3A%22Ready+%3Aarrow_right%3A%22) smaller code changes. But only if those smaller ones make sense as stand-alone PRs.
You should squash your commits into logical pieces of work that can be reviewed separate from the rest of the PRs. Squashing down to just one commit is ok as well, since in the end the entire PR will be reviewed anyway. If in doubt, squash.
### Describe your changes in commit messages
Describe your problem(s). Whether your patch is a one-line bug fix or 5000 lines including a new feature, there must be an underlying problem that motivated you to do this work. Your description should work to convince the reviewer that there is a problem worth fixing and that it makes sense for them to read past the first paragraph. This means providing comprehensive details about the issue, including, but not limited to:
* How the problem presented itself
* How to replicate the problem
* Provide 'dmesg' and/or 'armbianmonitor -u' output showing board used and any console output surrounding the issue
* Why you feel it is important for this issue to be resolved
## Communications
For general questions and discussion, please use the IRC `#armbian`, `#armbian-devel` or `#armbian-desktop` on Libera.Chat or [Discord server](http://discord.armbian.com). Most IRC and Discord channels are bridged and recorded.
For discussions around issues/bugs and features, you can use the [GitHub issues](https://github.com/armbian/build/issues), the [PR tracking system](https://github.com/armbian/build/pulls) or our [Jira ticketing system](https://armbian.atlassian.net/jira/software/c/projects/AR/issues/?filter=allissues).
## Other ways to contribute
* [Become a new board maintainer](https://docs.armbian.com/Board_Maintainers_Procedures_and_Guidelines/)
* [Apply for one of the position](https://forum.armbian.com/staffapplications/)
* [Help us covering costs](https://forum.armbian.com/subscriptions/)
* [Help community members in the Forum](https://forum.armbian.com/)
* [Check forum announcements section for any requests for help from the community](https://forum.armbian.com/forum/37-announcements/)

2
CREDITS.md Normal file
View File

@ -0,0 +1,2 @@
[https://github.com/orgs/armbian/people](https://github.com/orgs/armbian/people)
[https://www.armbian.com/authors](https://www.armbian.com/authors)

339
LICENSE Normal file
View File

@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
{description}
Copyright (C) {year} {fullname}
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
{signature of Ty Coon}, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

256
README.md Normal file
View File

@ -0,0 +1,256 @@
<p align="center">
<a href="#build-framework">
<img src=".github/armbian-logo.png" alt="Armbian logo" width="144">
</a><br>
<strong>Armbian Linux Build Framework</strong><br><h3>
$${\color{black}NEXT\space \color{red}gen}$$
</h3>
## Table of contents
- [What does this project do?](#what-does-this-project-do)
- [Getting started](#getting-started)
- [Compared with industry standards](#compared-with-industry-standards)
- [Download prebuilt images](#download-prebuilt-images)
- [Project structure](#project-structure)
- [Contribution](#contribution)
- [Support](#support)
- [Contact](#contact)
- [Contributors](#contributors)
- [Partners](#armbian-partners)
- [License](#license)
## What does this project do?
- Builds custom kernel, image or a distribution optimized for low-resource hardware,
- Include filesystem generation, low-level control software, kernel image and bootloader compilation,
- Provides a consistent user experience by keeping system standards across different platforms.
## Getting started
### Basic requirements
- x86_64 or aarch64 machine with at least 2GB of memory and ~35GB of disk space for a virtual machine, [WSL2](https://learn.microsoft.com/en-us/windows/wsl/install), container or bare metal installation
- Ubuntu Jammy 22.04.x amd64 or aarch64 for native building or any Docker capable amd64 / aarch64 Linux for containerised
- Superuser rights (configured sudo or root access).
- Make sure all your system components are up-to-date. Outdated Docker binaries, for example, can cause trouble.
### Start with the build script
```bash
apt-get -y install git
git clone --depth=1 --branch=main https://github.com/armbian/build
cd build
./compile.sh
```
### BUILD Allwinner H616 quad core 2GB RAM SoC WiFi blueberry
### 构建Allwinner H616四核2GB RAM SoC WiFi蓝莓
```bash
apt-get -y install git
git clone --depth=1 --branch=main https://git.aixiao.me/aixiao/build.git
./compile.sh build BOARD=blueberry BRANCH=legacy BUILD_DESKTOP=no BUILD_MINIMAL=yes KERNEL_CONFIGURE=yes RELEASE=bookworm
```
<a href="#how-to-build-an-image-or-a-kernel"><img src=".github/README.gif" alt="Armbian logo" width="100%"></a>
- Interactive graphical interface.
- Prepares the workspace by installing the necessary dependencies and sources.
- It guides the entire process and creates a kernel package or a ready-to-use SD card image.
### Build parameter examples
Show work-in-progress areas in interactive mode:
```bash
./compile.sh EXPERT="yes"
```
Build minimal CLI Armbian Focal image for Orangepi Zero. Use modern kernel and write image to the SD card:
```bash
./compile.sh \
BOARD=orangepizero \
BRANCH=current \
RELEASE=focal \
BUILD_MINIMAL=yes \
BUILD_DESKTOP=no \
KERNEL_CONFIGURE=no \
CARD_DEVICE="/dev/sdX"
```
More information:
- [Building Armbian](https://docs.armbian.com/Developer-Guide_Build-Preparation/) — how to start, how to automate;
- [Build options](https://docs.armbian.com/Developer-Guide_Build-Options/) — all build options;
- [User configuration](https://docs.armbian.com/Developer-Guide_User-Configurations/) — how to add packages, patches, and override sources config;
## Download prebuilt images
- quarterly released **supported** builds — <https://www.armbian.com/download>
- weekly released **unsupported** community builds — <https://github.com/armbian/community>
- upon code change **unsupported** development builds — <https://github.com/armbian/build/releases>
## Compared with industry standards
Check similarities, advantages and disadvantages compared with leading industry standard build software.
Function | Armbian | Yocto | Buildroot |
|:--|:--|:--|:--|
| Target | general purpose | embedded | embedded / IOT |
| U-boot and kernel | compiled from sources | compiled from sources | compiled from sources |
| Board support maintenance &nbsp; | complete | outside | outside |
| Root file system | Debian or Ubuntu based| custom | custom |
| Package manager | APT | any | none |
| Configurability | limited | large | large |
| Initramfs support | yes | yes | yes |
| Getting started | quick | very slow | slow |
| Cross compilation | yes | yes | yes |
## Project structure
<details><summary>Expand</summary>
```text
├── cache Work / cache directory
│   ├── aptcache Packages
│   ├── ccache C/C++ compiler
│   ├── docker Docker last pull
│   ├── git-bare Minimal Git
│   ├── git-bundles Full Git
│   ├── initrd Ram disk
│   ├── memoize Git status
│   ├── patch Kernel drivers patch
│   ├── pip Python
│   ├── rootfs Compressed userspaces
│   ├── sources Kernel, u-boot and other sources
│   ├── tools Additional tools like ORAS
│   └── utility
├── config Packages repository configurations
│   ├── targets.conf Board build target configuration
│   ├── boards Board configurations
│   ├── bootenv Initial boot loaders environments per family
│   ├── bootscripts Initial Boot loaders scripts per family
│   ├── cli CLI packages configurations per distribution
│   ├── desktop Desktop packages configurations per distribution
│   ├── distributions Distributions settings
│   ├── kernel Kernel build configurations per family
│   ├── sources Kernel and u-boot sources locations and scripts
│   ├── templates User configuration templates which populate userpatches
│   └── torrents External compiler and rootfs cache torrents
├── extensions Extend build system with specific functionality
├── lib Main build framework libraries
│   ├── functions
│   │   ├── artifacts
│   │   ├── bsp
│   │   ├── cli
│   │   ├── compilation
│   │   ├── configuration
│   │   ├── general
│   │   ├── host
│   │   ├── image
│   │   ├── logging
│   │   ├── main
│   │   └── rootfs
│   └── tools
├── output Build artifact
│   └── deb Deb packages
│   └── images Bootable images - RAW or compressed
│   └── debug Patch and build logs
│   └── config Kernel configuration export location
│   └── patch Created patches location
├── packages Support scripts, binary blobs, packages
│   ├── blobs Wallpapers, various configs, closed source bootloaders
│   ├── bsp-cli Automatically added to armbian-bsp-cli package
│   ├── bsp-desktop Automatically added to armbian-bsp-desktopo package
│   ├── bsp Scripts and configs overlay for rootfs
│   └── extras-buildpkgs Optional compilation and packaging engine
├── patch Collection of patches
│   ├── atf ARM trusted firmware
│   ├── kernel Linux kernel patches
| |   └── family-branch Per kernel family and branch
│   ├── misc Linux kernel packaging patches
│   └── u-boot Universal boot loader patches
| ├── u-boot-board For specific board
|    └── u-boot-family For entire kernel family
├── tools Tools for dealing with kernel patches and configs
└── userpatches User: configuration patching area
├── lib.config User: framework common config/override file
├── config-default.conf User: default user config file
├── customize-image.sh User: script will execute just before closing the image
   ├── atf User: ARM trusted firmware
   ├── kernel User: Linux kernel per kernel family
   ├── misc User: various
   └── u-boot User: universal boot loader patches
```
</details>
## Contribution
### You don't need to be a programmer to help!
- The easiest way to help is by "Starring" our repository - it helps more people find our code.
- [Check out our list of volunteer positions](https://forum.armbian.com/staffapplications/) and choose what you want to do ❤️
- [Seed torrents](https://forum.armbian.com/topic/4198-seed-our-torrents/)
- Help with [forum moderating](https://forum.armbian.com/topic/12631-help-on-forum-moderating/)
- [Project administration](https://forum.armbian.com/forum/39-armbian-project-administration/)
- [Donate](https://www.armbian.com/donate).
### Want to become a maintainer?
Please review the [Board Maintainers Procedures and Guidelines](https://docs.armbian.com/Board_Maintainers_Procedures_and_Guidelines/), and if you can meet the requirements and find a board on the [Board Maintainers](https://docs.armbian.com/Release_Board-Maintainers/) list with less than two maintainers, then please apply using the linked form.
### Want to become a developer?
To help with development, you should first review the [Development Code Review Procedures and Guidelines](https://docs.armbian.com/Development-Code_Review_Procedures_and_Guidelines/). Then you can review the pre-made Jira dashboards and additional resources provided below to find open tasks and how you can assist:
- [pull requests that need a review](https://github.com/armbian/build/pulls?q=is%3Apr+is%3Aopen+review%3Arequired)
- dashboard for [junior](https://armbian.atlassian.net/jira/dashboards/10000) and [seniors](https://armbian.atlassian.net/jira/dashboards/10103) developers
- [documentation](https://docs.armbian.com/)
- [continuous integration](https://docs.armbian.com/Process_CI/)
## Support
For commercial or prioritized assistance:
- Book an hour of [professional consultation](https://calendly.com/armbian/consultation)
- Consider becoming a project partner. Reach us at <https://armbian.com/contact>. Alternatively, find free support via [general project search engine](https://www.armbian.com/search), [documentation](https://docs.armbian.com), [community forums](https://forum.armbian.com/) or [IRC/Discord](https://docs.armbian.com/Community_IRC/). Remember that our awesome community members mainly provide this in a **best-effort** manner, so there are no guaranteed solutions.
## Contact
- [Forums](https://forum.armbian.com) for Participate in Armbian
- IRC: `#armbian` on Libera.chat
- Discord: [https://discord.gg/armbian](https://discord.gg/armbian)
- Follow [@armbian](https://twitter.com/armbian) on Twitter, [Fosstodon](https://fosstodon.org/@armbian) or [LinkedIn](https://www.linkedin.com/company/armbian).
- Bugs: [issues](https://github.com/armbian/build/issues) / [JIRA](https://armbian.atlassian.net/jira/dashboards/10000)
- Office hours: [Wednesday, 12 midday, 18 afternoon, CET](https://calendly.com/armbian/office-hours)
## Contributors
Thank you to all the people who already contributed to Armbian!
<a href="https://github.com/armbian/build/graphs/contributors">
<img src="https://contrib.rocks/image?repo=armbian/build" />
</a>
### Also
- [Current and past contributors](https://github.com/armbian/build/graphs/contributors), our families and friends.
- [Support staff](https://forum.armbian.com/members/2-moderators/) that keeps forums usable.
- [Friends and individuals](https://armbian.com/authors) who support us with resources and their time.
- [The Armbian Community](https://forum.armbian.com/) helps with their ideas, reports and [donations](https://www.armbian.com/donate).
## Armbian Partners
Armbian's partnership program helps to support Armbian and the Armbian community! Please take a moment to familiarize yourself with our Partners:
- [Click here to visit our Partners page!](https://armbian.com/partners)
- [How can I become a Partner?](https://forum.armbian.com/subscriptions)
## Star History
[![Star History Chart](https://api.star-history.com/svg?repos=armbian/build&type=Date)](https://star-history.com/#armbian/build&Date)
## License
This software is published under the GPL-2.0 License license.

1
VERSION Normal file
View File

@ -0,0 +1 @@
23.08.0-trunk

53
compile.sh Executable file
View File

@ -0,0 +1,53 @@
#!/usr/bin/env bash
#
# SPDX-License-Identifier: GPL-2.0
#
# Copyright (c) 2013-2023 Igor Pecovnik, igor@armbian.com
#
# This file is a part of the Armbian Build Framework
# https://github.com/armbian/build/
# DO NOT EDIT THIS FILE
# use configuration files like config-default.conf to set the build configuration
# check Armbian documentation https://docs.armbian.com/ for more info
#set -o pipefail # trace ERR through pipes - will be enabled "soon"
#set -o nounset ## set -u : exit the script if you try to use an uninitialised variable - one day will be enabled
set -e
set -o errtrace # trace ERR through - enabled
set -o errexit ## set -e : exit the script if any statement returns a non-true return value - enabled
# Important, go read http://mywiki.wooledge.org/BashFAQ/105 NOW!
SRC="$(dirname "$(realpath "${BASH_SOURCE[0]}")")"
cd "${SRC}" || exit
# check for whitespace in ${SRC} and exit for safety reasons
grep -q "[[:space:]]" <<< "${SRC}" && {
echo "\"${SRC}\" contains whitespace. Not supported. Aborting." >&2
exit 1
}
# Sanity check.
if [[ ! -f "${SRC}"/lib/single.sh ]]; then
echo "Error: missing build directory structure"
echo "Please clone the full repository https://github.com/armbian/build/"
exit 255
fi
# shellcheck source=lib/single.sh
source "${SRC}"/lib/single.sh
# initialize logging variables. (this does not consider parameters at this point, only environment variables)
logging_init
# initialize the traps
traps_init
# make sure git considers our build system dir as a safe dir (only if actually building)
[[ "${CONFIG_DEFS_ONLY}" != "yes" && "${PRE_PREPARED_HOST}" != "yes" ]] && git_ensure_safe_directory "${SRC}"
# Execute the main CLI entrypoint.
cli_entrypoint "$@"
# Log the last statement of this script for debugging purposes.
display_alert "Armbian build script exiting" "very last thing" "cleanup"

18
config/aptly-temp.conf Normal file
View File

@ -0,0 +1,18 @@
{
"rootDir": "/tmp/aptly-temp/",
"downloadConcurrency": 4,
"downloadSpeedLimit": 0,
"architectures": [],
"dependencyFollowSuggests": false,
"dependencyFollowRecommends": false,
"dependencyFollowAllVariants": false,
"dependencyFollowSource": false,
"gpgDisableSign": false,
"gpgDisableVerify": false,
"gpgProvider": "internal",
"downloadSourcePackages": false,
"ppaDistributorID": "ubuntu",
"ppaCodename": "",
"S3PublishEndpoints": {},
"SwiftPublishEndpoints": {}
}

52
config/armbian.key Normal file
View File

@ -0,0 +1,52 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
mQINBFUG8p4BEADGlseGFmdjjfmoXtHpZxqgYHGweCnGZ05LiGgEVgbv5SrTsJsy
O8H8RyBPxgbpKEY+JCV1IlYQPaE3Til1+kqmR4XNKbufjEuqAV4VJW3267tYRuJ3
08E70q7kpQSsEAWLVY+xV/l5stAupp4/wF5BPdAjW7gLuicPnqoKK0jcfrjuvd45
WFhpjL1Sdd0PnILehz0to6R2H9MsW+VYYPFztdjBM/78UD8grMcCm/7Mz8ENRKCn
TKrgj4bpWA0kPEHNBfaoQQUk5fCJYNMLvLMIGZcWeGOPo+yFnl4C6qTEgs0g7/0E
56ycaQDJ+gBCH9YNa8j3eH/t1vMN0ERXiOQf6WXgRihOD1fcnZFmczQFT3GGhv3y
+/cUpsUlmhhJ6tetiuXNuTfrl3M+99qUq5/8iiq292MCmn5s0BEOiyfQ2l2uZmjy
DUO+4lL9o3MX0W5Xp1puE2p42b+w458aDKuuFvBzVMiU51Js6DZnahxu2s+NDztD
gut7p+P60UBCbltXEB0ZIyWTAkKCwIlapZ9yDiHqXiNluTdBiFWGyU3xlb4fuQzw
lwvmS3yz4Ak5GCdDpiLmJoHOKV6q85VaI4T3gixx4JwEfdincOGfepSWFmbEsDuV
x5vbDV5Dwb3oAg80zp3W/uNyX7G41uIGDNzZL82p2XtgGzkjhEbKAnNavwARAQAB
tD1JZ29yIFBlY292bmlrIChManVibGphbmEsIFNsb3ZlbmlhKSA8aWdvci5wZWNv
dm5pa0BnbWFpbC5jb20+iQI4BBMBAgAiBQJVBvKeAhsDBgsJCAcDAgYVCAIJCgsE
FgIDAQIeAQIXgAAKCRCT1oifnw541T6WD/0X+LD9Gm1NVgZhrH35oQ3zstENrTjD
6LF+kT+zhe6QR9bAdOmeb7Je423y/UY3nSaJlS/OWsJs89tXUyE2jbxtLApN6OMT
ZsIxjgyg3fjbHV/lw/xGp+cqHjX+Ay5QZudJVxGJN7WJaRGxymjop7EX4CHiidGZ
PZoDT23WArLia7E8MLB/oK3wW6k9Qlc2SrhldzpuSmOwHQX9pxmy9dgfZa2a9w1c
EvktDnrizPmfxwYaC38FKRqz1I8CnPMESVJ+6mLEYxWJvJANuVvrhqOtjkY6yI0u
SOFHsmgci+3X2c7WWhloKub/Pf7TtM6tl6RCHfKvnsrTZPvxP1/CgzQiAITWppBl
olnSRHXp3notCF1rVbgInwVuCZCuWPJvHC6R3t9/UgESao0tEwr4mw7jNwtszWou
4rYzjEAME/O/kBBWPbDURm/4R8l0XSnG0zhePKv5iCzeQbIzUeAD1Dcvk7falgnl
9FX9/LZCY1kEwFMf2DG03lwG7c4ICSVAz0pNEPZdqpyCl82VKkDne8PA0Rb/uPIO
QY3aDu8bgcPQuokmRRL4rwdnRCVr0AFDZhVQnUjcdy8AvEPeye2fNdLhte+KUWiy
FNWp2vW2LbJ9GxPstaFihXZBcCEpGWsNHebDd1KmNGyPKcqzaIfzHPLP8+ee2deK
A95PVzV3iTL+ObkCDQRVBvKeARAAvGaKCHDGl0eC7fFok5sPq1WattpqQ9QL0BgZ
95VQLn+7/1nXmKsDfCwCvnBGqLXzPQyvWhCbCTN9oYkqokBX2Ch1zOIABynw+UCM
+KyZcmciYZIF21OstWMM0nQ06jno5Hq1vSHlgTkaaYWZYoqXocMCS9llvI2NVG34
bcak1hAh9EkfmThVttDeGZP+osqt2mefpCAVITP1eQWU3RUBpOKNpthpLxMhy+l7
m8tmkLH3FuqwZvVjY241w1o4AWVpJD/JdOuAfHtf7/UDPchSZLe9Ea8Y+bnkiZxg
SROtFrRzbVwP1Id4RKT44BwKMrXu8GiZAPvQq5CvINqZDMqiqq4+jFJPMVortuxX
skRh1dVYOioH1muzeHf560/BLW+mBuEd+xE0gd6SXRgPiflROylpJCb9Qxi8Ofq6
FEHBfJ8mHz49d60qyXZNdNlxLhA3dfOvaahFBgXwNSwjak0zf6RpufAkh8Si5jc3
Qh7lpuwsBelyNu7tBbL2y8WnUez/+aeX9sBSqs78mfpDdLAGnIlT9YcjkHl5W385
jjhBAhpAgiLIsdSRKcc2CI34Vf775cLLIYrcBrjVMLYBwEiZHOPO90Lnizgx1l5t
1wG2Aa5OarTTUPIgMiTUtKPQ8BmcjGMZiavdJwqGUziDD+hMKcxPUMjyYiu+ngkH
1ROuCxMAEQEAAYkCHwQYAQIACQUCVQbyngIbDAAKCRCT1oifnw541Wm7D/sG0ouM
71c5mT+egff+QxfExy+JB4/vL1pLSHbMR8AtAJLN+Yh6EzeGmW2tga0Bk9AxEekQ
raXrMFhZSpT98qJnnDpdozfeIAyTwziw9K9opB0dU/+M3sVidkJ5mv4LW6CJaaY3
rsom0TIjaxBvXqSeadJF4WGUHzg3ew+8ah0ZG8SDZu19ketN2cnTMAtgO+53Epjq
pk3uMF5hNaEHt9wVj2tq/anLEsl4T5U/ekQndxcTEsV2KIVSoye35ye4aam1gWhW
9JIFtShhEtXD/5Ovtj706YLTP84U8yHStzM6LLGpqM8bb1QsBUWRUhIKidltmO9K
jX6rJZuhwkcVJJYRdbetEXbiSIyeNZy7bBe4En+fVcN0ekBD36LhMcVL8F1Mntr1
L5xf0cFEpFpEodQUvcayNgpI2y7EIPjKmKhVwW5dx36Q0CsCnwcC+Kg6BNzliI9I
s+oA2AVIanFPvjvSwfG9pH+2/u+KB4HT2Ux1FBbBi5GAwo+cu1d4XAc5bZHdPnAV
tnIN9dKRusZ8IGHWEd8Pw0kRepuNhSmSNALQkS6B+ppQZtmoGsBCqJeMPxQxj+yI
/bL3dmA2UXxnGJ3vs2ybFyHG3aoovKJfWVytxOJfG7qj1ACrOYOXekWlcw5lEiYF
cckukNqqFv/CXh+BZFlQT4DDvJlY0/KQFFKogQ==
=I/P8
-----END PGP PUBLIC KEY BLOCK-----

121
config/boards/README.md Normal file
View File

@ -0,0 +1,121 @@
# Internal build options
These options are used to declare variables used by the armbian build system to build a board-specific configuration.
If you are unsure about the documentation then invoke `$ grep -r -A5 -B5 "BUILD_OPTION_HERE" /path/to/local/armbian/build/repository` to get context to the option from the source code.
- **BOARD_NAME** ( company product version ): defines the board name used in welcome text, hostname and others relevant usage.The general convention is `COMPANY PRODUCT VERSION` - Often used as part of the scripting logic (namely for hacks) so follow the name declared in the board configuration.
- Example: `OLIMEX Teres A64`
- **BOARDFAMILY** ( board-family ): defines the family of the board to apply board-specific configuration during build time such as adjustments for the temperature, LED behavior, etc..
- Refer to [sources table](https://github.com/armbian/build/blob/master/config/sources/README.md)
- Example: `sun50iw1`
- **BOARD_MAINTAINER** ( space-separated list of Github login ): Declares the maintainer of the board
- **BOOTCONFIG** ( u-boot identifier ): declares the name of the u-boot configuration for the build without the '\_defconifig' suffix
- Refer to the [u-boot source tree](https://github.com/u-boot/u-boot/tree/master/configs) to find configuration for the board
- Example: `teres-i`
- **BOOTSIZE** ( int ): Declares the size of the boot partitin in Mib
- Default: `256`
- Example: `256`
- **BOOT_LOGO** ( string ): defines whether to use a eyecandy during bootloader phase
- Values:
- yes: Show the armbian boot logo
- desktop: Show the armbian boot logo when `BUILD_DESKTOP` is set to `yes`
- Default: `not set`
- **CRUSTCONFIG** ( crust identifier ): declares the name of the crust defconfig configuration for the build. Specify only if the board has Allwinner CPU with AR100 coprocessor and SOC is supported by [crust firmware](https://github.com/crust-firmware/crust).
- Refer to the [crust source tree](https://github.com/crust-firmware/crust/tree/master/configs) to find configuration for the board
- Example: `nanopi_m1_defconfig`
- **IMAGE_PARTITION_TABLE** ( string ): defines which disklabel type to use
- Values:
- msdos: Use dos/msdos disklabel
- gpt: Use GPT disklabel
- Default: msdos
- **BOOTFS_TYPE** ( filesystem ): defines the expected filesystem for the boot file system
- Values:
- none: Uses /boot on the root filesystem
- ext4: Use the [Fourth Extended Filesystem](https://en.wikipedia.org/wiki/Ext4)
- ext2: Use the [Second Extended Filesystem](https://en.wikipedia.org/wiki/Ext2)
- fat: Use the [File Allocation Table 32](https://en.wikipedia.org/wiki/File_Allocation_Table#FAT32)
- Default: `ext4`
- **DEFAULT_OVERLAYS** ( space-separated list list of dtb overlays ): defines dtb overlays that are enabled by default. There is a basic dtb for each family but they have different level of used SoC features. Board X might have four USB ports but others might not. Therefore other does not need to have those enabled while board X does.
- Examples:
- usbhost0
- usbhost2
- usbhost3
- cir
- analog-codec
- gpio-regulator-1.3v
- uart1
- **DEFAULT_CONSOLE** ( string ): declares default console for the boot output
- Values:
- serial: Output boot messages to serial console
- Default: `not set`
- **MODULES** ( space-separated list of kernel modules ): appends modules to the kernel command line for **all** kernel branches
- **MODULES_LEGACY** ( space-separated list of kernel modules ): appends modules to the kernel command line for **legacy** kernel
- **MODULES_CURRENT** ( space-separated list of kernel modules ): appends modules to the kernel command line for **current** kernel
- **MODULES_EDGE** ( space-separated list of kernel modules ): appends modules to the kernel command line for **edge** kernel
- **MODULES_BLACKLIST** ( space-separated list of kernel modules ): appends modules to the kernel's blacklist/deny list for **all** kernel branches
- **MODULES_BLACKLIST_LEGACY** ( space-separated list of kernel modules ): appends modules to the kernel's blacklist/deny list for **legacy** kernel
- **MODULES_BLACKLIST_CURRENT** ( space-separated list of kernel modules ): appends modules to the kernel's blacklist/deny list for **current** kernel
- **MODULES_BLACKLIST_EDGE** ( space-separated list of kernel modules ): appends modules to the kernel's blacklist/deny list for **edge** kernel
- **SERIALCON** ( comma-separated list of terminal interfaces [:bandwidth] ): declares which serial console should be used on the system
- Example: `ttyS0:15000000,ttyGS1`
- **SKIP_ARMBIAN_REPO** ( boolean ): Whether to include the armbian repository in the built image
- Values:
- yes: Include (default)
- no: Do NO include
- **HAS_VIDEO_OUTPUT** ( boolean ): defines whether the system has video output such as eye candy, bootsplash, etc..
- Values:
- yes: Enable video-related configuration
- no: Disable video-related configuration
- **KERNEL_TARGET** ( comma-separated list of kernel releases or branches ): declares which kernels should be used for the build
- Values:
- legacy: Use legacy kernel
- current: Use current kernel
- edge: Use edge kernel
- [branch]: Use specified [branch] kernel
- [none]: Exits with error
- **KERNEL_TEST_TARGET** ( comma-separated list of kernel releases or branches ): if test targets are different for testings (internal switch)
- **FULL_DESKTOP** ( boolean ): defines whether to install desktop stack of applications such as office, thunderbird, etc..
- Values:
- yes: install desktop stack
- no: doesn't install desktop stack
- **DESKTOP_AUTOLOGIN** ( boolean ): Toggle desktop autologin
- Values:
- yes: Automatically login to the desktop
- no: disable desktop autologin
- Default: `no`
- **PACKAGE_LIST_BOARD** ( space-separated list of packages ): Declares which packages should be installed on the system
- **PACKAGE_LIST_BOARD_REMOVE** ( space-separated list of packages ): Declares packages to be removed from the system
- **BOOT_FDT_FILE** ( device tree configuration ): Force to load specific device tree configuration if different from the one defined by u-boot
- Values:
- [family]/[file.dtb]: Replace device tree with the one specified
- none: Do not use device tree configuration
- Example: `rockchip/rk3568-rock-3-a.dtb`
- **CPUMIN** ( minimum CPU frequency to scale in Hz ): Set minimal CPU frequency of the system
- Default: Differs per family `480000` for sunxi8 boards
- **CPUMAX** ( minimum CPU frequency to scale in Hz ): Set maximal CPU frequency of the system
- Default: Differs per family `1400000` for sunxi8 boards
- **FORCE_BOOTSCRIPT_UPDATE** ( boolean ): Force bootscript installation if they are not present
- Values:
- yes: Enable
- no: Disable
- **OVERLAY_PREFIX** ( prefix ): Prefix for device tree and overlay file paths which will be set while creating an image
- Example: `sun8i-h3`
## Deprecated
- **BOOTCONFIG_LEGACY** ( u-boot identifier ): use **BOOTCONFIG** instead
- **BOOTCONFIG_CURRENT** ( u-boot identifier ): use **BOOTCONFIG** instead
- **BOOTCONFIG_EDGE** ( u-boot identifier ): use **BOOTCONFIG** instead
- **PACKAGE_LIST_BOARD_DESKTOP** ( space-separated list of packages ): use **PACKAGE_LIST_BOARD** instead
- **PACKAGE_LIST_BOARD_DESKTOP_REMOVE** ( space-separated list of packages ): use **PACKAGE_LIST_BOARD** instead
## File extensions
Statuses displayed at the login prompt:
|file type|description|
|:--|:--|
|.csc or .tvb |community creations or no active maintainer|
|.wip |work in progress|
|.eos |end of life|

View File

@ -0,0 +1,23 @@
# Amlogic S9xx based TVBox
BOARD_NAME="aml-s9xx-box"
BOARDFAMILY="meson-gxl"
BOARD_MAINTAINER="SteeManMI"
BOOTCONFIG="libretech-cc_defconfig"
BOOTSIZE="512"
BOOTFS_TYPE="fat"
KERNEL_TARGET="current,edge"
SERIALCON="ttyAML0"
FULL_DESKTOP="yes"
ASOUND_STATE="asound.state.mesongx"
BOOT_LOGO="desktop"
SRC_CMDLINE='rootflags=data=writeback console=ttyAML0,115200n8 console=tty0'
function post_family_tweaks__config_aml-s9xx-box_bsp() {
display_alert "$BOARD" "Installing bsp files" "info"
cp -r $SRC/packages/bsp/aml-s9xx-box/boot $SDCARD
install -m 755 $SRC/packages/bsp/aml-s9xx-box/root/install-aml.sh $SDCARD/root
install -m 644 $SRC/packages/bsp/aml-s9xx-box/root/fstab.template $SDCARD/root
}

View File

@ -0,0 +1,6 @@
# Allwinner A20 dual core 1Gb RAM SoC 1xSATA GBE
BOARD_NAME="Banana Pi"
BOARDFAMILY="sun7i"
BOARD_MAINTAINER="DylanHP"
BOOTCONFIG="Bananapi_defconfig"
KERNEL_TARGET="legacy,current,edge"

View File

@ -0,0 +1,20 @@
# Amlogic A311D 4GB RAM eMMC GBE USB3
BOARD_NAME="Banana Pi CM4IO"
BOARDFAMILY="meson-g12b"
BOARD_MAINTAINER="pyavitz"
BOOTCONFIG="bananapi-cm4-cm4io_defconfig"
KERNEL_TARGET="current,edge"
FULL_DESKTOP="yes"
SERIALCON="ttyAML0"
BOOT_LOGO="desktop"
BOOT_FDT_FILE="amlogic/meson-g12b-bananapi-cm4-cm4io.dtb"
BOOTBRANCH_BOARD="tag:v2023.01"
BOOTPATCHDIR="v2023.01"
function post_family_tweaks_bsp__bananapi_rtl_bt() {
if [[ -d "$SRC/packages/bsp/bananapi/rtl_bt" ]]; then
mkdir -p "${destination}"/lib/firmware/updates/rtl_bt
display_alert "$BOARD" "Installing upstream firmware" "info"
cp -fr $SRC/packages/bsp/bananapi/rtl_bt/* "${destination}"/lib/firmware/updates/rtl_bt/
fi
}

View File

@ -0,0 +1,6 @@
# Allwinner A20 dual core 1Gb SoC GBE WiFi 1xSATA
BOARD_NAME="Banana Pi M1+"
BOARDFAMILY="sun7i"
BOARD_MAINTAINER=""
BOOTCONFIG="bananapi_m1_plus_defconfig"
KERNEL_TARGET="legacy,current,edge"

View File

@ -0,0 +1,7 @@
# A31s quad core 1Gb SoC Wifi
BOARD_NAME="Banana Pi M2"
BOARDFAMILY="sun6i"
BOARD_MAINTAINER=""
BOOTCONFIG="Sinovoip_BPI_M2_defconfig"
OVERLAY_PREFIX="sun6i-a31s"
KERNEL_TARGET="legacy,current"

View File

@ -0,0 +1,10 @@
# Allwinner H3 quad core 1Gb RAM SoC Wifi GBE
BOARD_NAME="Banana Pi M2+"
BOARDFAMILY="sun8i"
BOARD_MAINTAINER=""
BOOTCONFIG="bananapi_m2_plus_h3_defconfig"
DEFAULT_OVERLAYS="analog-codec"
MODULES_CURRENT="g_serial"
MODULES_LEGACY="g_serial"
SERIALCON="ttyS0,ttyGS0"
KERNEL_TARGET="legacy,current,edge"

View File

@ -0,0 +1,20 @@
# Amlogic S905X3 quad core 2-4GB RAM SoC eMMC GBE USB3 SPI Wifi
BOARD_NAME="Banana Pi M2Pro"
BOARDFAMILY="meson-sm1"
BOARD_MAINTAINER=""
BOOTCONFIG="bananapi-m2-pro_defconfig"
BOOT_FDT_FILE="amlogic/meson-sm1-bananapi-m2-pro.dtb"
KERNEL_TARGET="current,edge"
FULL_DESKTOP="yes"
SERIALCON="ttyAML0"
BOOT_LOGO="desktop"
BOOTBRANCH_BOARD="tag:v2023.07.02"
BOOTPATCHDIR="v2023.07.02"
function fetch_sources_tools__libreelec_amlogic_fip_pre_m2-pro_blob_update() {
fetch_from_repo "https://github.com/Dangku/amlogic-boot-fip" "amlogic-boot-fip" "branch:master"
}
function post_uboot_custom_postprocess__bpi-m2-pro() {
uboot_g12_postprocess "$SRC"/cache/sources/amlogic-boot-fip/bananapi-m2-pro g12a
}

View File

@ -0,0 +1,20 @@
# Amlogic A311D 4GB RAM eMMC 2xGBE USB3
BOARD_NAME="Banana Pi M2S"
BOARDFAMILY="meson-g12b"
BOARD_MAINTAINER="pyavitz jeanrhum"
BOOTCONFIG="bananapi-m2s_defconfig"
KERNEL_TARGET="current,edge"
FULL_DESKTOP="yes"
SERIALCON="ttyAML0"
BOOT_LOGO="desktop"
BOOT_FDT_FILE="amlogic/meson-g12b-a311d-bananapi-m2s.dtb"
BOOTBRANCH_BOARD="tag:v2023.07.02"
BOOTPATCHDIR="v2023.07.02"
function post_family_tweaks_bsp__bananapi_rtl_bt() {
if [[ -d "$SRC/packages/bsp/bananapi/rtl_bt" ]]; then
mkdir -p "${destination}"/lib/firmware/updates/rtl_bt
display_alert "$BOARD" "Installing upstream firmware" "info"
cp -fr $SRC/packages/bsp/bananapi/rtl_bt/* "${destination}"/lib/firmware/updates/rtl_bt/
fi
}

View File

@ -0,0 +1,8 @@
# Allwinner R40 quad core 2Gb SoC Wifi eMMC
BOARD_NAME="Banana Pi M2 Ultra"
BOARDFAMILY="sun8i"
BOARD_MAINTAINER=""
BOOTCONFIG="Bananapi_M2_Ultra_defconfig"
OVERLAY_PREFIX="sun8i-r40"
KERNEL_TARGET="current,edge"
KERNEL_TEST_TARGET="current"

View File

@ -0,0 +1,9 @@
# Allwinner H2+ quad core 512MB SoC Wi-Fi/BT
BOARD_NAME="Banana Pi M2 Zero"
BOARDFAMILY="sun8i"
BOARD_MAINTAINER=""
BOOTCONFIG="bananapi_m2_zero_defconfig"
MODULES_LEGACY="g_serial"
MODULES_CURRENT="g_serial"
SERIALCON="ttyS0,ttyGS0"
KERNEL_TARGET="legacy,current,edge"

View File

@ -0,0 +1,7 @@
# Allwinner A83T octa core 2Gb SoC Wifi
BOARD_NAME="Banana Pi M3"
BOARDFAMILY="sun8i"
BOARD_MAINTAINER="AaronNGray"
BOOTCONFIG="Sinovoip_BPI_M3_defconfig"
OVERLAY_PREFIX="sun8i-a83t"
KERNEL_TARGET="legacy,current,edge"

View File

@ -0,0 +1,28 @@
# Amlogic S905X3 quad core 2-4GB RAM SoC eMMC GBE USB3 SPI
BOARD_NAME="Banana Pi M5"
BOARDFAMILY="meson-sm1"
BOARD_MAINTAINER="bretmlw"
BOOTCONFIG="bananapi-m5_defconfig"
BOOT_FDT_FILE="amlogic/meson-sm1-bananapi-m5.dtb"
KERNEL_TARGET="current,edge"
FULL_DESKTOP="yes"
SERIALCON="ttyAML0"
BOOT_LOGO="desktop"
BOOTBRANCH_BOARD="tag:v2023.07.02"
BOOTPATCHDIR="v2023.07.02"
function fetch_sources_tools__libreelec_amlogic_fip_pre_m5_blob_update() {
fetch_from_repo "https://github.com/Dangku/amlogic-boot-fip" "amlogic-boot-fip" "branch:master"
}
function post_uboot_custom_postprocess__bpi-m5() {
uboot_g12_postprocess "$SRC"/cache/sources/amlogic-boot-fip/bananapi-m5 g12a
}
function post_family_tweaks_bsp__bananapi_rtl_bt() {
if [[ -d "$SRC/packages/bsp/bananapi/rtl_bt" ]]; then
mkdir -p "${destination}"/lib/firmware/updates/rtl_bt
display_alert "$BOARD" "Installing upstream firmware" "info"
cp -fr $SRC/packages/bsp/bananapi/rtl_bt/* "${destination}"/lib/firmware/updates/rtl_bt/
fi
}

View File

@ -0,0 +1,8 @@
# Allwinner A64 quad core 2GB RAM SoC WiFi/BT eMMC GBE
BOARD_NAME="Banana Pi M64"
BOARDFAMILY="sun50iw1"
BOARD_MAINTAINER="devdotnetorg"
BOOTCONFIG_DEFAULT="sun50iw1p1_config"
BOOTCONFIG="bananapi_m64_defconfig"
KERNEL_TARGET="legacy,current,edge"
CRUSTCONFIG="a64_defconfig"

View File

@ -0,0 +1,7 @@
# Allwinner A20 dual core 1GB RAM SoC 1xSATA GBE Wifi
BOARD_NAME="Banana Pi Pro"
BOARDFAMILY="sun7i"
BOARD_MAINTAINER="teknoid"
BOOTCONFIG="Bananapro_defconfig"
KERNEL_TARGET="legacy,current,edge"
KERNEL_TEST_TARGET="current,edge"

View File

@ -0,0 +1,7 @@
# Mediatek MT7623n quad core 2GB mPci 2xSATA 2xUSB3.0 5xGBE
BOARD_NAME="Banana Pi R2"
BOARDFAMILY="mt7623"
BOARD_MAINTAINER=""
BOOTCONFIG="mt7623n_bpir2_defconfig"
HAS_VIDEO_OUTPUT="no"
KERNEL_TARGET="legacy"

View File

@ -0,0 +1,13 @@
# Rockchip RK3568 quad core 2GB-4GB 5GBE eMMC SATA USB3 Mini PCIE M.2 key-e
BOARD_NAME="Banana Pi R2 Pro"
BOARDFAMILY="media"
BOARD_MAINTAINER=""
BOOTCONFIG="bpi-r2pro-rk3568_defconfig"
KERNEL_TARGET="current,edge"
FULL_DESKTOP="yes"
BOOT_LOGO="desktop"
BOOT_FDT_FILE="rockchip/rk3568-bpi-r2-pro.dtb"
SRC_EXTLINUX="yes"
SRC_CMDLINE="console=ttyS02,1500000 console=tty0"
ASOUND_STATE="asound.state.station-p2"
IMAGE_PARTITION_TABLE="gpt"

48
config/boards/beaglev.csc Normal file
View File

@ -0,0 +1,48 @@
# RISC-V StarFive BeagleV
BOARD_NAME="BeagleV"
BOARDFAMILY="starfive"
BOARD_MAINTAINER=""
KERNEL_TARGET="edge"
BOOT_FDT_FILE="starfive/jh7100-beaglev-starlight-a1.dtb"
SRC_EXTLINUX="yes"
SRC_CMDLINE="console=ttyS0,115200n8 console=tty0 earlycon=sbi rootflags=data=writeback stmmaceth=chain_mode:1 rw"
BOOTCONFIG=none
function post_family_tweaks__beaglev_uenv() {
# rpardini: uEnv.txt is needed to re-enable distroboot-like behaviour on the board's SPI u-boot
display_alert "$BOARD" "creating uEnv.txt" "info"
cat <<- UENV_SCRIPT_HEADER > "${SDCARD}/boot/uEnv.txt"
fdt_high=0xffffffffffffffff
initrd_high=0xffffffffffffffff
scriptaddr=0x88100000
script_offset_f=0x1fff000
script_size_f=0x1000
kernel_addr_r=0x84000000
kernel_comp_addr_r=0x90000000
kernel_comp_size=0x10000000
fdt_addr_r=0x88000000
ramdisk_addr_r=0x88300000
distro_bootpart=1
uenvcmd=run mmc_boot
UENV_SCRIPT_HEADER
display_alert "$BOARD" "creating 10-hdmi.conf" "info"
mkdir -p "${SDCARD}/etc/X11/xorg.conf.d"
cat <<- XORG_HDMI_CONF > "${SDCARD}/etc/X11/xorg.conf.d/10-hdmi.conf"
Section "Device"
Identifier "Default Device"
Driver "modesetting"
Option "AccelMethod" "none" ### "glamor" to enable 3D acceleration, "none" to disable.
EndSection
Section "ServerFlags"
Option "AutoAddGPU" "off"
Option "Debug" "dmabuf_capable"
EndSection
XORG_HDMI_CONF
return 0
}

View File

@ -0,0 +1,6 @@
# Allwinner H3 quad core 1GB SoC WiFi eMMC
BOARD_NAME="Beelink X2"
BOARDFAMILY="sun8i"
BOARD_MAINTAINER=""
BOOTCONFIG="beelink_x2_defconfig"
KERNEL_TARGET="legacy,current,edge"

View File

@ -0,0 +1,14 @@
# Allwinner H616 quad core 512MB/1GB RAM SoC WiFi
BOARD_NAME="BigTreeTech CB1"
BOARDFAMILY="sun50iw9-btt"
BOARD_MAINTAINER="bigtreetech"
BOOTCONFIG="bigtreetech_cb1_defconfig"
DEFAULT_CONSOLE="serial"
SERIALCON="ttyS0"
KERNEL_TARGET="legacy,current,edge"
KERNEL_TEST_TARGET="legacy"
FORCE_BOOTSCRIPT_UPDATE="yes"
BOOTFS_TYPE="fat"
BOOT_FS_LABEL="BOOT"
OVERLAY_PREFIX="sun50i-h616"
BOOT_FDT_FILE="allwinner/sun50i-h616-bigtreetech-cb1-sd.dtb"

View File

@ -0,0 +1,14 @@
# Allwinner H616 quad core 2GB RAM SoC WiFi
BOARD_NAME="Blueberry"
BOARDFAMILY="sun50iw9-blb"
BOARD_MAINTAINER="blueberry"
BOOTCONFIG="blueberry_defconfig"
DEFAULT_CONSOLE="serial"
SERIALCON="ttyS0"
KERNEL_TARGET="legacy,current,edge"
KERNEL_TEST_TARGET="legacy"
FORCE_BOOTSCRIPT_UPDATE="yes"
BOOTFS_TYPE="fat"
BOOT_FS_LABEL="BOOT"
OVERLAY_PREFIX="sun50i-h616"
BOOT_FDT_FILE="allwinner/sun50i-h616-blueberry-sd.dtb"

View File

@ -0,0 +1,8 @@
# Marvell Armada 38x dual core 1GB/2GB RAM SoC 1xmPCIe M.2 2xGBE SFP
BOARD_NAME="Clearfog Base"
BOARDFAMILY="mvebu"
BOARD_MAINTAINER=""
BOOTCONFIG="clearfog_defconfig"
#BOOTCONFIG_EDGE="clearfogbase_defconfig" # This had to be disabled because the clearfog is not yet ready for mainline uboot
HAS_VIDEO_OUTPUT="no"
KERNEL_TARGET="current,edge"

View File

@ -0,0 +1,7 @@
# Marvell Armada 38x dual core 1GB/2GB RAM SoC 2xmPCIe M.2 GBE switch SFP
BOARD_NAME="Clearfog Pro"
BOARDFAMILY="mvebu"
BOARD_MAINTAINER="Heisath"
BOOTCONFIG="clearfog_defconfig"
HAS_VIDEO_OUTPUT="no"
KERNEL_TARGET="current,edge"

View File

@ -0,0 +1,46 @@
# Rockchip RK3399 hexa core 4GB RAM SoC WiFi/BT
BOARD_NAME="Clockworkpi A06"
BOARDFAMILY="rockchip64"
BOARD_MAINTAINER=""
BOOTCONFIG="clockworkpi-a06-rk3399_defconfig"
KERNEL_TARGET="legacy,current,edge"
FULL_DESKTOP="yes"
BOOT_LOGO="no"
BOOTBRANCH_BOARD="tag:v2022.04"
BOOTPATCHDIR="u-boot-rockchip64-v2022.04"
function post_family_tweaks_bsp__clockworkpi-a06() {
display_alert "Installing BSP firmware and fixups"
# rotate screen & disable dpms
mkdir -p "$destination"/etc/X11/xorg.conf.d
cat <<- EOF > "$destination"/etc/X11/xorg.conf.d/10-monitor.conf
# set monitor
Section "Monitor"
Identifier "DSI-1"
Option "Rotate" "right"
Option "DPMS" "false"
EndSection
Section "ServerLayout"
Identifier "ServerLayout0"
Option "BlankTime" "0"
Option "StandbyTime" "0"
Option "SuspendTime" "0"
Option "OffTime" "0"
EndSection
EOF
# fan support
install -Dm644 $SRC/packages/bsp/clockworkpi-a06/temp_fan_daemon_a06.py $destination/usr/share/clockworkpi-a06-fan-daemon/bin/temp_fan_daemon_a06.py
cp $SRC/packages/bsp/clockworkpi-a06/clockworkpi-a06-fan-daemon.service $destination/lib/systemd/system/
# alsa-ucm-conf profile for DevTerm A06
mkdir -p $destination/usr/share/alsa/ucm2/Rockchip/es8388
install -Dm644 $SRC/packages/bsp/clockworkpi-a06/es8388.conf $destination/usr/share/alsa/ucm2/Rockchip/es8388/es8388.conf
install -Dm644 $SRC/packages/bsp/clockworkpi-a06/HiFi.conf $destination/usr/share/alsa/ucm2/Rockchip/es8388/HiFi.conf
mkdir -p $destination/usr/share/alsa/ucm2/conf.d/simple-card
ln -sfv /usr/share/alsa/ucm2/Rockchip/es8388/es8388.conf \
$destination/usr/share/alsa/ucm2/conf.d/simple-card/rockchip,es8388-codec.conf
return 0
}

View File

@ -0,0 +1,8 @@
# Allwinner A10 single core 1Gb SoC 1xSATA
BOARD_NAME="Cubieboard 1"
BOARDFAMILY="sun4i"
BOARD_MAINTAINER=""
BOOTCONFIG="Cubieboard_config"
HAS_VIDEO_OUTPUT="no"
KERNEL_TARGET="legacy,current,edge"
MODULES_BLACKLIST="ir_lirc_codec lirc_dev sunxi-cir"

View File

@ -0,0 +1,6 @@
# Allwinner A20 dual core 1Gb SoC 1xSATA
BOARD_NAME="Cubieboard 2"
BOARDFAMILY="sun7i"
BOARD_MAINTAINER=""
BOOTCONFIG="Cubieboard2_config"
KERNEL_TARGET="legacy,current,edge"

View File

@ -0,0 +1,6 @@
# Allwinner A80 SoC 8 cores 2GB RAM Wi-Fi
BOARD_NAME="Cubieboard 4"
BOARDFAMILY="sun9i"
BOARD_MAINTAINER=""
BOOTCONFIG=Cubieboard4_defconfig
KERNEL_TARGET="current,edge"

View File

@ -0,0 +1,7 @@
# Allwinner A20 dual core 2GB RAM SoC 1xSATA GBE WiFi/BT
BOARD_NAME="Cubietruck"
BOARDFAMILY="sun7i"
BOARD_MAINTAINER=""
BOOTCONFIG="Cubietruck_config"
KERNEL_TARGET="legacy,current,edge"
KERNEL_TEST_TARGET="current,edge"

View File

@ -0,0 +1,7 @@
# Allwinner A83T octa core 2Gb SoC Wifi
BOARD_NAME="Cubietruck+"
BOARDFAMILY="sun8i"
BOARD_MAINTAINER=""
BOOTCONFIG="Cubietruck_plus_defconfig"
OVERLAY_PREFIX="sun8i-a83t"
KERNEL_TARGET="current,edge"

View File

@ -0,0 +1,9 @@
# Freescale / NXP iMx6 dual-quad core 1GB/2GB RAM SoC Wifi/BT GBE
BOARD_NAME="Cubox i2eX/i4"
BOARDFAMILY="imx6"
BOARD_MAINTAINER=""
BOOTCONFIG="mx6cuboxi_defconfig"
KERNEL_TARGET="current,edge"
FULL_DESKTOP="yes"
BOOT_LOGO="desktop"
PACKAGE_LIST_BOARD="rfkill bluetooth bluez bluez-tools"

View File

@ -0,0 +1,7 @@
# Marvell Armada 37x 512MB-2GB RAM SoC 1xmPCIe 1xSATA 3xGBE USB3.0 eMMC SPI
BOARD_NAME="Espressobin"
BOARDFAMILY="mvebu64"
BOARD_MAINTAINER="ManoftheSea"
BOOTCONFIG="mvebu_espressobin-88f3720_defconfig"
HAS_VIDEO_OUTPUT="no"
KERNEL_TARGET="current,edge"

View File

@ -0,0 +1,10 @@
# Rockchip RK3399 hexa core 2GB/4GB RAM SoC GBE USB3 USB-C WiFi/BT eMMC NVMe PCI-e i2c
BOARD_NAME="FE SOM RK3399"
BOARDFAMILY="rockchip64"
BOARD_MAINTAINER=""
BOOTCONFIG="nanopc-t4-rk3399_defconfig"
HAS_VIDEO_OUTPUT="no"
KERNEL_TARGET="current,edge"
ASOUND_STATE="asound.state.rt5651"
BOOT_LOGO="desktop"
#BOOT_FDT_FILE="rockchip/fe-som-rk3399.dtb"

View File

@ -0,0 +1,29 @@
# Rockchip RK3399 hexa core 4GB SoC eMMC GBE USB3 WiFi
BOARD_NAME="Firefly RK3399"
BOARDFAMILY="media"
BOARD_MAINTAINER="150balbes"
BOOTCONFIG="firefly-rk3399_defconfig"
KERNEL_TARGET="legacy,current,edge"
FULL_DESKTOP="yes"
BOOT_LOGO="desktop"
BOOT_FDT_FILE="rockchip/rk3399-firefly.dtb"
SRC_EXTLINUX="yes"
SRC_CMDLINE="console=ttyS2,1500000 console=tty0"
#ASOUND_STATE="asound.state.station-p1"
function post_family_tweaks_bsp__firefly-rk3399_BSP() {
display_alert "Installing BSP firmware and fixups"
if [[ $BRANCH == legacy ]]; then
# Bluetooth for most of others (custom patchram is needed only in legacy)
install -m 755 $SRC/packages/bsp/rk3399/brcm_patchram_plus_rk3399 $destination/usr/bin
cp $SRC/packages/bsp/rk3399/rk3399-bluetooth.service $destination/lib/systemd/system/
# need to swap chips in the service
sed -i s%BCM4345C5%BCM4356A2%g $destination/lib/systemd/system/rk3399-bluetooth.service
fi
return 0
}

View File

@ -0,0 +1,60 @@
# Rockchip RK3588 SoC octa core 8-32GB SoC eMMC USB-C DP NvME SATA M2
BOARD_NAME="FxBlox RK1"
BOARDFAMILY="rockchip-rk3588"
BOARD_MAINTAINER="mahdichi"
BOOTCONFIG="fxblox-rk1-rk3588_defconfig"
BOOT_SOC="rk3588"
KERNEL_TARGET="legacy"
FULL_DESKTOP="yes"
BOOT_LOGO="desktop"
BOOT_FDT_FILE="rockchip/rk3588-fxblox-rk1.dtb"
BOOT_SCENARIO="spl-blobs"
BOOT_SUPPORT_SPI="yes"
BOOT_SPI_RKSPI_LOADER="yes"
IMAGE_PARTITION_TABLE="gpt"
SKIP_BOOTSPLASH="yes" # Skip boot splash patch, conflicts with CONFIG_VT=yes
BOOTFS_TYPE="fat"
DDR_BLOB='rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.11.bin'
BL31_BLOB='rk35/rk3588_bl31_v1.38.elf'
function post_family_tweaks__fxblox-rk1_naming_audios() {
display_alert "$BOARD" "Renaming fxblox rk1 audios" "info"
mkdir -p $SDCARD/etc/udev/rules.d/
echo 'SUBSYSTEM=="sound", ENV{ID_PATH}=="platform-dp0-sound", ENV{SOUND_DESCRIPTION}="DP0 Audio"' >> $SDCARD/etc/udev/rules.d/90-naming-audios.rules
echo 'SUBSYSTEM=="sound", ENV{ID_PATH}=="platform-dp1-sound", ENV{SOUND_DESCRIPTION}="DP1 Audio"' >> $SDCARD/etc/udev/rules.d/90-naming-audios.rules
return 0
}
function post_family_config_branch_legacy__fxblox-rk1_uboot_add_sata_target() {
display_alert "$BOARD" "Configuring ($BOARD) standard and sata uboot target map" "info"
UBOOT_TARGET_MAP="
BL31=$RKBIN_DIR/$BL31_BLOB $BOOTCONFIG spl/u-boot-spl.bin u-boot.dtb u-boot.itb;;idbloader.img u-boot.itb rkspi_loader.img
BL31=$RKBIN_DIR/$BL31_BLOB $BOOTCONFIG spl/u-boot-spl.bin u-boot.dtb u-boot.itb;; rkspi_loader_sata.img
"
}
function post_uboot_custom_postprocess__create_sata_spi_image() {
display_alert "$BOARD" "Create rkspi_loader_sata.img" "info"
dd if=/dev/zero of=rkspi_loader_sata.img bs=1M count=0 seek=16
/sbin/parted -s rkspi_loader_sata.img mklabel gpt
/sbin/parted -s rkspi_loader_sata.img unit s mkpart idbloader 64 7167
/sbin/parted -s rkspi_loader_sata.img unit s mkpart vnvm 7168 7679
/sbin/parted -s rkspi_loader_sata.img unit s mkpart reserved_space 7680 8063
/sbin/parted -s rkspi_loader_sata.img unit s mkpart reserved1 8064 8127
/sbin/parted -s rkspi_loader_sata.img unit s mkpart uboot_env 8128 8191
/sbin/parted -s rkspi_loader_sata.img unit s mkpart reserved2 8192 16383
/sbin/parted -s rkspi_loader_sata.img unit s mkpart uboot 16384 32734
dd if=idbloader.img of=rkspi_loader_sata.img seek=64 conv=notrunc
dd if=u-boot.itb of=rkspi_loader_sata.img seek=16384 conv=notrunc
}
# Override family config for this board; let's avoid conditionals in family config.
function post_family_config__fxblox-rk1_use_vendor_uboot() {
BOOTSOURCE='https://github.com/functionland/u-boot.git'
BOOTBRANCH='branch:next-dev'
BOOTPATCHDIR="legacy"
}

View File

@ -0,0 +1,11 @@
# Marvell Armada 388 2GB ECC RAM SoC 4xSATA 2xUSB3.0 GBE SPI
BOARD_NAME="Helios4"
BOARDFAMILY="mvebu"
BOARD_MAINTAINER="Heisath"
BOOTCONFIG="helios4_defconfig"
BOOTCONFIG_NEXT="helios4_defconfig"
MODULES_LEGACY="marvell_cesa lm75"
MODULES_CURRENT="marvell_cesa lm75"
HAS_VIDEO_OUTPUT="no"
FORCE_BOOTSCRIPT_UPDATE="yes"
KERNEL_TARGET="current,edge"

View File

@ -0,0 +1,59 @@
# RK3399 hexa core 4GB SoC 2.5GbE eMMC USB3 SATA M.2 UPS
BOARD_NAME="Helios64"
BOARDFAMILY="rockchip64" # Used to be rk3399
BOARD_MAINTAINER=""
BOOTCONFIG="helios64-rk3399_defconfig"
BOOT_SCENARIO="blobless"
KERNEL_TARGET="current,edge"
MODULES="lm75 ledtrig-netdev"
MODULES_LEGACY="lm75"
FULL_DESKTOP="yes"
PACKAGE_LIST_BOARD="mdadm i2c-tools fancontrol"
PACKAGE_LIST_BOARD_REMOVE="fake-hwclock"
CPUMAX="1800000"
function post_family_tweaks__helios64_enable_heartbeat() {
display_alert "$BOARD" "Installing board tweaks" "info"
chroot $SDCARD /bin/bash -c "systemctl --no-reload enable helios64-heartbeat-led.service >/dev/null 2>&1"
return 0
}
function post_family_tweaks_bsp__helios64() {
display_alert "Installing BSP firmware and fixups"
mkdir -p $destination/etc/udev/rules.d/
mkdir -p $destination/etc/systemd/system/fancontrol.service.d/
mkdir -p $destination/lib/systemd/system/
mkdir -p $destination/lib/systemd/system-shutdown/
cp $SRC/packages/bsp/helios64/50-usb-realtek-net.rules $destination/etc/udev/rules.d/
cp $SRC/packages/bsp/helios64/70-keep-usb-lan-as-eth1.rules $destination/etc/udev/rules.d/
cp $SRC/packages/bsp/helios64/90-helios64-ups.rules $destination/etc/udev/rules.d/
cp $SRC/packages/bsp/helios64/asound.conf $destination/etc/
install -m 755 $SRC/packages/bsp/helios64/disable_auto_poweron $destination/lib/systemd/system-shutdown/
### Fancontrol tweaks
# copy hwmon rules to fix device mapping
# changed to only use one file regardless of branch
install -m 644 $SRC/packages/bsp/helios64/90-helios64-hwmon.rules $destination/etc/udev/rules.d/
install -m 644 $SRC/packages/bsp/helios64/fancontrol.service.pid-override $destination/etc/systemd/system/fancontrol.service.d/pid.conf
# copy fancontrol config
install -m 644 $SRC/packages/bsp/helios64/fancontrol.conf $destination/etc/fancontrol
# LED tweak
if [[ $BRANCH == legacy ]]; then
install -m 644 $SRC/packages/bsp/helios64/helios64-heartbeat-led-legacy.service $destination/etc/systemd/system/helios64-heartbeat-led.service
else
install -m 644 $SRC/packages/bsp/helios64/helios64-heartbeat-led.service $destination/etc/systemd/system/
fi
# UPS service
cp $SRC/packages/bsp/helios64/helios64-ups.service $destination/lib/systemd/system/
cp $SRC/packages/bsp/helios64/helios64-ups.timer $destination/lib/systemd/system/
install -m 755 $SRC/packages/bsp/helios64/helios64-ups.sh $destination/usr/bin/helios64-ups.sh
return 0
}

View File

@ -0,0 +1,9 @@
# Kirin 960 octa core 3/4GB SoC eMMC USB3 WiFi/BT
declare -g BOARD_NAME="HiKey 960"
declare -g BOARDFAMILY="uefi-arm64"
declare -g BOARD_MAINTAINER=""
declare -g KERNEL_TARGET="current,edge"
declare -g GRUB_CMDLINE_LINUX_DEFAULT="efi=noruntime console=ttyAMA6,115200n8"
declare -g BOOT_FDT_FILE="hisilicon/hi3660-hikey960.dtb"
enable_extension "grub-with-dtb"

View File

@ -0,0 +1,25 @@
# Rockchip RK3588 SoC octa core 4-16GB eMMC USB3 NVMe SATA 4G WiFi/BT HDMI DP HDMI-In
BOARD_NAME="Hinlink H88K"
BOARDFAMILY="rockchip-rk3588"
BOARD_MAINTAINER=""
BOOTCONFIG="rock-5b-rk3588_defconfig"
KERNEL_TARGET="legacy"
FULL_DESKTOP="yes"
BOOT_LOGO="desktop"
BOOT_FDT_FILE="rockchip/rk3588-hinlink-h88k.dtb"
BOOT_SCENARIO="spl-blobs"
IMAGE_PARTITION_TABLE="gpt"
SKIP_BOOTSPLASH="yes" # Skip boot splash patch, conflicts with CONFIG_VT=yes
function post_family_tweaks__hinlink_h88k_naming_audios() {
display_alert "$BOARD" "Renaming hinlink-h88k audios" "info"
mkdir -p $SDCARD/etc/udev/rules.d/
echo 'SUBSYSTEM=="sound", ENV{ID_PATH}=="platform-hdmi0-sound", ENV{SOUND_DESCRIPTION}="HDMI0 Audio"' > $SDCARD/etc/udev/rules.d/90-naming-audios.rules
echo 'SUBSYSTEM=="sound", ENV{ID_PATH}=="platform-hdmi1-sound", ENV{SOUND_DESCRIPTION}="HDMI1 Audio"' >> $SDCARD/etc/udev/rules.d/90-naming-audios.rules
echo 'SUBSYSTEM=="sound", ENV{ID_PATH}=="platform-hdmiin-sound", ENV{SOUND_DESCRIPTION}="HDMI-In Audio"' >> $SDCARD/etc/udev/rules.d/90-naming-audios.rules
echo 'SUBSYSTEM=="sound", ENV{ID_PATH}=="platform-dp0-sound", ENV{SOUND_DESCRIPTION}="DP0 Audio"' >> $SDCARD/etc/udev/rules.d/90-naming-audios.rules
echo 'SUBSYSTEM=="sound", ENV{ID_PATH}=="platform-es8388-sound", ENV{SOUND_DESCRIPTION}="ES8388 Audio"' >> $SDCARD/etc/udev/rules.d/90-naming-audios.rules
return 0
}

View File

@ -0,0 +1,6 @@
# Freescale / NXP iMX7d dual core + M4 1Gb RAM SoC 1xmPCIe 2xGBE
BOARD_NAME="MCIMX7SABRE"
BOARDFAMILY="imx7d"
BOARD_MAINTAINER=""
BOOTCONFIG="imx_v7_defconfig"
KERNEL_TARGET="legacy,current"

View File

@ -0,0 +1,91 @@
# Rockchip RK3588S octa core 4/8/16GB RAM SoC eMMC USB3 USB-C GbE
declare -g BOARD_NAME="Indiedroid Nova"
declare -g BOARD_MAINTAINER="lanefu"
declare -g BOARDFAMILY="rockchip-rk3588"
declare -g BOOTCONFIG="indiedroid_defconfig" # vendor name, not standard, see hook below, set BOOT_SOC below to compensate
declare -g BOOT_SOC="rk3588"
declare -g KERNEL_TARGET="legacy,collabora,edge"
declare -g FULL_DESKTOP="yes"
declare -g BOOT_LOGO="desktop"
declare -g BOOT_FDT_FILE="rockchip/rk3588s-indiedroid-nova.dtb"
declare -g BOOT_SCENARIO="spl-blobs"
declare -g BOOT_SUPPORT_SPI="no"
declare -g IMAGE_PARTITION_TABLE="gpt"
declare -g SKIP_BOOTSPLASH="yes" # Skip boot splash patch, conflicts with CONFIG_VT=yes
declare -g BOOTFS_TYPE="fat"
declare -g SRC_EXTLINUX="no" # going back to standard uboot for now
declare -g BL31_BLOB='rk35/rk3588_bl31_v1.38.elf'
declare -g DDR_BLOB='rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.11.bin'
## only applies to extlinux so not used
declare -g SRC_CMDLINE="console=ttyS0,115200n8 console=tty1 console=both net.ifnames=0 rootflags=data=writeback"
# Override family config for this board; let's avoid conditionals in family config.
function post_family_config__indiedroid-nova_use_stvhay_uboot() {
declare -g BOOTSOURCE='https://github.com/stvhay/u-boot.git'
declare -g BOOTBRANCH='branch:rockchip-rk3588-unified'
declare -g BOOTPATCHDIR="legacy"
}
# BSP kernel uses device name from contract manufacturer rather than production name in mainline
function post_family_config_branch_legacy__use_9tripod_dtb() {
declare -g BOOT_FDT_FILE="rockchip/rk3588s-9tripod-linux.dtb"
}
# Add bluetooth packages to the image (not rootfs cache)
function post_family_config__bluetooth_hciattach_add_bluetooth_packages() {
display_alert "${BOARD}" "adding bluetooth packages to image" "info"
add_packages_to_image rfkill bluetooth bluez bluez-tools
}
# setup bluetooth stuff
function pre_customize_image__indiedroid_add_bluetooth() {
display_alert "${BOARD}" "install bluetooth firmware" "info"
local TMPDIR
# Build firmware
TMPDIR=$(mktemp -d)
pushd "${TMPDIR}" || exit 1
git clone https://github.com/stvhay/rkwifibt || exit 1
cd rkwifibt || exit 1
make -C realtek/rtk_hciattach || exit 1
# Install the firmware and utility
mkdir -p "${SDCARD}/lib/firmware/rtl_bt"
cp -fr realtek/RTL8821CS/* "${SDCARD}/lib/firmware/rtl_bt/"
cp -f realtek/rtk_hciattach/rtk_hciattach "${SDCARD}/usr/bin/"
cp -f bt_load_rtk_firmware "${SDCARD}/usr/bin/"
chroot_sdcard chmod +x /usr/bin/{rtk_hciattach,bt_load_rtk_firmware}
echo hci_uart >> "${SDCARD}/etc/modules"
popd || exit 1
#TODO this should probably be replaced with the existing extensions/bluetooth-hciattach.sh
display_alert "${BOARD}" "setup bluetooth service" "info"
# Systemd service
cat > "${SDCARD}/etc/systemd/system/bluetooth-rtl8821cs.service" <<- EOD
[Unit]
Description=RTL8821CS Firmware Service
After=network.target
[Service]
Type=oneshot
Environment=BT_TTY_DEV=/dev/ttyS9
ExecStart=/usr/bin/bt_load_rtk_firmware
RemainAfterExit=true
StandardOutput=journal
[Install]
WantedBy=multi-user.target
EOD
chroot_sdcard systemctl enable bluetooth-rtl8821cs.service
}
function post_family_tweaks__indiedroid_naming_audios() {
display_alert "$BOARD" "Renaming indiedroid audios" "info"
mkdir -p $SDCARD/etc/udev/rules.d/
echo 'SUBSYSTEM=="sound", ENV{ID_PATH}=="platform-hdmi0-sound", ENV{SOUND_DESCRIPTION}="HDMI0 Audio"' > $SDCARD/etc/udev/rules.d/90-naming-audios.rules
echo 'SUBSYSTEM=="sound", ENV{ID_PATH}=="platform-dp0-sound", ENV{SOUND_DESCRIPTION}="DP0 Audio"' >> $SDCARD/etc/udev/rules.d/90-naming-audios.rules
echo 'SUBSYSTEM=="sound", ENV{ID_PATH}=="platform-es8388-sound", ENV{SOUND_DESCRIPTION}="ES8388 Audio"' >> $SDCARD/etc/udev/rules.d/90-naming-audios.rules
return 0
}

View File

@ -0,0 +1,8 @@
# JetHub D1 (j100) Amlogic A113D quad core 512Mb/1Gb RAM SoC, eMMC 8/16Gb
BOARD_NAME="JetHub D1"
BOARDFAMILY="jethub"
BOARD_MAINTAINER="adeepn"
BOOTCONFIG="jethub_j100_defconfig"
KERNEL_TARGET="current,edge"
PACKAGE_LIST_BOARD="libubootenv-tool apparmor rfkill bluetooth bluez bluez-tools python3-pip watchdog python3-serial python3-intelhex python3-intelhex"
DEFAULT_CONSOLE="serial"

View File

@ -0,0 +1,8 @@
# JetHub H1 (j80) Amlogic S905w quad core 1Gb RAM SoC, eMMC 8/16Gb
BOARD_NAME="JetHub H1"
BOARDFAMILY="jethub"
BOARD_MAINTAINER="adeepn"
BOOTCONFIG="jethub_j80_defconfig"
KERNEL_TARGET="current,edge"
PACKAGE_LIST_BOARD="libubootenv-tool apparmor rfkill bluetooth bluez bluez-tools python3-pip watchdog python3-serial python3-intelhex python3-intelhex"
DEFAULT_CONSOLE="serial"

View File

@ -0,0 +1,32 @@
# Nvidia Jetson Nano quad core 2G/4GB SoC 4 x USB3 HDMI & DP
BOARD_NAME="Jetson Nano"
BOARDFAMILY="media"
BOARD_MAINTAINER="150balbes"
BOOTCONFIG="none"
KERNEL_TARGET="current,edge"
FULL_DESKTOP="yes"
BOOT_LOGO="desktop"
BOOT_FDT_FILE="nvidia/tegra210-p3450-0000.dtb"
SRC_EXTLINUX="yes"
SRC_CMDLINE="console=ttyS0,115200n8 console=tty0"
function post_family_tweaks__Jetson-nano() {
display_alert "$BOARD" "Installing bsp firmware and fixups" "info"
install -m 755 $SRC/packages/blobs/jetson/jetson.sh $SDCARD/etc/initramfs-tools/hooks/jetson.sh
if [[ $BRANCH == legacy ]]; then
install -m 755 $SRC/packages/blobs/jetson/tegra21x_xusb_firmware $SDCARD/lib/firmware/tegra21x_xusb_firmware
install -m 755 $SRC/packages/blobs/jetson/asound.conf.tegrahda $SDCARD/etc/asound.conf.tegrahda
install -m 755 $SRC/packages/blobs/jetson/asound.conf.tegrahda $SDCARD/etc/asound.conf
install -m 755 $SRC/packages/blobs/jetson/asound.conf.tegrasndt210ref $SDCARD/etc/asound.conf.tegrasndt210ref
install -m 755 $SRC/packages/blobs/jetson/tegra-hda.conf $SDCARD/usr/share/alsa/cards/tegra-hda.conf
install -m 755 $SRC/packages/blobs/jetson/tegra-snd-t210r.conf $SDCARD/usr/share/alsa/cards/tegra-snd-t210r.conf
sed -e 's/exit 0//g' -i $SDCARD/etc/rc.local
echo "su -c 'echo 255 > /sys/devices/pwm-fan/target_pwm'" >> $SDCARD/etc/rc.local
echo "exit 0" >> $SDCARD/etc/rc.local
else
cp -R $SRC/packages/blobs/jetson/firmware/* $SDCARD/lib/firmware/
fi
return 0
}

View File

@ -0,0 +1,11 @@
# Rockchip RK3399 hexa core 2G/4GB SoC GBe eMMC USB3 WiFi
BOARD_NAME="Khadas Edge"
BOARDFAMILY="rockchip64"
BOARD_MAINTAINER=""
BOOTCONFIG="khadas-edge-v-rk3399_defconfig"
KERNEL_TARGET="current,edge"
FULL_DESKTOP="yes"
BOOT_LOGO="desktop"
BOOT_SUPPORT_SPI=yes
BOOT_SCENARIO="tpl-spl-blob"
ASOUND_STATE="asound.state.rk3399"

View File

@ -0,0 +1,21 @@
# Rockchip RK3588s 2GB-16GB GBE eMMC NVMe SATA USB3 WiFi
declare -g BOARD_NAME="Khadas Edge2"
declare -g BOARDFAMILY="rockchip-rk3588"
declare -g BOARD_MAINTAINER="igorpecovnik"
declare -g BOOT_SOC="rk3588" # Just to avoid errors in rockchip64_commmon
declare -g KERNEL_TARGET="legacy"
declare -g IMAGE_PARTITION_TABLE="gpt"
declare -g BOOT_FDT_FILE="rockchip/rk3588s-khadas-edge2.dtb" # Specific to this board
declare -g BLUETOOTH_HCIATTACH_PARAMS="-s 115200 /dev/ttyS9 bcm43xx 1500000" # For the bluetooth-hciattach extension
enable_extension "bluetooth-hciattach" # Enable the bluetooth-hciattach extension
declare -g KHADAS_OOWOW_BOARD_ID="Edge2" # for use with EXT=output-image-oowow
# for the kedge2, we're counting on the blobs+u-boot in SPI working, as it comes from factory. It does not support bootscripts.
function post_family_config_branch_legacy__uboot_kedge2() {
display_alert "$BOARD" "Configuring ($BOARD) non-u-boot" "info"
unset BOOTSOURCE
declare -g BOOTCONFIG='none'
declare -g SRC_EXTLINUX="yes" # For now, use extlinux. Thanks Monka
}

View File

@ -0,0 +1,8 @@
# Amlogic S905x quad core 2Gb RAM SoC eMMC
BOARD_NAME="Khadas VIM1"
BOARDFAMILY="meson-gxl"
BOARD_MAINTAINER="igorpecovnik"
BOOTCONFIG="khadas-vim_defconfig"
KERNEL_TARGET="current,edge"
FULL_DESKTOP="yes"
BOOT_LOGO="desktop"

View File

@ -0,0 +1,21 @@
# Amlogic S905Y4 4C 2GHz Cortex-A35 Mali-G31 MP2 2GB LPDDR4 16GB eMMC AP6256
BOARD_NAME="Khadas VIM1S" # don't confuse with VIM1 (S905X)
BOARDFAMILY="meson-s4t7"
KERNEL_TARGET="legacy"
BOARD_MAINTAINER="rpardini viraniac"
SERIALCON="ttyS0" # for vendor kernel
# BOOT_FDT_FILE="amlogic/kvim1s.dtb" # unset on purpose: uboot auto-determines the DTB to use
# build uboot from source
BOOTCONFIG="kvim1s_defconfig"
KHADAS_BOARD_ID="kvim1s" # used to compile the fip blobs
declare -g KHADAS_OOWOW_BOARD_ID="VIM1S" # for use with EXT=output-image-oowow
OVERLAY_PREFIX='s4-s905y4'
function image_specific_armbian_env_ready__set_vim1s_specific_parameters() {
display_alert "Writing vim1s parameters in /boot/armbianEnv.txt"
run_host_command_logged echo "earlycon=on" >>${SDCARD}/boot/armbianEnv.txt
run_host_command_logged echo "extraboardargs=meson-gx-mmc.caps2_quirks=mmc-hs400" >>${SDCARD}/boot/armbianEnv.txt
}

View File

@ -0,0 +1,8 @@
# Amlogic S912 octa core 2/3Gb RAM SoC eMMC
BOARD_NAME="Khadas VIM2"
BOARDFAMILY="meson-gxl"
BOARD_MAINTAINER="igorpecovnik"
BOOTCONFIG="khadas-vim2_defconfig"
KERNEL_TARGET="current,edge"
FULL_DESKTOP="yes"
BOOT_LOGO="desktop"

View File

@ -0,0 +1,50 @@
# Amlogic A311D 2/4GB RAM eMMC GBE USB3 M.2
BOARD_NAME="Khadas VIM3"
BOARDFAMILY="meson-g12b"
BOARD_MAINTAINER="rpardini NicoD-SBC"
BOOTCONFIG="khadas-vim3_defconfig"
KERNEL_TARGET="current,edge"
FULL_DESKTOP="yes"
SERIALCON="ttyAML0"
BOOT_LOGO="desktop"
BOOT_FDT_FILE="amlogic/meson-g12b-a311d-khadas-vim3.dtb" # there is also a s922x dtb, but vim3 is a311d only
ASOUND_STATE="asound.state.khadas-vim3"
BOOTBRANCH_BOARD="tag:v2023.07-rc4"
BOOTPATCHDIR="v2023.07"
declare -g KHADAS_OOWOW_BOARD_ID="VIM3" # for use with EXT=output-image-oowow
# To enable the SPI NOR the -spi .dtb is required, because eMMC shares a pin with SPI on the VIM3. To use it:
# fdtfile=amlogic/meson-g12b-a311d-khadas-vim3-spinor.dtb # in armbianEnv.txt and reboot, then run armbian-install
# After deploying to SPI-NOR/MTD, return back to the normal DTB, otherwise eMMC speed is impaired.
UBOOT_TARGET_MAP="u-boot-dtb.img;;u-boot.bin.sd.bin:u-boot.bin u-boot-dtb.img u-boot-spi.bin:u-boot-spi.bin"
write_uboot_platform_mtd() {
dd if=$1/u-boot-spi.bin of=/dev/mtdblock0
}
# Bring in some old FIP blobs for the VIM3, for use exclusively with SPI booting. See https://github.com/LibreELEC/amlogic-boot-fip/pull/10
function fetch_sources_tools__libreelec_amlogic_fip_pre_vim3_blob_update() {
fetch_from_repo "https://github.com/LibreELEC/amlogic-boot-fip" "amlogic-boot-fip-vim3-spi" "commit:f49ee39e1c6988b8ddb24f4e5a63286d133864cb" # pre-VIM3/3L DDR update
}
function post_uboot_custom_postprocess__khadas_vim3_uboot_new_and_old_blobs() {
# Preserve the u-boot produced (unsigned) u-boot.bin
run_host_command_logged cp -v u-boot.bin u-boot.bin.orig
# Sign using the old FIP blobs (amlogic-boot-fip-vim3-spi), for use exclusively with SPI booting.
display_alert "Signing u-boot for SPI booting with old blobs" "${BOARD}" "info"
uboot_g12_postprocess "$SRC"/cache/sources/amlogic-boot-fip-vim3-spi/khadas-vim3 g12b
# Once done, store the resulting u-boot.bin as u-boot-spi.bin referenced in the UBOOT_TARGET_MAP above.
run_host_command_logged cp -v u-boot.bin u-boot-spi.bin
# Restore the original, so we can do everything again.
run_host_command_logged cp -v u-boot.bin.orig u-boot.bin
# Do the normal signing, using the regular/updated FIP blobs. This is for eMMC booting.
display_alert "Signing u-boot for eMMC/SD booting with new blobs" "${BOARD}" "info"
uboot_g12_postprocess "$SRC"/cache/sources/amlogic-boot-fip/khadas-vim3 g12b
display_alert "Done postprocessing u-boot with new/old FIP blobs" "${BOARD}" "info"
}

View File

@ -0,0 +1,50 @@
# Amlogic S905D3 quad core 2GB RAM SoC eMMC GBE USB3 SPI
BOARD_NAME="Khadas VIM3L"
BOARDFAMILY="meson-sm1"
BOARD_MAINTAINER="rpardini"
BOOTCONFIG="khadas-vim3l_defconfig"
KERNEL_TARGET="current,edge"
FULL_DESKTOP="yes"
SERIALCON="ttyAML0"
BOOT_LOGO="desktop"
BOOT_FDT_FILE="amlogic/meson-sm1-khadas-vim3l.dtb"
ASOUND_STATE="asound.state.khadas-vim3l"
BOOTBRANCH_BOARD="tag:v2023.07-rc4"
BOOTPATCHDIR="v2023.07"
declare -g KHADAS_OOWOW_BOARD_ID="VIM3L" # for use with EXT=output-image-oowow
# To enable the SPI NOR the -spi .dtb is required, because eMMC shares a pin with SPI on the VIM3. To use it:
# fdtfile=amlogic/meson-sm1-khadas-vim3l-spinor.dtb # in armbianEnv.txt and reboot, then run armbian-install
# After deploying to SPI-NOR/MTD, return back to the normal DTB, otherwise eMMC speed is impaired.
UBOOT_TARGET_MAP="u-boot-dtb.img;;u-boot.bin.sd.bin:u-boot.bin u-boot-dtb.img u-boot-spi.bin:u-boot-spi.bin"
write_uboot_platform_mtd() {
dd if=$1/u-boot-spi.bin of=/dev/mtdblock0
}
# Bring in some old FIP blobs for the VIM3L, for use exclusively with SPI booting. See https://github.com/LibreELEC/amlogic-boot-fip/pull/10
function fetch_sources_tools__libreelec_amlogic_fip_pre_vim3l_blob_update() {
fetch_from_repo "https://github.com/LibreELEC/amlogic-boot-fip" "amlogic-boot-fip-vim3-spi" "commit:f49ee39e1c6988b8ddb24f4e5a63286d133864cb" # pre-VIM3/3L DDR update
}
function post_uboot_custom_postprocess__khadas_vim3l_uboot_new_and_old_blobs() {
# Preserve the u-boot produced (unsigned) u-boot.bin
run_host_command_logged cp -v u-boot.bin u-boot.bin.orig
# Sign using the old FIP blobs (amlogic-boot-fip-vim3-spi), for use exclusively with SPI booting.
display_alert "Signing u-boot for SPI booting with old blobs" "${BOARD}" "info"
uboot_g12_postprocess "${SRC}"/cache/sources/amlogic-boot-fip-vim3-spi/khadas-vim3l g12a
# Once done, store the resulting u-boot.bin as u-boot-spi.bin referenced in the UBOOT_TARGET_MAP above.
run_host_command_logged cp -v u-boot.bin u-boot-spi.bin
# Restore the original, so we can do everything again.
run_host_command_logged cp -v u-boot.bin.orig u-boot.bin
# Do the normal signing, using the regular/updated FIP blobs. This is for eMMC booting.
display_alert "Signing u-boot for eMMC/SD booting with new blobs" "${BOARD}" "info"
uboot_g12_postprocess "${SRC}"/cache/sources/amlogic-boot-fip/khadas-vim3l g12a
display_alert "Done postprocessing u-boot with new/old FIP blobs" "${BOARD}" "info"
}

View File

@ -0,0 +1,27 @@
# Amlogic A311D2 8GB
BOARD_NAME="Khadas VIM4"
BOARDFAMILY="meson-s4t7"
KERNEL_TARGET="legacy"
BOARD_MAINTAINER="rpardini"
SERIALCON="ttyS0" # for vendor kernel
# BOOT_FDT_FILE="amlogic/kvim4.dtb" # not set on purpose; u-boot auto-selects kvim4.dtb or kvim4n.dtb for "new VIM4"
# build uboot from source
BOOTCONFIG="kvim4_defconfig"
KHADAS_BOARD_ID="kvim4" # used to compile the fip blobs
declare -g KHADAS_OOWOW_BOARD_ID="VIM4" # for use with EXT=output-image-oowow
OVERLAY_PREFIX='t7-a311d2'
# Add modprobe configuration for the ISP, see https://github.com/khadas/fenix/blob/master/archives/filesystem/special/VIM4/etc/modprobe.d/isp.conf
# This avoids a kernel panic related to the ISP firmware; see https://armbian.atlassian.net/browse/AR-1801?focusedCommentId=11995
function post_family_tweaks_bsp__kvim4_isp_modprobe() {
: "${destination:?}"
display_alert "${BOARD}" "Adding modprobe configuration for the ISP" "info"
mkdir -p "${destination}"/etc/modprobe.d
cat <<- EOD > "${destination}"/etc/modprobe.d/isp.conf
options iv009_isp dcam=2
softdep iv009_isp pre: iv009_isp_iq iv009_isp_lens iv009_isp_sensor
EOD
}

View File

@ -0,0 +1,10 @@
# Amlogic S805x quad core 1Gb RAM SoC eMMC
BOARD_NAME="La Frite"
BOARDFAMILY="meson-gxl"
BOARD_MAINTAINER="Tonymac32"
BOOTCONFIG="libretech-ac_defconfig"
BOOT_FDT_FILE="amlogic/meson-gxl-s805x-libretech-ac.dtb"
KERNEL_TARGET="current,edge"
FULL_DESKTOP="yes"
ASOUND_STATE="asound.state.mesongx"
BOOT_LOGO="desktop"

View File

@ -0,0 +1,6 @@
# Allwinner A20 dual core 1Gb SoC 1xSATA Switch
BOARD_NAME="Lamobo R1"
BOARDFAMILY="sun7i"
BOARD_MAINTAINER=""
BOOTCONFIG="Lamobo_R1_defconfig"
KERNEL_TARGET="current,edge"

View File

@ -0,0 +1,12 @@
# Amlogic S905x quad core 2Gb RAM SoC eMMC
BOARD_NAME="Le potato"
BOARDFAMILY="meson-gxl"
BOARD_MAINTAINER="Tonymac32"
BOOTCONFIG="libretech-cc_defconfig"
KERNEL_TARGET="current,edge"
SERIALCON="ttyAML0"
FULL_DESKTOP="yes"
ASOUND_STATE="asound.state.lepotato"
BOOT_LOGO="desktop"
BOOTBRANCH_BOARD="tag:v2022.01"

View File

@ -0,0 +1,18 @@
# RISC-V LicheePi 4A
BOARD_NAME="LicheePi 4A"
BOARDFAMILY="thead"
BOARD_MAINTAINER="chainsx"
KERNEL_TARGET="legacy"
BOOT_FDT_FILE="thead/light-lpi4a.dtb"
SRC_EXTLINUX="yes"
SRC_CMDLINE="console=ttyS0,115200 rootwait rw earlycon clk_ignore_unused loglevel=7 eth=$ethaddr rootrwoptions=rw,noatime rootrwreset=yes"
BOOTCONFIG="light_lpi4a_defconfig"
SKIP_BOOTSPLASH="yes"
BOOTFS_TYPE="ext4"
function post_family_tweaks__licheepi4a() {
display_alert "Applying blobs"
cp -v "$SRC/packages/blobs/riscv64/thead/light_aon_fpga.bin" "$SDCARD/boot/light_aon_fpga.bin"
cp -v "$SRC/packages/blobs/riscv64/thead/light_c906_audio.bin" "$SDCARD/boot/light_c906_audio.bin"
cp -v "$SRC/packages/blobs/riscv64/thead/fw_dynamic.bin" "$SDCARD/boot/fw_dynamic.bin"
}

View File

@ -0,0 +1,6 @@
# Allwinner A10 single core 512Mb SoC
BOARD_NAME="Lime A10"
BOARDFAMILY="sun4i"
BOARD_MAINTAINER=""
BOOTCONFIG="A10-OLinuXino-Lime_defconfig"
KERNEL_TARGET="current,edge"

View File

@ -0,0 +1,9 @@
# Allwinner A33 quad core 1Gb SoC
BOARD_NAME="A33 OLinuXino"
BOARDFAMILY="sun8i"
BOARD_MAINTAINER=""
HAS_VIDEO_OUTPUT="no"
BOOTCONFIG="A33-OLinuXino_defconfig"
OVERLAY_PREFIX="sun8i-a33"
KERNEL_TARGET="legacy,current,edge"

View File

@ -0,0 +1,9 @@
# Allwinner A64 quad core 1GB RAM SoC GBE eMMC Wi-Fi/BT
BOARD_NAME="A64 OLinuXino"
BOARDFAMILY="sun50iw1"
BOARD_MAINTAINER=""
BOOTCONFIG_DEFAULT="sun50iw1p1_config"
BOOTCONFIG="a64-olinuxino_defconfig"
KERNEL_TARGET="legacy,current,edge"
FULL_DESKTOP="yes"
CRUSTCONFIG="a64_defconfig"

6
config/boards/lime.csc Normal file
View File

@ -0,0 +1,6 @@
# Allwinner A20 dual core 512Mb SoC
BOARD_NAME="A20 OLinuXino Lime"
BOARDFAMILY="sun7i"
BOARD_MAINTAINER=""
BOOTCONFIG="A20-OLinuXino-Lime_defconfig"
KERNEL_TARGET="current,edge"

7
config/boards/lime2.csc Normal file
View File

@ -0,0 +1,7 @@
# Allwinner A20 dual core 1GB RAM SoC eMMC GBE 1xSATA
BOARD_NAME="A20 OLinuXino Lime 2"
BOARDFAMILY="sun7i"
BOARD_MAINTAINER=""
BOOTCONFIG="A20-OLinuXino-Lime2-eMMC_defconfig"
KERNEL_TARGET="legacy,current,edge"

View File

@ -0,0 +1,7 @@
# Marvell Armada 8040 DDR4 RAM SoC 1xPCIx4 3xSATA 1xGBE 1x2.5GBE 2x10GBE USB3.0 eMMC SPI
BOARD_NAME="Macchiatobin DS"
BOARDFAMILY="mvebu64"
BOARD_MAINTAINER=""
BOOTCONFIG="mvebu_mcbin-88f8040_defconfig"
HAS_VIDEO_OUTPUT="no"
KERNEL_TARGET="current,edge"

View File

@ -0,0 +1,9 @@
# RISC-V Mangopi-MQ D1
BOARD_NAME="Mangopi-MQ"
BOARDFAMILY="d1"
BOARD_MAINTAINER="Zinput"
KERNEL_TARGET="edge"
BOOT_FDT_FILE="allwinner/sun20i-d1-nezha.dtb"
SRC_EXTLINUX="yes"
SRC_CMDLINE="console=ttyS0,115200n8 console=tty0 earlycon=sbi cma=96M rootflags=data=writeback stmmaceth=chain_mode:1 rw"
BOOTCONFIG="nezha_defconfig"

View File

@ -0,0 +1,9 @@
# Rockchip RK3588 SoC octa core 4-16GB SoC 1GBe eMMC USB3 SATA WiFi/BT
declare -g BOARD_NAME="Mekotronics R58 MiniPC"
declare -g BOARDFAMILY="rockchip-rk3588"
declare -g BOARD_MAINTAINER="monkaBlyat"
declare -g KERNEL_TARGET="legacy"
declare -g BOOT_FDT_FILE="rockchip/rk3588-blueberry-minipc-linux.dtb" # Specific to this board
# Source vendor-specific configuration
source "${SRC}/config/sources/vendors/mekotronics/mekotronics-rk3588.conf.sh"

View File

@ -0,0 +1,9 @@
# Rockchip RK3588 SoC octa core 4-16GB SoC 2x1GBe eMMC USB3 NVMe SATA 4G WiFi/BT HDMI DP HDMI-In RS232 RS485
declare -g BOARD_NAME="Mekotronics R58X-4G"
declare -g BOARDFAMILY="rockchip-rk3588"
declare -g BOARD_MAINTAINER="monkaBlyat"
declare -g KERNEL_TARGET="legacy"
declare -g BOOT_FDT_FILE="rockchip/rk3588-blueberry-edge-v12-linux.dtb" # Specific to this board
# Source vendor-specific configuration
source "${SRC}/config/sources/vendors/mekotronics/mekotronics-rk3588.conf.sh"

View File

@ -0,0 +1,9 @@
# Rockchip RK3588 SoC octa core 4-16GB SoC 2x1GBe eMMC USB3 NVMe SATA WiFi/BT HDMI DP HDMI-In RS232 RS485
declare -g BOARD_NAME="Mekotronics R58X"
declare -g BOARDFAMILY="rockchip-rk3588"
declare -g BOARD_MAINTAINER="monkaBlyat"
declare -g KERNEL_TARGET="legacy"
declare -g BOOT_FDT_FILE="rockchip/rk3588-blueberry-edge-v10-linux.dtb" # Specific to this board
# Source vendor-specific configuration
source "${SRC}/config/sources/vendors/mekotronics/mekotronics-rk3588.conf.sh"

Some files were not shown because too many files have changed in this diff Show More