Magellan Linux

Diff of /mage/branches/alx-0_6_0/profiles/alx-060/forced-uninstall

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2112 by niro, Thu May 12 18:51:46 2011 UTC revision 6751 by niro, Thu Jul 16 15:23:13 2015 UTC
# Line 1  Line 1 
1  #!/bin/bash  #!/bin/bash
2  # $Id$  # $Id$
3    
4    # get a suitable environment
5    source /etc/profile
6    
7    PATH="/etc/mage-profile:${PATH}"
8    
9    MAGERC="/etc/mage.rc"
10    MAGEPROFILE="alx-060"
11    NEW_MAGE_DISTRIBUTION="unstable"
12    #NEW_RSYNC="rsync://magellan-linux.de/mage-alx-0.6.0"
13    #NEW_MIRRORS="http://magellan-linux.de/magellan/alx-0.6.0/${NEW_MAGE_DISTRIBUTION}"
14    NEW_RSYNC="rsync://128.20.41.110/mage-alx-060"
15    NEW_MIRRORS="http://128.20.41.110/magellan/alx-060"
16    NEW_PACKAGES_SERVER_PATH='packages/${ARCH}'
17    NEW_MAGE_UNINSTALL_TIMEOUT=0
18    
19    CONFIGRC="/etc/alxconfig-ng/config.rc"
20    NEW_ALX_NETWORKING="dhcp"
21    NEW_ALX_DHCP_PROG="/sbin/udhcpc"
22    NEW_ALX_DHCP_START='-T 10 -t 5 -n -x hostname:$(hostname) -i'
23    NEW_ALX_DHCP_STOP=""
24    NEW_MIN_DISK_SPACE="85000"
25    NEW_ALX_PLUGINS="/usr/lib/alxconfig-ng/plugins"
26    NEW_ALX_FUNCTIONS="/usr/lib/alxconfig-ng/functions"
27    
28    # fake mage upgrade to prevent annoying error messages
29    if [[ ! -x /usr/sbin/mageupgrade ]]
30    then
31     mageupgrade() { true; }; export -f mageupgrade
32    fi
33    
34  read_value()  read_value()
35  {  {
36   local file=$1   local file=$1
# Line 14  read_value() Line 44  read_value()
44   return 0   return 0
45  }  }
46    
47  MAGERC="/etc/mage.rc"  updateconfig()
48  MAGEPROFILE="alx-060"  {
49  NEW_MAGE_DISTRIBUTION="unstable"   local variables="$@"
50  NEW_RSYNC="rsync://magellan-linux.de/mage-alx-0.6.0"   local value
51  NEW_MIRRORS="http://magellan-linux.de/magellan/alx-0.6.0/${NEW_MAGE_DISTRIBUTION}"   local i
 NEW_PACKAGES_SERVER_PATH='packages/${ARCH}'  
 NEW_MAGE_UNINSTALL_TIMEOUT=0  
52    
53  # fix mage.rc   if [[ -z ${CONFIG} ]]
 for i in RSYNC MIRRORS MAGE_DISTRIBUTION PACKAGES_SERVER_PATH MAGE_UNINSTALL_TIMEOUT  
 do  
  value="$(eval echo \${NEW_${i}})"  
  if [[ ! -z $(grep "^${i}=" ${MAGERC}) ]]  
54   then   then
55   echo "fixing $i -> ${value}"   echo "You must define \$CONFIG varibale first!"
56   sed -i "s|^\(${i}=\).*|\1\"${value}\"|" ${MAGERC}   return 1
57     fi
58    
59     for i in ${variables}
60     do
61     value="$(eval echo \${NEW_${i}})"
62     if [[ ! -z $(grep "^${i}=" ${CONFIG}) ]]
63     then
64     echo "fixing ${i} -> ${value}"
65     sed -i "s|^\(${i}=\).*|\1\"${value}\"|" ${CONFIG}
66     else
67     echo "adding ${i}=${value}"
68     echo "${i}=\"${value}\"" >> ${CONFIG}
69     fi
70     done
71    }
72    
73    updategrub2()
74    {
75     # create a device.map
76     if [[ ! -f /boot/grub/device.map ]]
77     then
78     grub-mkdevicemap
79     fi
80    
81     # needed by grub-mkconfig on the first run
82     if [[ ! -f /boot/grub/video.lst ]]
83     then
84     install -m0644 /lib/grub/*/video.lst /boot/grub/video.lst
85     fi
86    
87     # update grub.cfg
88     grub-mkconfig -o /boot/grub/grub.cfg
89    
90     # install bootloader to disk
91     local bootdisk
92     bootdisk="$(grub-probe --target=drive /boot | sed 's:(\(.*\),.*):(\1):')"
93    
94     # Generate core.img, but don't let it be installed in boot sector
95     grub-install --no-floppy "${bootdisk}"
96    }
97    
98    # checks size of the mbr, if we are able to install grub2
99    check_mbr_size()
100    {
101     local hdd="$1"
102     local geometry_sectors
103     local partition_start_sector
104     local retval
105    
106     hdd="$(mount | grep '/dev/' | grep ' / ' | cut -d' ' -f1 | sed 's:\(.*\)[0-9].*:\1:')"
107    
108     if [[ -z ${hdd} ]]
109     then
110     echo "check_mbr_size(): No hdd given, aborting"
111     return 1
112     fi
113    
114     # fix permissions
115     chmod +x /etc/mage-profile/sfdisk > /dev/null
116    
117     # default retval is 0
118     retval=0
119    
120     # check only if disk size is below 256mb
121     if [[ $(sfdisk -s ${hdd}) -lt 257000 ]]
122     then
123     geometry_sectors=$(sfdisk -g ${hdd} | sed 's:.*,\ \([0-9].*\)\ sectors.*:\1:')
124     partition_start_sector=$(sfdisk -d /dev/hda | grep /dev/hda1 | sed -e 's:.*start=\(.*\), size.*:\1:' -e 's:\ ::g')
125    
126     # check start_sector / geomtry > 1 then everything is fine, else abort setup as grub may not install!
127     if [[ $(expr ${partition_start_sector} / ${geometry_sectors}) -gt 1 ]]
128     then
129     echo "Current partition setup is big enough, to install grub2 mbr to this disk."
130     retval=0
131     else
132     echo "Warning: Current partition setup to small, cannot install grub2 boot-sector to this disk."
133     echo "Maybe this is a *RANGEE* with a flash-disk =<256MB. Please re-install this client."
134     echo "Upgrade *not* supported!"
135     retval=1
136     killall mage &> /dev/null
137     killall update-alx &> /dev/null
138     fi
139   else   else
140   echo "adding $i=${value}"   echo "Current disk is big enough, to install grub2 mbr to this disk."
141   echo "${i}=\"${value}\"" >> ${MAGERC}   retval=0
142   fi   fi
143  done  
144     return "${retval}"
145    }
146    
147    # fix mage.rc
148    CONFIG="${MAGERC}"
149    updateconfig RSYNC MIRRORS MAGE_DISTRIBUTION PACKAGES_SERVER_PATH MAGE_UNINSTALL_TIMEOUT
150    
151    # fix config.rc
152    CONFIG="${CONFIGRC}"
153    updateconfig ALX_NETWORKING ALX_DHCP_PROG ALX_DHCP_START ALX_DHCP_STOP MIN_DISK_SPACE ALX_PLUGINS ALX_FUNCTIONS
154    
155  # fix profile  # fix profile
156  if [[ $(readlink /etc/mage-profile) != */${MAGEPROFILE} ]]  if [[ $(readlink /etc/mage-profile) != */${MAGEPROFILE} ]]
# Line 43  then Line 159  then
159   ln -snf /usr/mage/profiles/${MAGEPROFILE} /etc/mage-profile   ln -snf /usr/mage/profiles/${MAGEPROFILE} /etc/mage-profile
160  fi  fi
161    
162    # fix missing /dev/root device
163    if [[ ! -e /dev/root ]]
164    then
165     echo "fixing missing /dev/root symlink ..."
166     rootdev=$(basename $(mount | grep ' / ' | cut -d' ' -f1))
167     [[ -e /dev/${rootdev} ]] && ln -snf ${rootdev} /dev/root
168    fi
169    
170    check_mbr_size || exit 1
171    
172  # update mage3 -> mage4  # update mage3 -> mage4
173  if [[ -z $(magequery -n mage) ]]  if [[ -z $(magequery -n mage) ]]
174  then  then
# Line 71  then Line 197  then
197   touch /.dist-upgrade   touch /.dist-upgrade
198  fi  fi
199    
200    # only run this if X11R6 is a directory and not a symlink
201    if [[ -d /usr/X11R6 ]] && [[ ! -L /usr/X11R6 ]]
202    then
203     # check for -f option
204     if [[ -n $(magequery -h | grep -- -f) ]]
205     then
206     # uninstall all /usr/X11R6 packages first
207     for i in $(magequery -f /usr/X11R6 | sed 's:.*/\(.*\)-.*-r.*:\1:')
208     do
209     mage uninstall ${i}
210     done
211     fi
212    
213     # if there are any files after uninstall, simply delete them
214     [ -d /usr/X11R6 ] && rm -rf /usr/X11R6
215    fi
216    
217  # install new toolchain if not exist  # install new toolchain if not exist
218  TOOLCHAIN="$(< /etc/mage-profile/toolchain.defaults)"  TOOLCHAIN="$(< /etc/mage-profile/toolchain.defaults)"
219  if [[ -z $(magequery -n ${TOOLCHAIN}) ]]  if [[ -z $(magequery -n ${TOOLCHAIN}) ]]
# Line 92  BASESYSTEM="$(< /etc/mage-profile/basesy Line 235  BASESYSTEM="$(< /etc/mage-profile/basesy
235  if [[ -z $(magequery -n ${BASESYSTEM}) ]]  if [[ -z $(magequery -n ${BASESYSTEM}) ]]
236  then  then
237   # first keep some important files   # first keep some important files
238    
239   # export bootstrap to not start any services   # export bootstrap to not start any services
240   export MAGE_BOOTSTRAP=true   export MAGE_BOOTSTRAP=true
241   mage install ${BASESYSTEM}   mage install ${BASESYSTEM}
242   unset MAGE_BOOTSTRAP   unset MAGE_BOOTSTRAP
243    
244    # # fix locale
245    # echo "LANG=\"de_DE\"" > /etc/conf.d/locale
246    
247   # enable run of orphaned files check   # enable run of orphaned files check
248   touch /.orphaned   touch /.orphaned
249    
# Line 114  then Line 260  then
260   touch /.orphaned   touch /.orphaned
261  fi  fi
262    
 # etc-update  
 #etc-update  
   
263  # clean mage cache  # clean mage cache
264  mage clean  mage clean
265    
# Line 125  for i in $(magequery -i | grep -- -alx | Line 268  for i in $(magequery -i | grep -- -alx |
268  do  do
269   # excludes   # excludes
270   case ${i} in   case ${i} in
271     alxconfig-ng) continue ;;
272     alxinstall-ng) continue ;;
273   kernel-alx) continue ;;   kernel-alx) continue ;;
274   kernel26-alx) continue ;;   kernel26-alx) continue ;;
275   kernel-sources-alx) continue ;;   kernel-sources-alx) continue ;;
# Line 144  fi Line 289  fi
289    
290  if [[ -f /.dist-upgrade ]]  if [[ -f /.dist-upgrade ]]
291  then  then
292     # busybox gets installed before the new busybox initscripts
293     # and the syslog daemon gets started at the wrong runlevels (rc3.d instead of rc.sysinit)
294     # these runlevel symlinks will be deleted by the prune-orphaned-files script
295     # and syslogd will be left never started. so add syslogd here
296     rc-config add syslogd
297    
298   # array of wireless opts   # array of wireless opts
299   WIRELESS_OPTS=( WIRELESS_BITRATE WIRELESS_CHANNEL WIRELESS_ESSID WIRELESS_FREQUENCY WIRELESS_MODE WIRELESS_NICK WIRELESS_AUTH_MODE WIRELESS_KEY_LENGTH WIRELESS_KEY WIRELESS_KEY_ASCII WIRELESS_WPA_DRIVER )   WIRELESS_OPTS=( WIRELESS_BITRATE WIRELESS_CHANNEL WIRELESS_ESSID WIRELESS_FREQUENCY WIRELESS_MODE WIRELESS_NICK WIRELESS_AUTH_MODE WIRELESS_KEY_LENGTH WIRELESS_KEY WIRELESS_KEY_ASCII WIRELESS_WPA_DRIVER )
300    
# Line 172  then Line 323  then
323   done   done
324   rm -f ${i}.orig   rm -f ${i}.orig
325   done   done
326     # search modules files
327     for i in $(find /etc/modules.d -name net.\*)
328     do
329     install -d /etc/modprobe.d
330     mv ${i} /etc/modprobe.d/${i%.conf}.conf
331     done
332    
333     mount /boot &> /dev/null
334     # install an appropriate uvesafb.conf
335     install -d /etc/modprobe.d || die
336     echo "options uvesafb mode_option=1024x768-32@60 scroll=ywrap" > /etc/modprobe.d/uvesafb.conf || die
337     # install an appropriate viafb.conf
338     echo "options viafb viafb_mode=1024x768 viafb_refresh=60" > /etc/modprobe.d/viafb.conf || die
339     # install an appropriate i810fb.conf
340     echo "echo i810fb xres=1024 yres=768 bpp=16 mtrr=1 hsync1=30 hsync2=62 vsync1=30 vsync2=60"  > /etc/modprobe.d/i810fb.conf || die
341     # create an updated initrd
342     DISKMODS="sd_mod"
343     OLDPATAMODS="amd74xx piix sis5513 via82cxxx"
344     PATAMODS="ata_piix pata_amd pata_mpiix pata_oldpiix pata_sis pata_via"
345     SATAMODS="sata_via sata_sis sata_nv"
346     DRMMODS="i915 mga nouveau r128 radeon savage sis tdfx ttm via"
347     if [ -x /usr/sbin/alx-hwdetection ]
348     then
349     case $(/usr/sbin/alx-hwdetection system) in
350     zotac) FBMODS="" ;;
351     rangee) FBMODS="" ;; ## fallback to vesafb, viafb does not run on all CLE266 boards
352     maxdata) FBMODS="i810fb" ;; ## check for maxdata / i810/ i815 Chipsets and disable KMS and use i810fb frambuffer
353     standard) FBMODS="uvesafb" ;;
354     # unkown, use nothing to be safe
355     *) FBMODS="" ;;
356     esac
357     else
358     # unkown, use nothing to be safe
359     FBMODS=""
360     fi
361     echo "MODULES=\"${FORMAT_FILESYSTEM} ${DISKMODS} ${OLDATAMODS} ${PATAMODS} ${SATAMODS} ${DRMMODS} ${FBMODS}\"" > /etc/conf.d/mkinitrd
362     kernelver=$(readlink /boot/vmlinuz | sed 's:kernel-::')
363     # run depmod before
364     depmod -aF /boot/System.map-${kernelver}
365     mkinitrd -f /boot/initrd-${kernelver}.img ${kernelver}
366     # update grub bootloader
367     updategrub2
368  fi  fi
369    
370  if [[ -f /.dist-upgrade ]]  if [[ -f /.dist-upgrade ]]
371  then  then
372     if [[ ${NOREBOOT} != 1 ]]
373     then
374     echo "preparing for a reboot in 60 seconds ..."
375     # reboot via cronjob
376     [[ ! -d /var/spool/cron/crontabs ]] && install -d /var/spool/cron/crontabs
377     # setup a proper cronjob
378     tmp=$(mktemp)
379     :> ${tmp}
380     # fake mageupgrade to fix annoying error messages
381     if [[ ! -x /sbin/mageupgrade ]]
382     then
383     echo '#!/bin/sh' > /sbin/mageupgrade
384     echo 'exit 0'  >> /sbin/mageupgrade
385     chmod +x /sbin/mageupgrade
386     echo "* * * * * rm /sbin/mageupgrade" >> ${tmp}
387     fi
388     echo "* * * * * crontab -r && reboot -f" >> ${tmp}
389     crontab ${tmp}
390     [[ -f ${tmp} ]] && rm -f ${tmp}
391     # start cron daemon in background
392     crond -b -S
393     fi
394    
395   rm -f /.dist-upgrade   rm -f /.dist-upgrade
  # force a reboot at this point here  
  reboot -f  
396  fi  fi
397    
398    exit 0

Legend:
Removed from v.2112  
changed lines
  Added in v.6751