first commit
This commit is contained in:
@@ -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
|
||||
3
external/packages/bsp/common/etc/apt/apt.conf.d/02-orangepi-compress-indexes
vendored
Normal file
3
external/packages/bsp/common/etc/apt/apt.conf.d/02-orangepi-compress-indexes
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
Acquire::GzipIndexes "false";
|
||||
Acquire::CompressionTypes::Order:: "gz";
|
||||
APT::Compressor::gzip::Cost "10";
|
||||
23
external/packages/bsp/common/etc/apt/apt.conf.d/02-orangepi-periodic
vendored
Normal file
23
external/packages/bsp/common/etc/apt/apt.conf.d/02-orangepi-periodic
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
// Enable the update/upgrade script (0=disable)
|
||||
APT::Periodic::Enable "0";
|
||||
|
||||
// Do "apt-get update" automatically every n-days (0=disable)
|
||||
APT::Periodic::Update-Package-Lists "21";
|
||||
|
||||
// Do "apt-get upgrade --download-only" every n-days (0=disable)
|
||||
APT::Periodic::Download-Upgradeable-Packages "0";
|
||||
|
||||
// Run the "unattended-upgrade" security upgrade script
|
||||
// every n-days (0=disabled)
|
||||
// Requires the package "unattended-upgrades" and will write
|
||||
// a log in /var/log/unattended-upgrades
|
||||
APT::Periodic::Unattended-Upgrade "7";
|
||||
|
||||
// Do "apt-get autoclean" every n-days (0=disable)
|
||||
APT::Periodic::AutocleanInterval "120";
|
||||
|
||||
// Define basic patterns
|
||||
Unattended-Upgrade::Origins-Pattern {
|
||||
"origin=${distro_id},codename=${distro_codename}";
|
||||
"origin=OrangePi";
|
||||
};
|
||||
2
external/packages/bsp/common/etc/apt/apt.conf.d/71-orangepi-no-recommends
vendored
Normal file
2
external/packages/bsp/common/etc/apt/apt.conf.d/71-orangepi-no-recommends
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
APT::Install-Recommends "0";
|
||||
APT::Install-Suggests "0";
|
||||
1
external/packages/bsp/common/etc/apt/apt.conf.d/81-orangepi-no-languages
vendored
Normal file
1
external/packages/bsp/common/etc/apt/apt.conf.d/81-orangepi-no-languages
vendored
Normal file
@@ -0,0 +1 @@
|
||||
Acquire::Languages "none";
|
||||
4
external/packages/bsp/common/etc/cron.d/orangepi-truncate-logs
vendored
Normal file
4
external/packages/bsp/common/etc/cron.d/orangepi-truncate-logs
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
|
||||
|
||||
*/15 * * * * root /usr/lib/orangepi/orangepi-truncate-logs
|
||||
|
||||
2
external/packages/bsp/common/etc/cron.d/orangepi-updates
vendored
Normal file
2
external/packages/bsp/common/etc/cron.d/orangepi-updates
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
@reboot root /usr/lib/orangepi/orangepi-apt-updates
|
||||
@daily root /usr/lib/orangepi/orangepi-apt-updates
|
||||
4
external/packages/bsp/common/etc/cron.daily/orangepi-ram-logging
vendored
Normal file
4
external/packages/bsp/common/etc/cron.daily/orangepi-ram-logging
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
# Only run on systems where logrotate is a cron job
|
||||
systemctl is-active --quiet logrotate.timer && exit 0
|
||||
/usr/lib/orangepi/orangepi-ramlog write >/dev/null 2>&1
|
||||
20
external/packages/bsp/common/etc/default/orangepi-motd.dpkg-dist
vendored
Normal file
20
external/packages/bsp/common/etc/default/orangepi-motd.dpkg-dist
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
# add space-separated list of MOTD script names (without number) to exclude them from MOTD
|
||||
# Example:
|
||||
# MOTD_DISABLE="header tips updates"
|
||||
# ONE_WIRE="yes" show 1-wire temperature sensor if attached
|
||||
# PRIMARY_DIRECTION="rx" show daily traffic stats, options: "rx", "tx", "both", "off", vnstat needs to be installed
|
||||
|
||||
MOTD_DISABLE=""
|
||||
ONE_WIRE=""
|
||||
HIDE_IP_PATTERN="^dummy0|^lo"
|
||||
PRIMARY_INTERFACE="$(ls -1 /sys/class/net/ | grep -v lo | egrep "enp|eth" | head -1)"
|
||||
PRIMARY_DIRECTION="rx"
|
||||
STORAGE=/dev/sda1
|
||||
|
||||
# Temperature offset in Celcius degrees
|
||||
CPU_TEMP_OFFSET=0
|
||||
|
||||
# Define where red color is used
|
||||
CPU_TEMP_LIMIT=60
|
||||
HDD_TEMP_LIMIT=60
|
||||
AMB_TEMP_LIMIT=40
|
||||
25
external/packages/bsp/common/etc/default/orangepi-ramlog.dpkg-dist
vendored
Normal file
25
external/packages/bsp/common/etc/default/orangepi-ramlog.dpkg-dist
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
# configuration values for the orangepi-ram-logging service
|
||||
#
|
||||
# enable the orangepi-ram-logging service?
|
||||
ENABLED=true
|
||||
#
|
||||
# size of the tmpfs mount -- please keep in mind to adjust /etc/default/orangepi-zram-config too when increasing
|
||||
SIZE=50M
|
||||
#
|
||||
# use rsync instead of cp -r
|
||||
# requires rsync installed, may provide better performance
|
||||
# due to copying only new and changed files
|
||||
USE_RSYNC=true
|
||||
|
||||
# If USE_RSYNC is true, additional options may be specified for the rsync
|
||||
# commands used to synchronize logs to disk from RAM (XTRA_RSYNC_TO) or from
|
||||
# disk to RAM (XTRA_RSYNC_FROM). These are bash arrays to make specifying
|
||||
# multiple arguments easy even in the presence of whitespace.
|
||||
|
||||
|
||||
# If you use log rotation programs that datestamp their logs (e.g., runit's
|
||||
# svlogd or daemontools' multilog), deleting log files while synchronizing is
|
||||
# likely a good idea.
|
||||
#XTRA_RSYNC_TO=(--delete)
|
||||
XTRA_RSYNC_FROM=()
|
||||
XTRA_RSYNC_FROM=()
|
||||
40
external/packages/bsp/common/etc/default/orangepi-zram-config.dpkg-dist
vendored
Normal file
40
external/packages/bsp/common/etc/default/orangepi-zram-config.dpkg-dist
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
# configuration values for the orangepi-zram-config service
|
||||
#
|
||||
# enable the orangepi-zram-config service?
|
||||
ENABLED=true
|
||||
|
||||
# Zram swap enabled by default, unless set to disabled
|
||||
# SWAP=false
|
||||
|
||||
# percentage of zram used as swap compared to physically available DRAM.
|
||||
# Huge overcommitment (300) is possible and sometimes desirable. See
|
||||
# https://forum.armbian.com/topic/5565-zram-vs-swap/?do=findComment&comment=61082
|
||||
# and don't forget to adjust $MEM_LIMIT_PERCENTAGE below too.
|
||||
# ZRAM_PERCENTAGE=50
|
||||
|
||||
# percentage of DRAM available to zram. If this amount is exceeded the zram
|
||||
# devices used for swap simply behave as if the device is full. You need to
|
||||
# adjust/increase this value only if you want to work with massive memory
|
||||
# overcommitment (ZRAM_PERCENTAGE exceeding 150 for example)
|
||||
# MEM_LIMIT_PERCENTAGE=50
|
||||
|
||||
# create how many zram devices max for swap
|
||||
# ZRAM_MAX_DEVICES=4
|
||||
|
||||
# Which algorithm for zram based swapping. Seems lzo is best choice on ARM:
|
||||
# https://forum.armbian.com/topic/8161-swap-on-sbc/?do=findComment&comment=61668
|
||||
# SWAP_ALGORITHM=lzo
|
||||
|
||||
# Which algorithm to choose for zram based ramlog partition
|
||||
# RAMLOG_ALGORITHM=zstd
|
||||
|
||||
# Which algorithm to choose for zram based /tmp
|
||||
# TMP_ALGORITHM=zstd
|
||||
|
||||
# Size for zram based /tmp, total memory / 2 by default
|
||||
# TMP_SIZE=500M
|
||||
|
||||
# If defined a separate partition will be used as zram backing device. Be CAREFUL
|
||||
# which partition you assign and read starting from CONFIG_ZRAM_WRITEBACK in
|
||||
# https://www.kernel.org/doc/Documentation/blockdev/zram.txt
|
||||
# ZRAM_BACKING_DEV=/dev/nvme0n2
|
||||
11
external/packages/bsp/common/etc/initramfs-tools/hooks/bootsplash.sh
vendored
Executable file
11
external/packages/bsp/common/etc/initramfs-tools/hooks/bootsplash.sh
vendored
Executable file
@@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
# Copy splash file to initrd
|
||||
#
|
||||
mkdir -p "${DESTDIR}"/lib/firmware
|
||||
splashfile=/lib/firmware/bootsplash.orangepi
|
||||
|
||||
if [ -f "${splashfile}" ]; then
|
||||
cp "${splashfile}" "${DESTDIR}"/lib/firmware
|
||||
fi
|
||||
|
||||
exit 0
|
||||
10
external/packages/bsp/common/etc/initramfs/post-update.d/99-uboot
vendored
Executable file
10
external/packages/bsp/common/etc/initramfs/post-update.d/99-uboot
vendored
Executable file
@@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
. /etc/orangepi-release
|
||||
|
||||
echo "update-initramfs: Converting to u-boot format" >&2
|
||||
tempname="/boot/uInitrd-$1"
|
||||
mkimage -A $INITRD_ARCH -O linux -T ramdisk -C gzip -n uInitrd -d $2 $tempname > /dev/null
|
||||
|
||||
ln -sf $(basename $tempname) /boot/uInitrd > /dev/null 2>&1 || mv $tempname /boot/uInitrd
|
||||
exit 0
|
||||
27
external/packages/bsp/common/etc/kernel/postinst.d/xx-initramfs-cleanup
vendored
Executable file
27
external/packages/bsp/common/etc/kernel/postinst.d/xx-initramfs-cleanup
vendored
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/bin/sh
|
||||
# echo "DEBUG: postinst: initramfs-clean: cmd: $@" >&2
|
||||
# avoid running multiple times
|
||||
# This script should be run after the initramfs-tools script
|
||||
# and under the same conditions.
|
||||
if [ -n "$DEB_MAINT_PARAMS" ]; then
|
||||
eval set -- "$DEB_MAINT_PARAMS"
|
||||
if [ -z "$1" ] || [ "$1" != "configure" ]; then
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
files="$(find /boot -maxdepth 1 -name 'initrd.img-*' -o -name 'uInitrd-*')"
|
||||
|
||||
for f in $files; do
|
||||
if [ ! -d /lib/modules/"${f#*-}" ]; then
|
||||
echo "Remove unused generated file: $f"; rm $f
|
||||
fi
|
||||
done
|
||||
|
||||
check_boot_dev (){
|
||||
available_size_boot_device=$(findmnt --noheadings --output AVAIL --target /boot)
|
||||
echo "Free space after deleting the package $DPKG_MAINTSCRIPT_PACKAGE in /boot: $available_size_boot_device" >&2
|
||||
}
|
||||
mountpoint -q /boot && check_boot_dev
|
||||
|
||||
exit 0
|
||||
27
external/packages/bsp/common/etc/kernel/postrm.d/xx-initramfs-cleanup
vendored
Executable file
27
external/packages/bsp/common/etc/kernel/postrm.d/xx-initramfs-cleanup
vendored
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/bin/sh
|
||||
# echo "DEBUG: POSTRM: initramfs-clean: cmd: $@" >&2
|
||||
# avoid running multiple times
|
||||
# This script should be run after the initramfs-tools script
|
||||
# and under the same conditions.
|
||||
if [ -n "$DEB_MAINT_PARAMS" ]; then
|
||||
eval set -- "$DEB_MAINT_PARAMS"
|
||||
if [ -z "$1" ] || [ "$1" != "remove" ]; then
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
files="$(find /boot -maxdepth 1 -name 'initrd.img-*' -o -name 'uInitrd-*')"
|
||||
|
||||
for f in $files; do
|
||||
if [ ! -d /lib/modules/"${f#*-}" ]; then
|
||||
echo "Remove unused generated file: $f"; rm $f
|
||||
fi
|
||||
done
|
||||
|
||||
check_boot_dev (){
|
||||
available_size_boot_device=$(findmnt --noheadings --output AVAIL --target /boot)
|
||||
echo "Free space after deleting the package $DPKG_MAINTSCRIPT_PACKAGE in /boot: $available_size_boot_device" >&2
|
||||
}
|
||||
mountpoint -q /boot && check_boot_dev
|
||||
|
||||
exit 0
|
||||
1
external/packages/bsp/common/etc/modprobe.d/8189fs.conf
vendored
Executable file
1
external/packages/bsp/common/etc/modprobe.d/8189fs.conf
vendored
Executable file
@@ -0,0 +1 @@
|
||||
options 8189fs rtw_power_mgnt=0 rtw_enusbss=0
|
||||
1
external/packages/bsp/common/etc/modprobe.d/r8723bs.conf
vendored
Normal file
1
external/packages/bsp/common/etc/modprobe.d/r8723bs.conf
vendored
Normal file
@@ -0,0 +1 @@
|
||||
options r8723bs rtw_power_mgnt=0 rtw_enusbss=0
|
||||
4
external/packages/bsp/common/etc/network/interfaces.default
vendored
Normal file
4
external/packages/bsp/common/etc/network/interfaces.default
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
source /etc/network/interfaces.d/*
|
||||
# Network is managed by Network manager
|
||||
auto lo
|
||||
iface lo inet loopback
|
||||
31
external/packages/bsp/common/etc/profile.d/orangepi-activate-profile-sync-daemon.sh
vendored
Normal file
31
external/packages/bsp/common/etc/profile.d/orangepi-activate-profile-sync-daemon.sh
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) Authors: https://www.armbian.com/authors
|
||||
#
|
||||
# This file is licensed under the terms of the GNU General Public
|
||||
# License version 2. This program is licensed "as is" without any
|
||||
# warranty of any kind, whether express or implied.
|
||||
|
||||
# acticate profile sync daemon
|
||||
|
||||
if [ -f "${HOME}/.activate_psd" ]; then
|
||||
rm -f ${HOME}/.activate_psd
|
||||
/usr/bin/psd >/dev/null 2>&1
|
||||
config_file="${HOME}/.config/psd/psd.conf"
|
||||
if [ -f "${config_file}" ]; then
|
||||
# test for overlayfs
|
||||
# TODO: don't enable on btrfs
|
||||
sed -i 's/#USE_OVERLAYFS=.*/USE_OVERLAYFS="yes"/' "${config_file}"
|
||||
case $(/usr/bin/psd p 2>/dev/null | grep Overlayfs) in
|
||||
*active*)
|
||||
echo -e "\nConfigured profile sync daemon with overlayfs."
|
||||
;;
|
||||
*)
|
||||
echo -e "\nConfigured profile sync daemon."
|
||||
sed -i 's/USE_OVERLAYFS="yes"/#USE_OVERLAYFS="no"/' "${config_file}"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
systemctl --user enable psd.service >/dev/null 2>&1
|
||||
systemctl --user start psd.service >/dev/null 2>&1
|
||||
fi
|
||||
24
external/packages/bsp/common/etc/profile.d/orangepi-check-first-login-reboot.sh
vendored
Normal file
24
external/packages/bsp/common/etc/profile.d/orangepi-check-first-login-reboot.sh
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) Authors: https://www.armbian.com/authors
|
||||
#
|
||||
# This file is licensed under the terms of the GNU General Public
|
||||
# License version 2. This program is licensed "as is" without any
|
||||
# warranty of any kind, whether express or implied.
|
||||
|
||||
# only do this for interactive shells
|
||||
if [ "$-" != "${-#*i}" ]; then
|
||||
OutstandingPackages="$(egrep -v "linux-base|linux-image" /var/run/reboot-required.pkgs 2>/dev/null)"
|
||||
if [ -f "/var/run/.reboot_required" ]; then
|
||||
printf "\n[\e[0;91m Kernel was updated, please reboot\x1B[0m ]\n\n"
|
||||
elif [ "X${OutstandingPackages}" != "X" ]; then
|
||||
# No kernel update involved, just regular packages like e.g. dbus require a reboot
|
||||
Packages="$(egrep -v "linux-base|linux-image" /var/run/reboot-required.pkgs | sort | uniq | tr '\n' ',' | sed -e 's/,/, /g' -e 's/,\ $//')"
|
||||
OlderThanOneDay=$(find /var/run/reboot-required -mtime +1)
|
||||
if [ "X${OlderThanOneDay}" = "X" ]; then
|
||||
printf "\n[\e[0;92m some packages require a reboot (${Packages})\x1B[0m ]\n\n"
|
||||
else
|
||||
printf "\n[\e[0;91m some packages require a reboot since more than 1 day (${Packages})\x1B[0m ]\n\n"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
12
external/packages/bsp/common/etc/profile.d/orangepi-check-first-login.sh
vendored
Normal file
12
external/packages/bsp/common/etc/profile.d/orangepi-check-first-login.sh
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) Authors: https://www.armbian.com/authors
|
||||
#
|
||||
# This file is licensed under the terms of the GNU General Public
|
||||
# License version 2. This program is licensed "as is" without any
|
||||
# warranty of any kind, whether express or implied.
|
||||
|
||||
# First login as root?
|
||||
if [ -w /root/ -a -f /root/.not_logged_in_yet ]; then
|
||||
bash /usr/lib/orangepi/orangepi-firstlogin
|
||||
fi
|
||||
4
external/packages/bsp/common/etc/profile.d/orangepi-lang.sh
vendored
Normal file
4
external/packages/bsp/common/etc/profile.d/orangepi-lang.sh
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
# This should fix
|
||||
# perl: warning: Setting locale failed.
|
||||
|
||||
export LC_ALL=$LANG
|
||||
14
external/packages/bsp/common/etc/profile.d/orangepi-ssh-title.sh
vendored
Normal file
14
external/packages/bsp/common/etc/profile.d/orangepi-ssh-title.sh
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) Authors: https://www.armbian.com/authors
|
||||
#
|
||||
# This file is licensed under the terms of the GNU General Public
|
||||
# License version 2. This program is licensed "as is" without any
|
||||
# warranty of any kind, whether express or implied.
|
||||
|
||||
if [ -n "$PS1" ] && ( [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ] ); then
|
||||
tput tsl > /dev/null
|
||||
if [ "$?" -eq 0 ]; then
|
||||
echo `tput tsl` `whoami`@`hostname` `tput fsl`
|
||||
fi
|
||||
fi
|
||||
40
external/packages/bsp/common/etc/skel/.config/htop/htoprc
vendored
Normal file
40
external/packages/bsp/common/etc/skel/.config/htop/htoprc
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
# Beware! This file is rewritten by htop when settings are changed in the interface.
|
||||
# The parser is also very primitive, and not human-friendly.
|
||||
fields=0 48 17 18 38 39 40 2 46 47 49 1
|
||||
sort_key=1
|
||||
sort_direction=1
|
||||
hide_threads=0
|
||||
hide_kernel_threads=1
|
||||
hide_userland_threads=0
|
||||
shadow_other_users=0
|
||||
show_thread_names=0
|
||||
show_program_path=1
|
||||
highlight_base_name=0
|
||||
highlight_megabytes=1
|
||||
highlight_threads=1
|
||||
tree_view=0
|
||||
header_margin=1
|
||||
detailed_cpu_time=0
|
||||
cpu_count_from_zero=0
|
||||
update_process_names=0
|
||||
account_guest_in_cpu_meter=0
|
||||
color_scheme=0
|
||||
delay=15
|
||||
left_meters=AllCPUs Memory Swap CpuFreq CpuTemp
|
||||
left_meter_modes=1 1 1 2 2
|
||||
right_meters=OSversion Hostname Tasks LoadAverage Uptime
|
||||
right_meter_modes=2 2 2 2 2
|
||||
# SBC hardware and Kernel specific path.
|
||||
# Editable manually.
|
||||
BoardName=
|
||||
CpuFreq_handler=
|
||||
CpuTemp_handler=
|
||||
CpuVCore_l_handler=
|
||||
CpuVCore_b_handler=
|
||||
GpuVCore_handler=
|
||||
GpuTemp_handler=
|
||||
# Wlan / Eth alias
|
||||
eth0_alias=
|
||||
eth1_alias=
|
||||
wlan0_alias=
|
||||
wlan1_alias=
|
||||
28
external/packages/bsp/common/etc/systemd/system/logrotate.service
vendored
Normal file
28
external/packages/bsp/common/etc/systemd/system/logrotate.service
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
[Unit]
|
||||
Description=Rotate log files
|
||||
Documentation=man:logrotate(8) man:logrotate.conf(5)
|
||||
ConditionACPower=true
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStartPre=/usr/lib/orangepi/orangepi-ramlog write
|
||||
ExecStart=/usr/sbin/logrotate /etc/logrotate.conf
|
||||
ExecStartPost=/usr/lib/orangepi/orangepi-ramlog postrotate
|
||||
|
||||
# performance options
|
||||
Nice=19
|
||||
IOSchedulingClass=best-effort
|
||||
IOSchedulingPriority=7
|
||||
|
||||
# hardening options
|
||||
# details: https://www.freedesktop.org/software/systemd/man/systemd.exec.html
|
||||
# no ProtectHome for userdir logs
|
||||
# no PrivateNetwork for mail deliviery
|
||||
# no ProtectKernelTunables for working SELinux with systemd older than 235
|
||||
# no MemoryDenyWriteExecute for gzip on i686
|
||||
PrivateDevices=true
|
||||
PrivateTmp=true
|
||||
ProtectControlGroups=true
|
||||
ProtectKernelModules=true
|
||||
ProtectSystem=full
|
||||
RestrictRealtime=true
|
||||
1
external/packages/bsp/common/etc/udev/rules.d/10-wifi-disable-powermanagement.rules
vendored
Normal file
1
external/packages/bsp/common/etc/udev/rules.d/10-wifi-disable-powermanagement.rules
vendored
Normal file
@@ -0,0 +1 @@
|
||||
KERNEL=="wlan*", ACTION=="add", RUN+="/sbin/iwconfig wlan0 power off"
|
||||
42
external/packages/bsp/common/etc/udev/rules.d/50-usb-realtek-net.rules
vendored
Executable file
42
external/packages/bsp/common/etc/udev/rules.d/50-usb-realtek-net.rules
vendored
Executable file
@@ -0,0 +1,42 @@
|
||||
# This is used to change the default configuration of Realtek USB ethernet adapters
|
||||
|
||||
ACTION!="add", GOTO="usb_realtek_net_end"
|
||||
SUBSYSTEM!="usb", GOTO="usb_realtek_net_end"
|
||||
ENV{DEVTYPE}!="usb_device", GOTO="usb_realtek_net_end"
|
||||
|
||||
# Modify this to change the default value
|
||||
ENV{REALTEK_NIC_MODE}="1"
|
||||
|
||||
# Realtek
|
||||
ATTR{idVendor}=="0bda", ATTR{idProduct}=="8156", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||
ATTR{idVendor}=="0bda", ATTR{idProduct}=="8155", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||
ATTR{idVendor}=="0bda", ATTR{idProduct}=="8153", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||
ATTR{idVendor}=="0bda", ATTR{idProduct}=="8152", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||
|
||||
# Samsung
|
||||
ATTR{idVendor}=="04e8", ATTR{idProduct}=="a101", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||
|
||||
# Lenovo
|
||||
ATTR{idVendor}=="17ef", ATTR{idProduct}=="304f", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||
ATTR{idVendor}=="17ef", ATTR{idProduct}=="3052", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||
ATTR{idVendor}=="17ef", ATTR{idProduct}=="3054", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||
ATTR{idVendor}=="17ef", ATTR{idProduct}=="3057", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||
ATTR{idVendor}=="17ef", ATTR{idProduct}=="3082", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||
ATTR{idVendor}=="17ef", ATTR{idProduct}=="7205", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||
ATTR{idVendor}=="17ef", ATTR{idProduct}=="720a", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||
ATTR{idVendor}=="17ef", ATTR{idProduct}=="720b", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||
ATTR{idVendor}=="17ef", ATTR{idProduct}=="720c", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||
ATTR{idVendor}=="17ef", ATTR{idProduct}=="721e", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||
ATTR{idVendor}=="17ef", ATTR{idProduct}=="a359", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||
ATTR{idVendor}=="17ef", ATTR{idProduct}=="a387", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||
|
||||
# TP-LINK
|
||||
ATTR{idVendor}=="2357", ATTR{idProduct}=="0601", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||
|
||||
# Nvidia
|
||||
ATTR{idVendor}=="0955", ATTR{idProduct}=="09ff", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||
|
||||
# LINKSYS
|
||||
ATTR{idVendor}=="13b1", ATTR{idProduct}=="0041", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||
|
||||
LABEL="usb_realtek_net_end"
|
||||
26
external/packages/bsp/common/etc/update-motd.d/10-orangepi-header
vendored
Executable file
26
external/packages/bsp/common/etc/update-motd.d/10-orangepi-header
vendored
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) Authors: https://www.armbian.com/authors
|
||||
#
|
||||
# This file is licensed under the terms of the GNU General Public
|
||||
# License version 2. This program is licensed "as is" without any
|
||||
# warranty of any kind, whether express or implied.
|
||||
|
||||
# DO NOT EDIT THIS FILE but add config options to /etc/default/orangepi-motd
|
||||
# any changes will be lost on board support package update
|
||||
|
||||
THIS_SCRIPT="header"
|
||||
MOTD_DISABLE=""
|
||||
|
||||
[[ -f /etc/default/orangepi-motd ]] && . /etc/default/orangepi-motd
|
||||
|
||||
for f in $MOTD_DISABLE; do
|
||||
[[ $f == $THIS_SCRIPT ]] && exit 0
|
||||
done
|
||||
|
||||
. /etc/os-release
|
||||
. /etc/orangepi-release
|
||||
|
||||
KERNELID=$(uname -r)
|
||||
TERM=linux toilet -f standard -F metal $(echo $BOARD_NAME | sed 's/Orange Pi/OPi/')
|
||||
echo -e "Welcome to \e[0;91mOrange Pi ${VERSION} ${DISTRIBUTION_CODENAME^}\x1B[0m with $([[ $BRANCH == edge ]] && echo -e "\e[0;91mbleeding\x1B[0m edge " )\e[0;91mLinux $KERNELID\x1B[0m\n"
|
||||
285
external/packages/bsp/common/etc/update-motd.d/30-orangepi-sysinfo
vendored
Executable file
285
external/packages/bsp/common/etc/update-motd.d/30-orangepi-sysinfo
vendored
Executable file
@@ -0,0 +1,285 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) Authors: https://www.armbian.com/authors
|
||||
#
|
||||
# This file is licensed under the terms of the GNU General Public
|
||||
# License version 2. This program is licensed "as is" without any
|
||||
# warranty of any kind, whether express or implied.
|
||||
#
|
||||
|
||||
# DO NOT EDIT THIS FILE but add config options to /etc/default/orangepi-motd
|
||||
# generate system information
|
||||
|
||||
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||
THIS_SCRIPT="sysinfo"
|
||||
|
||||
# don't change default values - they are lost on upgrades. Use /etc/default/orangepi-motd for your values
|
||||
|
||||
MOTD_DISABLE=""
|
||||
PRIMARY_INTERFACE="eth0"
|
||||
PRIMARY_DIRECTION="rx"
|
||||
STORAGE=/dev/sda1
|
||||
HIDE_IP_PATTERN="^dummy0|^lo"
|
||||
CPU_TEMP_LIMIT=60
|
||||
# Temperature offset in Celcius degrees
|
||||
CPU_TEMP_OFFSET=0
|
||||
HDD_TEMP_LIMIT=60
|
||||
AMB_TEMP_LIMIT=40
|
||||
|
||||
[[ -f /etc/default/orangepi-motd ]] && . /etc/default/orangepi-motd
|
||||
|
||||
for f in $MOTD_DISABLE; do
|
||||
[[ $f == $THIS_SCRIPT ]] && exit 0
|
||||
done
|
||||
|
||||
# don't edit below here
|
||||
|
||||
function display() {
|
||||
# $1=name $2=value $3=red_limit $4=minimal_show_limit $5=unit $6=after $7=acs/desc{
|
||||
# battery red color is opposite, lower number
|
||||
if [[ "$1" == "Battery" ]]; then local great="<"; else local great=">"; fi
|
||||
if [[ -n "$2" && "$2" > "0" && (( "${2%.*}" -ge "$4" )) ]]; then
|
||||
printf "%-14s" "$1:"
|
||||
if awk "BEGIN{exit ! ($2 $great $3)}"; then echo -ne "\e[0;91m $2"; else echo -ne "\e[0;92m $2"; fi
|
||||
printf "%-1s\x1B[0m" "$5"
|
||||
printf "%-11s\t" "$6"
|
||||
return 1
|
||||
fi
|
||||
} # display
|
||||
|
||||
function getboardtemp() {
|
||||
if [ -f /etc/orangepimonitor/datasources/soctemp ]; then
|
||||
read raw_temp </etc/orangepimonitor/datasources/soctemp 2>/dev/null
|
||||
if [ ! -z $(echo "$raw_temp" | grep -o "^[1-9][0-9]*\.\?[0-9]*$") ] && (( $(echo "${raw_temp} < 200" |bc -l) )); then
|
||||
# Allwinner legacy kernels output degree C
|
||||
board_temp=${raw_temp}
|
||||
else
|
||||
board_temp=$(awk '{printf("%d",$1/1000)}' <<<${raw_temp})
|
||||
fi
|
||||
elif [ -f /etc/orangepimonitor/datasources/pmictemp ]; then
|
||||
# fallback to PMIC temperature
|
||||
board_temp=$(awk '{printf("%d",$1/1000)}' </etc/orangepimonitor/datasources/pmictemp)
|
||||
fi
|
||||
# Some boards, such as the Orange Pi Zero LTS, report shifted CPU temperatures
|
||||
board_temp=$((board_temp + CPU_TEMP_OFFSET))
|
||||
} # getboardtemp
|
||||
|
||||
function batteryinfo() {
|
||||
# Battery info for Allwinner
|
||||
mainline_dir="/sys/power/axp_pmu"
|
||||
legacy_dir="/sys/class/power_supply"
|
||||
if [[ -e "$mainline_dir" ]]; then
|
||||
read status_battery_connected < $mainline_dir/battery/connected 2>/dev/null
|
||||
if [[ "$status_battery_connected" == "1" ]]; then
|
||||
read status_battery_charging < $mainline_dir/charger/charging
|
||||
read status_ac_connect < $mainline_dir/ac/connected
|
||||
read battery_percent< $mainline_dir/battery/capacity
|
||||
# dispay charging / percentage
|
||||
if [[ "$status_ac_connect" == "1" && "$battery_percent" -lt "100" ]]; then
|
||||
status_battery_text=" charging"
|
||||
elif [[ "$status_ac_connect" == "1" && "$battery_percent" -eq "100" ]]; then
|
||||
status_battery_text=" charged"
|
||||
else
|
||||
status_battery_text=" discharging"
|
||||
fi
|
||||
fi
|
||||
elif [[ -e "$legacy_dir/axp813-ac" ]]; then
|
||||
read status_battery_connected < $legacy_dir/axp20x-battery/present
|
||||
if [[ "$status_battery_connected" == "1" ]]; then
|
||||
status_battery_text=" "$(awk '{print tolower($0)}' < $legacy_dir/axp20x-battery/status)
|
||||
read status_ac_connect < $legacy_dir/axp813-ac/present
|
||||
read battery_percent< $legacy_dir/axp20x-battery/capacity
|
||||
fi
|
||||
elif [[ -e "$legacy_dir/battery" ]]; then
|
||||
if [[ (("$(cat $legacy_dir/battery/voltage_now)" -gt "5" )) ]]; then
|
||||
status_battery_text=" "$(awk '{print tolower($0)}' < $legacy_dir/battery/status)
|
||||
read battery_percent <$legacy_dir/battery/capacity
|
||||
fi
|
||||
fi
|
||||
} # batteryinfo
|
||||
|
||||
function ambienttemp() {
|
||||
# define where w1 usually shows up
|
||||
W1_DIR="/sys/devices/w1_bus_master1/"
|
||||
if [ -f /etc/orangepimonitor/datasources/ambienttemp ]; then
|
||||
read raw_temp </etc/orangepimonitor/datasources/ambienttemp 2>/dev/null
|
||||
amb_temp=$(awk '{printf("%d",$1/1000)}' <<<${raw_temp})
|
||||
echo $amb_temp
|
||||
elif [[ -d $W1_DIR && $ONE_WIRE == yes ]]; then
|
||||
device=$(ls -1 $W1_DIR | grep -E '^[0-9]{1,4}' | head -1)
|
||||
if [[ -n $device ]]; then
|
||||
read raw_temp < ${W1_DIR}${device}/hwmon/$(ls -1 ${W1_DIR}${device}/hwmon)/temp1_input 2>/dev/null
|
||||
amb_temp=$(awk '{printf("%d",$1/1000)}' <<<${raw_temp})
|
||||
echo $amb_temp
|
||||
fi
|
||||
else
|
||||
# read ambient temperature from USB device if available
|
||||
if [[ ! -f /usr/bin/temper ]]; then
|
||||
echo ""
|
||||
return
|
||||
fi
|
||||
amb_temp=$(temper -c 2>/dev/null)
|
||||
case ${amb_temp} in
|
||||
*"find the USB device"*)
|
||||
echo ""
|
||||
;;
|
||||
*)
|
||||
amb_temp=$(awk '{print $NF}' <<<$amb_temp | sed 's/C//g')
|
||||
echo -n "scale=1;${amb_temp}/1" | grep -oE "\-?[[:digit:]]+\.[[:digit:]]"
|
||||
esac
|
||||
fi
|
||||
} # ambienttemp
|
||||
|
||||
function get_ip_addresses() {
|
||||
local ips=()
|
||||
for f in /sys/class/net/*; do
|
||||
local intf=$(basename $f)
|
||||
# match only interface names "dummy0" and "lo"
|
||||
if [[ $intf =~ $HIDE_IP_PATTERN ]]; then
|
||||
continue
|
||||
else
|
||||
local tmp=$(ip -4 addr show dev $intf | grep -v "$intf:avahi" | awk '/inet/ {print $2}' | cut -d'/' -f1 | head -n 1)
|
||||
|
||||
# add both name and IP - can be informative but becomes ugly with long persistent/predictable device names
|
||||
#[[ -n $tmp ]] && ips+=("$intf: $tmp")
|
||||
# add IP only
|
||||
[[ -n $tmp ]] && ips+=("$tmp")
|
||||
fi
|
||||
done
|
||||
echo "${ips[@]}"
|
||||
} # get_ip_addresses
|
||||
|
||||
function storage_info() {
|
||||
# storage info
|
||||
RootInfo=$(df -h /)
|
||||
root_usage=$(awk '/\// {print $(NF-1)}' <<<${RootInfo} | sed 's/%//g')
|
||||
root_total=$(awk '/\// {print $(NF-4)}' <<<${RootInfo})
|
||||
StorageInfo=$(df -h $STORAGE 2>/dev/null | grep $STORAGE)
|
||||
if [[ -n "${StorageInfo}" && ${RootInfo} != *$STORAGE* ]]; then
|
||||
storage_usage=$(awk '/\// {print $(NF-1)}' <<<${StorageInfo} | sed 's/%//g')
|
||||
storage_total=$(awk '/\// {print $(NF-4)}' <<<${StorageInfo})
|
||||
if [[ -n "$(command -v smartctl)" ]]; then
|
||||
DISK="${STORAGE::-1}"
|
||||
storage_temp+=$(smartctl -l scttempsts $DISK 2> /dev/null | grep -i 'Current Temperature:' | awk '{print $(NF-1)}')
|
||||
fi
|
||||
fi
|
||||
} # storage_info
|
||||
|
||||
|
||||
|
||||
# query various systems and send some stuff to the background for overall faster execution.
|
||||
# Works only with ambienttemp and batteryinfo since A20 is slow enough :)
|
||||
amb_temp=$(ambienttemp &)
|
||||
ip_address=$(get_ip_addresses &)
|
||||
batteryinfo
|
||||
storage_info
|
||||
getboardtemp
|
||||
critical_load=80
|
||||
|
||||
# get uptime, logged in users and load in one take
|
||||
UPTIME=$(LC_ALL=C uptime)
|
||||
UPT1=${UPTIME#*'up '}
|
||||
UPT2=${UPT1%'user'*}
|
||||
users=${UPT2//*','}
|
||||
users=${users//' '}
|
||||
time=${UPT2%','*}
|
||||
time=${time//','}
|
||||
time=$(echo $time | xargs)
|
||||
load=${UPTIME#*'load average: '}
|
||||
load=${load//','}
|
||||
load=$(echo $load | cut -d" " -f1)
|
||||
[[ $load == 0.0* ]] && load=0.10
|
||||
cpucount=$(grep -c processor /proc/cpuinfo)
|
||||
|
||||
load=$(awk '{printf("%.0f",($1/$2) * 100)}' <<< "$load $cpucount")
|
||||
|
||||
# memory and swap
|
||||
mem_info=$(LC_ALL=C free -w 2>/dev/null | grep "^Mem" || LC_ALL=C free | grep "^Mem")
|
||||
memory_usage=$(awk '{printf("%.0f",(($2-($4+$6+$7))/$2) * 100)}' <<<${mem_info})
|
||||
mem_info=$(echo $mem_info | awk '{print $2}')
|
||||
memory_total=$(( mem_info / 1024 ))
|
||||
swap_info=$(LC_ALL=C free -m | grep "^Swap")
|
||||
swap_usage=$( (awk '/Swap/ { printf("%3.0f", $3/$2*100) }' <<<${swap_info} 2>/dev/null || echo 0) | tr -c -d '[:digit:]')
|
||||
swap_total=$(awk '{print $(2)}' <<<${swap_info})
|
||||
|
||||
# display info
|
||||
display "System load" "${load%% *}" "${critical_load}" "0" "%" ""
|
||||
|
||||
printf "Up time: \x1B[92m%s\x1B[0m\t" "$time"
|
||||
display "Local users" "${users##* }" "3" "2" ""
|
||||
echo "" # fixed newline
|
||||
if [[ ${memory_total} -gt 1000 ]]; then
|
||||
memory_total=$(awk '{printf("%.2f",$1/1024)}' <<<${memory_total})"G"
|
||||
else
|
||||
memory_total+="M"
|
||||
fi
|
||||
|
||||
if [[ ${swap_total} -gt 500 ]]; then
|
||||
swap_total=$(awk '{printf("%.2f",$1/1024)}' <<<${swap_total})"G"
|
||||
else
|
||||
swap_total+="M"
|
||||
fi
|
||||
|
||||
display "Memory usage" "$memory_usage" "70" "0" "%" " of ${memory_total}"
|
||||
display "Zram usage" "$swap_usage" "75" "0" "%" " of ${swap_total}"
|
||||
printf "IP: "
|
||||
printf "\x1B[92m%s\x1B[0m" "$ip_address"
|
||||
echo "" # fixed newline
|
||||
display "CPU temp" "$board_temp" $CPU_TEMP_LIMIT "0" "°C" ""
|
||||
display "Ambient temp" "$amb_temp" $AMB_TEMP_LIMIT "0" "°C" ""
|
||||
display "Usage of /" "$root_usage" "90" "1" "%" " of $root_total"
|
||||
echo "" # fixed newline
|
||||
a=0
|
||||
display "storage/" "$storage_usage" "90" "1" "%" " of $storage_total" ; a=$((a+$?))
|
||||
display "storage temp" "$storage_temp" $HDD_TEMP_LIMIT "0" "°C" "" ; a=$((a+$?))
|
||||
display "Battery" "$battery_percent" "20" "1" "%" "$status_battery_text" ; a=$((a+$?))
|
||||
(( $a > 0 )) && echo "" # new line only if some value is displayed
|
||||
|
||||
# Check whether PRIMARY_INTERFACE exist in /var/lib/vnstat/
|
||||
PRIMARY_INTERFACE=$(comm -12 <(ls -1 /var/lib/vnstat/ 2> /dev/null) <(echo "$PRIMARY_INTERFACE" | sed 's/+/\n/g') | sed -n -e 'H;${x;s/\n/+/g;s/^+//;p;}')
|
||||
|
||||
line=0
|
||||
if [[ $(command -v vnstat) && -n $PRIMARY_INTERFACE ]]; then
|
||||
traffic=$(vnstat -i $PRIMARY_INTERFACE --oneline | cut -d";" -f4,5)
|
||||
traffic_rx=$(echo $traffic | cut -d";" -f1,1 | sed -r 's/([0-9]+\.[0-9]{1})[0-9]*/\1/')
|
||||
traffic_tx=$(echo $traffic | cut -d";" -f2,2 | sed -r 's/([0-9]+\.[0-9]{1})[0-9]*/\1/')
|
||||
[[ "$traffic" == *"Not enough"* ]] && { traffic_tx="n/a "; traffic_rx="n/a "; }
|
||||
case $PRIMARY_DIRECTION in
|
||||
tx)
|
||||
printf "TX today: \x1B[92m%s\x1B[0m \t" "$traffic_tx"
|
||||
line=$((line+1))
|
||||
;;
|
||||
rx)
|
||||
printf "RX today: \x1B[92m%s\x1B[0m \t" "$traffic_rx"
|
||||
line=$((line+1))
|
||||
;;
|
||||
both)
|
||||
printf "TX today: \x1B[92m%s\x1B[0m \t" "$traffic_tx"
|
||||
printf "RX today: \x1B[92m%s\x1B[0m \t" "$traffic_rx"
|
||||
line=$((line+1))
|
||||
;;
|
||||
*) #off or whatever
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if [[ $(command -v zpool) ]]; then
|
||||
zpoolstatus="$(zpool status </dev/stdin 2>&1 )"
|
||||
if [[ -n $(echo $zpoolstatus | grep 'not loaded') ]]; then
|
||||
:
|
||||
elif [[ -n $(echo $zpoolstatus | grep 'degraded\|OFFLINE') ]]; then
|
||||
printf "ZFS pool: "
|
||||
echo -ne "\e[0;91mDegraded\x1B[0m"
|
||||
line=$((line+1))
|
||||
elif [[ -n $(echo $zpoolstatus | grep 'no pools available') ]]; then
|
||||
printf "ZFS pool: "
|
||||
echo -ne "n/a"
|
||||
line=$((line+1))
|
||||
else
|
||||
printf "ZFS pool: "
|
||||
echo -ne "\e[0;92mOnline\x1B[0m"
|
||||
line=$((line+1))
|
||||
fi
|
||||
fi
|
||||
[[ $line -ne 0 ]] && echo ""
|
||||
echo ""
|
||||
26
external/packages/bsp/common/etc/update-motd.d/35-orangepi-tips
vendored
Executable file
26
external/packages/bsp/common/etc/update-motd.d/35-orangepi-tips
vendored
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) Authors: https://www.armbian.com/authors
|
||||
#
|
||||
# This file is licensed under the terms of the GNU General Public
|
||||
# License version 2. This program is licensed "as is" without any
|
||||
# warranty of any kind, whether express or implied.
|
||||
|
||||
# DO NOT EDIT THIS FILE but add config options to /etc/default/orangepi-motd
|
||||
# any changes will be lost on board support package update
|
||||
|
||||
THIS_SCRIPT="tips"
|
||||
MOTD_DISABLE=""
|
||||
|
||||
[[ -f /etc/default/orangepi-motd ]] && . /etc/default/orangepi-motd
|
||||
|
||||
for f in $MOTD_DISABLE; do
|
||||
[[ $f == $THIS_SCRIPT ]] && exit 0
|
||||
done
|
||||
|
||||
quotes="/etc/update-motd.d/quotes.txt"
|
||||
if [[ -f $quotes ]]; then
|
||||
random_line=$(shuf -i 1-$(wc -l < $quotes) -n 1)
|
||||
quote=$(sed -n -e "$random_line"p $quotes)
|
||||
[[ -n $quote ]] && echo -e "\e[93mTip of the day:\e[39m $quote\n"
|
||||
fi
|
||||
29
external/packages/bsp/common/etc/update-motd.d/40-orangepi-updates
vendored
Executable file
29
external/packages/bsp/common/etc/update-motd.d/40-orangepi-updates
vendored
Executable file
@@ -0,0 +1,29 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) Authors: https://www.armbian.com/authors
|
||||
#
|
||||
# This file is licensed under the terms of the GNU General Public
|
||||
# License version 2. This program is licensed "as is" without any
|
||||
# warranty of any kind, whether express or implied.
|
||||
|
||||
# DO NOT EDIT THIS FILE but add config options to /etc/default/orangepi-motd
|
||||
# any changes will be lost on board support package update
|
||||
|
||||
THIS_SCRIPT="updates"
|
||||
MOTD_DISABLE=""
|
||||
|
||||
[[ -f /etc/default/orangepi-motd ]] && . /etc/default/orangepi-motd
|
||||
|
||||
for f in $MOTD_DISABLE; do
|
||||
[[ $f == $THIS_SCRIPT ]] && exit 0
|
||||
done
|
||||
|
||||
NUM_UPDATES=0
|
||||
|
||||
[[ -f /var/cache/apt/archives/updates.number ]] && . /var/cache/apt/archives/updates.number
|
||||
|
||||
if [[ $NUM_UPDATES -gt 0 ]]; then
|
||||
echo -e "[\e[31m $NUM_SECURITY_UPDATES security updates available, $NUM_UPDATES updates total\e[0m: \e[1mapt upgrade\e[0m ]"
|
||||
echo -e "Last check: \e[92m$DATE\e[0m"
|
||||
echo
|
||||
fi
|
||||
30
external/packages/bsp/common/etc/update-motd.d/41-orangepi-config
vendored
Executable file
30
external/packages/bsp/common/etc/update-motd.d/41-orangepi-config
vendored
Executable file
@@ -0,0 +1,30 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) Authors: https://www.armbian.com/authors
|
||||
#
|
||||
# This file is licensed under the terms of the GNU General Public
|
||||
# License version 2. This program is licensed "as is" without any
|
||||
# warranty of any kind, whether express or implied.
|
||||
|
||||
# DO NOT EDIT THIS FILE but add config options to /etc/default/orangepi-motd
|
||||
# any changes will be lost on board support package update
|
||||
|
||||
THIS_SCRIPT="config"
|
||||
MOTD_DISABLE=""
|
||||
|
||||
[[ -f /etc/default/orangepi-motd ]] && . /etc/default/orangepi-motd
|
||||
|
||||
for f in $MOTD_DISABLE; do
|
||||
[[ $f == $THIS_SCRIPT ]] && exit 0
|
||||
done
|
||||
|
||||
if [[ $(( $RANDOM % 2 )) == 0 ]]; then
|
||||
if [[ -f /usr/sbin/orangepi-config ]]; then
|
||||
echo -e "[\e[31m General system configuration (beta)\e[0m: \e[1morangepi-config\e[0m ]\n"
|
||||
else
|
||||
echo -e "[\e[31m Menu-driven system configuration (beta)\e[0m: \e[1msudo dpkg -i orangepi-config.deb\e[0m ]\n"
|
||||
fi
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
||||
15
external/packages/bsp/common/etc/update-motd.d/98-orangepi-autoreboot-warn
vendored
Executable file
15
external/packages/bsp/common/etc/update-motd.d/98-orangepi-autoreboot-warn
vendored
Executable file
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) Authors: https://www.armbian.com/authors
|
||||
#
|
||||
# This file is licensed under the terms of the GNU General Public
|
||||
# License version 2. This program is licensed "as is" without any
|
||||
# warranty of any kind, whether express or implied.
|
||||
|
||||
# DO NOT EDIT THIS FILE
|
||||
# any changes will be lost on board support package update
|
||||
|
||||
if [[ -f /var/run/resize2fs-reboot ]]; then
|
||||
printf "\e[0;91mWarning: a reboot is needed to finish resizing the filesystem \x1B[0m \n"
|
||||
printf "\e[0;91mPlease reboot the system as soon as possible \x1B[0m \n"
|
||||
fi
|
||||
Reference in New Issue
Block a user