mirror of
https://github.com/armbian/build
synced 2025-09-24 19:47:06 +07:00
extension: net: Refactor, fix and improve network extensions
- Rename extensions with "net-*" prefix - Put the extensions into their own folder - Split off time sync packages into their own extensions to be able to be used separately - Put their config files into directories instead of using inline `cat <<- EOF >` - Move some other NetworkManager related stuff into the extension - Remove unneeded steps - Install iproute2 by default on all images (for the `ip` command)
This commit is contained in:
@@ -1,48 +0,0 @@
|
||||
#
|
||||
# Extension for Network Manager + Netplan + Chrony
|
||||
#
|
||||
function add_host_dependencies__install_network_manager() {
|
||||
display_alert "Adding Networking manager related packages" "network-manager network-manager-openvpn" "info"
|
||||
add_packages_to_rootfs network-manager network-manager-openvpn netplan.io chrony
|
||||
if [[ "${BUILD_DESKTOP}" == "yes" ]]; then
|
||||
add_packages_to_rootfs network-manager-gnome network-manager-ssh network-manager-vpnc
|
||||
fi
|
||||
if [[ "${DISTRIBUTION}" == "Ubuntu" ]]; then
|
||||
add_packages_to_rootfs network-manager-config-connectivity-ubuntu
|
||||
fi
|
||||
}
|
||||
|
||||
function pre_install_kernel_debs__configure_network_manager()
|
||||
{
|
||||
display_alert "${EXTENSION}: enabling Network Manager" "" "info"
|
||||
|
||||
# configure network manager
|
||||
sed "s/managed=\(.*\)/managed=true/g" -i "${SDCARD}"/etc/NetworkManager/NetworkManager.conf
|
||||
|
||||
## remove network manager defaults to handle eth by default @TODO: why?
|
||||
# rm -f "${SDCARD}"/usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf
|
||||
|
||||
# `systemd-networkd.service` will be enabled by `/lib/systemd/system-preset/90-systemd.preset` during first-run.
|
||||
# Mask it to avoid conflict
|
||||
chroot_sdcard systemctl mask systemd-networkd.service
|
||||
|
||||
# most likely we don't need to wait for nm to get online
|
||||
chroot_sdcard systemctl disable NetworkManager-wait-online.service
|
||||
|
||||
if [[ -n $NM_IGNORE_DEVICES ]]; then
|
||||
mkdir -p "${SDCARD}"/etc/NetworkManager/conf.d/
|
||||
cat <<- EOF > "${SDCARD}"/etc/NetworkManager/conf.d/10-ignore-interfaces.conf
|
||||
[keyfile]
|
||||
unmanaged-devices=$NM_IGNORE_DEVICES
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Let NetworkManager manage all devices on this system by default
|
||||
cat <<- EOF > "${SDCARD}"/etc/netplan/armbian-default.yaml
|
||||
# This installation supports NetworkManager renderer only. You need to install additional packages in case you want something else
|
||||
network:
|
||||
version: 2
|
||||
renderer: NetworkManager
|
||||
EOF
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
# Added by Armbian
|
||||
#
|
||||
# Reference: https://netplan.readthedocs.io/en/stable/netplan-yaml/
|
||||
#
|
||||
# Let systemd-networkd manage all Ethernet devices on this system, but be configured by Netplan.
|
||||
|
||||
network:
|
||||
version: 2
|
||||
renderer: networkd
|
||||
ethernets:
|
||||
all-eth-interfaces:
|
||||
match:
|
||||
name: "*"
|
||||
dhcp4: yes
|
||||
dhcp6: yes
|
||||
ipv6-privacy: yes # Enabled by default on most current systems, but networkd currently doesn't enable IPv6 privacy by default, see https://man.archlinux.org/man/systemd.network.5
|
||||
@@ -0,0 +1,8 @@
|
||||
# Added by Armbian
|
||||
#
|
||||
# The systemd-networkd configuration is managed by Netplan
|
||||
# See /etc/netplan/
|
||||
|
||||
# The match section is just to ignore a warning due to empty file
|
||||
[Match]
|
||||
MACAddress=NONE.ABCD.NONE # Will never match with anything
|
||||
@@ -0,0 +1,3 @@
|
||||
# Added by Armbian
|
||||
# The NetworkManager configuration is mainly managed by Netplan
|
||||
# See /etc/netplan/
|
||||
@@ -0,0 +1,5 @@
|
||||
[connection]
|
||||
wifi.mac-address-randomization=1
|
||||
|
||||
[device]
|
||||
wifi.scan-rand-mac-address=no
|
||||
@@ -0,0 +1,2 @@
|
||||
[connection]
|
||||
wifi.powersave = 2
|
||||
@@ -0,0 +1,11 @@
|
||||
# Added by Armbian
|
||||
#
|
||||
# Reference: https://netplan.readthedocs.io/en/stable/netplan-yaml/
|
||||
#
|
||||
# Let NetworkManager manage all devices on this system.
|
||||
# Any device will come up with DHCP, once carrier is detected.
|
||||
# This is basically Netplan passing control over to NetworkManager at boot time.
|
||||
|
||||
network:
|
||||
version: 2
|
||||
renderer: NetworkManager
|
||||
7
extensions/network/net-chrony.sh
Normal file
7
extensions/network/net-chrony.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
#
|
||||
# Extension to manage network time synchronization with Chrony
|
||||
#
|
||||
function add_host_dependencies__install_chrony() {
|
||||
display_alert "Extension: ${EXTENSION}: Installing additional packages" "chrony" "info"
|
||||
add_packages_to_rootfs chrony
|
||||
}
|
||||
49
extensions/network/net-network-manager.sh
Normal file
49
extensions/network/net-network-manager.sh
Normal file
@@ -0,0 +1,49 @@
|
||||
#
|
||||
# Extension to manage network interfaces with NetworkManager + Netplan
|
||||
#
|
||||
function add_host_dependencies__install_network_manager() {
|
||||
display_alert "Extension: ${EXTENSION}: Installing additional packages" "network-manager network-manager-openvpn netplan.io" "info"
|
||||
add_packages_to_rootfs network-manager network-manager-openvpn netplan.io
|
||||
|
||||
if [[ "${BUILD_DESKTOP}" == "yes" ]]; then
|
||||
display_alert "Extension: ${EXTENSION}: Installing additional packages for desktop" "network-manager-gnome network-manager-ssh network-manager-vpnc" "info"
|
||||
add_packages_to_rootfs network-manager-gnome network-manager-ssh network-manager-vpnc
|
||||
fi
|
||||
|
||||
if [[ "${DISTRIBUTION}" == "Ubuntu" ]]; then
|
||||
display_alert "Extension: ${EXTENSION}: Installing additional packages for Ubuntu" "network-manager-config-connectivity-ubuntu" "info"
|
||||
add_packages_to_rootfs network-manager-config-connectivity-ubuntu
|
||||
fi
|
||||
}
|
||||
|
||||
function pre_install_kernel_debs__configure_network_manager()
|
||||
{
|
||||
display_alert "Extension: ${EXTENSION}: Enabling Network-Manager" "" "info"
|
||||
|
||||
# We can't disable/mask systemd-networkd.service since it is required by Netplan
|
||||
|
||||
# Most likely we don't need to wait for nm to get online
|
||||
chroot_sdcard systemctl disable NetworkManager-wait-online.service
|
||||
|
||||
if [[ -n $NM_IGNORE_DEVICES ]]; then
|
||||
mkdir -p "${SDCARD}"/etc/NetworkManager/conf.d/
|
||||
cat <<- EOF > "${SDCARD}"/etc/NetworkManager/conf.d/10-ignore-interfaces.conf
|
||||
[keyfile]
|
||||
unmanaged-devices=$NM_IGNORE_DEVICES
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Copy network config files into the appropriate folders
|
||||
display_alert "Configuring" "NetworkManager and Netplan" "info"
|
||||
local netplan_config_src_folder="${EXTENSION_DIR}/config-nm/netplan/"
|
||||
local netplan_config_dst_folder="${SDCARD}/etc/netplan/"
|
||||
|
||||
local network_manager_config_src_folder="${EXTENSION_DIR}/config-nm/NetworkManager/"
|
||||
local network_manager_config_dst_folder="${SDCARD}/etc/NetworkManager/conf.d/"
|
||||
|
||||
run_host_command_logged cp "${netplan_config_src_folder}"* "${netplan_config_dst_folder}"
|
||||
run_host_command_logged cp "${network_manager_config_src_folder}"* "${network_manager_config_dst_folder}"
|
||||
|
||||
# Change the file permissions according to https://netplan.readthedocs.io/en/stable/security/
|
||||
chmod 600 "${SDCARD}"/etc/netplan/*
|
||||
}
|
||||
32
extensions/network/net-systemd-neworkd.sh
Normal file
32
extensions/network/net-systemd-neworkd.sh
Normal file
@@ -0,0 +1,32 @@
|
||||
#
|
||||
# Extension to manage network interfaces with systemd-networkd + Netplan
|
||||
#
|
||||
function add_host_dependencies__install_systemd_networkd() {
|
||||
display_alert "Extension: ${EXTENSION}: Installing additional packages" "netplan.io" "info"
|
||||
add_packages_to_rootfs netplan.io
|
||||
}
|
||||
|
||||
function pre_install_kernel_debs__configure_systemd_networkd()
|
||||
{
|
||||
display_alert "Extension: ${EXTENSION}: Enabling systemd-networkd" "" "info"
|
||||
|
||||
# Enable networkd
|
||||
chroot_sdcard systemctl enable systemd-networkd.service || display_alert "Failed to enable systemd-networkd.service" "" "wrn"
|
||||
|
||||
# Enable resolved too
|
||||
chroot_sdcard systemctl enable systemd-resolved.service || display_alert "Failed to enable systemd-resolved.service" "" "wrn"
|
||||
|
||||
# Copy network config files into the appropriate folders
|
||||
display_alert "Configuring" "systemd-networkd and Netplan" "info"
|
||||
local netplan_config_src_folder="${EXTENSION_DIR}/config-networkd/netplan/"
|
||||
local netplan_config_dst_folder="${SDCARD}/etc/netplan/"
|
||||
|
||||
local networkd_config_src_folder="${EXTENSION_DIR}/config-networkd/systemd/network/"
|
||||
local networkd_config_dst_folder="${SDCARD}/etc/systemd/network/"
|
||||
|
||||
run_host_command_logged cp "${netplan_config_src_folder}"* "${netplan_config_dst_folder}"
|
||||
run_host_command_logged cp "${networkd_config_src_folder}"* "${networkd_config_dst_folder}"
|
||||
|
||||
# Change the file permissions according to https://netplan.readthedocs.io/en/stable/security/
|
||||
chmod 600 "${SDCARD}"/etc/netplan/*
|
||||
}
|
||||
14
extensions/network/net-systemd-timesyncd.sh
Normal file
14
extensions/network/net-systemd-timesyncd.sh
Normal file
@@ -0,0 +1,14 @@
|
||||
#
|
||||
# Extension to manage network time synchronization with systemd-timesyncd
|
||||
#
|
||||
function add_host_dependencies__install_systemd-timesyncd() {
|
||||
display_alert "Extension: ${EXTENSION}: Installing additional packages" "systemd-timesyncd" "info"
|
||||
add_packages_to_rootfs systemd-timesyncd
|
||||
}
|
||||
|
||||
function pre_install_kernel_debs__configure_systemd-timesyncd()
|
||||
{
|
||||
# Enable timesyncd
|
||||
display_alert "Extension: ${EXTENSION}: Enabling systemd-timesyncd" "" "info"
|
||||
chroot_sdcard systemctl enable systemd-timesyncd.service
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
#
|
||||
# Extension for systemd-networkd + systemd-timesyncd
|
||||
#
|
||||
function add_host_dependencies__install_network_manager() {
|
||||
display_alert "Extension: ${EXTENSION}: install additional packages" "iproute2 systemd-timesyncd netplan.io" "info"
|
||||
add_packages_to_rootfs iproute2 systemd-timesyncd netplan.io
|
||||
}
|
||||
|
||||
function pre_install_kernel_debs__configure_systemd_networkd()
|
||||
{
|
||||
display_alert "Extension: ${EXTENSION}: enabling systemd-networkd" "" "info"
|
||||
|
||||
# remove default interfaces file if present
|
||||
rm -f "${SDCARD}"/etc/network/interfaces
|
||||
|
||||
# enable networkd
|
||||
chroot_sdcard systemctl enable systemd-networkd.service || display_alert "Failed to enable systemd-networkd.service" "" "wrn"
|
||||
|
||||
# enable resolved too
|
||||
chroot_sdcard systemctl enable systemd-resolved.service || display_alert "Failed to enable systemd-resolved.service" "" "wrn"
|
||||
|
||||
# Mask `NetworkManager.service` to avoid conflict just to make sure
|
||||
chroot_sdcard systemctl mask NetworkManager.service
|
||||
|
||||
# Enable timesyncd
|
||||
display_alert "${EXTENSION}: enabling systemd-timesyncd" "" "info"
|
||||
chroot_sdcard systemctl enable systemd-timesyncd.service
|
||||
|
||||
# Let's have DHCP on all network devices
|
||||
cat <<- EOF > "${SDCARD}"/etc/netplan/armbian-default.yaml
|
||||
# This installation supports systemd-networkd renderer only. You need to install additional packages in case you want something else
|
||||
network:
|
||||
version: 2
|
||||
renderer: networkd
|
||||
ethernets:
|
||||
alleths:
|
||||
match:
|
||||
name: e*
|
||||
dhcp4: true
|
||||
EOF
|
||||
|
||||
# Fix NetPlan permission issue
|
||||
chmod 600 "${SDCARD}"/etc/netplan/armbian-default.yaml
|
||||
}
|
||||
Reference in New Issue
Block a user