Adding minimal image (#1504)
* Minimal build setup (#1463) * Netplan folder check & armbian-tools dependency on expect (and tcl) solved (#1464) * Prevent netplan configration if it is not installed * Resolved expect dependecy of armbian-tools * More packages added for armbian-tools * Added python3-apt and rsyslog to minimal installation * Debootstrap variant doesn't play nice. We loose networking and it affects standard builds as well. Removing. * Python-to-Bash conversion (#1470) * Remove python3-apt dependency from BSP package, fix netplan error also on Disco and putting back varint=minbase ... tested Disco, Bionic * Distinguish package list: *-minimal.list and *-desktop.list * Enable Wireguard back which was removed by mistake. https://github.com/armbian/build/issues/1471 * Having minbase debootstrap variant for all will require further adjustements with current package base - backward compatibility. Minimal image is now Python free but need further testings ... * Add wireless-regdb and crda to the pakage base, fix Ubuntu keyring warning while debootstrap. * Add figlet to sort out missing fonts * Moving few packages here and there. Bugfix when creating a cache package list * Manually compared base images - they are the same with small insignificant difference. Minimal image has to be futher tuned * Adjustements for bash powered lsb_release, adding some needed packages * Fixed (no) network problems on Bionic/Disco * Add rsync to debootstrap_list and few minor fixes * Adjust text in lsb_release * Olimex Micro A20: fix wrong boot config * Remove duplicate depenedency * Odroid C1: adjust kernel config
This commit is contained in:
parent
610dd425d4
commit
f416c35c16
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm64 4.19.53 Kernel Configuration
|
||||
# Linux/arm64 4.19.64 Kernel Configuration
|
||||
#
|
||||
|
||||
#
|
||||
@ -2007,7 +2007,7 @@ CONFIG_LED_TRIGGER_PHY=y
|
||||
# CONFIG_SFP is not set
|
||||
# CONFIG_AMD_PHY is not set
|
||||
# CONFIG_AQUANTIA_PHY is not set
|
||||
# CONFIG_ASIX_PHY is not set
|
||||
CONFIG_AX88796B_PHY=m
|
||||
# CONFIG_AT803X_PHY is not set
|
||||
# CONFIG_BCM7XXX_PHY is not set
|
||||
# CONFIG_BCM87XX_PHY is not set
|
||||
@ -2241,7 +2241,6 @@ CONFIG_WLCORE_SPI=m
|
||||
CONFIG_WLCORE_SDIO=m
|
||||
CONFIG_WILINK_PLATFORM_DATA=y
|
||||
CONFIG_RTL8822BU=m
|
||||
CONFIG_RTL8821AU=m
|
||||
CONFIG_RTL8812AU=m
|
||||
CONFIG_WLAN_VENDOR_ZYDAS=y
|
||||
CONFIG_USB_ZD1201=m
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm 5.2.1 Kernel Configuration
|
||||
# Linux/arm 5.2.7 Kernel Configuration
|
||||
#
|
||||
|
||||
#
|
||||
@ -884,6 +884,8 @@ CONFIG_XFRM_INTERFACE=m
|
||||
CONFIG_XFRM_IPCOMP=m
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
CONFIG_WIREGUARD=m
|
||||
# CONFIG_WIREGUARD_DEBUG is not set
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_ROUTE_CLASSID=y
|
||||
@ -3413,7 +3415,7 @@ CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
|
||||
CONFIG_THERMAL_HWMON=y
|
||||
CONFIG_THERMAL_OF=y
|
||||
# CONFIG_THERMAL_WRITABLE_TRIPS is not set
|
||||
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
|
||||
# CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE is not set
|
||||
# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
|
||||
# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
|
||||
CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR=y
|
||||
@ -3421,7 +3423,7 @@ CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR=y
|
||||
CONFIG_THERMAL_GOV_STEP_WISE=y
|
||||
# CONFIG_THERMAL_GOV_BANG_BANG is not set
|
||||
# CONFIG_THERMAL_GOV_USER_SPACE is not set
|
||||
# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set
|
||||
CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y
|
||||
CONFIG_CPU_THERMAL=y
|
||||
# CONFIG_CLOCK_THERMAL is not set
|
||||
# CONFIG_DEVFREQ_THERMAL is not set
|
||||
@ -6216,6 +6218,23 @@ CONFIG_PSTORE_PMSG=y
|
||||
CONFIG_PSTORE_RAM=y
|
||||
# CONFIG_SYSV_FS is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
CONFIG_AUFS_FS=m
|
||||
CONFIG_AUFS_BRANCH_MAX_127=y
|
||||
# CONFIG_AUFS_BRANCH_MAX_511 is not set
|
||||
# CONFIG_AUFS_BRANCH_MAX_1023 is not set
|
||||
# CONFIG_AUFS_BRANCH_MAX_32767 is not set
|
||||
CONFIG_AUFS_SBILIST=y
|
||||
# CONFIG_AUFS_HNOTIFY is not set
|
||||
# CONFIG_AUFS_EXPORT is not set
|
||||
# CONFIG_AUFS_XATTR is not set
|
||||
# CONFIG_AUFS_FHSM is not set
|
||||
# CONFIG_AUFS_RDU is not set
|
||||
# CONFIG_AUFS_DIRREN is not set
|
||||
# CONFIG_AUFS_SHWH is not set
|
||||
# CONFIG_AUFS_BR_RAMFS is not set
|
||||
# CONFIG_AUFS_BR_FUSE is not set
|
||||
CONFIG_AUFS_BDEV_LOOP=y
|
||||
# CONFIG_AUFS_DEBUG is not set
|
||||
CONFIG_NETWORK_FILESYSTEMS=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V2=y
|
||||
@ -6731,6 +6750,7 @@ CONFIG_CC_HAS_SANCOV_TRACE_PC=y
|
||||
CONFIG_PANIC_ON_OOPS_VALUE=0
|
||||
CONFIG_PANIC_TIMEOUT=0
|
||||
CONFIG_SCHED_DEBUG=y
|
||||
CONFIG_SCHED_INFO=y
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_SCHED_STACK_END_CHECK is not set
|
||||
# CONFIG_DEBUG_TIMEKEEPING is not set
|
||||
|
||||
@ -830,6 +830,8 @@ CONFIG_XFRM_IPCOMP=m
|
||||
CONFIG_NET_KEY=y
|
||||
CONFIG_NET_KEY_MIGRATE=y
|
||||
CONFIG_INET=y
|
||||
CONFIG_WIREGUARD=m
|
||||
# CONFIG_WIREGUARD_DEBUG is not set
|
||||
CONFIG_IP_MULTICAST=y
|
||||
CONFIG_IP_ADVANCED_ROUTER=y
|
||||
CONFIG_IP_FIB_TRIE_STATS=y
|
||||
|
||||
@ -195,8 +195,8 @@ family_tweaks()
|
||||
|
||||
family_tweaks_bsp()
|
||||
{
|
||||
mkdir -p $destination/etc/udev/rules.d
|
||||
mkdir -p $destination/usr/local/bin
|
||||
cp $SRC/packages/bsp/rockchip/hdmi.rules $destination/etc/udev/rules.d
|
||||
install -m 755 $SRC/packages/bsp/rockchip/hdmi-hotplug $destination/usr/local/bin
|
||||
mkdir -p $destination/etc/udev/rules.d
|
||||
mkdir -p $destination/usr/local/bin
|
||||
cp $SRC/packages/bsp/rockchip/hdmi.rules $destination/etc/udev/rules.d
|
||||
install -m 755 $SRC/packages/bsp/rockchip/hdmi-hotplug $destination/usr/local/bin
|
||||
}
|
||||
|
||||
@ -234,7 +234,7 @@ for line in "${buildlist[@]}"; do
|
||||
ATF_COMPILER ATF_USE_GCC ATFSOURCE ATFDIR ATFBRANCH ATFSOURCEDIR PACKAGE_LIST_RM NM_IGNORE_DEVICES DISPLAY_MANAGER family_tweaks_bsp_s \
|
||||
CRYPTROOT_ENABLE CRYPTROOT_PASSPHRASE CRYPTROOT_SSH_UNLOCK CRYPTROOT_SSH_UNLOCK_PORT CRYPTROOT_SSH_UNLOCK_KEY_NAME ROOT_MAPPER \
|
||||
NETWORK HDMI USB WIRELESS ARMBIANMONITOR DEFAULT_CONSOLE FORCE_BOOTSCRIPT_UPDATE SERIALCON UBOOT_TOOLCHAIN2 toolchain2 \
|
||||
BUILD_REPOSITORY_URL BUILD_REPOSITORY_COMMIT DESKTOP_AUTOLOGIN
|
||||
BUILD_REPOSITORY_URL BUILD_REPOSITORY_COMMIT DESKTOP_AUTOLOGIN BUILD_MINIMAL
|
||||
|
||||
read -r BOARD BRANCH RELEASE BUILD_DESKTOP <<< "${line}"
|
||||
((n+=1))
|
||||
|
||||
@ -126,26 +126,38 @@ BOOTCONFIG_VAR_NAME=BOOTCONFIG_${BRANCH^^}
|
||||
[[ -z $BOOTPATCHDIR ]] && BOOTPATCHDIR="u-boot-$LINUXFAMILY"
|
||||
[[ -z $KERNELPATCHDIR ]] && KERNELPATCHDIR="$LINUXFAMILY-$BRANCH"
|
||||
|
||||
if [[ $RELEASE == xenial || $RELEASE == bionic || $RELEASE == disco ]]; then DISTRIBUTION="Ubuntu"; else DISTRIBUTION="Debian"; fi
|
||||
if [[ $RELEASE == xenial || $RELEASE == bionic || $RELEASE == disco ]]; then
|
||||
DISTRIBUTION="Ubuntu"
|
||||
else
|
||||
DISTRIBUTION="Debian"
|
||||
fi
|
||||
|
||||
# Base system dependencies. Since adding MINIMAL_IMAGE we rely on "variant=minbase" which has very basic package set
|
||||
DEBOOTSTRAP_LIST="locales gnupg ifupdown apt-utils apt-transport-https ca-certificates bzip2 console-setup cpio cron \
|
||||
dbus init initramfs-tools iputils-ping isc-dhcp-client kmod less libpam-systemd \
|
||||
linux-base logrotate netbase netcat-openbsd rsyslog systemd sudo ucf udev whiptail \
|
||||
wireless-regdb crda dmsetup rsync"
|
||||
|
||||
[[ $BUILD_DESKTOP == yes ]] && DEBOOTSTRAP_LIST+=" libgtk2.0-bin"
|
||||
|
||||
# tab cleanup is mandatory
|
||||
DEBOOTSTRAP_LIST=$(echo $DEBOOTSTRAP_LIST | sed -e 's,\\[trn],,g')
|
||||
|
||||
# Base system dependencies
|
||||
DEBOOTSTRAP_LIST="locales,gnupg,ifupdown,apt-transport-https,ca-certificates"
|
||||
[[ $BUILD_DESKTOP == yes ]] && DEBOOTSTRAP_LIST+=",libgtk2.0-bin"
|
||||
|
||||
# Essential packages
|
||||
PACKAGE_LIST="bc bridge-utils build-essential cpufrequtils device-tree-compiler figlet fbset fping \
|
||||
iw fake-hwclock wpasupplicant psmisc ntp parted rsync sudo curl linux-base dialog crda \
|
||||
iw fake-hwclock wpasupplicant psmisc ntp parted sudo curl linux-base dialog crda \
|
||||
wireless-regdb ncurses-term python3-apt sysfsutils toilet u-boot-tools unattended-upgrades \
|
||||
usbutils wireless-tools console-setup unicode-data openssh-server initramfs-tools \
|
||||
ca-certificates resolvconf expect iptables automake nocache debconf-utils html2text \
|
||||
bison flex libwrap0-dev libssl-dev libnl-3-dev libnl-genl-3-dev"
|
||||
bison flex libwrap0-dev libssl-dev libnl-3-dev libnl-genl-3-dev wget keyboard-configuration"
|
||||
|
||||
|
||||
# Non-essential packages
|
||||
PACKAGE_LIST_ADDITIONAL="armbian-firmware alsa-utils btrfs-tools dosfstools iotop iozone3 stress screen \
|
||||
ntfs-3g vim pciutils evtest htop pv lsof libfuse2 libdigest-sha-perl \
|
||||
libproc-processtable-perl aptitude dnsutils f3 haveged hdparm rfkill vlan sysstat bash-completion \
|
||||
hostapd git ethtool network-manager unzip ifenslave command-not-found libpam-systemd iperf3 \
|
||||
hostapd git ethtool network-manager unzip ifenslave command-not-found libpam-systemd iperf3 nano \
|
||||
software-properties-common libnss-myhostname f2fs-tools avahi-autoipd iputils-arping qrencode mmc-utils sunxi-tools"
|
||||
|
||||
|
||||
@ -158,54 +170,71 @@ PACKAGE_LIST_DESKTOP="xserver-xorg xserver-xorg-video-fbdev gvfs-backends gvfs-f
|
||||
|
||||
|
||||
# Recommended desktop packages
|
||||
PACKAGE_LIST_DESKTOP_RECOMMENDS="mirage galculator hexchat xfce4-screenshooter network-manager-openvpn-gnome mpv fbi cups-pk-helper \
|
||||
cups geany atril xarchiver"
|
||||
PACKAGE_LIST_DESKTOP_RECOMMENDS="mirage galculator hexchat xfce4-screenshooter network-manager-openvpn-gnome mpv fbi \
|
||||
cups-pk-helper cups geany atril xarchiver"
|
||||
|
||||
|
||||
# For minimal build different set of packages is needed
|
||||
if [[ $BUILD_MINIMAL == yes ]]; then
|
||||
|
||||
# Essential packages for minimal build
|
||||
PACKAGE_LIST="bc cpufrequtils device-tree-compiler fping fake-hwclock psmisc ntp parted dialog \
|
||||
ncurses-term sysfsutils toilet figlet u-boot-tools usbutils openssh-server \
|
||||
nocache debconf-utils"
|
||||
|
||||
# Non-essential packages for minimal build
|
||||
PACKAGE_LIST_ADDITIONAL="network-manager wireless-tools lsof htop mmc-utils wget armbian-firmware nano sysstat net-tools"
|
||||
|
||||
fi
|
||||
|
||||
# Release specific packages
|
||||
case $RELEASE in
|
||||
|
||||
jessie)
|
||||
DEBOOTSTRAP_COMPONENTS="main"
|
||||
PACKAGE_LIST_RELEASE="less kbd gnupg2 dirmngr sysbench"
|
||||
PACKAGE_LIST_DESKTOP+=" paman libgcr-3-common gcj-jre-headless policykit-1-gnome eject numix-icon-theme libgnome2-perl pulseaudio-module-gconf"
|
||||
[[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE=" kbd gnupg2 dirmngr sysbench"
|
||||
PACKAGE_LIST_DESKTOP+=" paman libgcr-3-common gcj-jre-headless policykit-1-gnome eject numix-icon-theme \
|
||||
libgnome2-perl pulseaudio-module-gconf"
|
||||
PACKAGE_LIST_DESKTOP_RECOMMENDS+=" iceweasel pluma system-config-printer leafpad"
|
||||
;;
|
||||
|
||||
xenial)
|
||||
DEBOOTSTRAP_COMPONENTS="main"
|
||||
PACKAGE_LIST_RELEASE="man-db wget nano sysbench"
|
||||
PACKAGE_LIST_DESKTOP+=" paman libgcr-3-common gcj-jre-headless paprefs numix-icon-theme libgnome2-perl pulseaudio-module-gconf"
|
||||
PACKAGE_LIST_DESKTOP_RECOMMENDS+=" chromium-browser language-selector-gnome system-config-printer-common system-config-printer-gnome leafpad"
|
||||
[[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE="man-db sysbench"
|
||||
PACKAGE_LIST_DESKTOP+=" paman libgcr-3-common gcj-jre-headless paprefs numix-icon-theme libgnome2-perl \
|
||||
pulseaudio-module-gconf"
|
||||
PACKAGE_LIST_DESKTOP_RECOMMENDS+=" chromium-browser language-selector-gnome system-config-printer-common \
|
||||
system-config-printer-gnome leafpad"
|
||||
;;
|
||||
|
||||
stretch)
|
||||
DEBOOTSTRAP_COMPONENTS="main"
|
||||
PACKAGE_LIST_RELEASE="man-db less kbd net-tools netcat-openbsd gnupg2 dirmngr sysbench"
|
||||
[[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE="man-db kbd net-tools gnupg2 dirmngr sysbench"
|
||||
PACKAGE_LIST_DESKTOP+=" paman libgcr-3-common gcj-jre-headless paprefs dbus-x11 libgnome2-perl pulseaudio-module-gconf"
|
||||
PACKAGE_LIST_DESKTOP_RECOMMENDS+=" chromium system-config-printer-common system-config-printer leafpad"
|
||||
;;
|
||||
|
||||
bionic)
|
||||
DEBOOTSTRAP_COMPONENTS="main,universe"
|
||||
PACKAGE_LIST_RELEASE="man-db less kbd net-tools netcat-openbsd gnupg2 dirmngr nano wget"
|
||||
[[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE="man-db kbd net-tools gnupg2 dirmngr"
|
||||
PACKAGE_LIST_DESKTOP+=" xserver-xorg-input-all paprefs dbus-x11 libgnome2-perl pulseaudio-module-gconf"
|
||||
PACKAGE_LIST_DESKTOP_RECOMMENDS+=" chromium-browser system-config-printer-common system-config-printer language-selector-gnome leafpad"
|
||||
PACKAGE_LIST_DESKTOP_RECOMMENDS+=" chromium-browser system-config-printer-common system-config-printer \
|
||||
language-selector-gnome leafpad"
|
||||
;;
|
||||
|
||||
buster)
|
||||
DEBOOTSTRAP_COMPONENTS="main"
|
||||
PACKAGE_LIST_RELEASE="man-db less kbd net-tools netcat-openbsd gnupg2 dirmngr wget"
|
||||
[[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE="man-db kbd net-tools gnupg2 dirmngr"
|
||||
PACKAGE_LIST_DESKTOP+=" paprefs dbus-x11 numix-icon-theme"
|
||||
PACKAGE_LIST_DESKTOP_RECOMMENDS+=" chromium system-config-printer-common system-config-printer"
|
||||
;;
|
||||
|
||||
disco)
|
||||
DEBOOTSTRAP_COMPONENTS="main,universe"
|
||||
PACKAGE_LIST_RELEASE="man-db less kbd net-tools netcat-openbsd gnupg2 dirmngr nano wget"
|
||||
[[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE="man-db kbd net-tools gnupg2 dirmngr"
|
||||
PACKAGE_LIST_DESKTOP+=" xserver-xorg-input-all paprefs dbus-x11 pulseaudio-module-gsettings"
|
||||
PACKAGE_LIST_DESKTOP_RECOMMENDS+=" chromium-browser system-config-printer-common system-config-printer language-selector-gnome"
|
||||
# temp disable
|
||||
PACKAGE_LIST_ADDITIONAL="${PACKAGE_LIST_ADDITIONAL/armbian-firmware /}"
|
||||
PACKAGE_LIST_DESKTOP_RECOMMENDS+=" chromium-browser system-config-printer-common system-config-printer \
|
||||
language-selector-gnome"
|
||||
;;
|
||||
|
||||
esac
|
||||
@ -278,6 +307,7 @@ $(getfacl -p "${SRC}"/.tmp)
|
||||
Build target:
|
||||
Board: $BOARD
|
||||
Branch: $BRANCH
|
||||
Minimal: $BUILD_MINIMAL
|
||||
Desktop: $BUILD_DESKTOP
|
||||
|
||||
Kernel configuration:
|
||||
|
||||
@ -66,7 +66,7 @@ debootstrap_ng()
|
||||
customize_image
|
||||
|
||||
# create list of installed packages for debug purposes
|
||||
chroot $SDCARD /bin/bash -c "dpkg --get-selections" | grep -v deinstall | awk '{print $1}' | cut -f1 -d':' > $DEST/debug/installed-packages-${RELEASE}-${BUILD_DESKTOP}.list 2>&1
|
||||
chroot $SDCARD /bin/bash -c "dpkg --get-selections" | grep -v deinstall | awk '{print $1}' | cut -f1 -d':' > $DEST/debug/installed-packages-${RELEASE}$([[ ${BUILD_MINIMAL} == yes ]] && echo "-minimal")$([[ ${BUILD_DESKTOP} == yes ]] && echo "-desktop").list 2>&1
|
||||
|
||||
# clean up / prepare for making the image
|
||||
umount_chroot "$SDCARD"
|
||||
@ -132,8 +132,9 @@ create_rootfs_cache()
|
||||
# fancy progress bars
|
||||
[[ -z $OUTPUT_DIALOG ]] && local apt_extra_progress="--show-progress -o DPKG::Progress-Fancy=1"
|
||||
|
||||
|
||||
display_alert "Installing base system" "Stage 1/2" "info"
|
||||
eval 'debootstrap --include=${DEBOOTSTRAP_LIST} ${PACKAGE_LIST_EXCLUDE:+ --exclude=${PACKAGE_LIST_EXCLUDE// /,}} \
|
||||
eval 'debootstrap --variant=minbase --include=${DEBOOTSTRAP_LIST// /,} ${PACKAGE_LIST_EXCLUDE:+ --exclude=${PACKAGE_LIST_EXCLUDE// /,}} \
|
||||
--arch=$ARCH --components=${DEBOOTSTRAP_COMPONENTS} --foreign $RELEASE $SDCARD/ $apt_mirror' \
|
||||
${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/debug/debootstrap.log'} \
|
||||
${OUTPUT_DIALOG:+' | dialog --backtitle "$backtitle" --progressbox "Debootstrap (stage 1/2)..." $TTY_Y $TTY_X'} \
|
||||
@ -144,7 +145,7 @@ create_rootfs_cache()
|
||||
cp /usr/bin/$QEMU_BINARY $SDCARD/usr/bin/
|
||||
|
||||
mkdir -p $SDCARD/usr/share/keyrings/
|
||||
cp /usr/share/keyrings/debian-archive-keyring.gpg $SDCARD/usr/share/keyrings/
|
||||
cp /usr/share/keyrings/*-archive-keyring.gpg $SDCARD/usr/share/keyrings/
|
||||
|
||||
display_alert "Installing base system" "Stage 2/2" "info"
|
||||
eval 'chroot $SDCARD /bin/bash -c "/debootstrap/debootstrap --second-stage"' \
|
||||
@ -230,13 +231,13 @@ create_rootfs_cache()
|
||||
|
||||
[[ ${PIPESTATUS[0]} -ne 0 ]] && exit_with_error "Installation of Armbian packages failed"
|
||||
|
||||
# stage: remove downloaded packages
|
||||
chroot $SDCARD /bin/bash -c "apt-get clean"
|
||||
|
||||
# DEBUG: print free space
|
||||
echo -e "\nFree space:"
|
||||
eval 'df -h' ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/debug/debootstrap.log'}
|
||||
|
||||
# stage: remove downloaded packages
|
||||
chroot $SDCARD /bin/bash -c "apt-get clean"
|
||||
|
||||
# create list of installed packages for debug purposes
|
||||
chroot $SDCARD /bin/bash -c "dpkg --get-selections" | grep -v deinstall | awk '{print $1}' | cut -f1 -d':' > ${cache_fname}.list 2>&1
|
||||
|
||||
@ -547,6 +548,7 @@ create_image()
|
||||
# stage: create file name
|
||||
local version="Armbian_${REVISION}_${BOARD^}_${DISTRIBUTION}_${RELEASE}_${BRANCH}_${VER/-$LINUXFAMILY/}"
|
||||
[[ $BUILD_DESKTOP == yes ]] && version=${version}_desktop
|
||||
[[ $BUILD_MINIMAL == yes ]] && version=${version}_minimal
|
||||
[[ $ROOTFS_TYPE == nfs ]] && version=${version}_nfsboot
|
||||
|
||||
if [[ $ROOTFS_TYPE != nfs ]]; then
|
||||
|
||||
@ -297,6 +297,9 @@ install_common()
|
||||
# configure network manager
|
||||
sed "s/managed=\(.*\)/managed=true/g" -i "${SDCARD}"/etc/NetworkManager/NetworkManager.conf
|
||||
|
||||
# remove network manager defaults to handle eth by default
|
||||
rm -f "${SDCARD}"/usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf
|
||||
|
||||
# Just regular DNS and maintain /etc/resolv.conf as a file
|
||||
sed "/dns/d" -i "${SDCARD}"/etc/NetworkManager/NetworkManager.conf
|
||||
sed "s/\[main\]/\[main\]\ndns=default\nrc-manager=file/g" -i "${SDCARD}"/etc/NetworkManager/NetworkManager.conf
|
||||
@ -308,7 +311,7 @@ install_common()
|
||||
EOF
|
||||
fi
|
||||
|
||||
# nsswitch settings for sane DNS behavior: remove resolve, assure libnss-myhostname support
|
||||
# nsswitch settings for sane DNS behavior: remove resolve, assure libnss-myhostname support
|
||||
sed "s/hosts\:.*/hosts: files mymachines dns myhostname/g" -i "${SDCARD}"/etc/nsswitch.conf
|
||||
}
|
||||
|
||||
@ -381,7 +384,7 @@ install_distribution_specific()
|
||||
EOF
|
||||
chmod +x "${SDCARD}"/etc/rc.local
|
||||
# Basic Netplan config. Let NetworkManager manage all devices on this system
|
||||
cat <<-EOF > "${SDCARD}"/etc/netplan/armbian-default.yaml
|
||||
[[ -d "${SDCARD}"/etc/netplan ]] && cat <<-EOF > "${SDCARD}"/etc/netplan/armbian-default.yaml
|
||||
network:
|
||||
version: 2
|
||||
renderer: NetworkManager
|
||||
@ -440,7 +443,7 @@ install_distribution_specific()
|
||||
EOF
|
||||
chmod +x "${SDCARD}"/etc/rc.local
|
||||
# Basic Netplan config. Let NetworkManager manage all devices on this system
|
||||
cat <<-EOF > "${SDCARD}"/etc/netplan/armbian-default.yaml
|
||||
[[ -d "${SDCARD}"/etc/netplan ]] && cat <<-EOF > "${SDCARD}"/etc/netplan/armbian-default.yaml
|
||||
network:
|
||||
version: 2
|
||||
renderer: NetworkManager
|
||||
|
||||
18
lib/main.sh
18
lib/main.sh
@ -270,9 +270,26 @@ if [[ $KERNEL_ONLY != yes && -z $BUILD_DESKTOP ]]; then
|
||||
--menu "Select the target image type" $TTY_Y $TTY_X $((TTY_Y - 8)) "${options[@]}")
|
||||
unset options
|
||||
[[ -z $BUILD_DESKTOP ]] && exit_with_error "No option selected"
|
||||
[[ $BUILD_DESKTOP == yes ]] && BUILD_MINIMAL=no
|
||||
|
||||
fi
|
||||
|
||||
if [[ $KERNEL_ONLY != yes && $BUILD_DESKTOP == no && -z $BUILD_MINIMAL ]]; then
|
||||
|
||||
options=()
|
||||
options+=("no" "Standard image with console interface")
|
||||
options+=("yes" "Minimal image with console interface")
|
||||
BUILD_MINIMAL=$(dialog --stdout --title "Choose image type" --backtitle "$backtitle" --no-tags \
|
||||
--menu "Select the target image type" $TTY_Y $TTY_X $((TTY_Y - 8)) "${options[@]}")
|
||||
unset options
|
||||
[[ -z $BUILD_MINIMAL ]] && exit_with_error "No option selected"
|
||||
|
||||
fi
|
||||
|
||||
#prevent conflicting setup
|
||||
[[ $BUILD_DESKTOP == yes ]] && BUILD_MINIMAL=no
|
||||
[[ $BUILD_MINIMAL == yes ]] && BUILD_DESKTOP=no && EXTERNAL=no
|
||||
|
||||
#shellcheck source=configuration.sh
|
||||
source "${SRC}"/lib/configuration.sh
|
||||
|
||||
@ -390,6 +407,7 @@ display_alert "Runtime" "$runtime min" "info"
|
||||
[ `systemd-detect-virt` == 'docker' ] && BUILD_CONFIG='docker'
|
||||
display_alert "Repeat Build Options" "./compile.sh ${BUILD_CONFIG} BOARD=${BOARD} BRANCH=${BRANCH} \
|
||||
$([[ -n $RELEASE ]] && echo "RELEASE=${RELEASE} ")\
|
||||
$([[ -n $BUILD_MINIMAL ]] && echo "BUILD_MINIMAL=${BUILD_MINIMAL} ")\
|
||||
$([[ -n $BUILD_DESKTOP ]] && echo "BUILD_DESKTOP=${BUILD_DESKTOP} ")\
|
||||
$([[ -n $KERNEL_ONLY ]] && echo "KERNEL_ONLY=${KERNEL_ONLY} ")\
|
||||
$([[ -n $KERNEL_CONFIGURE ]] && echo "KERNEL_CONFIGURE=${KERNEL_CONFIGURE} ")\
|
||||
|
||||
@ -50,11 +50,11 @@ create_board_package()
|
||||
Installed-Size: 1
|
||||
Section: kernel
|
||||
Priority: optional
|
||||
Depends: bash, linux-base, u-boot-tools, initramfs-tools, python3-apt
|
||||
Depends: bash, linux-base, u-boot-tools, initramfs-tools
|
||||
Provides: armbian-bsp
|
||||
Conflicts: armbian-bsp
|
||||
Suggests: armbian-config
|
||||
Replaces: zram-config, base-files, armbian-tools-$RELEASE
|
||||
Replaces: lsb-release, zram-config, base-files, armbian-tools-$RELEASE
|
||||
Recommends: bsdutils, parted, util-linux, toilet
|
||||
Description: Armbian tweaks for $RELEASE on $BOARD ($BRANCH branch)
|
||||
EOF
|
||||
|
||||
143
packages/bsp/common/usr/bin/lsb_release
Executable file
143
packages/bsp/common/usr/bin/lsb_release
Executable file
@ -0,0 +1,143 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Simple alternative to /usr/bin/lsb_release which doesn't require python.
|
||||
#
|
||||
# Based on https://gist.github.com/skx/1f9e5240856c5976193a
|
||||
#
|
||||
# If /etc/os-release exists then we use that to output data
|
||||
# in a compatible format to the original lsb_release utility.
|
||||
|
||||
show_help() {
|
||||
cat << EOF
|
||||
Usage: lsb_release [options]
|
||||
|
||||
Options:
|
||||
-h, --help show this help message and exit
|
||||
-i, --id show distributor ID
|
||||
-d, --description show description of this distribution
|
||||
-r, --release show release number of this distribution
|
||||
-c, --codename show code name of this distribution
|
||||
-a, --all show all of the above information
|
||||
-s, --short show requested information in short format
|
||||
EOF
|
||||
exit 0
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
# Potential command-line options.
|
||||
#
|
||||
all=0
|
||||
codename=0
|
||||
description=0
|
||||
id=0
|
||||
release=0
|
||||
short=0
|
||||
version=0
|
||||
|
||||
|
||||
#
|
||||
# Process each argument, and set the appropriate flag
|
||||
# if we recognize it.
|
||||
#
|
||||
while :; do
|
||||
case $1 in
|
||||
-a|--all)
|
||||
all=1
|
||||
;;
|
||||
-c|--codename)
|
||||
codename=1
|
||||
;;
|
||||
-d|--description)
|
||||
description=1
|
||||
;;
|
||||
-h|--help)
|
||||
show_help
|
||||
break
|
||||
;;
|
||||
-i|--id)
|
||||
id=1
|
||||
;;
|
||||
-r|--release)
|
||||
release=1
|
||||
;;
|
||||
-s|--short)
|
||||
short=1
|
||||
;;
|
||||
-v|--version)
|
||||
version=1
|
||||
;;
|
||||
-cs|-sc)
|
||||
short=1
|
||||
codename=1
|
||||
;;
|
||||
-is|-si)
|
||||
short=1
|
||||
id=1
|
||||
;;
|
||||
-ds|-sd)
|
||||
short=1
|
||||
description=1
|
||||
;;
|
||||
-as|-sa)
|
||||
short=1
|
||||
all=1
|
||||
;;
|
||||
*)
|
||||
break
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
|
||||
#
|
||||
# Read our variables.
|
||||
#
|
||||
if [ -e /etc/os-release ]; then
|
||||
. /etc/os-release
|
||||
else
|
||||
echo "/etc/os-release is not present. Aborting" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
# Now output the data - The order of these was chosen to match
|
||||
# what the original lsb_release used, and while I suspect it doesn't
|
||||
# matter I kept it the same.
|
||||
#
|
||||
if [ "$all" = "1" ] || [ "$id" = "1" ]; then
|
||||
if [ "$short" = "0" ]; then
|
||||
printf "Distributor ID:\t"
|
||||
fi
|
||||
echo $ID | sed 's/./\U&/'
|
||||
fi
|
||||
|
||||
if [ "$all" = "1" ] || [ "$description" = "1" ]; then
|
||||
if [ "$short" = "0" ]; then
|
||||
printf "Description:\t"
|
||||
fi
|
||||
echo $PRETTY_NAME
|
||||
fi
|
||||
|
||||
if [ "$all" = "1" ] || [ "$release" = "1" ]; then
|
||||
if [ "$short" = "0" ]; then
|
||||
printf "Release:\t"
|
||||
fi
|
||||
echo $VERSION_ID
|
||||
fi
|
||||
|
||||
if [ "$all" = "1" ] || [ "$codename" = "1" ]; then
|
||||
if [ "$short" = "0" ]; then
|
||||
printf "Codename:\t"
|
||||
fi
|
||||
|
||||
#
|
||||
# Codename comes from: VERSION="7 (wheezy)"
|
||||
#
|
||||
ver=$(echo $VERSION | awk '{print $2}' | tr -d \(\))
|
||||
if [ $ID = "ubuntu" ]; then echo "$UBUNTU_CODENAME"; else echo "$ver"; fi
|
||||
fi
|
||||
|
||||
|
||||
exit 0
|
||||
@ -1,10 +1,9 @@
|
||||
#!/usr/bin/python3
|
||||
#!/bin/bash
|
||||
#
|
||||
# 40-updates - create the list of packages for update with caching
|
||||
# Copyright (c) 2015 Igor Pecovnik
|
||||
# Copyright (c) 2015 Arkadiusz Raj
|
||||
#
|
||||
# Author: Igor Pecovnik igor.pecovnik@gmail.com
|
||||
# Based upon prior work by Nick Charlton, Dustin Kirkland and Michael Vogt.
|
||||
# Author: Arkadiusz Raj arek.raj@gmail.com
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@ -20,115 +19,37 @@
|
||||
# with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
import sys
|
||||
import subprocess
|
||||
import apt_pkg
|
||||
import time
|
||||
import os
|
||||
import os.path as path
|
||||
import fcntl
|
||||
|
||||
lock_file = '/var/run/armbian-motd-updates.lock'
|
||||
fp = open(lock_file, 'w')
|
||||
try:
|
||||
fcntl.lockf(fp, fcntl.LOCK_EX | fcntl.LOCK_NB)
|
||||
except IOError:
|
||||
# another instance is running
|
||||
sys.exit(0)
|
||||
|
||||
myfile = "/var/cache/apt/archives/updates.number"
|
||||
|
||||
# update procedure
|
||||
DISTRO = subprocess.Popen(["lsb_release", "-c", "-s"], stdout=subprocess.PIPE).communicate()[0].strip()
|
||||
|
||||
class OpNullProgress(object):
|
||||
'''apt progress handler which supresses any output.'''
|
||||
def update(self):
|
||||
pass
|
||||
def done(self):
|
||||
pass
|
||||
|
||||
def is_security_upgrade(pkg):
|
||||
'''
|
||||
Checks to see if a package comes from a DISTRO-security source.
|
||||
'''
|
||||
security_package_sources = [("Ubuntu", "%s-security" % DISTRO),
|
||||
("Debian", "%s-security" % DISTRO)]
|
||||
|
||||
for (file, index) in pkg.file_list:
|
||||
for origin, archive in security_package_sources:
|
||||
if (file.archive == archive and file.origin == origin):
|
||||
return True
|
||||
return False
|
||||
|
||||
# init apt and config
|
||||
apt_pkg.init()
|
||||
|
||||
# open the apt cache
|
||||
try:
|
||||
cache = apt_pkg.Cache(OpNullProgress())
|
||||
except SystemError as e:
|
||||
sys.stderr.write("Error: Opening the cache (%s)" % e)
|
||||
sys.exit(0)
|
||||
|
||||
# setup a DepCache instance to interact with the repo
|
||||
depcache = apt_pkg.DepCache(cache)
|
||||
|
||||
# take into account apt policies
|
||||
depcache.read_pinfile()
|
||||
|
||||
# initialise it
|
||||
depcache.init()
|
||||
lock_file='/var/run/armbian-motd-updates.lock'
|
||||
if { set -C; 2>/dev/null >${lock_file}; }; then
|
||||
trap "rm -f ${lock_file}" EXIT
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# give up if packages are broken
|
||||
if depcache.broken_count > 0:
|
||||
sys.stderr.write("Error: Broken packages exist.")
|
||||
sys.exit(0)
|
||||
[[ ! $(dpkg -l | grep ^..r) ]] && exit 0
|
||||
|
||||
# mark possible packages
|
||||
try:
|
||||
# run distro-upgrade
|
||||
depcache.upgrade(True)
|
||||
# reset if packages get marked as deleted -> we don't want to break anything
|
||||
if depcache.del_count > 0:
|
||||
depcache.init()
|
||||
myfile="/var/cache/apt/archives/updates.number"
|
||||
|
||||
# then a standard upgrade
|
||||
depcache.upgrade()
|
||||
except SystemError as e:
|
||||
sys.stderr.write("Error: Couldn't mark the upgrade (%s)" % e)
|
||||
sys.exit(0)
|
||||
# update procedure
|
||||
DISTRO=$(lsb_release -c | cut -d ":" -f 2 | tr -d '[:space:]') && DISTRO=${DISTRO,,}
|
||||
|
||||
# run around the packages
|
||||
upgrades = 0
|
||||
security_upgrades = 0
|
||||
for pkg in cache.packages:
|
||||
candidate = depcache.get_candidate_ver(pkg)
|
||||
current = pkg.current_ver
|
||||
upgrades=0
|
||||
security_upgrades=0
|
||||
while IFS= read -r LINE; do
|
||||
# increment the upgrade counter
|
||||
(( upgrades++ ))
|
||||
# keep another count for security upgrades
|
||||
[[ ${LINE} == *"${DISTRO}-sec"* ]] && (( security_upgrades++ ))
|
||||
done < <(apt-get upgrade -s -qq | sed -n '/^Inst/p')
|
||||
|
||||
# skip packages not marked as upgraded/installed
|
||||
if not (depcache.marked_install(pkg) or depcache.marked_upgrade(pkg)):
|
||||
continue
|
||||
cat >|${myfile} <<EOT
|
||||
NUM_UPDATES="${upgrades}"
|
||||
NUM_SECURITY_UPDATES="${security_upgrades}"
|
||||
DATE="$(date +"%Y-%m-%d %H:%M")"
|
||||
EOT
|
||||
|
||||
# increment the upgrade counter
|
||||
upgrades += 1
|
||||
exit 0
|
||||
|
||||
# keep another count for security upgrades
|
||||
if is_security_upgrade(candidate):
|
||||
security_upgrades += 1
|
||||
|
||||
# double check for security upgrades masked by another package
|
||||
for version in pkg.version_list:
|
||||
if (current and apt_pkg.version_compare(version.ver_str, current.ver_str) <= 0):
|
||||
continue
|
||||
if is_security_upgrade(version):
|
||||
security_upgrades += 1
|
||||
break
|
||||
|
||||
f = open(myfile, 'w')
|
||||
f.write('NUM_UPDATES="{}"\n'.format(upgrades))
|
||||
f.write('NUM_SECURITY_UPDATES="{}"\n'.format(security_upgrades))
|
||||
f.write('DATE="{}"\n'.format(time.strftime("%Y-%m-%d %H:%M")))
|
||||
f.close()
|
||||
|
||||
exit(0)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user