diff --git a/docs/Community_Forums.md b/docs/Community_Forums.md new file mode 100644 index 00000000..a89a9a66 --- /dev/null +++ b/docs/Community_Forums.md @@ -0,0 +1,3 @@ + + +![](images/forums.png) \ No newline at end of file diff --git a/docs/Community_Github.md b/docs/Community_Github.md new file mode 100644 index 00000000..a205f9c2 --- /dev/null +++ b/docs/Community_Github.md @@ -0,0 +1,42 @@ +# Main project repositories + +## Armbian Build + + + +Framework can build generic Armbian or custom Linux image. + +## Armbian Config + + + +Utility for configuring: + +- hardware, +- adjusting services, +- installing applications. + +## Armbian OS + + +Armbian OS assemly line: + +- [daily rolling releases](https://github.com/armbian/os/releases) for supported build targets +- [point releases](https://www.armbian.com/download/?device_support=Standard%20support) for supported build targets + +## Armbian Community + + +Armbian OS community assembly line: + +- [weekly rolling releases](https://github.com/armbian/community/releases) for build targets without a dedicated mainteiner. + +## Armbian Distribution + + +Armbian OS with preinstalled: + +- [HomeAssistant](https://www.home-assistant.io/), +- [OpenHab](https://www.openhab.org/), +- [KaliLinux](https://www.kali.org/), +- [OpenMediaVault](https://www.openmediavault.org/) \ No newline at end of file diff --git a/docs/Community_IRC.md b/docs/Community_IRC.md index 535b50b1..a8a3cb56 100644 --- a/docs/Community_IRC.md +++ b/docs/Community_IRC.md @@ -5,7 +5,7 @@ description: Social media channels maintained by Armbian project team # Social media -## Armbian on Twitter and Mastodon +## Armbian on X and Mastodon Armbian short announcements are done via š• (formerly known as Twitter): and diff --git a/docs/Community_Torrent.md b/docs/Community_Torrent.md deleted file mode 100644 index 41c114bb..00000000 --- a/docs/Community_Torrent.md +++ /dev/null @@ -1,116 +0,0 @@ -# Seed our torrents - - -To secure top download speed around the globe, we need to have as many torrent seeders as possible. Currently we have dedicated seeders in: Estonia, Germany, Pakistan, Slovenia, Argentina, Singapore, USA, ... but we might be slower in China or Japan. - - - -## Prerequisite: - -- Armbian or any Debian or Ubuntu based distribution (check instructions how to run `armbian-config` on a generic Debian/Ubuntu) -- `wget` and `unzip` packages installed -- 1TB of free space - - -a) Installation and auto-config with armbian-config: - - - - login and obtain superuser rights, - execute armbian-config, - select Software -> Softy, - install Transmission server. (use space to confirm and enter to proceed with install) - - - - -Leave `armbian-config` and after a few minutes check your torrent server status with the following command: - -`transmission-remote -n 'transmission:transmission' -l` - -and you should see some progress: - -``` -ID Done Have ETA Up Down Ratio Status Name - 1 0% None Unknown 0.0 0.0 None Idle Armbian_5.25_Bananapi_Debian_jessie_default_3.4.113.7z - 2 19% 40.62 MB 10 min 0.0 1085.0 0.0 Downloading Armbian_5.25_Bananapi_Debian_jessie_next_4.9.7.7z - 3 0% None Unknown 0.0 0.0 None Idle Armbian_5.25_Bananapim2plus_Debian_jessie_default_3.4.113.7z - 4 0% None Unknown 0.0 0.0 None Idle Armbian_5.25_Bananapim2plus_Ubuntu_xenial_default_3.4.113.7z - 5 0% None Unknown 0.0 0.0 None Idle Armbian_5.25_Bananapim2plus_Ubuntu_xenial_default_3.4.113_desktop.7z - - [...] - - 158 0% None Unknown 0.0 0.0 None Queued Armbian_5.27_Tinkerboard_Ubuntu_xenial_default_4.4.66_desktop.7z - 159 0% None Unknown 0.0 0.0 None Queued Armbian_5.27_Tinkerboard_Ubuntu_xenial_next_4.11.0.7z - 160 0% None Unknown 0.0 0.0 None Queued Armbian_5.27_Tinkerboard_Ubuntu_xenial_next_4.11.0_desktop.7z -Sum: 40.62 MB 0.0 1085.0 -``` - -_Note:_ -Torrent server installed this way is auto updating - it checks daily for new images, adds new and purge old ones. - - - - -b) Installation to an existing Transmission daemon (manual configuration) - - -Create file: - -`sudo nano /etc/cron.daily/seed-armbian-torrent` - -with this content: - -``` -#!/bin/bash -# -# armbian torrents auto update -# -# download latest torrent pack -TEMP_DIR=$(mktemp -d || exit 1) -chmod 700 ${TEMP_DIR} -trap "rm -rf \"${TEMP_DIR}\" ; exit 0" 0 1 2 3 15 -wget -qO- -O ${TEMP_DIR}/armbian-torrents.zip https://dl.armbian.com/torrent/all-torrents.zip -# test zip for corruption -unzip -t ${TEMP_DIR}/armbian-torrents.zip >/dev/null 2>&1 -[[ $? -ne 0 ]] && echo "Error in zip" && exit -# extract zip -unzip -o ${TEMP_DIR}/armbian-torrents.zip -d ${TEMP_DIR}/torrent-tmp >/dev/null 2>&1 -# create list of current active torrents -transmission-remote -n 'transmission:transmission' -l | sed '1d; $d' > ${TEMP_DIR}/torrent-tmp/active.torrents -# loop and add/update torrent files -for f in ${TEMP_DIR}/torrent-tmp/*.torrent; do - transmission-remote -n 'transmission:transmission' -a $f > /dev/null 2>&1 - # remove added from the list - pattern="${f//.torrent}"; pattern="${pattern##*/}"; - sed -i "/$pattern/d" ${TEMP_DIR}/torrent-tmp/active.torrents -done -# remove old armbian torrents -while read i; do - [[ $i == *Armbian_* || $i == *gcc-linaro-* || $i == *tar.lz4 ]] && transmission-remote -n 'transmission:transmission' -t $(echo "$i" | awk '{print $1}';) --remove-and-delete -done < ${TEMP_DIR}/torrent-tmp/active.torrents -``` - - - -Change username(transmission) and password(transmission) if have something else than stock, save and exit, then run: - -``` -sudo chmod +x /etc/cron.daily/seed-armbian-torrent -sudo /etc/cron.daily/seed-armbian-torrent -``` - - -How to stop seeding torrents? - - Remove cron job: - - sudo rm /etc/cron.daily/seed-armbian-torrent - - - Remove torrents: - - transmission-remote -n transmission:transmission -t all --remove-and-delete - - This command will remove ALL files on your torrent server! If you seed other stuff do a cherry pick. - diff --git a/docs/Developer-Guide_Build-Preparation.md b/docs/Developer-Guide_Build-Preparation.md index c6722d4e..709cf046 100644 --- a/docs/Developer-Guide_Build-Preparation.md +++ b/docs/Developer-Guide_Build-Preparation.md @@ -2,10 +2,9 @@ ## What do I need? -- x86/x64 machine running any OS; at least 4G RAM, SSD, quad core (recommended), +- x86/x64/aarch64 machine running any OS; at least 4G RAM, SSD, quad core (recommended), - [VirtualBox](https://www.virtualbox.org/wiki/Downloads) or similar virtualization software **(highly recommended with a minimum of 25GB hard disk space for the virtual disk image)** - **The officially supported** compilation environment is [Ubuntu Jammy 22.04.x amd64](https://www.releases.ubuntu.com/jammy/) **only!** - - Ubuntu Focal can be used for building Bionic, Focal and Buster images as well, unsupported though - `binfmt_misc` kernel module (some *ubuntu-cloud* images do not have this module. Switch to a generic kernel if that is the case.) - installed basic system, OpenSSH and Samba (optional) - no spaces in full path to the build script location allowed @@ -64,54 +63,9 @@ RELEASE="bullseye" COMPRESS_OUTPUTIMAGE="sha,gz" ``` -## Using our automated build system - -If you do not own the proper equipment to build images on your own, you can make use of the automated build system. -Packages are recompiled every night (starting at 00:01 CEST) and a few testing images are produced. -These images are accessible on the [download server](https://dl.armbian.com/) under board folder, subfolder "*Nightly*". -Packages, when successfully built, are published in the *beta* repository. -You can switch to *beta* repository in [armbian-config](User-Guide_Armbian-Config.md) or by changing *apt.armbian.com* to *beta.armbian.com* in /etc/apt/sources.list.d/armbian.list. - -Board beta images are defined in board configuration files which are located [here](https://github.com/armbian/build/tree/main/config/boards). -This is a typical board configuration: - -``` - # A20 dual core 1Gb SoC - BOARD_NAME="Banana Pi" - LINUXFAMILY="sun7i" - BOOTCONFIG="Bananapi_defconfig" - MODULES="hci_uart gpio_sunxi rfcomm hidp sunxi-ir bonding spi_sun7i 8021q a20_tp #ap6211" - MODULES_NEXT="brcmfmac bonding" - # - KERNEL_TARGET="legacy,current,edge" - CLI_TARGET="bullseye,jammy:current" - DESKTOP_TARGET="bullseye:legacy,current" - - CLI_BETA_TARGET="" - DESKTOP_BETA_TARGET="" - # - BOARDRATING="" -``` - -You can find more information about those variables [here](https://github.com/armbian/build/blob/main/config/boards/README.md). - -If you want that our automated system start making images for this particular board, you need to alter parameters `CLI_BETA_TARGET` and `DESKTOP_BETA_TARGET`. -Variants are dependent from `KERNEL_TARGET` definitions and supported userlands: `jammy`, `bullseye`. -To edit those parameters you need to push changes to the build script. -You need to [fork a project and create a pull request](Process_Contribute.md) and after it is imported by one of the administrators, images will start to show up in appropriate folder. - -If you want to enable Debian Bullseye desktop image with _current_ kernel choose the following: - - DESKTOP_BETA_TARGET="bullseye:current" - -or for command line interfaces Ubuntu Focal based images with legacy kernel 4.19.x - - CLI_BETA_TARGET="focal:legacy" - -or for image with latest upstream development/bleeding edge kernel. - - DESKTOP_BETA_TARGET="bullseye:edge" +## Using GitHub actions +If you do not own the proper equipment to build images on your own, you can try to use our [official GitHub action](https://github.com/marketplace/actions/rebuild-armbian). ## Using alternate armbian builder repos and branches diff --git a/docs/Developer-Guide_Build-Process.md b/docs/Developer-Guide_Build-Process.md deleted file mode 100644 index 8eac7a10..00000000 --- a/docs/Developer-Guide_Build-Process.md +++ /dev/null @@ -1,112 +0,0 @@ -# What happens behind the build process? - -## Build process summary: - -- creates development environment on top of amd64 Ubuntu 22.04 LTS, -- downloads proven sources, applies patches on top and uses tested configurations, -- cross-compiles universal boot loader (***U-Boot***), kernel and other tools and drivers, -- packs kernel, U-Boot, dtb and root customizations into Debian packages, -- debootstraps minimalistic Debian Bullseye and Ubuntu Jammy into SD card images, -- installs additional packets, applies customizations and shrinks image to its actual size. - -Check this image [compiling example](https://youtu.be/zeShf12MNLg) with partial cache. - - -## Build process details: - -### Creating compile environment - -First things first. All necessary dependencies are downloaded and installed. This happens though both http and torrent network. Btw. having too much unused traffic? [Help us to reduce ours :)](https://forum.armbian.com/topic/4198-seed-our-torrents/) - -### Using board configuration - -We need to get some predefined variables about selected the board. Which kernel & uboot source to use, modules to load, which is the build number, do we need to have a single partition or dual with boot on fat, which extra drivers to compile out of the kernel tree ... -All this stuff is predefined for each and every single supported board. - -### Downloading sources - -When we know which sources to use and where they need to be the download or updated this process starts. This might take from several minutes to several hours. - -### Patching - -In the patching process we are applying patches to the used sources. The process is - depending on selected board - defined in: - - lib/patch/kernel/sun7i-default - lib/patch/kernel/sunxi-dev - ... - lib/patch/u-boot/u-boot-default - lib/patch/u-boot/u-boot-neo-default - ... - -Patch rules for subdirectories are: **KERNEL_FAMILY-BRANCH** for kernel and **U-BOOT-SOURCE-BRANCH** for U-Boot. - -### Debootstrap - -Debootstrap creates fresh Debian / Ubuntu root filesystem templates or use cached under: - - output/cache/rootfs/ - -To recreate those files you need to remove them manually. -From time to time they will be recreated anyway if Armbian updates their rootfs cache. - -### Kernel install - -When the root filesystem is ready we need to install the kernel image with modules, board definitions and firmwares. Along with this we set the CPU frequency min/max, hostname, modules, network interfaces templates. Here is also the place to install headers and fix + native compile them on the way. - -### Distribution fixes - -Each distribution has it's own way of doing things: - -- serial console -- different packets -- configuration locations - -### Board fixes - -Each board has their own tricks: **different device names, firmware loaders, configuration (de)compilers, hardware configurators** - -### Desktop installation - -You can build a desktop environment withing the image. Consider this feature as experimental. Do not expect to have working hardware acceleration since this is a very complicated task and needs individial care for different boards. - -### External applications - -This place is reserved for custom applications. There is one example of application: USB redirector. - -### Closing image - -There is an option to add some extra commands just before closing an image which is also automaticaly shrink to it's actual size with some small reserve. - -### Directory structure - -It will be something like this: - - compile.sh compile execution script - lib/bin/ blobs, firmwares, static compiled, bootsplash - lib/config/ kernel, board, u-boot, hostapd, package list - lib/documentation/ user and developers manual - lib/patch/ collection of kernel and u-boot patches - lib/scripts/ firstrun, arm hardware info, firmware loaders - lib/LICENSE licence description - lib/README.md quick manual - lib/common.sh creates environment, compiles, shrink image - lib/configuration.sh boards presets - kernel source, config, modules, ... - lib/distributions.sh system specific installation and fixes - lib/main.sh user input and script calls - lib/makeboarddeb.sh creates board support package .deb - lib/repo-update.sh creates and updates your local repository - lib/repo-show-sh show packets in your local repository - lib/upgrade.sh script to upgrade older images - sources/ source code for kernel, uboot and other utilities - output/repository repository - output/cache cache for root filesystem and headers compilation - output/debs deb packeges - output/images zip packed RAW image - userpatches/kernel put your kernel patches here - userpatches/u-boot put your u-boot patches here - userpatches/ put your kernel config here - - -## Additional info - -- [Allwinner SBC community](https://linux-sunxi.org/Main_Page) diff --git a/docs/Developer-Guide_Testing-Procedures.md b/docs/Developer-Guide_Testing-Procedures.md deleted file mode 100644 index 07f6025c..00000000 --- a/docs/Developer-Guide_Testing-Procedures.md +++ /dev/null @@ -1,17 +0,0 @@ -It is important for tests to be performed in a consistent manner. -The purpose of formalized testing procedures is to provide a proven, reproducible process for verifying device compatibility and various features within Armbian. -The overall goal is to reduce variance in testing methodologies between individual contributors while enstilling confidence within new contributors and encouraging them to perform quality bug reports and ideally a pull/merge request. - -## Hardware: Micro SD card - -1. Insert the micro SD card **directly** into the corresponding port on the target device, if possible. -If intermediate hardware such as a microSD/USB adapter is used and the card is not detected, please include details of the adapter within the test results -Verify that the card is recognized in ``lsblk`` -2. Verify that the card is recognized by a file manager -(If a device is ejected within the file manager, you may have to physically re-insert the card for it to appear again.) -3. Verify that the card can be mounted within a file manager -4. Navigate to the root directory of the card within a file manager. -Verify that the maximum storage capacity indicated is appropriate given the storage marked on the card -5. Verify that a non-empty text file can be written to the card -6. Verify that existing files may be read on the card -7. Using a N-GB card, verify that checksum evaluations pass if approximately N * 1 GB files are written to the card diff --git a/docs/Developer-Guide_Welcome.md b/docs/Developer-Guide_Welcome.md index 94eac341..11085cc7 100644 --- a/docs/Developer-Guide_Welcome.md +++ b/docs/Developer-Guide_Welcome.md @@ -1,27 +1,11 @@ -# Welcome to `armbian/build`, the Armbian build system +# Welcome to the Armbian build framework documentation! -Welcome to the Armbian build system (`armbian/build`). -The build system has significantly changed since release 23.02, when the `armbian-next` effort was merged into -our `main` branch. -Please expect some rough edges and report them to us. - -## Errors, errors everywhere - -Previously, when faced with an error, the build system would simply ignore them, hardly log them anywhere, and continue. -This led to builds completing successfully, but with (sometimes very sneakily) broken packages and images. -Get used to seeing errors stopping builds now. Inspect the whole log, specially the errors, the last few lines, and the -stack trace. -We try, as much as possible given Bash limitations, to show the source of the error, with a "stack trace" of sorts. -The topmost elements of the stack trace are usually the most relevant. Each line is prefixed with the file and line -number where the error occurred. -Open the file and go to the line number to see the source of the error. Most times, this simple inspection is enough to -understand the error. +Overview: ### (ANSI) Logging -Logging is a bit more structured now. Logs are output to `output/logs`, in a few different formats. -We output ANSI color both to the screen and to the logs. -_Please_ add `SHARE_LOG=yes` to share your logs with us when reporting issues, that allows us to check the logs on a web +Logs are output to `output/logs`, in a few different formats. We output ANSI color both to the screen and to the logs. +_Please_ add `SHARE_LOG=yes` to share your logs with our pastebin service when reporting issues, that allows us to check the logs on a web browser and keep to correct formatting. ## Command line syntax has changed @@ -112,16 +96,10 @@ This is (by far) not a complete list: - although "aggregation" has been rewritten in Python, it still mostly works using the legacy principle, by scanning directories and files in a very complex and error-prone way. This is a source of many bugs and confusion. We plan to replace this with pure extensions eventually. -- "minimal" images are far from really minimal. It is common to see "extensions" that actually remove stuff put there - by the core. Those should be refactored. -- board-side scripts (armbian-config, firstrun, hwoptimization, etc) haven't really changed with armbian-next, and are - in dire need of a rewrite. They're also a source of many bugs and confusion. They also need to be extensible. -- we've mostly working Kernel headers (linux-headers pkg) for 5.10+ including some vendor kernels; no kernel-headers for - 4.x kernels. sorry. We've no plans to support this. +- we've mostly working Kernel headers (linux-headers pkg) for 5.10+ including some vendor kernels ## Multiple u-boot's for same board -Hmm. This is an interesting problem. We can build u-boot twice, using `UBOOT_TARGET_MAP`. -Some example I did in https://github.com/armbian/build/blob/main/config/boards/odroidhc4.conf#L15-L20 may help. +We can build u-boot twice, using `UBOOT_TARGET_MAP`. Some example I did in https://github.com/armbian/build/blob/main/config/boards/odroidhc4.conf#L15-L20 may help. diff --git a/docs/Process_Release-Model.md b/docs/Process_Release-Model.md index 606dccca..5cf4bc5c 100644 --- a/docs/Process_Release-Model.md +++ b/docs/Process_Release-Model.md @@ -1,18 +1,10 @@ -# Rolling releases +## Rolling releases -Armbian makes daily rolliong releases which includes generating daily updates of stable kernels and daily releases of unstable kernels and userspace packages. +Armbian provides automated daily rolling releases of [small selection of images](https://github.com/armbian/os/blob/main/userpatches/targets-release-nightly.yaml) for all supported targets. Images are available at respective board download pages: Armbian also populates packages repository so updates are available as an upgrade to your existing OS. - +## Point releases -Images are available at respective board download pages: - - - -# Point releases - -## Release Dates - -Armbian runs "train" based releases. Whatever is ready to board the train, does so. Whatever isn't ready, has to wait for the next train. This enables us to have a predictable release cycles making it easy to plan. It also puts the responsibility on developers to make sure they have features ready on time. +Armbian runs "train" based point releases. Whatever is ready to board the train, does so. Whatever isn't ready, has to wait for the next train. This enables us to have a predictable release cycles making it easy to plan. It also puts the responsibility on developers to make sure they have features ready on time. Armbian releases quarterly at the end of **February, May, August, November**. Offset is because we all know that nothing happens for half of December. At the beginning of a release cycle, we have a planning meeting and **two weeks before the end of the release we freeze integration of new features**. @@ -26,17 +18,14 @@ Development epics, stories and bugs for each release are tracked through [Jira]( Branches in Armbian follow this convention: - - **Master branch (master):** Main development will happen on the master branch. This is the latest and greatest branch, but is always "stable" and "deployable". All tests always pass on this branch. - - **Maintenance branch (support):** This is the long-term maintenance branch per release. - - **Bleeding edge branch (edge)**: This is a branch created for lengthy and/or involved feature development that could destabilize master. - + - **Main branch (main):** Main development will happen on the main branch. This is the latest and greatest branch, but is always "stable" and "deployable". All tests always pass on this branch. + - **Release branch (v24.08 for example):** This is a branch per release with frozen external sources. + Each Armbian release will have the following version format: **Format:** `..` -`` and `` version will be incremented at the end of the release cycles while `` is incremented for a fix (or set of fixes) - -Tags are used in ad-hoc manner. +`` and `` version are incremented at the end of the release cycles while `` is incremented for a fix. ## Release Naming @@ -62,7 +51,14 @@ Tags are used in ad-hoc manner. | 23.11 | Topi | November | [done](https://armbian.atlassian.net/projects/AR/versions/10016/tab/release-report-all-issues) | 24.02 | Kereru | February | [done](https://armbian.atlassian.net/projects/AR/versions/10017/tab/release-report-all-issues) | 24.05 | Havier | May | [done](https://armbian.atlassian.net/projects/AR/versions/10018/tab/release-report-all-issues) -| 24.08 | Yelt | August | planned +| 24.08 | Yelt | August | [done](https://armbian.atlassian.net/projects/AR/versions/10019/tab/release-report-all-issues) +| 24.11 | Stirk | August | planned +| 25.02 | Iiwi | August | planned +| 25.05 | Caiman | August | planned +| 25.08 | Dunnart | August | planned +| 25.11 | Brach | August | planned +| 26.02 | Goa | August | planned + by [https://www.codenamegenerator.com](https://www.codenamegenerator.com) from unusual animals @@ -215,26 +211,3 @@ following by commiting this code to build framework. - Point Armbian build system to new release - Update armbian documentation to reflect current release - Celebrate - -## Release Testing - -See [Opportunties for improvement](#opportunities-for-improvement) - -## Reflection on Prior Releases - -### Opportunities for Improvement - -#### wireless driver testing - -* wireless is a particularly sensitive issue. We need to test, fix, or at least be able to inform others of what is broken - -#### Bug Tracking - -#### Testing - -#### Image Downloads - -### Positive Observations - -* Good response from community for testing assistance -* Release was on time diff --git a/docs/User-Guide_Armbian-Config.md b/docs/User-Guide_Armbian-Config.md index eff57d85..1f3b2495 100644 --- a/docs/User-Guide_Armbian-Config.md +++ b/docs/User-Guide_Armbian-Config.md @@ -1,84 +1,719 @@ -# Armbian configuration utility +# Important! -### Note: armbian-config is undergoing major rewrite and therefore is not receiving much attention. So functions might not be available or even broken, especially on more recent boards. +Following instructions are valid for next generation of Armbian config utility which is due for integration in **Armbian v24.11**. Until then please follow this installation instructions to test it out: -![](https://raw.githubusercontent.com/armbian/config/master/images/animated-888.gif) + -Is a base utility for configuring your board, divided into four main sections: +# Armbian Configuration Utility (Next Generation) -- **S**ystem - system and security settings, -- **N**etwork - wired, wireless, Bluetooth, access point, -- **P**ersonal - timezone, language, hostname, -- **S**oftware - system and 3rd party software install. + + +Utility for configuring your board, adjusting services, and installing applications. It comes with Armbian by default. + +To start the Armbian configuration utility, use the following command: +~~~ +sudo armbian-config +~~~ + +- ## **System** + - **S01** - Enable Armbian kernel/firmware upgrades + - **S02** - Disable Armbian kernel upgrades + - **S03** - Edit the boot environment + - **S04** - Install Linux headers + - **S05** - Remove Linux headers + - **S06** - Install to internal storage + - **S07.1** - Manage SSH login options + - **S17** - Change shell system wide to BASH + - **S18** - Change shell system wide to ZSH + - **S19** - Switch to rolling release + - **S20** - Switch to stable release + - **S21** - Enable read only filesystem + - **S22** - Disable read only filesystem + - **S23** - Adjust welcome screen (motd) + - **S24** - Install alternative kernels + - **S25** - Distribution upgrades + - **S28** - Manage device tree overlays - +- ## **Network** + - **N01** - Configure network interfaces + - **N15** - Install Bluetooth support + - **N16** - Remove Bluetooth support + - **N17** - Bluetooth Discover + - **N18** - Toggle system IPv6/IPv4 internet protocol -The tool needs root privileges to work and can be launched by entering ```sudo armbian-config``` at the terminal prompt or by clicking to the armbian-config menu item on desktop images. -## System +- ## **Localisation** + - **L00** - Change Global timezone (WIP) + - **L01** - Change Locales reconfigure the language and character set + - **L02** - Change Keyboard layout + - **L03** - Change APT mirrors + - **L04** - Change System Hostname -- **I**nstall - installs to SATA, eMMC, NAND or USB. It gives you an option to install the system to more resilient and faster internal or external media. You can also change filesystem type to ext2,3,4 or BTRFS (if supported), -- **F**reeze - freeze or unfreeze kernel and board support packages, to avoid upgrading, -- **N**ightly - switch between nightly automated beta and stable builds, -- **B**ootenv - edit boot environment and alter kernel boot parameters, -- **H**ardware - toggle board low level functions: UART, I2C, SPI, ... -- **S**witch - switch to/between alternative kernels: legacy, current, edge -- **S**SH - reconfigure SSH daemon. Permit root login, toggle ssh key and mobile phone authentication, -- **F**irmware - execute apt update and upgrade to update your system, -- **Z**shell - toogle stock BASH and ZSH with [Oh My ZSH](https://ohmyz.sh/) and [tmux](https://en.wikipedia.org/wiki/Tmux) -- **E**nable - toggle desktop on and off (on desktop images) -- **L**ightdm - change login managers from none to lightdm (on desktop images) -- **R**DP - toggle remote desktop from Windows (on desktop images) -- **O**verlayroot - toggle overlayroot (Ubuntu images) -- **M**inimal - install minimal Armbian XFCE powered desktop, -- **D**efault - install Armbian XFCE powered desktop with web browser and extras. -## Network +- ## **Software** + - **Desktops** - Install Desktop Environments + - **Netconfig** - Network tools + - **DevTools** - Development + - **Benchy** - System benchmaking and diagnostics + - **Containers** - Containerlization and Virtual Machines + - **Media** - Media Servers and Editors + - **Management** - Remote Management tools -- **I**P - choose to select dynamic or edit static IP address, -- **H**otspot - create or manage wireless access point. If your wireless adapter is recognized by a kernel, then armbian-config utility auto selects best mode on the selected device. It can detect 802.11n, 802.11a and 802.11ac. It also knows how to handle some special Realtek adapters, -- **I**PV6 - toggle IPV6 for apt and system, -- **I**perf3 - toogle network troughput tests daemon, -- **L**TE - 3G/4G LTE modem management -- **W**iFi - manage wireless networking. Connect with Wifi network. You can create multiple wireless connections at the same time. They are managed by Network Manager, -- **B**T install - pair Bluetooth devices without PIN code, -- **A**dvanced - edit network config manually, -- **F**orget - disconnets and clear all wireless connections. -## Personal settings +- ## **Help** + - **H00** - About This system. (WIP) + - **H02** - List of Config function(WIP) -- **T**imezone - change timezone, -- **L**ocales - reconfigure language and character set, -- **K**eyboard - change console keyboaard settings, -- **H**ostname - change hostname, -- **M**irror - change to backup APT repository mirror in case of troubles, -- **W**elcome - toggle welcome screen items. +## Install +Armbian installation +~~~ +sudo apt install armbian-config +~~~ -## Software +3rd party Debian based distributions +~~~ +{ + sudo wget https://apt.armbian.com/armbian.key -O key + sudo gpg --dearmor < key | sudo tee /usr/share/keyrings/armbian.gpg > /dev/null + sudo chmod go+r /usr/share/keyrings/armbian.gpg + sudo echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/armbian.gpg] http://apt.armbian.com $(lsb_release -cs) main $(lsb_release -cs)-utils $(lsb_release -cs)-desktop" | sudo tee /etc/apt/sources.list.d/armbian.list + sudo apt update + sudo apt install armbian-config +} +~~~ -Software installation menu provides automated install of the following packages. +*** -- **s**ofty - - [TV headend](https://tvheadend.org/) *(IPTV server)* - - [Syncthing](https://syncthing.net/) *(personal cloud)* - - [SoftEther VPN server](https://www.softether.org/) *(VPN server)* - - [Plex](https://www.plex.tv/) *(Plex media server)* - - [Radarr](https://radarr.video/) *(Movie downloading server)* - - [Sonarr](https://sonarr.tv/) *(TV shows downloading server)* - - [Transmission](https://transmissionbt.com/) *(torrent server)* - - [ISPConfig](https://www.ispconfig.org/) *(WEB & MAIL server)* - - [nextcloudpi](https://nextcloudpi.com/) *(Nextcloud personal cloud)* - - [Openmediavault NAS](https://www.openmediavault.org/) *(NAS server)* - - [PI hole](https://pi-hole.net) *(ad blocker)* - - [UrBackup](https://www.urbackup.org/) *(client/server backup system)* - - [Docker](https://www.docker.com) *(Docker CE engine)* - - [Mayan EDMS](https://www.mayan-edms.com/) *(Document management system within Docker)* - - [MiniDLNA](https://minidlna.sourceforge.net/) *(media sharing)* -- **M**onitor = simple CLI monitoring -- **D**iagnostics = create a summary of logs and upload them to paste.bin -- **T**oggle kernel headers, RDP service, Thunderbird and Libreoffice (desktop builds) +## CLI options +Command line options. -## Sources +Use: +~~~ +armbian-config --help +~~~ + +Outputs: +~~~ + + System - System wide and admin settings (x86_64) + --cmd S01 - Enable Armbian kernel/firmware upgrades + --cmd S02 - Disable Armbian kernel upgrades + --cmd S03 - Edit the boot environment + --cmd S04 - Install Linux headers + --cmd S05 - Remove Linux headers + --cmd S06 - Install to internal storage + S07.1 - Manage SSH login options + --cmd S07 - Disable root login + --cmd S08 - Enable root login + --cmd S09 - Disable password login + --cmd S10 - Enable password login + --cmd S11 - Disable Public key authentication login + --cmd S12 - Enable Public key authentication login + --cmd S13 - Disable OTP authentication + --cmd S14 - Enable OTP authentication + --cmd S15 - Generate new OTP authentication QR code + --cmd S16 - Show OTP authentication QR code + --cmd S30 - Disable last login banner + --cmd S31 - Enable last login banner + --cmd S17 - Change shell system wide to BASH + --cmd S18 - Change shell system wide to ZSH + --cmd S19 - Switch to rolling release + --cmd S20 - Switch to stable release + --cmd S21 - Enable read only filesystem + --cmd S22 - Disable read only filesystem + --cmd S23 - Adjust welcome screen (motd) + --cmd S24 - Install alternative kernels + S25 - Distribution upgrades + --cmd S26 - Upgrade to latest stable / LTS + --cmd S27 - Upgrade to rolling unstable + --cmd S28 - Manage device tree overlays + + Network - Fixed and wireless network settings (eth0) + N01 - Configure network interfaces + --cmd N02 - Add / change interface + --cmd N03 - Revert to Armbian defaults + --cmd N04 - Show configuration + --cmd N06 - Show active status + --cmd N15 - Install Bluetooth support + --cmd N16 - Remove Bluetooth support + --cmd N17 - Bluetooth Discover + --cmd N18 - Toggle system IPv6/IPv4 internet protocol + + Localisation - Localisation (C.UTF-8) + --cmd L00 - Change Global timezone (WIP) + --cmd L01 - Change Locales reconfigure the language and character set + --cmd L02 - Change Keyboard layout + --cmd L03 - Change APT mirrors + --cmd L04 - Change System Hostname + + Software - Run/Install 3rd party applications (Update the package lists.) + Desktops - Install Desktop Environments + --cmd SW02 - Install XFCE desktop + --cmd SW03 - Install Gnome desktop + --cmd SW04 - Install i3-wm desktop + --cmd SW05 - Install Cinnamon desktop + --cmd SW06 - Install kde-neon desktop + Netconfig - Network tools + --cmd SW08 - Install realtime console network usage monitor (nload) + --cmd SW09 - Remove realtime console network usage monitor (nload) + --cmd SW10 - Install bandwidth measuring tool (iperf3) + --cmd SW11 - Remove bandwidth measuring tool (iperf3) + --cmd SW12 - Install IP LAN monitor (iptraf-ng) + --cmd SW13 - Remove IP LAN monitor (iptraf-ng) + --cmd SW14 - Install hostname broadcast via mDNS (avahi-daemon) + --cmd SW15 - Remove hostname broadcast via mDNS (avahi-daemon) + DevTools - Development + --cmd SW17 - Install tools for cloning and managing repositories (git) + --cmd SW18 - Remove tools for cloning and managing repositories (git) + --cmd Benchy - System benchmaking and diagnostics + Containers - Containerlization and Virtual Machines + --cmd SW25 - Install Docker Minimal + --cmd SW26 - Install Docker Engine + --cmd SW27 - Remove Docker + --cmd SW28 - Purge all Docker images, containers, and volumes + Media - Media Servers and Editors + --cmd SW21 - Install Plex Media server + --cmd SW22 - Remove Plex Media server + --cmd SW23 - Install Emby server + --cmd SW24 - Remove Emby server + Management - Remote Management tools + --cmd M00 - Install Cockpit web-based management tool + --cmd M01 - Purge Cockpit web-based management tool + --cmd M02 - Start Cockpit Service + --cmd M03 - Stop Cockpit Service + + Help - About this app + --cmd H00 - About This system. (WIP) + --cmd H02 - List of Config function(WIP) +~~~ + +## Legacy options +Backward Compatible options. + +Use: +~~~ +armbian-config main=Help +~~~ + +Outputs: +~~~ +Legacy Options (Backward Compatible) +Please use 'armbian-config --help' for more information. + +Usage: armbian-configng main=[arguments] selection=[options] + + armbian-configng main=System selection=Headers - Install headers: + armbian-configng main=System selection=Headers_remove - Remove headers: +~~~ + +*** + +## Development + +Development is divided into three sections: + +Click for more info: + +
+Jobs / JSON Object + +A list of the jobs defined in the Jobs file. +~~~ +### S01 + +Enable Armbian kernel/firmware upgrades + +Jobs: + +~~~ +armbian_fw_manipulate unhold +~~~ + +### S02 + +Disable Armbian kernel upgrades + +Jobs: + +~~~ +armbian_fw_manipulate hold +~~~ + +### S03 + +Edit the boot environment + +Jobs: + +~~~ +nano /boot/armbianEnv.txt +~~~ + +### S04 + +Install Linux headers + +Jobs: + +~~~ +Headers_install +~~~ + +### S05 + +Remove Linux headers + +Jobs: + +~~~ +Headers_remove +~~~ + +### S06 + +Install to internal storage + +Jobs: + +~~~ +armbian-install +~~~ + +### S07.1 + +Manage SSH login options + +Jobs: + +~~~ +No commands available +~~~ + +### S17 + +Change shell system wide to BASH + +Jobs: + +~~~ +export BASHLOCATION=$(grep /bash$ /etc/shells | tail -1) +sed -i "s|^SHELL=.*|SHELL=${BASHLOCATION}|" /etc/default/useradd +sed -i "s|^DSHELL=.*|DSHELL=${BASHLOCATION}|" /etc/adduser.conf +apt_install_wrapper apt-get -y purge armbian-zsh zsh-common zsh tmux +update_skel +awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534 || $3 == 0) print $1}' /etc/passwd | xargs -L1 chsh -s $(grep /bash$ /etc/shells | tail -1) +~~~ + +### S18 + +Change shell system wide to ZSH + +Jobs: + +~~~ +export ZSHLOCATION=$(grep /zsh$ /etc/shells | tail -1) +sed -i "s|^SHELL=.*|SHELL=${ZSHLOCATION}|" /etc/default/useradd +sed -i "s|^DSHELL=.*|DSHELL=${ZSHLOCATION}|" /etc/adduser.conf +apt_install_wrapper apt-get -y install armbian-zsh zsh-common zsh tmux +update_skel +awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534 || $3 == 0) print $1}' /etc/passwd | xargs -L1 chsh -s $(grep /zsh$ /etc/shells | tail -1) +~~~ + +### S19 + +Switch to rolling release + +Jobs: + +~~~ +set_rolling +~~~ + +### S20 + +Switch to stable release + +Jobs: + +~~~ +set_stable +~~~ + +### S21 + +Enable read only filesystem + +Jobs: + +~~~ +manage_overlayfs enable +~~~ + +### S22 + +Disable read only filesystem + +Jobs: + +~~~ +manage_overlayfs disable +~~~ + +### S23 + +Adjust welcome screen (motd) + +Jobs: + +~~~ +adjust_motd +~~~ + +### S24 + +Install alternative kernels + +Jobs: + +~~~ +switch_kernels +~~~ + +### S25 + +Distribution upgrades + +Jobs: + +~~~ +No commands available +~~~ + +### S28 + +Manage device tree overlays + +Jobs: + +~~~ +manage_dtoverlays +~~~ + +### N01 + +Configure network interfaces + +Jobs: + +~~~ +No commands available +~~~ + +### N15 + +Install Bluetooth support + +Jobs: + +~~~ +see_current_apt +debconf-apt-progress -- apt-get -y install bluetooth bluez bluez-tools +check_if_installed xserver-xorg && debconf-apt-progress -- apt-get -y --no-install-recommends install pulseaudio-module-bluetooth blueman +~~~ + +### N16 + +Remove Bluetooth support + +Jobs: + +~~~ +see_current_apt +debconf-apt-progress -- apt-get -y remove bluetooth bluez bluez-tools +check_if_installed xserver-xorg && debconf-apt-progress -- apt-get -y remove pulseaudio-module-bluetooth blueman +debconf-apt-progress -- apt -y -qq autoremove +~~~ + +### N17 + +Bluetooth Discover + +Jobs: + +~~~ +connect_bt_interface +~~~ + +### N18 + +Toggle system IPv6/IPv4 internet protocol + +Jobs: + +~~~ +toggle_ipv6 | show_infobox +~~~ + +### L00 + +Change Global timezone (WIP) + +Jobs: + +~~~ +dpkg-reconfigure tzdata +~~~ + +### L01 + +Change Locales reconfigure the language and character set + +Jobs: + +~~~ +dpkg-reconfigure locales +source /etc/default/locale ; sed -i "s/^LANGUAGE=.*/LANGUAGE=$LANG/" /etc/default/locale +export LANGUAGE=$LANG +~~~ + +### L02 + +Change Keyboard layout + +Jobs: + +~~~ +dpkg-reconfigure keyboard-configuration ; setupcon +update-initramfs -u +~~~ + +### L03 + +Change APT mirrors + +Jobs: + +~~~ +get_user_continue "This is only a frontend test" process_input +~~~ + +### L04 + +Change System Hostname + +Jobs: + +~~~ +change_system_hostname +~~~ + +### Desktops + +Install Desktop Environments + +Jobs: + +~~~ +No commands available +~~~ + +### Netconfig + +Network tools + +Jobs: + +~~~ +No commands available +~~~ + +### DevTools + +Development + +Jobs: + +~~~ +No commands available +~~~ + +### Benchy + +System benchmaking and diagnostics + +Jobs: + +~~~ +see_monitoring +~~~ + +### Containers + +Containerlization and Virtual Machines + +Jobs: + +~~~ +No commands available +~~~ + +### Media + +Media Servers and Editors + +Jobs: + +~~~ +No commands available +~~~ + +### Management + +Remote Management tools + +Jobs: + +~~~ +No commands available +~~~ + +### H00 + +About This system. (WIP) + +Jobs: + +~~~ +show_message <<< "This app is to help execute procedures to configure your system + +Some options may not work on manually modified systems" +~~~ + +### H02 + +List of Config function(WIP) + +Jobs: + +~~~ +show_message <<< see_use +~~~ +~~~ +
+ + +
+Jobs API / Helper Functions + +These helper functions facilitate various operations related to job management, such as creation, updating, deletion, and listing of jobs, acting as a practical API for developers. + +| Description | Example | Credit | +|:----------- | ------- |:------:| +| Generate a Help message legacy cli commands. | see_cli_legacy | Joey Turner +| Run time variables Migrated procedures from Armbian config. | set_runtime_variables | Igor Pecovnik +| Toggle SSH lastlog | toggle_ssh_lastlog | tearran +| Set Armbian to rolling release | set_rolling | Tearran +| Generate this markdown table of all module_options | see_function_table_md | Joey Turner +| Switching to alternative kernels | | Igor +| Set Armbian root filesystem to read only | manage_overlayfs enable|disable | igorpecovnik +| Display a menu from pipe | show_menu <<< armbianmonitor -h ; | Joey Turner +| Build the main menu from a object | generate_top_menu 'json_data' | Joey Turner +| Migrated procedures from Armbian config. | is_package_manager_running | Igor Pecovnik +| Migrated procedures from Armbian config. | check_desktop | Igor Pecovnik +| Generate Document files. | generate_readme | Joey Turner +| | | Igor Pecovnik +| Needed by generate_menu | | Joey Turner +| Display a Yes/No dialog box and process continue/exit | get_user_continue 'Do you wish to continue?' process_input | Joey Turner +| Display a message box | show_message <<< 'hello world' | Joey Turner +| Migrated procedures from Armbian config. | connect_bt_interface | Igor Pecovnik +| Menu for armbianmonitor features | see_monitoring | Joey Turner +| Enable/disable device tree overlays | manage_dtoverlays | Gunjan Gupta +| Show or generate QR code for Google OTP | qr_code generate | Igor Pecovnik +| Check if kernel headers are installed | are_headers_installed | Gunjan Gupta +| Check when apt list was last updated and suggest updating or update | see_current_apt || see_current_apt update | Joey Turner +| Migrated procedures from Armbian config. | check_if_installed nano | Igor Pecovnik +| Generate 'Armbian CPU logo' SVG for document file. | generate_svg | Joey Turner +| Remove Linux headers | Headers_remove | Joey Turner +| Update submenu descriptions based on conditions | update_submenu_data | Joey Turner +| sanitize input cli | sanitize_input | +| Check if a domain is reachable via IPv4 and IPv6 | check_ip_version google.com | Joey Turner +| Migrated procedures from Armbian config. | set_header_remove | Igor Pecovnik +| Generate a submenu from a parent_id | generate_menu 'parent_id' | Tearran +| Generate a markdown list json objects using jq. | see_jq_menu_list | Joey Turner +| Generate jobs from JSON file. | generate_jobs_from_json | Joey Turner +| Install kernel headers | is_package_manager_running | Joey Turner +| Toggle IPv6 on or off | toggle_ipv6 | Joey Turner +| Adjust welcome screen (motd) | | igorpecovnik +| Generate JSON-like object file. | generate_json | Joey Turner +| Install DE | install_de | Igor Pecovnik +| Install wrapper | apt_install_wrapper apt-get -y purge armbian-zsh | igorpecovnik +| Netplan wrapper | network_config | Igor Pecovnik +| Change the background color of the terminal or dialog box | set_colors 0-7 | Joey Turner +| Serve the edit and debug server. | serve_doc | Joey Turner +| Update JSON data with system information | update_json_data | Joey Turner +| pipeline strings to an infobox | show_infobox <<< 'hello world' ; | Joey Turner +| Stop hostapd, clean config | default_wireless_network_config | Igor Pecovnik +| Parse json to get list of desired menu or submenu items | parse_menu_items 'menu_options_array' | Gunjan Gupta +| Show the usage of the functions. | see_use | Joey Turner +| Generate a Help message for cli commands. | see_cmd_list [catagory] | Joey Turner +| Revert network config back to Armbian defaults | default_network_config | Igor Pecovnik +| freeze/unhold/reinstall armbian related packages. | armbian_fw_manipulate unhold|freeze|reinstall | Igor Pecovnik +| Check the internet connection with fallback DNS | see_ping | Joey Turner +| Upgrade to next stable or rolling release | release_upgrade stable verify | Igor Pecovnik +| Install docker from a repo using apt | install_docker engine | Kat Schwarz +| change_system_hostname | change_system_hostname | igorpecovnik +| Set Armbian to stable release | set_stable | Tearran +| Secure version of get_user_continue | get_user_continue_secure 'Do you wish to continue?' process_input | Joey Turner + + +
+ + +
+Runtime / Board Statuses + +(WIP) + +This section outlines the runtime environment to check configurations and statuses for dynamically managing jobs based on JSON data. + +(WIP) + +
+ + +## Testing and contributing + +
+Get Development + +Install the dependencies: +~~~ +sudo apt install git jq whiptail +~~~ + +Get Development and contribute: +~~~ +{ +git clone https://github.com/armbian/configng +cd configng +./armbian-configng --help +} +~~~ + +Install and test Development deb: +~~~ +{ + sudo apt install whiptail + latest_release=$(curl -s https://api.github.com/repos/armbian/configng/releases/latest) + deb_url=$(echo "$latest_release" | jq -r '.assets[] | select(.name | endswith(".deb")) | .browser_download_url') + curl -LO "$deb_url" + deb_file=$(echo "$deb_url" | awk -F"/" '{print $NF}') + sudo dpkg -i "$deb_file" + sudo dpkg --configure -a + sudo apt --fix-broken install +} +~~~ + +
-[https://github.com/armbian/config](https://github.com/armbian/config) diff --git a/docs/User-Guide_Getting-Started.md b/docs/User-Guide_Getting-Started.md index af70bd80..78a05691 100644 --- a/docs/User-Guide_Getting-Started.md +++ b/docs/User-Guide_Getting-Started.md @@ -2,101 +2,129 @@ -Mentioned links: +!!! tips "New users" -- [https://gitlab.com/bztsrc/usbimager/](https://gitlab.com/bztsrc/usbimager/) -- [https://forum.armbian.com/topic/4767-powering-through-micro-usb/](https://forum.armbian.com/topic/4767-powering-through-micro-usb/) -- [https://docs.armbian.com/](https://docs.armbian.com/) -- [https://forum.armbian.com/profile/9032-werner/](https://forum.armbian.com/profile/9032-werner/) -- [https://forum.armbian.com/topic/12803-armbian-irc-chat/](https://forum.armbian.com/topic/12803-armbian-irc-chat/) + Please, make sure you have: -## Prerequisites for new users + - a proper power supply according to the board manufacturer requirements + - a reliable SD card (see below "How to prepare a SD card?") -Please, make sure you have: - -- a proper power supply according to the board manufacturer requirements (basic usage example: 5V/2A with DC Jack barrel or **thick** USB cable) -- a reliable SD card (see below "How to prepare a SD card?") - -## What to download? +### What to download? The download for each image consists of three separate files: -- **.xz**-compressed image file -- **.sha file** for download verification -- **.asc file** for image authentication +- **.xz** compressed image file +- **.sha file** for download verification (optional) +- **.asc file** for image authentication (optional) + +!!! question "How to check download authenticity?" + + All our images are digitally signed and therefore it is possible to check their authenticity. You need to issue these commands (Linux/macOS, you might need to install dependencies first, eg. `sudo apt-get install gnupg ` on Debian/Ubuntu or `brew install gnupg ` on macOS. on windows install the current simple gnupg [Gnupg](https://gnupg.org/download/): + + ```sh + # download public key from the database + gpg --keyserver hkp://keyserver.ubuntu.com --recv-key DF00FAF1C577104B50BF1D0093D6889F9F0E78D5 + + # perform verification + gpg --verify Armbian_5.18_Armada_Debian_jessie_3.10.94.img.xz.asc + + # proper response + gpg: Signature made sob 09 jan 2016 15:01:03 CET using RSA key ID 9F0E78D5 + gpg: Good signature from "Igor Pecovnik (Ljubljana, Slovenia) " + + # wrong reponse. Not genuine Armbian image! + gpg: Signature made Sun 03 Jan 2016 11:46:25 AM CET using RSA key ID 9F0E78D5 + gpg: BAD signature from "Igor Pecovnik (Ljubljana, Slovenia) " + ``` + It is safe to ignore the message `WARNING: This key is not certified with a trusted signature!`. + +!!! question "How to check download integrity?" + + Since it might happen that your download got somehow corrupted we integrate a checksum/hash for the image. You can compare the image's SHA-256 hash with the one contained in the `sha256sum.sha` file. + + On Windows, you can download and use the [QuickHash GUI](https://www.quickhash-gui.org/download/quickhash-v3-1-0-windows/) and follow the instructions in the gui. + + while on Linux/macOS, in the directory in which you have downloaded the files ,you would do this + + ```sh + shasum -a 256 -c Armbian_*.img.sha + #good response + Armbian_5.35_Clearfogpro_Debian_stretch_next_4.13.16.img: OK + ``` For each board we usually provide various image types: -- **CLI** - server variant without desktop environment -- **minimal** - very lightweight server variant with just the bare minimum, not even includes `armbian-config`. Everything can be installed via `apt`. -- **Desktop** full featured desktop image with either Ubuntu Jammy userspace **or** Debian Bookworm userspace +- **Minimal** - lightweight CLI with bare minimum of packages +- **Server** - server variant with preinstalled standard utilities +- **Desktop** full featured desktop image -Other (unsupported) builds may also be available (like Debian Bullseye/Sid or Ubuntu Lunar/Mantic). -Some boards have different options due to their hardware specialities - router or IoT boards. +For some boards we provide only minimal images due to their hardware limitations. -### Legacy, current or edge? +### Debian or Ubuntu? -- **legacy** is either a vendor provided kernel or an old LTS mainline kernel. Use if either _current_ is not available or something does not work well. -- **current** is usually following current mainline LTS kernel and considered fully supported and can bring up features video acceleration for example -- **edge** is as the name implies cutting-edge and usually following the latest mainline kernel or 3rd party development branch. Untested, unstable, can break at any time, for experienced users only. +If you have no special preferences that require specific versions, we recommend Ubuntu based Armbian. -The level of kernel support however always depends on the board family. -If in your specific case something does not work well, you are always free to try an image with an other kernel included. +### Vendor, current? -### What are testing images *(WIP)*? +In some cases we provide images with different firmware. They differ in level of hardware support. Focus into: -- made from stable branches -- not very well tested -- for end users +- **vendor** contains vendor provided kernel which usually has best hardware support while version can be outdated, containin less general fixes +- **current** is following latest [mainline LTS kernel](https://www.kernel.org/category/releases.html) and is in most cases best choice -**Do not use** testing or edge images in a productive environment. We do appreciate your constructive [feedback to developers](https://forum.armbian.com/forum/4-development/). +And use those if they are the only one / for testings: -### How to check download authenticity? +- **edge** is as the name implies cutting-edge fresh / development / latest stable. It is only automatically tested and can break at any time. Recommended for experienced users. +- **legacy** is old stable current kernel. Use if either _current_ is not available or something does not work well with it. -All our images are digitally signed and therefore it is possible to check their authenticity. You need to issue these commands (Linux/macOS, you might need to install dependencies first, eg. `apt-get install gnupg ` on Debian/Ubuntu or `brew install gnupg ` on macOS. on windows install the current simple gnupg [Gnupg](https://gnupg.org/download/): - - # download public key from the database - gpg --keyserver hkp://keyserver.ubuntu.com --recv-key DF00FAF1C577104B50BF1D0093D6889F9F0E78D5 - - # perform verification - gpg --verify Armbian_5.18_Armada_Debian_jessie_3.10.94.img.xz.asc +The level of kernel support however always depends on the board family. If in your specific case something does not work well, you are always free to try an image with an other kernel included or change kernel within [armbian-config](/User-Guide_Armbian-Config). - # proper response - gpg: Signature made sob 09 jan 2016 15:01:03 CET using RSA key ID 9F0E78D5 - gpg: Good signature from "Igor Pecovnik (Ljubljana, Slovenia) " +### Rolling releases? - # wrong reponse. Not genuine Armbian image! - gpg: Signature made Sun 03 Jan 2016 11:46:25 AM CET using RSA key ID 9F0E78D5 - gpg: BAD signature from "Igor Pecovnik (Ljubljana, Slovenia) " +Rolling releases are suitable for Linux enthusiasts who want cutting edge packages and have the skills to fix damage that a bad update might cause. If you want stability in a production environment or low headaches as a novice user, skip rolling releases. They are only at, build and ship, Debian testing / Arch / Manjaro / Suse Tumbleweed / Kali / Gentoo support quality level! -It is safe to ignore the message `WARNING: This key is not certified with a trusted signature!`. +``` mermaid +graph LR + A[Hardware] --> B{Armbian kernel}; + B -->|legacy| C["rolling release"]; + B -->|vendor| C["rolling release"]; + B -->|current| C["rolling release"]; + B -->|edge| C["rolling release"]; + B -->|legacy| X["point release"]; + B -->|vendor| X["point release"]; + B -->|current| X["point release"]; + B -->|edge| X["point release"]; + + + C ---->|minimal| E[Debian or Ubuntu]; + C ---->|server| F[Debian or Ubuntu]; + C ---->|desktop| G[Debian or Ubuntu]; -### How to check download integrity? + X ---->|minimal| E[Debian or Ubuntu]; + X ---->|server| F[Debian or Ubuntu]; + X ---->|desktop| G[Debian or Ubuntu]; +``` -Since it might happen that your download got somehow corrupted we integrate a checksum/hash for the image. You can compare the image's SHA-256 hash with the one contained in the `sha256sum.sha` file. +!!! danger -On Windows, you can download and use the [QuickHash GUI](https://www.quickhash-gui.org/download/quickhash-v3-1-0-windows/) and follow the instructions in the gui. + **Do not use** rollling or edge images in a productive environment. Their purpose is testing and providing constructive [feedback to developers](https://forum.armbian.com/forum/4-development/). -while on Linux/macOS, in the directory in which you have downloaded the files ,you would do this - - shasum -a 256 -c Armbian_*.img.sha - #good response - Armbian_5.35_Clearfogpro_Debian_stretch_next_4.13.16.img: OK - -## How to prepare a SD card? +## Preparing SD card? **Important note:** Make sure you use a **good, reliable and fast** SD card. If you encounter boot or stability troubles in over 95 percent of the time it is either insufficient power supply or related to SD card (bad card, bad card reader, something went wrong when burning the image, card too slow to boot -- 'Class 10' highly recommended!). Armbian can simply not run on unreliable hardware so checking your SD card with either [F3](https://fight-flash-fraud.readthedocs.io/en/stable/) or [H2testw](https://www.heise.de/download/product/h2testw-50539) is mandatory if you run in problems. Since [counterfeit SD cards](https://www.happybison.com/reviews/how-to-check-and-spot-fake-micro-sd-card-8/) are still an issue checking with F3/H2testw directly after purchase is **highly recommended**. Write the **.xz compressed image** with a tool [USBImager](https://gitlab.com/bztsrc/usbimager) or [balenaEtcher](https://www.balena.io/etcher/) on all platforms since, unlike other tools, either can validate written data **saving you from corrupted SD card contents**. -Also important: Most SD cards are only optimised for sequential reads/writes as it is common with digital cameras. This is what the *speed class* is about. The SD Association defined [*Application Performance Class*](https://www.sdcard.org/developers/overview/application/index.html) as a standard for random IO performance. + +!!! tip "Also important" + + Most SD cards are only optimised for sequential reads/writes as it is common with digital cameras. This is what the *speed class* is about. The SD Association defined [*Application Performance Class*](https://www.sdcard.org/developers/overview/application/index.html) as a standard for random IO performance. |Application Performance Class|Pictograph|Miniumum Random Read|Minimum Random Write|Minimum Sustained (Seq. Write)| |---|---|---|---|---| |Class 1 (A1)|![a1-logo](https://raw.githubusercontent.com/armbian/documentation/master/docs/images/a1-logo.png)|1500 4k IOPS|500 4k IOPS|10MBytes/sec| |Class 2 (A2)|![a2-logo](https://raw.githubusercontent.com/armbian/documentation/master/docs/images/a2-logo.png)|4000 4k IOPS|2000 4k IOPS|10MBytes/sec| -At the time of this writing A1 and A2 cards are only widely available from SanDisk. Armbian recommends A1 rated SD-Cards **only** now ([A2 rated cards need yet lacking driver support and therefore show lower overall and especially random IO performance](https://github.com/ThomasKaiser/Knowledge/blob/master/articles/A1_and_A2_rated_SD_cards.md)). For example: +We recommend at least A1 rated SD-Cards ([A2 rated cards need yet lacking driver support and therefore show lower overall and especially random IO performance](https://github.com/ThomasKaiser/Knowledge/blob/master/articles/A1_and_A2_rated_SD_cards.md)). For example: ![a1-16gb-card](https://raw.githubusercontent.com/armbian/documentation/master/docs/images/sandisk-ultra-a1.png) ![a1-32gb-card](https://raw.githubusercontent.com/armbian/documentation/master/docs/images/sandisk-extremepro-a1.png) ![a2-64gb-card](https://raw.githubusercontent.com/armbian/documentation/master/docs/images/sandisk-extreme-a2.png) @@ -164,66 +192,74 @@ In case you have no wired network connection and there is a wireless adaptor det Generating locales: sl_SI.UTF-8 root@bananapim2pro:~# -## How to update firmware and packages? +## How to install? + +![Installer](https://www.armbian.com/wp-content/uploads/2016/12/nandsata.png) + +!!! success "Required condition for eMMC/SATA/USB/NVME:" + + * onboard eMMC storage + * attached SATA, NVME or USB storage + +Start the install script and follow the lead: + + armbian-install + +!!! tip "Armbian installer provides those scenarios:" + + * boot from SD, system on SATA / USB + * boot from eMMC / NAND, system on eMMC/NAND + * boot from eMMC / NAND, system on SATA / USB / NVME + * Boot from SPI - system on SATA, USB or NVMe + * Install/Update the bootloader on SD/eMMC + * Install/Update the bootloader on special eMMC partition + * Install/Update the bootloader on SPI Flash + * Install system to UEFI disk + +!!! tip "You can choose the following file system options:" + + * ext2,3,4 + * btrfs + +## How to update? + +### Armbian OS? apt update apt upgrade -**Update process can take hours in case of using cheap SD card and/or under heavy load.** +**Update process can take some time in case of using old & cheap SD card and/or under heavy load.** If the kernel was upgraded during this process you will be prompted to reboot at next login. -## How to update u-boot? +### Boot loader? -First you need to update packages described in a previous "How to update" step. Then run armbian-config utility, go to system settings and proceed to: +First you need to update all packages described in a previous step. Then run: -**"Install" "Install to/update boot loader"** -> **Install/Update the bootloader on SD/eMMC** +```bash +sudo armbian-install +``` -## How to upgrade distribution (like Focal to Jammy or Bullseye to Bookworm)? +Select: -Fire up `armbian-config` to freeze your firmware packages (if not frozen already, select `System` and `Freeze`). -Then follow generic upgrade instructions specific to your userspace: +Install/Update the bootloader on SD/eMMC -- Like for Debian: [https://www.debian.org/releases/bookworm/arm64/release-notes/ch-upgrading.en.html](https://www.debian.org/releases/bookworm/arm64/release-notes/ch-upgrading.en.html) -- Or Ubuntu: launch `do-release-upgrade` +## How to stay safe? -__Attention:__ Userspaces distribution upgrades are neither tested nor supported. Therefore Armbian cannot provide support if something goes wrong. +Armbian provides firmware package freeze to give you an option to upgrade all packages but firmware. This prevents unplesant surprises on functionality regressions that comes with kernel upgrades. To enable / disable this feature, look for `Enable Armbian kernel/firmware upgrades / Disable Armbian kernel upgrades` within [armbian-config](/User-Guide_Armbian-Config). -## How to adjust hardware features? +## How to upgrade a distribution? -[Use the Armbian configuration utility `armbian-config`](User-Guide_Armbian-Config.md) +When a new userspace is out, we recommend to start with a fresh image. However, it is possible to upgrade, but the process is largerly in the domain of underlaying Debian or Ubuntu user space. However we provide experimental `Distribution upgrades` within [armbian-config](/User-Guide_Armbian-Config) -## How to install to eMMC, SATA, NVME & USB? -![Installer](https://www.armbian.com/wp-content/uploads/2016/12/nandsata.png) +!!! danger + Userspaces distribution upgrades are neither tested nor supported. Therefore Armbian cannot provide support if something goes wrong. -Required condition for eMMC/SATA/USB/NVME: +## How to tune hardware? - * onboard eMMC storage - * attached SATA, NVME or USB storage +Hardware configuration is available within [armbian-config](User-Guide_Armbian-Config.md) utility. -Start the install script: +## How to report bugs? - armbian-install - -and follow the guide. Those are all possible scenarios: - - * boot from SD, system on SATA / USB - * boot from eMMC / NAND, system on eMMC/NAND - * boot from eMMC / NAND, system on SATA / USB / NVME - * Boot from SPI - system on SATA, USB or NVMe - * Install/Update the bootloader on SD/eMMC - * Install/Update the bootloader on special eMMC partition - * Install/Update the bootloader on SPI Flash - * Install system to UEFI disk - -and you can choose the following file system options: - - * ext2,3,4 - * btrfs - -On Allwinner devices after switching to boot from NAND or eMMC clearing the boot loader signature on the SD card is recommended: `dd if=/dev/zero of=/dev/mmcblkN bs=1024 seek=8 count=1` (replace `/dev/mmcblkN` with the correct device node -- in case you run this directly after `armbian-install` without a reboot in between then it's `/dev/mmcblk0`). When booting from eMMC to get SD cards auto-detected on Allwinner legacy images please consider changing `mmc0`'s `sdc_detmode` from 3 to 1 in the board's fex file (see [here](https://forum.armbian.com/topic/1702-orange-pi-plus-2e-where-is-16ghz-and-sd/?tab=comments#comment-13163) for details). - -## How to install to NAND? - -While in theory writing to NAND should still be possible using `armbian-installer`, this requires running a very old 3.4.y kernel which Armbian as dropped support for several years ago. Therefore this feature is to be considered as deprecated and no support for either 3.4.y systems or NAND installations will be provided. +Follow bug reporting form available [here](https://armbian.com/bugs/) and learn how to collect necessary information and where provide to put your report depending on type of issue. Reports lacking fundamental diagnostics are ignored. \ No newline at end of file diff --git a/docs/User-Guide_Networking.md b/docs/User-Guide_Networking.md index 93dbfaf5..41f46d50 100644 --- a/docs/User-Guide_Networking.md +++ b/docs/User-Guide_Networking.md @@ -1,17 +1,19 @@ -# Networking +## Networking Armbian uses [**Netplan.io**](https://netplan.io/) to describe networking configurations. Netplan is a utility to easily configure Linux networking, using a declarative approach. If you want to configure your network manually, it is as simple as editing and creating Netplan yaml files (see the yaml configuration reference at the [Netplan docs](https://netplan.readthedocs.io/en/stable/netplan-yaml/)). Netplan is used to configure networks on **all** Armbian images since Release 24.05, no matter if minimal or desktop, Debian or Ubuntu. However, the networking backends are different based on if you choose a minimal image or not. -# Minimal images (networkd) +## Minimal images + +!!! tip "Netplan renderer: networkd" Minimal images are using the `systemd-networkd` backend, which has a **smaller footprint** compared to `Network-Manager`. `systemd-networkd` is a system daemon that manages network configurations. It detects and configures network devices as they appear; it can also create virtual network devices. This service is great for simple connections, but can also be useful to set up complex network configurations. -## Default Armbian configuration +### Armbian defaults -By default, your device will run using DHCP on all ethernet interfaces to be able to automatically receive an IP address from your router. +All ethernet interfaces will automatically receive an IP address from your router. [`/etc/netplan/10-dhcp-all-interfaces.yaml`](https://github.com/armbian/build/blob/main/extensions/network/config-networkd/netplan/10-dhcp-all-interfaces.yaml): @@ -28,14 +30,21 @@ network: ipv6-privacy: yes ``` -## Configuration examples +### Configuration examples -### Setting a fixed IP address +#### Setting a fixed IP address The following example configures a static IP `192.168.1.199` for the `eth0` interface. Please adjust the example to your likings. -> [!TIP] -> Find out the name of your device's Ethernet interface with the command `ip addr`. It is usually something like `eth0`, `enp4s3` or `lan`. + +!!! question "How to find your device's Ethernet interface?" + + Use command: + + ```sh + ip addr + ``` + It is usually something like `eth0`, `enp4s3` or `lan`. `/etc/netplan/20-static-ip.yaml`: @@ -58,9 +67,10 @@ network: See also the [Netplan docs](https://netplan.readthedocs.io/en/latest/using-static-ip-addresses/) for reference. -### Connecting to a wireless network +#### Connecting to WiFI network -It is recommended to make a separate config file for wireless network. + +!!! tip "It is recommended to make a separate config file for wireless network." Create the following file: @@ -81,16 +91,23 @@ network: Replace `SSID` with the name of the network you want to connect to and `wlan0` with the wifi interface used on your system. -> [!TIP] -> Find out the name of your device's WiFi interface with the command `ip addr`. +!!! question "How to find your device's WiFi interface?" + + Use command: + + ```sh + ip addr + ``` + It is usually something like `wlan0`, `wlo1` or `wlx12334c47dec3`. + See also the [Netplan docs](https://netplan.readthedocs.io/en/latest/examples/#how-to-configure-your-computer-to-connect-to-your-home-wi-fi-network) for reference. -## Applying your configuration +### Applying your configuration Once you are done configuring your network, it is time to test syntax and apply it. -#### 1. Fix config file permissions +#### Fix file permissions According to the [Netplan docs](https://netplan.readthedocs.io/en/stable/security/), the permissions must be restricted to the root user. @@ -98,18 +115,23 @@ According to the [Netplan docs](https://netplan.readthedocs.io/en/stable/securit sudo chmod 600 /etc/netplan/*.yaml ``` -#### 2. Test if the syntax is correct and if your device can still connect +#### Test syntax + +This will verify the syntax and test if your device can connect + ```bash sudo netplan try ``` -#### 3. Apply the configuration +#### Apply the configuration ```bash sudo netplan apply ``` -# CLI and desktop images (Network-Manager) +# CLI and desktop images + +!!! tip "Netplan renderer: Network Manager" Server CLI and desktop images are using the `Network-Manager` backend. You can use similar methods for configuring your network as with the `networkd` backend used on minimal images. @@ -117,8 +139,14 @@ Server CLI and desktop images are using the `Network-Manager` backend. You can u The following example configures a static IP `192.168.1.199` for the `eth0` interface. Please adjust the example to your likings. -> [!TIP] -> Find out the name of your device's Ethernet interface with the command `ip addr`. It is usually something like `eth0`, `enp4s3` or `lan`. +!!! question "How to find your device's Ethernet interface?" + + Use command: + + ```sh + ip addr + ``` + It is usually something like `eth0`, `enp4s3` or `lan`. `/etc/netplan/20-static-ip.yaml`: @@ -146,14 +174,14 @@ Alternatively, you can also use Network-Manager directly via the command line or ```bash nmtui-edit eth0 ``` - -![](images/edit-connection.png) +??? note "Display screenshot" + ![](images/edit-connection.png) Replace `eth0` with the name of your Ethernet Interface. -### Connecting to a wireless network +### Connecting to WiFI network -For connecting to a wireless network, you can use the same method as mention above for use with [`networkd` on minimal images](#connecting-to-a-wireless-network). Just make sure to replace `renderer: networkd` with `renderer: NetworkManager`. +For connecting to a wireless network, you can use the same method as mention above for use with `networkd` [on minimal images](#minimal-images). Just make sure to replace `renderer: networkd` with `renderer: NetworkManager`. Alternatively, you can also use Network-Manager directly via the command line or GUI tools on your desktop: @@ -161,11 +189,12 @@ Alternatively, you can also use Network-Manager directly via the command line or nmtui-connect SSID ``` -![](images/wifi-connect.png) +??? note "Display screenshot" + ![](images/wifi-connect.png) Replace `SSID` with the name of your wireless network. -# Automatic configuration on first boot +# Automatic configuration It is possible to network configurations which are automatically applied when you first boot your device after flashing a fresh image by writing to the file `/root/.not_logged_in_yet` which is read at your first login. @@ -203,9 +232,11 @@ Mount your live image _before your first boot_ and use this example for referenc If you want to use first run automatic configuration at build time, [check this GitHub pull request](https://github.com/armbian/build/pull/6194). In short: + 1. Copy the template with `cp extensions/preset-firstrun.sh userpatches/extensions/` 2. Edit the template `userpatches/extensions/preset-firstrun.sh` according to your situation 3. Build your Armbian image using the additional parameter `ENABLE_EXTENSIONS=preset-firstrun` -> [!NOTE] -> This method also creates a new user, sets passwords and more! +???+ tip + + This method also creates a new user, sets passwords and more! diff --git a/docs/images/forums.png b/docs/images/forums.png new file mode 100644 index 00000000..37cbbc75 Binary files /dev/null and b/docs/images/forums.png differ diff --git a/docs/images/loginprompt.png b/docs/images/loginprompt.png new file mode 100644 index 00000000..9882f9ab Binary files /dev/null and b/docs/images/loginprompt.png differ diff --git a/docs/index.md b/docs/index.md index 901c00d1..10ed2a81 100644 --- a/docs/index.md +++ b/docs/index.md @@ -4,85 +4,101 @@ Linux for ARM development boards # Welcome to the Armbian Documentation! -If you are **new to Armbian**, the [_Getting Started_](User-Guide_Getting-Started.md) section -provides a tutorial for everything you need to get Armbian running -and answers many **F**requently **A**sked **Q**uestions. -It then continues on to more advanced topics. +## What is Armbian? + +Armbian is highly optimised base operating system specialised for single board computers. + +It embodies extremely lightweight hardware features focused Debian-based distribution, extensive build framework and is suitable for industrial or home use. + +``` mermaid +graph LR + A[Hardware] --> B{50 x Armbian kernel}; + B --> X["point release"]; + X ---->|minimal| E[Debian or Ubuntu]; + X ---->|server| F[Debian or Ubuntu]; + X -->|desktop| H[Debian or Ubuntu]; + H -->Q[XFCE]; + H -->W[Gnome]; + H -->R[KDE]; + H -->T[Cinnamon]; + +``` + +## Key Advantages + +- extreamly lean and standardised Debian-based user space +- extensive build framework with endless capabilities +- fast hybrid assembly of whole operating system +- independednt long term support +- advanced hardware and OS config (armbian-config) +- in house kernel development, improvement and maintaining +- daily automated stress and upgrade testing of key hardware targets +- exlusive support on exotic hardware +- installation is optional and simplifieds +- provides point releases and daily rolling distribution +- world wide download infrastructure with perfect coverage in China mainland +- 1000+ build runners to assist CI automation +- CI supports customized build list per each build target + +???+ "Other features and performance tweaks" + + - Images are reduced to actual data size and automatically expand across boot media at first boot + - BASH or ZSH shell, preinstalled standard system utilities + - login is possible via serial, HDMI/VGA or SSH + - highly compressed distributed images + - Upgrades are done via standard `apt upgrade` method + - Login script shows: board name with large text, distribution base, kernel version, system load, uptime, memory usage, IP(v6) address, CPU and drive temperature, ZFS, rootfs usage, battery conditions and number of updates to install + - `/var/log` is mounted as compressed device (zram, lzo), log2ram service saves logs to disk daily and on shutdown + - Half of memory is allocated/extended for/with compressed swap + - `/tmp` is mounted as `tmpfs` (optionally compressed) + - Browser profile memory caching is enabled on desktop images + - Optimized IO scheduler (check `/etc/init.d/armhwinfo`) + - Journal data writeback enabled. (`/etc/fstab`) + - ethernet interrupts are using dedicated core + +## What is supported? + +Armbian distribute stable images for maintained boards through its [mirror network](https://github.com/armbian/mirror). *Supported / maintained* is not a guarantee. It has a named maintainer and implies a particular SBC is at a **high level of software maturity**. Due to the complexity and lack of cooperation in the ecosystem it is unlikely that all specialized functionalities (like 3D, VE, I²C...) are always available. + +## Support statuses? + +[Platinum Support](https://www.armbian.com/download/?device_support=Platinum%20support){ .md-button .md-button--primary } + +At least one person providing maintainance and support. + +[Standard Support](https://www.armbian.com/download/?device_support=Standard%20support){ .md-button } + +Support is not secured but still good anything from this list. + +[Community maintained](https://www.armbian.com/download/?device_support=Community%20maintained){ .md-button } + +Most of those will also work, but no warranty as we don't monitor their status. + +For more information is see the [Board Support Guide](User-Guide_Board-Support-Rules.md) + +## Getting started? + +If you are **new to Armbian**, the [_Getting Started_](User-Guide_Getting-Started.md) section provides a tutorial for everything you need to know to get Armbian running. It then continues on to more advanced topics. If you **need help** and have read through _Getting Started_ check out [_Troubleshooting_](User-Guide_Advanced-Features.md#how-to-troubleshoot). If you still cannot find what you need here visit the [_Armbian forum_](https://forum.armbian.com/) where your input can help to improve this documentation. -## What is Armbian? +## Software titles -*Armbian is a base operating system platform for single board computers (SBCs) that other projects can trust to build upon.* +You can quickly and easily install popular software! They are ready to run and optimised for Armbian. Here are few highlights: + +- Desktops - Install Desktop Environments +- Netconfig - Network tools +- DevTools - Development +- Benchy - System benchmaking and diagnostics +- Containers - Containerlization and Virtual Machines +- Media - Media Servers and Editors +- Management - Remote Management tools + +???+ success "Unit testing" -- Lightweight Debian or Ubuntu based Linux distribution specialized for ARM development boards -- Each system is compiled, assembled and optimized by [_Armbian Build Tools_](https://github.com/armbian/build) -- It has powerful build and software development tools to make [_custom builds_](Developer-Guide_Build-Preparation.md) -- A vibrant community + All software targets and functions are automatically tested to catch as many problems as possible. - -### What is the difference between Armbian and Debian/Ubuntu? - -- Debian or Ubuntu officially do not support most of those boards/boxes. Armbian does. -- Armbian userspace has many small but vital performance or security adjustments -- Armbian fancy some kernel development and a lot of its maintaining. Debian relies on upstream sources for ARM hardware which can be **years** behind and/or lack of many functions -- Armbian userspace is lean, clean but 100% Debian/Ubuntu compatible -- Many stock Debian bugs are fixed on the way, "better than original :)" -- The Armbian build system is a central part of this whole ecosystem. You can DIY. Debian is much harder. -- Dedicated support forums per boards/boxes -- Plug'n'Play vs. complicated install scenarios on stock Debian -- unified development scenarios and user experience vs. mess of different setup instructions scattered all around - -### Common features - -- Armbian Linux is available as Debian and Ubuntu based images, compiled from scratch -- Images are reduced to actual data size and automatically expand across the SDcard at first boot -- Root password is `1234`. You are forced to change this password and (optional) create a normal user at first login -- Ethernet adapter with DHCP and SSH server ready on default port (22) -- Wireless adapter with DHCP ready (if present) but disabled. You can use `armbian-config` to connect to your router or create an access point -- NAND, SATA, eMMC and USB install script is included (`armbian-install`) -- Upgrades are done via standard `apt upgrade` method -- Login script shows: board name with large text, distribution base, kernel version, system load, uptime, memory usage, IP address, CPU and drive temperature, ambient temperature from Temper if exits, SD card usage, battery conditions and number of updates to install - -### Performance tweaks - -- `/var/log` is mounted as compressed device (zram, lzo), log2ram service saves logs to disk daily and on shutdown -- Half of memory is allocated/extended for/with compressed swap -- `/tmp` is mounted as `tmpfs` (optionally compressed) -- Browser profile memory caching -- Optimized IO scheduler (check `/etc/init.d/armhwinfo`) -- Journal data writeback enabled. (`/etc/fstab`) -- `commit=600` to flush data to the disk every 10 minutes (`/etc/fstab`) -- Optimized CPU frequency scaling with `interactive` governor (`/etc/init.d/cpufrequtils`) - - 480-1010Mhz @Allwinner A10/A20 - - 480-1368Mhz @Allwinner H2+/H3 - - 392-996Mhz @Freescale imx - - 600-2000Mhz @Exynos & S905 -- eth0 interrupts are using dedicated core (Allwinner based boards) - -## What is _supported/maintained_? - -Armbian will publish and distribute ā€œstableā€ CLI images for maintained boards through its mirror network. *Supported/maintained* is not a guarantee. *Supported/maintained* has a named maintainer and implies a particular SBC is at a high level of software maturity. Due to the complexity and lack-of-openness in the ecosystem it is unlikely that all accelerated and specialized functionalities (like 3D, VE, I²C...) will be available. - -For more information is see the [Board Support Guide](User-Guide_Board-Support-Rules.md) - -### Maintained boards - -Check [download page](https://www.armbian.com/download/) for recently maintained list. - - -## How to report bugs - -Due to lack of manpower we unfortunately have to be very picky about bug reports. Make sure to follow the bug reporting form available [here](https://armbian.com/bugs/) to learn how to collect necessary information and where to put your report depending on type of issue. Reports lacking fundamental diagnostics may be ignored. - -# Get Involved! # - -* [Contribute](Process_Contribute.md) -* [Community](https://forum.armbian.com/) -* [Contact](https://www.armbian.com/#contact) - -Our IRC channel is [#armbian](https://web.libera.chat/#armbian) on [Libera.Chat](https://libera.chat/). More details [here](https://docs.armbian.com/Community_IRC/) -For those who prefer some more proprietary way to communicate join our [Discord](https://discord.gg/armbian). + GitHub Workflow Status \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 398c2e15..a76230da 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -46,11 +46,11 @@ extra: plugins: - search - - with-pdf: - author: Armbian documentation team - copyright: Ā© 2024 by Armbian - cover_title: Armbian documentation - cover_subtitle: Linux for ARM development boards +# - with-pdf: +# author: Armbian documentation team +# copyright: Ā© 2024 by Armbian +# cover_title: Armbian documentation +# cover_subtitle: Linux for ARM development boards markdown_extensions: - smarty @@ -62,7 +62,11 @@ markdown_extensions: auto_title: true linenums: true use_pygments: true - - pymdownx.superfences + - pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_code_format - markdown.extensions.admonition # Highlighted warning/info blocks - markdown.extensions.attr_list # Set custom HTML attributes {: } - markdown.extensions.footnotes # Footnotes [^1] @@ -82,7 +86,6 @@ nav: - 'ARMBIAN OS': - 'Overview': 'index.md' - - 'Quick facts' : 'Quick_facts.md' - 'Getting Started' : 'User-Guide_Getting-Started.md' - 'Armbian Config' : 'User-Guide_Armbian-Config.md' - 'Networking' : 'User-Guide_Networking.md' @@ -92,22 +95,27 @@ nav: - 'Advanced Features' : 'User-Guide_Advanced-Features.md' - 'Device tree overlays' : 'User-Guide_Armbian_overlays.md' - 'FAQ' : 'User-Guide_FAQ.md' + - 'Release Model' : 'Process_Release-Model.md' + - 'Changelog' : 'Release_Changelog.md' - 'ARMBIAN BUILD FRAMEWORK' : + - 'Overview' : 'Developer-Guide_Welcome.md' + - 'Build Preparation' : 'Developer-Guide_Build-Preparation.md' - 'User Configurations' : 'Developer-Guide_User-Configurations.md' - 'Extensions Hooks' : 'Developer-Guide_Extensions-Hooks.md' - - 'Welcome' : 'Developer-Guide_Welcome.md' - 'Board Maintainers' : 'Release_Board-Maintainers.md' - - 'Build Process' : 'Developer-Guide_Build-Process.md' - 'Building with Multipass' : 'Developer-Guide_Building-with-Multipass.md' - 'Build Options' : 'Developer-Guide_Build-Options.md' - 'Building with Docker' : 'Developer-Guide_Building-with-Docker.md' - 'Adding Board Family' : 'Developer-Guide_Adding-Board-Family.md' - 'Extensions' : 'Developer-Guide_Extensions.md' - - 'Testing Procedures' : 'Developer-Guide_Testing-Procedures.md' - - 'Build Preparation' : 'Developer-Guide_Build-Preparation.md' - - 'DEVELOPMENT' : + - 'ARMBIAN COMMUNITY' : + - 'Forums' : 'Community_Forums.md' + - 'Github' : 'Community_Github.md' + - 'Chat' : 'Community_IRC.md' + + - 'CONTRIBUTE' : - 'Contribute' : 'Process_Contribute.md' - 'Managing_Workflow' : 'Process_Managing_Workflow.md' - 'Armbian Task Tracking' : 'Process_Armbian-Task-Tracking.md' @@ -117,11 +125,3 @@ nav: - 'CI' : 'Process_CI.md' - 'Review_Procedures_and_Guidelines' : 'Development-Code_Review_Procedures_and_Guidelines.md' - - 'OS RELEASES' : - - - 'Release Model' : 'Process_Release-Model.md' - - 'Changelog' : 'Release_Changelog.md' - - - 'COMMUNITY' : - - 'IRC' : 'Community_IRC.md' - - 'Torrent' : 'Community_Torrent.md'