core70: add kernel update to script.
authorArne Fitzenreiter <arne_f@ipfire.org>
Wed, 19 Jun 2013 16:04:09 +0000 (18:04 +0200)
committerArne Fitzenreiter <arne_f@ipfire.org>
Wed, 19 Jun 2013 16:04:09 +0000 (18:04 +0200)
and remove not update files from updater.

config/rootfiles/core/70/filelists/GeoIP [deleted file]
config/rootfiles/core/70/filelists/hwdata [deleted file]
config/rootfiles/core/70/update.sh

diff --git a/config/rootfiles/core/70/filelists/GeoIP b/config/rootfiles/core/70/filelists/GeoIP
deleted file mode 100644 (file)
index 0258236..0000000
+++ /dev/null
@@ -1 +0,0 @@
-usr/local/share/GeoIP/GeoIP.dat
diff --git a/config/rootfiles/core/70/filelists/hwdata b/config/rootfiles/core/70/filelists/hwdata
deleted file mode 100644 (file)
index 5a9672f..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-usr/share/hwdata/pci.ids
-usr/share/hwdata/usb.ids
index c57cbae10450930e3a39903535d1605d6c6eb1c5..6fbbb48ab9da980ab1e9137954268a76dfd35bfd 100644 (file)
 . /opt/pakfire/lib/functions.sh
 /usr/local/bin/backupctrl exclude >/dev/null 2>&1
 
+function add_to_backup ()
+{
+       # Add path to ROOTFILES but remove old entries to prevent double
+       # files in the tar
+       grep -v "^$1" /opt/pakfire/tmp/ROOTFILES > /opt/pakfire/tmp/ROOTFILES.tmp
+       mv /opt/pakfire/tmp/ROOTFILES.tmp /opt/pakfire/tmp/ROOTFILES
+       echo $1 >> /opt/pakfire/tmp/ROOTFILES
+}
+
 #
 # Remove old core updates from pakfire cache to save space...
 core=70
@@ -32,6 +41,96 @@ do
        rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire
 done
 
+#
+# Do some sanity checks.
+case $(uname -r) in
+       *-ipfire-versatile )
+               /usr/bin/logger -p syslog.emerg -t ipfire \
+                       "core-update-${core}: ERROR cannot update. versatile support is dropped."
+               # Report no error to pakfire. So it does not try to install it again.
+               exit 0
+               ;;
+       *-ipfire-xen )
+               BOOTSIZE=`df /boot -Pk | sed "s| * | |g" | cut -d" " -f2 | tail -n 1`
+               if [ $BOOTSIZE -lt 28000 ]; then
+                       /usr/bin/logger -p syslog.emerg -t ipfire \
+                               "core-update-${core}: ERROR cannot update because not enough space on boot."
+                       exit 2
+               fi
+               ;;
+       *-ipfire* )
+               # Ok.
+               ;;
+       * )
+               /usr/bin/logger -p syslog.emerg -t ipfire \
+                       "core-update-${core}: ERROR cannot update. No IPFire Kernel."
+               # Report no error to pakfire. So it does not try to install it again.
+               exit 0
+       ;;
+esac
+
+
+#
+#
+KVER="3.2.47"
+MOUNT=`grep "kernel" /boot/grub/grub.conf 2>/dev/null | tail -n 1 `
+# Nur den letzten Parameter verwenden
+echo $MOUNT > /dev/null
+MOUNT=$_
+if [ ! $MOUNT == "rw" ]; then
+       MOUNT="ro"
+fi
+
+#
+# check if we the backup file already exist
+if [ -e /var/ipfire/backup/core-upgrade${core}_$KVER.tar.xz ]; then
+    echo Moving backup to backup-old ...
+    mv -f /var/ipfire/backup/core-upgrade${core}_$KVER.tar.xz \
+       /var/ipfire/backup/core-upgrade${core}_$KVER-old.tar.xz
+fi
+echo First we made a backup of all files that was inside of the
+echo update archive. This may take a while ...
+# Add some files that are not in the package to backup
+add_to_backup lib/modules
+add_to_backup boot
+add_to_backup etc/sysconfig/lm_sensors
+add_to_backup etc/sysconfig/rc.local
+
+# Backup the files
+tar cJvf /var/ipfire/backup/core-upgrade${core}_$KVER.tar.xz \
+    -C / -T /opt/pakfire/tmp/ROOTFILES --exclude='#*' --exclude='/var/cache' > /dev/null 2>&1
+
+# Check diskspace on root
+ROOTSPACE=`df / -Pk | sed "s| * | |g" | cut -d" " -f4 | tail -n 1`
+
+if [ $ROOTSPACE -lt 70000 ]; then
+       /usr/bin/logger -p syslog.emerg -t ipfire \
+               "core-update-${core}: ERROR cannot update because not enough free space on root."
+       exit 2
+fi
+
+echo
+echo Update Kernel to $KVER ...
+#
+# Remove old kernel, configs, initrd, modules ...
+#
+rm -rf /boot/System.map-*
+rm -rf /boot/config-*
+rm -rf /boot/ipfirerd-*
+rm -rf /boot/vmlinuz-*
+rm -rf /boot/uImage-ipfire-*
+rm -rf /boot/uInit-ipfire-*
+rm -rf /lib/modules
+
+case $(uname -m) in
+       i?86 )
+               #
+               # Backup grub.conf
+               #
+               cp -vf /boot/grub/grub.conf /boot/grub/grub.conf.org
+       ;;
+esac
+
 #
 # Remove meta's of packages that are now common...
 #
@@ -39,58 +138,133 @@ rm -rf /opt/pakfire/db/*/meta-freefont
 
 #
 #Stop services
-/etc/init.d/ipsec stop
 
 #
 #Extract files
-extract_files
+tar xavf /opt/pakfire/tmp/files* --no-overwrite-dir -p --numeric-owner -C /
+
+# Check diskspace on boot
+BOOTSPACE=`df /boot -Pk | sed "s| * | |g" | cut -d" " -f4 | tail -n 1`
+
+if [ $BOOTSPACE -lt 1000 ]; then
+       case $(uname -r) in
+               *-ipfire-kirkwood )
+                       # Special handling for old kirkwood images.
+                       # (install only kirkwood kernel)
+                       rm -rf /boot/*
+                       tar xavf /opt/pakfire/tmp/files* --no-overwrite-dir -p \
+                               --numeric-owner -C / --wildcards 'boot/*-kirkwood*'
+                       ;;
+               * )
+                       /usr/bin/logger -p syslog.emerg -t ipfire \
+                               "core-update-${core}: FATAL-ERROR space run out on boot. System is not bootable..."
+                       /etc/init.d/apache start
+                       exit 4
+                       ;;
+       esac
+fi
 
-# Regenerate ipsec configuration files.
-/srv/web/ipfire/cgi-bin/vpnmain.cgi
 
 #
 #Start services
-if [ `grep "ENABLED=on" /var/ipfire/vpn/settings` ]; then
-       /etc/init.d/ipsec start
-fi
 
-#Switch realtek lan from vendor to kernel original...
-       cp /lib/modules/*-ipfire*/kernel/drivers/net/ethernet/realtek/r8169.ko \
-          /lib/modules/*-ipfire*/kernel/drivers/net/ethernet/realtek/r8169.ko.vendor
-       mv /lib/modules/*-ipfire*/kernel/drivers/net/ethernet/realtek/r8101.ko \
-          /lib/modules/*-ipfire*/kernel/drivers/net/ethernet/realtek/r8101.ko.vendor
-       mv /lib/modules/*-ipfire*/kernel/drivers/net/ethernet/realtek/r8168.ko \
-          /lib/modules/*-ipfire*/kernel/drivers/net/ethernet/realtek/r8168.ko.vendor
-       cp -f /lib/modules/*-ipfire*/kernel/drivers/net/ethernet/realtek/r8169.ko.org \
-          /lib/modules/*-ipfire*/kernel/drivers/net/ethernet/realtek/r8169.ko
-       rm /lib/modules/*-ipfire*/kernel/drivers/net/ethernet/realtek/r8101.ko
-       rm /lib/modules/*-ipfire*/kernel/drivers/net/ethernet/realtek/r8168.ko
-       rm /var/cache/pakfire/linux-pae-*.ipfire
-
-#rebuild module dep's
-arch=`uname -m`
-
-if [ ${arch::3} == "arm" ]; then
-       depmod -a 3.2.46-ipfire-kirkwood >/dev/null 2>&1
-       depmod -a 3.2.46-ipfire-omap >/dev/null 2>&1
-       depmod -a 3.2.46-ipfire-rpi >/dev/null 2>&1
-else
-       depmod -a 3.2.46-ipfire     >/dev/null 2>&1
-       depmod -a 3.2.46-ipfire-pae >/dev/null 2>&1
-       depmod -a 2.6.32.60-ipfire-xen >/dev/null 2>&1
-fi
+case $(uname -m) in
+       i?86 )
+               #
+               # Modify grub.conf
+               #
+               echo
+               echo Update grub configuration ...
+               ROOT=`mount | grep " / " | cut -d" " -f1`
+
+               if [ ! -z $ROOT ]; then
+                       ROOTUUID=`blkid -c /dev/null -sUUID $ROOT | cut -d'"' -f2`
+               fi
+
+               if [ ! -z $ROOTUUID ]; then
+                       sed -i "s|ROOT|UUID=$ROOTUUID|g" /boot/grub/grub.conf
+               else
+                       sed -i "s|ROOT|$ROOT|g" /boot/grub/grub.conf
+               fi
+               sed -i "s|KVER|$KVER|g" /boot/grub/grub.conf
+               sed -i "s|MOUNT|$MOUNT|g" /boot/grub/grub.conf
+
+               if [ "$(grep "^serial" /boot/grub/grub.conf.org)" == "" ]; then
+                       echo "grub use default console ..."
+               else
+                       echo "grub use serial console ..."
+                       sed -i -e "s|splashimage|#splashimage|g" /boot/grub/grub.conf
+                       sed -i -e "s|#serial|serial|g" /boot/grub/grub.conf
+                       sed -i -e "s|#terminal|terminal|g" /boot/grub/grub.conf
+                       sed -i -e "s| panic=10 | console=ttyS0,115200n8 panic=10 |g" /boot/grub/grub.conf
+               fi
+
+               #
+               # ReInstall grub
+               #
+                       echo "(hd0) ${ROOT::`expr length $ROOT`-1}" > /boot/grub/device.map
+                       grub-install --no-floppy ${ROOT::`expr length $ROOT`-1}
+       ;;
+esac
+#
+# Delete old lm-sensor modullist to force search at next boot
+#
+rm -rf /etc/sysconfig/lm_sensors
 
 #
 #Update Language cache
 perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang"
 
-# Regenerate font cache
-fc-cache -f &>/dev/null
+# Force (re)install pae kernel if pae is supported
+rm -rf /opt/pakfire/db/*/meta-linux-pae
+if [ ! "$(grep "^flags.* pae " /proc/cpuinfo)" == "" ]; then
+       ROOTSPACE=`df / -Pk | sed "s| * | |g" | cut -d" " -f4 | tail -n 1`
+       BOOTSPACE=`df /boot -Pk | sed "s| * | |g" | cut -d" " -f4 | tail -n 1`
+       if [ $BOOTSPACE -lt 8000 -o $ROOTSPACE -lt 70000 ]; then
+               /usr/bin/logger -p syslog.emerg -t ipfire \
+                       "core-update-${core}: WARNING not enough space for pae kernel."
+       else
+               rm -f /boot/grub/grub-backup-*-pae_install.conf
+               echo "Name: linux-pae" > /opt/pakfire/db/installed/meta-linux-pae
+               echo "ProgVersion: 3.2.46" >> /opt/pakfire/db/installed/meta-linux-pae
+               echo "Release: 29"     >> /opt/pakfire/db/installed/meta-linux-pae
+       fi
+fi
 
-sync
+# Force reinstall xen kernel if it was installed
+if [ -e "/opt/pakfire/db/installed/meta-linux-xen" ]; then
+       rm -f /boot/grub/grub-backup-*-xen.conf
+       echo "Name: linux-xen" > /opt/pakfire/db/installed/meta-linux-xen
+       echo "ProgVersion: 2.6.32.60" >> /opt/pakfire/db/installed/meta-linux-xen
+       echo "Release: 26"     >> /opt/pakfire/db/installed/meta-linux-xen
+fi
 
+#
+# After pakfire has ended run it again and update the lists and do upgrade
+#
+echo '#!/bin/bash'                                        >  /tmp/pak_update
+echo 'while [ "$(ps -A | grep " update.sh")" != "" ]; do' >> /tmp/pak_update
+echo '    sleep 1'                                        >> /tmp/pak_update
+echo 'done'                                               >> /tmp/pak_update
+echo 'while [ "$(ps -A | grep " pakfire")" != "" ]; do'   >> /tmp/pak_update
+echo '    sleep 1'                                        >> /tmp/pak_update
+echo 'done'                                               >> /tmp/pak_update
+echo '/opt/pakfire/pakfire update -y --force'             >> /tmp/pak_update
+echo '/opt/pakfire/pakfire upgrade -y'                    >> /tmp/pak_update
+echo '/opt/pakfire/pakfire upgrade -y'                    >> /tmp/pak_update
+echo '/opt/pakfire/pakfire upgrade -y'                    >> /tmp/pak_update
+echo '/usr/bin/logger -p syslog.emerg -t ipfire "Core-upgrade finished. If you use a customized grub.cfg"' >> /tmp/pak_update
+echo '/usr/bin/logger -p syslog.emerg -t ipfire "Check it before reboot !!!"' >> /tmp/pak_update
+echo '/usr/bin/logger -p syslog.emerg -t ipfire " *** Please reboot... *** "' >> /tmp/pak_update
+echo 'touch /var/run/need_reboot ' >> /tmp/pak_update
+#
+chmod +x /tmp/pak_update
+/tmp/pak_update &
+
+
+sync
 # This update need a reboot...
-touch /var/run/need_reboot
+#touch /var/run/need_reboot
 
 #
 #Finish