From eab040cbedc4e35c21950a8c5a5fadd9fd25535a Mon Sep 17 00:00:00 2001 From: Igor Date: Wed, 9 Apr 2025 18:14:20 +0200 Subject: [PATCH] Add various GH actions and enable upload to new WEB server (#666) * `Automatic` documentation update * `Automatic` documentation update * Enable upload to new server * Pull useful actions from build repository * Update .github/workflows/clean-workflow-logs.yml * Update clean-workflow-logs.yml * Fix docs preview * Refactor docs at pr --- .github/labeler.yml | 20 +++ .github/labels.yml | 66 ++++++++++ .github/workflows/clean-workflow-logs.yml | 28 +++++ .github/workflows/labels-from-yml.yml | 36 ++++++ .github/workflows/pdf-at-pr.yaml | 67 +++++----- .github/workflows/pr-auto-labeler.yml | 60 +++++++++ .github/workflows/release.yaml | 105 +++++----------- .../User-Guide_Armbian-Config/Localisation.md | 5 + docs/User-Guide_Armbian-Config/Network.md | 60 +++++++-- docs/User-Guide_Armbian-Config/System.md | 118 ++++++++++++++++++ docs/images/BNS001.png | Bin 0 -> 3162 bytes docs/images/LO001.png | Bin 0 -> 3342 bytes docs/images/SY001.png | Bin 0 -> 2981 bytes docs/images/SY005.png | Bin 0 -> 2462 bytes docs/images/SY010.png | Bin 0 -> 5428 bytes docs/images/SY101.png | Bin 0 -> 3743 bytes docs/images/SY201.png | Bin 0 -> 3131 bytes docs/images/SY202.png | Bin 0 -> 3175 bytes docs/images/SY204.png | Bin 0 -> 2854 bytes docs/images/SY210.png | Bin 0 -> 7439 bytes docs/images/UNAT02.png | Bin 0 -> 7089 bytes docs/images/VNS001.png | Bin 0 -> 6942 bytes docs/images/WG002.png | Bin 0 -> 3781 bytes docs/images/WG003.png | Bin 0 -> 3782 bytes docs/images/WG004.png | Bin 0 -> 3716 bytes 25 files changed, 452 insertions(+), 113 deletions(-) create mode 100644 .github/labeler.yml create mode 100644 .github/labels.yml create mode 100644 .github/workflows/clean-workflow-logs.yml create mode 100644 .github/workflows/labels-from-yml.yml create mode 100644 .github/workflows/pr-auto-labeler.yml create mode 100644 docs/images/BNS001.png create mode 100644 docs/images/LO001.png create mode 100644 docs/images/SY001.png create mode 100644 docs/images/SY005.png create mode 100644 docs/images/SY010.png create mode 100644 docs/images/SY101.png create mode 100644 docs/images/SY201.png create mode 100644 docs/images/SY202.png create mode 100644 docs/images/SY204.png create mode 100644 docs/images/SY210.png create mode 100644 docs/images/UNAT02.png create mode 100644 docs/images/VNS001.png create mode 100644 docs/images/WG002.png create mode 100644 docs/images/WG003.png create mode 100644 docs/images/WG004.png diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 00000000..4240baa7 --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,20 @@ +# 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. + +"Needs review": +- changed-files: + - any-glob-to-any-file: '**' + +"GitHub Actions": +- all: + - changed-files: + - any-glob-to-any-file: ['.github/**/**/*'] diff --git a/.github/labels.yml b/.github/labels.yml new file mode 100644 index 00000000..c9da23e6 --- /dev/null +++ b/.github/labels.yml @@ -0,0 +1,66 @@ +- name: "02" + color: "76B4D9" + description: "Milestone: First quarter release" +- name: "05" + color: "AADB79" + description: "Milestone: Second quarter release" +- name: "08" + color: "4B649F" + description: "Milestone: Third quarter release" +- name: "11" + color: "D58125" + description: "Milestone: Fourth quarter release" +- name: "Backlog" + color: "d4c5f9" + description: "Stalled work that needs to be completed" +- name: "Bug" + color: "F92C01" + description: "Something isn't working as it should" +- name: "Discussion" + color: "EDFFE3" + description: "Being discussed - Voice your opinions :)" +- name: "Duplicate" + color: "f4bd13" + description: "Issue is already present" +- name: "Good first issue" + color: "ffb3ff" + description: "Feel free to contribute :) " +- name: "User error" + color: "CD456C" + description: "A mistake that is made by the user" +- name: "size/small" + color: "ededed" + description: "PR with less then 50 lines" +- name: "size/medium" + color: "ededed" + description: "PR with more then 50 and less then 250 lines" +- name: "size/large" + color: "ededed" + description: "PR with 250 lines or more" +- name: "Task/To-Do" + color: "2f95f1" + description: "Project management: To-Do or task(s) someone is working on" +- name: "GitHub Actions" + color: "bfd4f2" + description: "GitHub Actions code" +- name: "Work in progress" + color: "29E414" + description: "Unfinished / work in progress" +- name: "Ready to merge" + color: "1d7136" + description: "Reviewed, tested and ready for merge" +- name: "Help needed" + color: "EA1BCE" + description: "We need your involvement" +- name: "Needs review" + color: "AEE054" + description: "Seeking for review" +- name: "Can be closed?" + color: "9b75fc" + description: "Ping developers on stalled issue / PR" +- name: "Documentation finished" + color: "0052CC" + description: "New feature was properly added to docs" +- name: "Improper usage" + color: "CD456C" + description: "Provided input is not in the expected data format or structure" diff --git a/.github/workflows/clean-workflow-logs.yml b/.github/workflows/clean-workflow-logs.yml new file mode 100644 index 00000000..70ebcfd7 --- /dev/null +++ b/.github/workflows/clean-workflow-logs.yml @@ -0,0 +1,28 @@ +name: "Clean Workflow Logs" +on: + schedule: + - cron: "0 0 * * 1" # Runs "At 00:00 on Monday." (see https://crontab.guru) + workflow_dispatch: + inputs: + runs_older_than: + description: "The amount of days old to delete" + default: "21" + required: false + runs_to_keep: + description: "The number of workflow runs to keep" + default: "0" + required: false +env: + SCHEDULED_RUNS_OLDER_THAN: "21" + SCHEDULED_RUNS_TO_KEEP: "0" + +jobs: + clean-logs: + runs-on: ubuntu-latest + permissions: + actions: write + steps: + - uses: igorjs/gh-actions-clean-workflow@v6 + with: + runs_older_than: ${{ github.event.inputs.runs_older_than || env.SCHEDULED_RUNS_OLDER_THAN }} + runs_to_keep: ${{ github.event.inputs.runs_to_keep || env.SCHEDULED_RUNS_TO_KEEP }} diff --git a/.github/workflows/labels-from-yml.yml b/.github/workflows/labels-from-yml.yml new file mode 100644 index 00000000..f8bffea4 --- /dev/null +++ b/.github/workflows/labels-from-yml.yml @@ -0,0 +1,36 @@ +name: Sync Labels from YAML +run-name: Sync Labels from YML on ${{ github.event_name }} + +on: + workflow_dispatch: + push: + branches: + - "main" + paths: + - ".github/labels.yml" + pull_request: + paths: + - ".github/labels.yml" + +jobs: + labeler: + permissions: + contents: read # for actions/labeler to determine modified files + pull-requests: write # for actions/labeler to add labels to PRs + issues: write # for actions/labeler to add labels to issues + + if: ${{ github.repository_owner == 'Armbian' }} + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Run Labeler + uses: crazy-max/ghaction-github-labeler@v5 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + yaml-file: .github/labels.yml + dry-run: ${{ github.event_name == 'pull_request' }} + exclude: | + Maintenance* diff --git a/.github/workflows/pdf-at-pr.yaml b/.github/workflows/pdf-at-pr.yaml index 0eb227ea..82d12289 100644 --- a/.github/workflows/pdf-at-pr.yaml +++ b/.github/workflows/pdf-at-pr.yaml @@ -1,65 +1,74 @@ -# This workflow will install Python dependencies and generate PDF file at PR -name: Create offline documentation on PR +name: Create docs preview on PR on: pull_request: types: [opened, reopened, synchronize, labeled] workflow_dispatch: +permissions: + contents: write + pull-requests: write + jobs: - build: + docs-preview: runs-on: ubuntu-latest - strategy: - matrix: - python-version: [ 3.8 ] steps: - - uses: actions/checkout@v4 + - name: Checkout PR branch (documentation) + uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} path: documentation - - uses: actions/checkout@v4 + - name: Checkout `www` branch + uses: actions/checkout@v4 with: ref: www path: www - - name: Set up Python ${{ matrix.python-version }} + - name: Set up Python 3.8 uses: actions/setup-python@v5 with: - python-version: ${{ matrix.python-version }} + python-version: 3.8 + + - name: Cache pip dependencies + uses: actions/cache@v4 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('documentation/requirements.txt') }} + restore-keys: | + ${{ runner.os }}-pip- - name: Install dependencies + working-directory: documentation run: | - cd documentation python -m pip install --upgrade pip pip install setuptools wheel pip install -r requirements.txt - - name: Run mkdocs --clean + - name: Build docs with MkDocs + working-directory: documentation + run: mkdocs build --clean + + - name: Publish to `www` branch + working-directory: www run: | - - cd documentation - mkdocs build --clean - - - name: Push to web - run: | - - cd www mkdir -p "${{ github.event.number }}" - rsync -av ../documentation/site/. ${{ github.event.number }} + rsync -av ../documentation/site/. "${{ github.event.number }}" git config user.name github-actions git config user.email github-actions@github.com - git add . - git commit -m "Updating repo" || true + git add . + git commit -m "Update docs preview for PR #${{ github.event.number }}" || true git push origin www || true - - uses: devindford/Append_PR_Comment@v1.1.3 + - name: Comment on PR with preview link + uses: devindford/Append_PR_Comment@v1.1.3 with: - repo-token: "${{ secrets.GITHUB_TOKEN }}" + repo-token: ${{ secrets.GITHUB_TOKEN }} body-template: | + [![Create docs preview on PR](https://github.com/armbian/documentation/actions/workflows/pdf-at-pr.yaml/badge.svg)](https://github.com/armbian/documentation/actions/workflows/pdf-at-pr.yaml) - [![Create offline documentation on PR](https://github.com/armbian/documentation/actions/workflows/pdf-at-pr.yaml/badge.svg)](https://github.com/armbian/documentation/actions/workflows/pdf-at-pr.yaml) - Documentation website preview will be available in few minutes: -
 Open WWW preview 
- body-update-action: 'suffix' \ No newline at end of file + Documentation website preview will be available shortly: + +
 Open WWW preview 
+ body-update-action: suffix \ No newline at end of file diff --git a/.github/workflows/pr-auto-labeler.yml b/.github/workflows/pr-auto-labeler.yml new file mode 100644 index 00000000..cf130991 --- /dev/null +++ b/.github/workflows/pr-auto-labeler.yml @@ -0,0 +1,60 @@ +name: Automatic Pull Request Labeling +run-name: 'Set labels - PR #${{ github.event.pull_request.number }} ("${{ github.event.pull_request.title }}")' +# +# Set labels for pull requests automatically based on size (modified via job 'label-size') and file categories (modified via .github/labeler) +# + +on: pull_request_target + +jobs: + label-remove: + permissions: + contents: read # for pascalgn/size-label-action to determine modified files + pull-requests: write # for pascalgn/size-label-action to add labels to PRs + name: "Remove Ready to merge" + if: ${{ github.event.action == 'opened' || github.event.action == 'reopened' || github.event.action == 'synchronize' }} + runs-on: ubuntu-latest + + steps: + - uses: PauMAVA/add-remove-label-action@v1.0.3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + add: "" + remove: "Ready to merge" + + label-category: + permissions: + contents: read # for actions/labeler to determine modified files + pull-requests: write # for actions/labeler to add labels to PRs + + name: "Category labels" + if: ${{ github.event.action == 'opened' || github.event.action == 'reopened' || github.event.action == 'synchronize' }} + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - uses: actions/labeler@v5 + with: + repo-token: "${{ secrets.GITHUB_TOKEN }}" + + label-size: + permissions: + contents: read # for pascalgn/size-label-action to determine modified files + pull-requests: write # for pascalgn/size-label-action to add labels to PRs + + name: "Size label" + if: ${{ github.event.action == 'opened' || github.event.action == 'reopened' || github.event.action == 'synchronize' }} + runs-on: ubuntu-latest + + steps: + - name: size-label + uses: "pascalgn/size-label-action@v0.5.5" + env: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + with: + sizes: > + { + "0": "small", + "50": "medium", + "250": "large" + } diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 888dbcf3..d50d3d19 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -1,84 +1,47 @@ -# This workflow will install Python dependencies, run tests and lint with a variety of Python versions -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions - -name: Create offline documentation to release +name: Update documentation website on: push: - branches: [ master ] + branches: [ main ] workflow_dispatch: jobs: - build: + build-docs: + name: "Generate HTML" + if: ${{ github.repository_owner == 'Armbian' }} runs-on: ubuntu-latest - strategy: - matrix: - python-version: [ 3.8 ] - steps: + - uses: actions/checkout@v4 - - name: Set up Python ${{ matrix.python-version }} + with: + ref: main + fetch-depth: 1 + + - name: "Set up Python" uses: actions/setup-python@v5 with: - python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install setuptools wheel - pip install -r requirements.txt - - name: Run mkdocs --clean - run: | - mkdocs build --clean + python-version: 3.8 - # - name: Upload pdf - # uses: actions/upload-artifact@v4 - # with: - # name: artifact - # path: site/pdf/document.pdf -# PDF is not built, no need to upload + - name: "Install dependencies" + run: | + + pip install --upgrade pip + pip install setuptools wheel -r requirements.txt + + - name: "Build documentation" + run: mkdocs build --clean + + - name: "Install SSH key" + uses: shimataro/ssh-key-action@v2 + with: + key: ${{ secrets.KEY_UPLOAD }} + known_hosts: ${{ secrets.HOST_APPLICATIONS_KNOWN_HOSTS }} + if_key_exists: replace + + - name: "Deploy to servers" + timeout-minutes: 3 + run: | + rsync -e "ssh -p ${{ secrets.HOST_APPLICATIONS_PORT }}" \ + -a site/ \ + ${{ secrets.HOST_APPLICATIONS_USER }}@${{ secrets.HOST_APPLICATIONS }}:storage/docs.armbian.com - #deploy: - #needs: [ build ] - #runs-on: ubuntu-20.04 - #env: - # TZ: GMT - #steps: - # - uses: actions/checkout@v4 - # - uses: actions/download-artifact@v4 - # with: - # name: artifact - # - name: Add - # run: | - # ls -l - # git pull - # git add document.pdf - # - name: Commit files - # run: | - # git config --local user.email "info@armbian.com" - # git config --local user.name "Armbianworker" - # git commit --allow-empty -m "Update github actions" -a - # - name: Push changes - # uses: ad-m/github-push-action@master - # with: - # repo-token: ${{ secrets.GITHUB_TOKEN }} - # branch: ${{ github.ref }} - #- name: Declare vars - # id: vars - # shell: bash - # run: | - # echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT - # echo "timenow=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT - #- name: Rename release artifact - # shell: bash - # run: | - # mv -v document.pdf armbian-document-${{ steps.vars.outputs.sha_short }}.pdf - #- name: Create Release - # uses: ncipollo/release-action@v1 - # with: - # tag: ${{ steps.vars.outputs.sha_short }} - # name: ${{ steps.vars.outputs.timenow }}-${{ steps.vars.outputs.sha_short }} - # draft: false - # prerelease: false - # token: ${{ secrets.GITHUB_TOKEN }} - # artifacts: armbian-document-${{ steps.vars.outputs.sha_short }}.pdf - # artifactContentType: application/pdf diff --git a/docs/User-Guide_Armbian-Config/Localisation.md b/docs/User-Guide_Armbian-Config/Localisation.md index def3e1a6..c76ebd65 100644 --- a/docs/User-Guide_Armbian-Config/Localisation.md +++ b/docs/User-Guide_Armbian-Config/Localisation.md @@ -4,6 +4,11 @@ *** ## Change Global timezone + + +[![Change Global timezone](/images/LO001.png)](#) + + **Command:** ~~~ armbian-config --cmd LO001 diff --git a/docs/User-Guide_Armbian-Config/Network.md b/docs/User-Guide_Armbian-Config/Network.md index eb44877c..2e6c8212 100644 --- a/docs/User-Guide_Armbian-Config/Network.md +++ b/docs/User-Guide_Armbian-Config/Network.md @@ -5,6 +5,11 @@ ## Basic Network Setup + +[![Basic Network Setup](/images/BNS001.png)](#) + + + ``` mermaid graph LR @@ -30,22 +35,31 @@ armbian-config --cmd BNS001 -Network configuration is simple and easy to follow: +1. **Select Interface:** + - Launch the `armbian-config` utility: + ```bash + sudo armbian-config + ``` + - Navigate to `Network` and choose the desired network interface (e.g., `eth0` for wired or `wlan0` for wireless). -1. Choose the interface. If it's a wireless interface, you'll be prompted to select an access point (AP) and enter its password. Leave empty for open network. +2. **Wireless Interface Configuration:** + - If configuring a wireless interface: + - A list of available Access Points (APs) will be displayed. + - Select your preferred AP and enter the password when prompted. Leave the password field empty for open networks. -2. Choose between DHCP (Dynamic Host Configuration Protocol) or static IP configuration. - -- If you select DHCP, the setup is complete. Optionally, you can change the MAC address. - -3. If you choose a static configuration, you'll need to provide: - -- An optional MAC address change -- A fixed IP address (e.g., x.x.x.x/y) -- A route (default: 0.0.0.0/0) -- A gateway (usually x.x.x.1/24) -- DNS (default: 9.9.9.9) +3. **IP Address Configuration:** + - Choose between: + - **DHCP (Dynamic Host Configuration Protocol):** Automatically assigns an IP address. + - **Static IP:** Manually enter details: + - **MAC Address (optional):** Specify if you want spoofing MAC address. + - **IP Address:** Use CIDR notation (e.g., `192.168.1.10/24`). + - **Route:** Default is `0.0.0.0/0`. + - **Gateway:** Typically the router's IP, e.g., `192.168.1.1`. + - **DNS:** Default is `9.9.9.9`, but can be changed. +4. **Finalize Configuration:** + - Review and confirm your settings. + - The system applies the configurations, and your network should be set up. @@ -69,6 +83,11 @@ armbian-config --cmd BNS002 *** ## View Network Settings + + +[![View Network Settings](/images/VNS001.png)](#) + + **Command:** ~~~ armbian-config --cmd VNS001 @@ -244,6 +263,11 @@ More informations: *** ## WireGuard remove + + +[![WireGuard remove](/images/WG002.png)](#) + + This operation will remove WireGuard **Command:** @@ -260,6 +284,11 @@ armbian-config --cmd WG002 *** ## WireGuard clients QR codes + + +[![WireGuard clients QR codes](/images/WG003.png)](#) + + **Command:** ~~~ armbian-config --cmd WG003 @@ -274,6 +303,11 @@ armbian-config --cmd WG003 *** ## WireGuard purge with data folder + + +[![WireGuard purge with data folder](/images/WG004.png)](#) + + This operation will purge WireGuard with data folder **Command:** diff --git a/docs/User-Guide_Armbian-Config/System.md b/docs/User-Guide_Armbian-Config/System.md index 8179abcc..ca114a76 100644 --- a/docs/User-Guide_Armbian-Config/System.md +++ b/docs/User-Guide_Armbian-Config/System.md @@ -9,6 +9,38 @@ *** ### Install alternative kernels + + +[![Install alternative kernels](/images/SY201.png)](#) + + + + +## Kernel Switching Warning + +Switching between different kernel versions can significantly impact the functionality of your device. A newer or older kernel may introduce changes to hardware compatibility, drivers, and system stability. Some features may stop working, while others may improve or be reintroduced. + +### ⚠️ Important Warning: Kernel changes carry inherent risks! +- A mismatched or incompatible kernel may result in **boot failures**, rendering the system unresponsive. +- Certain peripherals or hardware components (e.g., Wi-Fi, GPU acceleration, or power management) may no longer function correctly. +- Custom configurations or third-party modules might need to be recompiled or adjusted to work with the new kernel. + +### ✅ Precautions Before Switching Kernels +Before switching kernels, it is **strongly recommended** to: +1. **Back up your system** to prevent data loss. +2. **Verify compatibility** of your hardware and essential drivers with the target kernel version. +3. **Keep a rescue method available**, such as a bootable SD card / USB drive or serial console access, to recover the system if necessary. + +### 🛠️ Recovery Steps if Boot Fails +If your device fails to boot after a kernel change, you may need to: +- **Revert to a previous working kernel** using recovery options. +- **Use a serial console or debug mode** to diagnose the issue. +- **Reinstall the system** if no recovery options are available. + +**⚡ Exercise caution when switching kernels, especially on production systems or devices with limited recovery options.** + + + Switching between kernels might change functionality of your device. It might fail to boot! @@ -27,6 +59,17 @@ armbian-config --cmd SY201 *** ### Install Linux headers + + +[![Install Linux headers](/images/SY204.png)](#) + + + + +Linux headers are essential for compiling kernel modules and ensuring compatibility with software that interacts with the kernel. + + + **Command:** ~~~ armbian-config --cmd SY204 @@ -55,6 +98,11 @@ armbian-config --cmd SY205 *** ### Manage device tree overlays + + +[![Manage device tree overlays](/images/SY210.png)](#) + + **Command:** ~~~ armbian-config --cmd SY210 @@ -83,6 +131,11 @@ armbian-config --cmd SY300 *** ### Edit the boot environment + + +[![Edit the boot environment](/images/SY010.png)](#) + + This will open /boot/armbianEnv.txt file to edit CTRL+S to save CTLR+X to exit @@ -107,6 +160,11 @@ armbian-config --cmd SY010 *** ### Install to internal storage + + +[![Install to internal storage](/images/SY001.png)](#) + + **Command:** ~~~ armbian-config --cmd SY001 @@ -121,6 +179,33 @@ armbian-config --cmd SY001 *** ### ZFS filesystem - enable support + + +# 📌 ZFS (Zettabyte File System) + +## 🔍 Overview + +**ZFS (Zettabyte File System)** is a high-performance, scalable, and robust file system designed to provide advanced data protection, integrity, and storage management. Developed by Sun Microsystems, ZFS is widely used in enterprise environments, NAS systems, and personal storage solutions due to its unique features. + +## 🛠️ Key Features + +### ✅ Data Integrity +- **Copy-on-Write (CoW):** Prevents data corruption by never overwriting live data. +- **Checksumming:** Detects and corrects silent data corruption (bit rot). + +### 📦 Storage Management +- **Pooled Storage:** Eliminates the need for traditional partitions; all storage is managed dynamically. +- **Snapshots & Clones:** Creates instant backups without using extra storage. + +### 🚀 Performance & Scalability +- **Efficient Compression & Deduplication:** Reduces storage usage without performance loss. +- **Dynamic Striping & Caching:** Distributes data across multiple disks for optimized read/write speeds. + +### 🔐 Advanced Security +- **Native Encryption:** Supports dataset-level encryption for secure data storage. +- **RAID-Z:** A superior RAID alternative that prevents write-hole issues. + + **Command:** ~~~ armbian-config --cmd SY220 @@ -304,6 +389,11 @@ armbian-config --cmd NFS22 *** ### Disable root login + + +[![Disable root login](/images/SY101.png)](#) + + **Command:** ~~~ armbian-config --cmd SY101 @@ -555,6 +645,11 @@ armbian-config --cmd SSH202 *** ### Change shell system wide to BASH + + +[![Change shell system wide to BASH](/images/SY005.png)](#) + + This will switch system wide shell to BASH **Command:** @@ -571,6 +666,19 @@ armbian-config --cmd SY005 *** ### Change shell system wide to ZSH + + +**ZSH (Z Shell)** is an extended and highly customizable Unix shell that offers powerful features beyond traditional shells like **Bash**. It is widely used for its user-friendly enhancements, scripting capabilities, and plugin support. + +## 🚀 Key Features + +- **Auto-suggestions & Syntax Highlighting** ✨ +- **Powerful Tab Completion & Globbing** 🔍 +- **Customizable Prompt (e.g., with Oh My Zsh)** 🎨 +- **Shared Command History Across Sessions** 📜 +- **Built-in Spelling Correction** 🛠️ + + This will switch system wide shell to ZSH **Command:** @@ -608,6 +716,11 @@ armbian-config --cmd SY009 *** ### Enable Armbian firmware upgrades + + +[![Enable Armbian firmware upgrades](/images/SY202.png)](#) + + This will enable Armbian kernel upgrades that are currently put on hold. **Command:** @@ -731,6 +844,11 @@ armbian-config --cmd UNAT01 *** ### Configure automatic package updates + + +[![Configure automatic package updates](/images/UNAT02.png)](#) + + **Command:** ~~~ armbian-config --cmd UNAT02 diff --git a/docs/images/BNS001.png b/docs/images/BNS001.png new file mode 100644 index 0000000000000000000000000000000000000000..86af8b1084f90ee21a48c78467aa42e89b1911c1 GIT binary patch literal 3162 zcmeAS@N?(olHy`uVBq!ia0y~yU`=6QV4Tjv%)r2K?3Ife0|SFXvPY0F14ES>14Ba# z1H&%{28M`aU#h)v8qt3=FFn7*>Ub z2KAOyGcYhPCV9KNu=Ho#3}j$nU@!6Xb!C6aEXJjxSRef?oPmLRm#2$kNX4zUcX^9e zonmr*Xw9;%$00qz^8e1gE^OCoe@87&{m!PZ2st8T#56}L5muDaud|ff`^2$f2 zzRUU@uhM>>_5DIaSMG#2d)Jlm^RBqTcJkh9G@)ZwH&1U*I`-}LshdZO{#O1@{rhy& z=QC0#+g5Kc_b77?-`&o3<+kLIPBe9T>it<@A%_&w^M3teDtl`Gvm$gw}=1z z`f_t#`MK>6512kueEQGGE=G5|!={I?-pWq8d*SN4g^XXn`BiE@H0tL)79no_bnweyS|MKV0Ki4V?jb0a(FD%=&WkTt} zX(_%+k&|+}gC_MlZhGjliFFdM`Xt>6ITjOh8dDByn$4}}Jvqx|lcL8pl}Wsgo75)e za7;4oOmUvD##2SQDaBXmrU1yIHigK^9%d{9tMuDs+4T8kVkh+e7W^&m;eWh8eb3GV zg_eJJU;X!v*YldnB-NYSGR$x8yz-Xy(sAMK_6qeo%Bt_gKj{B|$>!v~xgOI}ZZDGW zl9{h?Q~g@ipQ_!5^Y2Z722a_o-RETTu1&t(@$lDA^K+V20yb>VXMlWnpS&oVcEy;G>L;n&Q|R%f|A&OiI* zyoukxZsM9wkjYgB1`*eO7~IsDeNxV>D7G%+eE0ufRqy^CI8YG_${`&op4)VlZoW;a zuU*-ga^FVsR!bcarMOV>Vu4pJ%QMo|sm6 z&}_}kpW63aH*e?be)-Dkows<7cy>&j&adPDVs)(5f=gEYCT>e{6<+ogw z(V-oT4$GeIc=Tf56OT=N6W>@*c=NlX|JUG29f;()WNwOnMY}O5lI*)u;@vmNyKY*q ze6wHa=JmfyHy@qMs^x#Jd+oodYkbJ1{4@KvUB2&s`uTJ753AplKdZNO+_YXfa#HS@ z&nLzF>ugtDezQUL=&$`vmeX^;egAxZyU*{UD7*TbKV*NTZo01S@vT(FdsAm|c2_s;qKbhhoxH+qx)N`uth^eyA~UY0-4ukpz-vh zU&&93J*PEkF1IZI1v9z(ye8j@=LpHiZ?jsnd#OLf9X)0H#f+B({1aJO^FQ1&a_wZ> z@3&9por|ye@Ln`~?vp6lb-bgKJg)lK`yDz$xe{L}6G zc%skT{~dMam8-2D!2fcPIVp1R9t zTixd3we5>{?zneD=j1HAi+m?{&34|@#=ph*s+DSWbn?@*^_@P9eC~LQ6 z!Aj+IzCWn!uTh%2n|oXF5!0!iRq8u;Bt+j|B#kHhzb$M>&% zZV)$dukW(FeEXxUw|{oMv);aJ^<8IXmrW|S#axdtPue<2>vnWcgPDA#8>XQN4x|@>aE`#+MtLIsFqJ$3JSce_sVO) v&CIv8EmJ{hWX0b84R{S9xk1hFWBFhHeJ$(Kc{a{j2GZ^6>gTe~DWM4f@fVvv literal 0 HcmV?d00001 diff --git a/docs/images/LO001.png b/docs/images/LO001.png new file mode 100644 index 0000000000000000000000000000000000000000..b0469cf8217583f6a383e2a2f3637443e47bab6e GIT binary patch literal 3342 zcmeAS@N?(olHy`uVBq!ia0y~yU`=6QV4T6i%)r24zUSL#1_lO&WRDAf8OXrEz+U3%>&pI;S&Umq^}~ysJPZsxd7dtgAr-gY-sLV^ zpX>Af%jNz* z?NP>ma^8W6O_#5~l06)^$-X?M>ZF;vQ1zt0Ws_trQzqGd`_Zpf{bluG!!p&`qSyEG zL@%>8yy3AaxqXe|&GLzFZYXB|G1;bkbC<`-Je8Xpov%%Jv)iNW%>>hD-~R>|SHJgN zr*v~o?8$YLKq@`H#j04BoyeMg`j7CnXYAWD_bKacKl^2iS?ng&lYO$AW~JPB+mzh? zrh9w635c(M@83m`hJ6*k-6y}fq4@jJTY2A2EXt8h6Lk)HOiNJlHkhO;aZ;!!h0~2} z;kdbPSj{HD%v1L&J6HBkE3}^JvC)mM=YM^(*M3!a=KHqKq2*_U@BK=sV?SvZ;_Sz*g|9`mk_H~?<^|!*G=9^;nrtF^gYM#nX@kwtUKUJyLQuo`oZ*KhZ^7oJS z|9{7q5tnBZ8RxL6fBNJ%D_y+GHnjdpwfY}D>;JyJb@TrpeVn#4^|fZaT{YL$>FK9= zZoWFbf5n{ttxr?kHrlI2o@6V2ml9l8{j+w{>gg4qr-oh5w5%?S+;OJ(`=`}6_TKxp z%G>wdt%>%KvBTK$AKx%QXteqGx;e^QF7 z^qHNLYkxfrpO^9d$bz_cc}da!JkOTL8Sbr4I^aBMYL3BjZ?nA`H%sQFSWj=5bk}dw zB;IE^C!cj*yVBewFiJmiN|Q^~UE;pTE5McIv^Z=AUKySA!SdI{#|r;o3=i&lOJ0 z5m5K~w!`_sR|}z&US<*}%i^wE8lUtsn<1>q?XL!l_qe%lOk&e#=f$U%i+q1C|MUOp zx3NDyUSn(Dyl>Io*V=uTxQ}noJZimdTY1Fd-HJEQ$uu7?N_Cx7d+yKa374|{c|IL~ zyL{u%*RQuHFPGTfTF(Bl;Geo`;q8liUsp@~I_-C2m-f9qTc6ttd>5PYCb%zkv(!nu z!hb~v&DEms_x1gYI=pkTY}MPzZ>F)T{+^P2bDi6!^RxHIe0Y%Jex5roKIZz?HNSrS z{d#2Ko~DR-YM*O-$v_xzeQ_V*{2RT=I(_b*L7`e>Q; z@r5yVrOU2AUh&=j>F>Q|GPAx;{mgIoWzy6&DX(2N-JSpG_Sx4j*Oyg#Y|0JEoDv;T z$yKVhRox)8>hAIfpVn7!O__Y_YYE#9qrDZ|%D$W5|M05t1agimto);r!}* zQ|z^Tr~ln_>g3I;UCeL%=HHIEdB2AJ(%#1xV(VUi^ga9VWLv0xdDq=j;VO|Qy}t2I zk8f69&!0K_(5YA9lg>U{%a>t3!{};AUUl)NyUh{mx9@+g{=NI#`nZ$xQmP-nQ;%N1 zz^3o(pT+!pQ&hEYzG7IfW^MK1HKUZzw!8nTHeIz+iPqU~d-ESmLDihE4`0f*-DN)i z?<&9JDSiG|$CI9}ysTpF`}e8!WqH-vuU1dm`rQ3${PQ0rlYP%Vy=JqwTEmoZ#Qr2*ZFTPY?A#ar`RXjOyZrd zGv5nVX6nGvnPwj1I-92CRXTOp9apL!r@Ar!DZ_~D(cEeCQ+H;%C^S0QV8;|teyz%Pp z$!ptx+U!1V`-{6zMS5n+>B77lQ)Rt*-pPDF;6 zn(r(B<3pViSY6Gg@7K3{v%h7sH{`#v_s>IjyuUsFS2I)V;k#e66hqV{Ce>Pk)P3Td z9)GsGsx~P=cgFqw({kRcES#QG%cOL3`sAERIXdq>%c=r5T@KjvbLo_n!xKS5`JUT$ zoryf1^!>o{uPLujFS35DdGEKpuUY8yV%JTpYSlo6M7X-OuIHY2%J;VGuiD(Gx-@C! zC*L)hHF zBU|mUIpzD`ro}tggxHim3+`R|J1ODo`d2HapVnucK4o|PoO$=b!RD?$`~2njJ@-rM zk^=T7grD4YT3l0HTPsNW9M7zf)lXj)PVx6VX*V%NRr<`u>G3~pb|0_(t>nF>I_W~B zMSbFVw;B8|>o#32n)}x8^Bf|JNteraP{j9+!2mW!AE+obt(Qr|+Jxq@nwr|N9%@2)RqoL9vjp&Z%t z^GeF)=IhDpuP1s=ORzJGw3|vv^-q;H1hIzv+?BHYe`xudGnHQg>i5nL{{C-q`?ue* z-jiZyetxm=UzNG4wB619%Kyw??7I0?S-4QY{#ecL?VF+%ziUhHOu63Yb7b$7H_uh9 z?YpWc^=_Yi+U}mW*@L>L%+uf8n%KEx_N2cvQtFTGo?;=Y|9AWQ_1lAOZTnK~^R0v4 z#n-AVnh0tf%uCrE7F^gAP!sR(qj{_Eoc|V0`>iL7d#g`v=84`ksrPaAq_b|j_k4JM z@?Xt;UeinSuFXBCZuR-git|U4u1uPmBNIP4XKI3M%I_q}uM^MeNv;3Ab6U=tzgp!1 zAkEd2-o~U|{k}YJh2rm+uz5lAm!kzsU9O`kL=5 z+BYrsY2N(fJKyA~{Yjs>zdz5nWcjRrHMRbf`R-T7tpzIDHxu@0McOqEcpTSF)sb=B t#9};0M}|;ilShRcZ?}Mff#JaOpZwkK3CS literal 0 HcmV?d00001 diff --git a/docs/images/SY001.png b/docs/images/SY001.png new file mode 100644 index 0000000000000000000000000000000000000000..ed1bbfbb58ad1d5e8660015a6542d8605dd68ba8 GIT binary patch literal 2981 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 literal 0 HcmV?d00001 diff --git a/docs/images/SY005.png b/docs/images/SY005.png new file mode 100644 index 0000000000000000000000000000000000000000..d4a2833aca6db28df768c59fc264ca110080041c GIT binary patch literal 2462 zcmeAS@N?(olHy`uVBq!ia0y~yU`=6QU`$|PW?*1ASDV|;z`&r8>=ES4z)+>ez|hdb z!0?NKfuZ3A14F3+1H-EX1_rAc3=HB0b9M#VFfcIi2l#}zz7GvrwQ3au1H&o?hE<`V zLA@o_3=9m6N#5=*Ed3cb0~r_?*h@TpUD;nUi*d=Yojv#dI0FO6KTj9OkcwMx?{XL2 zI>FR-F~>1Ff&1S7duc)fe*?IaIhE@ymggl&zrMQGpS5Y{RQq}cLg2yq`JISPx+>KQC-W3wxwBKP=ee@$fGtNiCG(Gy`x zgnntA|5!Zj>gKx2J+rY^Gv#HUb^{dZn*U8?3xoA>jp+^h}0KKaf1$vTND-V!H;+%~mLq?lQ`J!OBzipA%jH>B)* z`r@;tLS&xhuNpp&Y0-Ul^O^Ifzxnz86TdkBzn49^vGcd@PJTPp{oTDsd#(5VbN17g zo_9>!_c~)(u=>sW>X9egRBu12`Wd`zztuwf{B^r{%+~FncI_B%&GrW-clXb&>r?sd zGHGf~$)>}>8+Y#LNO|8`{PV^16n^E%lWwZFTRwb9nVlP&{`F7s&*PJ3i!OgB@$7#8 z*iR zT7O;s^>tKs^{w5h%YI#o^e%gAwjy%n5|dMJe|>*Z@$0QlyT#N+s=s+AP0fkfbo%)= zvztd(zPhw0FHQI6GtTOnIotm|YW1q0k^L~_cUF+~di(z6QMs?OW#rChZF<^n^%WdY zs@gZ5dC#Bv(D^O>SIX|_CEr>d>jg_*^CrdV*zcPADr}eW&5s^ppD)zv-&{U%P0Ha( zvUgV67~ITs-gNqDp8D=Ry|3S`s#CpLS#$blmF1+VYf|{P*&P3xd1F@2;a@mbU6#i2U#-@5g6wXIHn@w|O?zuo7b zXFTZ@wyFJ=&|~E_cdOpseRdHP-;-)%;wIH{owWOK$Ifc%VYbV%$FnECVLtzMaj<2M z!QH|=)5^W4ZC8&x>VE!>qMOdPm8(y$m49$~*`s-d zd!A+f$%~k@H~Vxd|JNsL^|seF_|NXDKK60e@{hX{_XckAT{qqSb8_g>+1vJLl`|Xt(O^IqmFf(bu%M=P&$EV z?FW}$(uvwPuYdLZBT0WxJ2fBQ9UC6*w)t++LyvE+9^0aVH*ucamVZxY(poWz_11p7 z?7l8exqk1b*6;Q6Cazw(>dUXE)0$`Q&lJ*M&vWdgpYNlurOG#_E8g7HmZCgq?^l+X zzyF@k-ZM4lYtxeG^(vS1R^89rf2Z{0MbV8CT`8*8HyvZK zqStRXzL~l4eCDJzDev#COX2_i?&P)Q+2=KX>D_$#)lh#^#pkRFP2I~;@3!Cj`QhWy ztD7d}Socl0>Aydh>*T$?u_xu;-JLX7Ox}aW=8FlOn z=I(mCImcQbaJpVzq9qwM#Y z+8-=3uA6SBzdNk{Kx2|>PYS0pG>HsWru_6bFW0|ooT}PycjfM38(w+)Ul+dd=T3Ta zYLdJBt9OZBW_CCK_y4%>`2Fm<^FEI>&L6k=A1N93WXCGy>2GeGQRxfX^nUW2uR8x! zZth8(W_ZubtRUuVqjyE7P~_%G}datb21!;a27;Yf_49 z{5Cb;Ui0r`rbN~gi+q*Ye*(XJ-2paqO3vrB^Rf9wymoheFYI4iiVH=Hsu=%N+XSy|rg~?dH|>O9k9FP2&9=c=8h;^{O3`E3O%_Cl3j# qc+WU{@(_XA@8$#@LJbv$_s{Kp-gj@&YHwc&QtRpJ=d#Wzp$Py0%f)>F literal 0 HcmV?d00001 diff --git a/docs/images/SY010.png b/docs/images/SY010.png new file mode 100644 index 0000000000000000000000000000000000000000..46184f0c8723a9309b386a9168671217a3865972 GIT binary patch literal 5428 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 literal 0 HcmV?d00001 diff --git a/docs/images/SY101.png b/docs/images/SY101.png new file mode 100644 index 0000000000000000000000000000000000000000..ce27fd1a43df4d134d0fcbeb81ea0306cf58a004 GIT binary patch literal 3743 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 literal 0 HcmV?d00001 diff --git a/docs/images/SY201.png b/docs/images/SY201.png new file mode 100644 index 0000000000000000000000000000000000000000..bbffc1612f8770ae9f3a108a40227ccd3eede5e5 GIT binary patch literal 3131 zcmeAS@N?(olHy`uVBq!ia0y~yU`=6QV60(bW?*30mAO8hfq_9G*(1o8fuTx`fuW&= zf#DYe14F|L28L1t28LG&3=CE?7#PG0=IjczVPIh35AX?beIFXMYSk(R28LA(468yz zgL+G<85kHClf2zsSo$+=1~M=(u$OrHy0X7y7UL3^xMIqk&%nSv+tbA{q~g}wyWC}q zkBK>4oaf}*sG0Gv*n3y%f_+9W*u!sCuNB`e(57Wk<#FTXpPwKXGT;UE|CYQr^}WCM zfAEAia_;KIU;gsOjtZ+rD@+5WXrdn|9N+~hm?PVuJjgg0`NY#Cw9ugBN_eErAr<*(Gb zKcBw_)%)z$J2TJ!==HSf#eeHHVX8unrhnagP$v6Z|F4s8Zcod4Ub4Ao_S@d?|L3ag zZcp)lurFo#`cT<@Uk}Y!uddzm?V3vTn(3?lU%h==#`gDP&u{ab)ov#D|KEF3uC~;| z&HBC4*-yC#-k%Kff1b~?>;8|e$M??IpHeQrsVU{Y=ceznn<76Nu8!Gax8k3PeT-e* zQk9!;RjThR&i4EUp|_fE&b#yE)Z^9pX~zv=#7Z-OZx)RV&LwuwbK zvT35uL62z(D&7W@R3%Q5D{Ps)N!)1?%%u3aZ!W#PR##s3@4@S&%EZvyk?!$(KHUmW z+Wdd^;mqsnzJGpmy>jo~e>VD8x2ROxaz*!lbY7nFUvlaj*G-k1ri-iZuKxRNcK82v zwLACduDR=Q_rSc1V!vPZJWky2v*70cO);A$-JRBx;y>lhY8%y?@7&B(Zl5cN-*j}- zMT>bA1$lk(nt6aQW}s$O36PheAx&W;rBXKSyeC*HliD{kAKy&qz` zxF3BAi7LOa+wcFhoT%^N=ZkHn?sD2#-b`ISY3iDk{i-)r*FFv4(>wLrcDmNwx<@w` z)$E?`y}SRDp5L~`i>{or_|*FKvA1dC8_}q<#S;SKa`I*P)vBxiy#CMn<=W&mDXPC2 zPp->nxt2VA`39A#^DkYAtdFZ(8KkrOTzlwpyFU`8k6&5!Z=RX=d}-vK#Fyf?t3B;z zmpY9JilH)PhS8kebnfIB`emiDeb!Yzm z6jkk;3@7c}%hv9#-ut}w*=Nshob3Ud-mBbvE_0auTJ^gGyZI^ei+SWD{5SosDcoeB z0857FX1_7XuYX+^_gCmue%-7(Hmj+>|3}*Sp5}V}DCz7H& zVRJ=ITlJf%>5D%b*5oTip7biSI8>~@`;JQ_-_r+4d!~h{UiP-R?{@Lm`Rhvk_kNy; zmzule^v5UMv%jqFOj&;=YhUx6t|?ZJZ`5B|zrH_n!~B1%KRlFuFSRgba!T+YvX9*u3z`u6!% z|J1+n)>8jYJgHUDzIj$zqwjFWJpJ-}DVKLoy8ET~Du4d$r++_3>t)paO+CI~R{ZA5 z>le?9h3pp#mYe>4;+mB0vLYw%6<+AOb5Y~$&y)8jz5Oe7{+(m0{v+kCxo-Ym-|n(I zZIUk2zxmcZH!3@_o_+oQ)9sqS=N|rZIq0W%!)r~A`kfnh$JIK<%{y&Z_GR7W{i?hF zor^PG|7*J3?c9AvH&X=`f1apPU7a!MZBFo}=YC~7cW#n7bdvJF5)HNx$ z4ZXijT(~rT(%S3smtX8Ll*svWt?F>f=JWn%-K_iDSBB>&wVj-Hbe_h|a&eH2$~!qQbW?xke|C!mhb;pYgwg|KjX!* zuYGc_?scl3tW!Bz=d|g6|Bw3%)}Kvde{lHB=i9e();w0YS+MzriT}wumrbW5b^OwI zWai9Izcn#u4oK$m4LkpnZ2n~{x9%!%n|=ISWt{xk{^#~n;vesIos_eqGH3qtuM<-i ztIhuUb8_~U;;q&5eom@6_w)FLiu{Qx(s@d^pU>2vm@`N6nXsE_eq>wmQG-L7}kpY~LJ({=r$-dlb)=9UTTu$^q1eRNx;*Ei)!PlYLO>rfbz&laXU x%Q~loCIDvEFX8|I literal 0 HcmV?d00001 diff --git a/docs/images/SY202.png b/docs/images/SY202.png new file mode 100644 index 0000000000000000000000000000000000000000..9ba40a5a5e418baefae51bd1c20d1baa29c4cf20 GIT binary patch literal 3175 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 BNqGPO literal 0 HcmV?d00001 diff --git a/docs/images/SY204.png b/docs/images/SY204.png new file mode 100644 index 0000000000000000000000000000000000000000..a482d2a97ae9c63ef41907abc3ab1cef0ef43415 GIT binary patch literal 2854 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 literal 0 HcmV?d00001 diff --git a/docs/images/SY210.png b/docs/images/SY210.png new file mode 100644 index 0000000000000000000000000000000000000000..f1ba1e59b534b8c8e2305d1b4f993495decd26d8 GIT binary patch literal 7439 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 UHZH+l1_lNOPgg&ebxsLQ0ME{x4gdfE literal 0 HcmV?d00001 diff --git a/docs/images/UNAT02.png b/docs/images/UNAT02.png new file mode 100644 index 0000000000000000000000000000000000000000..959d458af439ec19bfa3fb16d0193bdbf89ba9f5 GIT binary patch literal 7089 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 S*S>H9nda&0=d#Wzp$P!n)Wh)r literal 0 HcmV?d00001 diff --git a/docs/images/VNS001.png b/docs/images/VNS001.png new file mode 100644 index 0000000000000000000000000000000000000000..ef5d9c7caf97f78d2afe7406a667dbea498973e2 GIT binary patch literal 6942 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 AdjJ3c literal 0 HcmV?d00001 diff --git a/docs/images/WG002.png b/docs/images/WG002.png new file mode 100644 index 0000000000000000000000000000000000000000..90cb9e8811120cf806eaf7b6b6fe94ff9bf50758 GIT binary patch literal 3781 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 P36N$_S3j3^P614Ba# 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 literal 0 HcmV?d00001