From: Arne Fitzenreiter Date: Wed, 14 Jan 2026 10:23:45 +0000 (+0100) Subject: core200: add kernel to update X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=011ac6572fb2534ef6fe3eab397103e63f0abb66;p=ipfire-2.x.git core200: add kernel to update Signed-off-by: Arne Fitzenreiter --- diff --git a/config/rootfiles/core/200/filelists/aarch64/linux b/config/rootfiles/core/200/filelists/aarch64/linux new file mode 120000 index 0000000000..3a2532bc7d --- /dev/null +++ b/config/rootfiles/core/200/filelists/aarch64/linux @@ -0,0 +1 @@ +../../../../common/aarch64/linux \ No newline at end of file diff --git a/config/rootfiles/core/200/filelists/riscv64/linux b/config/rootfiles/core/200/filelists/riscv64/linux new file mode 120000 index 0000000000..c8e8350ca6 --- /dev/null +++ b/config/rootfiles/core/200/filelists/riscv64/linux @@ -0,0 +1 @@ +../../../../common/riscv64/linux \ No newline at end of file diff --git a/config/rootfiles/core/200/filelists/x86_64/linux b/config/rootfiles/core/200/filelists/x86_64/linux new file mode 120000 index 0000000000..0615b5b9ad --- /dev/null +++ b/config/rootfiles/core/200/filelists/x86_64/linux @@ -0,0 +1 @@ +../../../../common/x86_64/linux \ No newline at end of file diff --git a/config/rootfiles/core/200/update.sh b/config/rootfiles/core/200/update.sh index 380b208fd7..9d1069b4de 100644 --- a/config/rootfiles/core/200/update.sh +++ b/config/rootfiles/core/200/update.sh @@ -1,3 +1,4 @@ + #!/bin/bash ############################################################################ # # @@ -17,7 +18,7 @@ # along with IPFire; if not, write to the Free Software # # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # # -# Copyright (C) 2025 IPFire-Team . # +# Copyright (C) 2026 IPFire-Team . # # # ############################################################################ # @@ -26,12 +27,63 @@ core=200 +exit_with_error() { + # Set last succesfull installed core. + echo $(($core-1)) > /opt/pakfire/db/core/mine + # force fsck at next boot, this may fix free space on xfs + touch /forcefsck + # don't start pakfire again at error + killall -KILL pak_update + /usr/bin/logger -p syslog.emerg -t ipfire \ + "core-update-${core}: $1" + exit $2 +} + # Remove old core updates from pakfire cache to save space... for (( i=1; i<=$core; i++ )); do rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire done -# Stop services +KVER="xxxKVERxxx" + +# Backup uEnv.txt if exist +if [ -e /boot/uEnv.txt ]; then + cp -vf /boot/uEnv.txt /boot/uEnv.txt.org +fi + +# Do some sanity checks prior to the kernel update +case $(uname -r) in + *-ipfire*) + # Ok. + ;; + *) + exit_with_error "ERROR cannot update. No IPFire Kernel." 1 + ;; +esac + +# Check diskspace on root and size of boot +ROOTSPACE=$( df / -Pk | sed "s| * | |g" | cut -d" " -f4 | tail -n 1 ) +if [ $ROOTSPACE -lt 200000 ]; then + exit_with_error "ERROR cannot update because not enough free space on root." 2 +fi +BOOTSIZE=$( df /boot -Pk | sed "s| * | |g" | cut -d" " -f2 | tail -n 1 ) +if [ $BOOTSIZE -lt 100000 ]; then + exit_with_error "ERROR cannot update. BOOT partition is to small." 3 +fi + +# Remove the old kernel +rm -rvf \ + /boot/System.map-* \ + /boot/config-* \ + /boot/ipfirerd-* \ + /boot/initramfs-* \ + /boot/vmlinuz-* \ + /boot/uImage-* \ + /boot/zImage-* \ + /boot/uInit-* \ + /boot/dtb-* \ + /lib/modules + # Remove dropped packages for package in libassuan; do \ @@ -52,15 +104,17 @@ rm -vrf \ /usr/lib/gnupg \ /var/ipfire/main/gpl_accepted + # Extract files extract_files +# Remove the older version of Boost +rm -vf \ + /usr/lib/libboost*.so.1.88.0 + # update linker config ldconfig -# restart init -#telinit u - # Update Language cache /usr/local/bin/update-lang-cache @@ -79,7 +133,7 @@ sudo -u nobody /srv/web/ipfire/cgi-bin/ovpnmain.cgi /etc/init.d/openvpn-rw restart /etc/init.d/ipsec restart -# Build initial ramdisks (for intel-microcode & dracut-ng) +# Build initial ramdisks dracut --regenerate-all --force KVER="xxxKVERxxx" case "$(uname -m)" in @@ -89,8 +143,18 @@ case "$(uname -m)" in ;; esac +# Upadate Kernel version in uEnv.txt +if [ -e /boot/uEnv.txt ]; then + sed -i -e "s/KVER=.*/KVER=${KVER}/g" /boot/uEnv.txt +fi + +# Call user update script (needed for some ARM boards) +if [ -e /boot/pakfire-kernel-update ]; then + /boot/pakfire-kernel-update ${KVER} +fi + # This update needs a reboot... -#touch /var/run/need_reboot +touch /var/run/need_reboot # Finish /etc/init.d/fireinfo start