Skip to content
forked from armbian/configng

Next generation bash based configuration API

Notifications You must be signed in to change notification settings

viraniac/configng

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Armbian Configuration Utility

Updated: Wed Sep 18 01:52:56 PM IST 2024

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-configng
  • System

    • S01 - Enable Kernel/BSP upgrades
    • S02 - Disable Kernel/BSP upgrades
    • S03 - Edit the boot environment
    • S04 - Install Linux headers
    • S05 - Remove Linux headers
    • S06 - Install to another storage
    • S07 - Manage SSH login options
    • S08 - Enable read only filesystem
    • S09 - Disable read only filesystem
    • S10 - Set CPU speed and governor
    • S11 - Set fan control options
    • S12 - Manage device tree overlays
  • Network

    • N01.1 - Configure network interfaces
    • N15 - Install Bluetooth support
    • N16 - Remove Bluetooth support
    • N17 - Bluetooth Discover
    • N18 - Toggle system IPv6/IPv4 internet protocol
  • Localisation

    • L00 - Change Global timezone (WIP)
    • L01 - Change Locales reconfigure the language and character set
    • L02 - Change Keyboard layout
    • L03 - Change APT mirrors
  • Software

    • SW01 - Desktop Environments
    • SW02 - Network tools
    • SW03 - Development tools
    • SW04 - Install system updates
  • Help

Install

Armbian installation

sudo apt install armbian-config

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
}

CLI options

Command line options.

Use:

armbian-configng --help

Outputs:


  System - System wide and admin settings (aarch64)
    --cmd S01 - Enable Kernel/BSP upgrades
    --cmd S02 - Disable Kernel/BSP upgrades
    --cmd S03 - Edit the boot environment
    --cmd S04 - Install Linux headers
    --cmd S05 - Remove Linux headers
    --cmd S06 - Install to another storage
    S07 - Manage SSH login options
	--cmd S0701 - Disable root login
	--cmd S0702 - Enable root login
	--cmd S0703 - Disable password login
	--cmd S0704 - Enable password login
	--cmd S0705 - Disable Public key authentication login
	--cmd S0706 - Enable Public key authentication login
	--cmd S0707 - Disable OTP authentication
	--cmd S0708 - Enable OTP authentication
	--cmd S0709 - Generate new OTP authentication QR code
	--cmd S0710 - Show OTP authentication QR code
    --cmd S08 - Enable read only filesystem
    --cmd S09 - Disable read only filesystem
    S10 - Set CPU speed and governor
	--cmd S1001 - Disable CPU frequency utilities
	--cmd S1002 - Enable CPU frequency utilities
	--cmd S1003 - Set minimum CPU speed
	--cmd S1004 - Set maximum CPU speed
	--cmd S1005 - Set CPU scaling governor
    S11 - Set fan control options
	--cmd S1101 - Set fan mode
	--cmd S1102 - Set fan level
	--cmd S1103 - Show current fan status
    --cmd S12 - Manage device tree overlays

  Network - Fixed and wireless network settings (wlan0)
    N01.1 - Configure network interfaces
      N01.1.1 - Wired
	--cmd N01 - Show configuration
	--cmd N02 - Enable DHCP on all interfaces
	--cmd N03 - Set fixed IP address
	--cmd N04 - Disable IPV6
	--cmd N05 - Enable IPV6
	--cmd N06 - Disable wired networking
      N01.1.2 - Wireless
	--cmd N07 - Show configuration
	--cmd N08 - Disable wireless networking
	--cmd N09 - Disable IPV6
	--cmd N10 - Enable IPV6
	--cmd N11 - Enable DHCP on wireless network interface
	--cmd N12 - Show common configs
	--cmd N13 - Apply common configs
	--cmd N14 - Display 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 (en_US.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

  Software - Run/Install 3rd party applications (01:03:43)
    SW01 - Desktop Environments
	--cmd SW0101 - Install XFCE desktop
	--cmd SW0102 - Install Gnome desktop
	--cmd SW0103 - Install i3-wm desktop
	--cmd SW0104 - Install Cinnamon desktop
	--cmd SW0105 - Install kde-neon desktop
    SW02 - Network tools
	--cmd SW0201 - Install realtime console network usage monitor (nload)
	--cmd SW0202 - Remove realtime console network usage monitor (nload)
	--cmd SW0203 - Install bandwidth measuring tool (iperf3)
	--cmd SW0204 - Remove bandwidth measuring tool (iperf3)
	--cmd SW0205 - Install IP LAN monitor (iptraf-ng)
	--cmd SW0206 - Remove IP LAN monitor (iptraf-ng)
	--cmd SW0207 - Install hostname broadcast via mDNS (avahi-daemon)
	--cmd SW0208 - Remove hostname broadcast via mDNS (avahi-daemon)
    SW03 - Development tools
	--cmd SW0301 - Install tools for cloning and managing repositories (git)
	--cmd SW0302 - Remove tools for cloning and managing repositories (git)
	--cmd SW0303 - Install Docker
	--cmd SW0304 - Remove Docker
    --cmd SW04 - Install system updates
  --cmd Help - About this app

Legacy options

Backward Compatible options.

Use:

armbian-configng main=Help

Outputs:

Legacy Options (Backward Compatible)
Please use 'armbian-configng --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 Kernel/BSP upgrades

Jobs:

fw_manipulate unhold

S02

Disable Kernel/BSP upgrades

Jobs:

fw_manipulate hold

S03

Edit the boot environment

Jobs:

nano /boot/uEnv.txt

S04

Install Linux headers

Jobs:

headers_install

S05

Remove Linux headers

Jobs:

headers_remove

S06

Install to another storage

Jobs:

/usr/sbin/emmc-install

S07

Manage SSH login options

Jobs:

No commands available

S08

Enable read only filesystem

Jobs:

manage_overlayfs enable

S09

Disable read only filesystem

Jobs:

manage_overlayfs disable

S10

Set CPU speed and governor

Jobs:

No commands available

S11

Set fan control options

Jobs:

No commands available

S12

Manage device tree overlays

Jobs:

manage_dtoverlays

N01.1

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

SW01

Desktop Environments

Jobs:

No commands available

SW02

Network tools

Jobs:

No commands available

SW03

Development tools

Jobs:

No commands available

SW04

Install system updates

Jobs:

debconf-apt-progress -- apt update
debconf-apt-progress -- apt -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade -y
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
Wrapping Netplan commands netplan_wrapper Igor Pecovnik
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
Set Armbian to rolling release set_rolling Tearran
Generate this markdown table of all module_options see_function_table_md Joey Turner
Set root filesystem to read only manage_overlayfs enable disable
Remove Linux headers headers_remove Joey Turner
Display a menu from pipe show_menu <<< armbianmonitor -h ; Joey Turner
Install kernel headers headers_install 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
freeze/unhold/reinstall kernel & bsp related packages. fw_manipulate unhold freeze
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 menu a given list of options with a provided prompt generic_select "true false" "Select an option" Gunjan Gupta
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 see_current_apt 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
Displays available adapters choose_adapter Igor Pecovnik
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
Generate a submenu from a parent_id generate_menu 'parent_id' Joey Turner
Install docker install_docker Gunjan Gupta
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
Set up a WiFi hotspot on the device hotspot_setup Joey Turner
Toggle IPv6 on or off toggle_ipv6 Joey Turner
Generate JSON-like object file. generate_json Joey Turner
Install DE install_de 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
Remove docker remove_docker Gunjan Gupta
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
Set cpufreq options like minimum/maximum speed and governor set_cpufreq_option MIN_SPEED MAX_SPEED
Set fan control options set_fan_controls [mode level]
List and connect to wireless network wifi_connect Igor Pecovnik
Generate a Help message for cli commands. see_cmd_list [catagory] Joey Turner
Check the internet connection with fallback DNS see_ping Joey Turner
Update the /etc/skel files in users directories update_skel Igor Pecovnik
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
}

About

Next generation bash based configuration API

Resources

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 100.0%