- failsafe instalacije grub2 u vise sektora
[kernel-cn.git] / debian / postinst
index 63cf3b2..0bac419 100755 (executable)
@@ -89,7 +89,7 @@ echo "."
 # detect existing Grub2 installation
 
 GRUB2="no"
-if [ -e /boot/grub/grub.cfg ]; then
+if [ \( -e /boot/grub/grub.cfg \) -o \( -e /boot/grub/core.img \) ]; then
     echo "CN: Detected GRUB2 installation, will try to use it."
     GRUB2="yes"
     if [ -e /boot/grub/menu.lst ]; then
@@ -178,6 +178,7 @@ if [ "x$GRUB2" = "xno" ]; then
     fi
 else
     # Grub2 part
+    touch /boot/grub/grub.cfg
     update-grub >/dev/null 2>&1 || true
 fi
 echo -n " grub2"
@@ -232,7 +233,8 @@ EOF
     fi
 else
     # Grub2 part
-    grub-mkdevicemap -n
+    grub-mkdevicemap --no-floppy
+    grub-install --no-floppy --grub-setup=/bin/true "$(grub-probe -t drive /boot/grub)" >/dev/null 2>&1
 fi
 echo -n " grub3"
 
@@ -267,7 +269,7 @@ if [ "x$GRUB2" = "xno" ]; then
     fi
 else
     # Grub2 part
-    install_device='(hd0)'
+    install_device="(hd0)"
 fi
 echo -n " grub4"
 
@@ -323,6 +325,17 @@ if [ "x$GRUB2" = "xno" ]; then
 fi
 echo -n " grub7"
 
+# install to other boot sectors if needed (better safe than sorry)
+if [ "x$GRUB2" = "xyes" ]; then
+    # Grub2 part
+    db_get grub-pc/install_devices
+    for i in `echo $RET | sed -e 's/,/ /g'`; do
+        read_device="$(readlink -f "$i")"
+        grub-install --force --no-floppy $read_device
+    done
+fi
+echo -n " grub8"
+
 # disable lilo
 if [ -e /etc/lilo.conf ]; then
     mv -f /etc/lilo.conf /etc/lilo.conf.old
@@ -382,7 +395,7 @@ rm -f /etc/sysctl.conf.$$
 
 # old kernel params (skipping some of the obsolete or overrided entries)
 if [ -e /etc/sysctl.conf ]; then
-    egrep -v 'net\.core\.(r|w)mem_max|net\.ipv4\.tcp_(r|w)mem|vm\.bdflush|net\.ipv4\.ip_local_port_range|kernel\.rtsig-max|net\.ipv4\.tcp_syncookies|kernel\.exec-shield|net\.ipv4\.tcp_max_syn_backlog|net\.ipv4\.tcp_congestion_control|kernel\.exec-shield' \
+    egrep -v 'net\.core\.(r|w)mem_max|net\.ipv4\.tcp_(r|w)mem|vm\.bdflush|net\.ipv4\.ip_local_port_range|kernel\.rtsig-max|net\.ipv4\.tcp_syncookies|kernel\.exec-shield|net\.ipv4\.tcp_max_syn_backlog|net\.ipv4\.tcp_congestion_control|kernel\.exec-shield|kernel\.maps_protect' \
         /etc/sysctl.conf >> /etc/sysctl.conf.$$
 fi
 
@@ -390,6 +403,13 @@ fi
 cp_mv /etc/sysctl.conf.$$ /etc/sysctl.conf
 echo -n " sysctl.conf"
 
+# reload sysctl ASAP
+if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
+  invoke-rc.d procps restart >/dev/null 2>&1 || true
+else
+  /etc/init.d/procps restart >/dev/null 2>&1 || true
+fi
+
 # finished with basic kernel-2.6-cn stuff
 echo "."