Magellan Linux

Diff of /mcore-src/trunk/mcore-install/bin/mcore-install.sh

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

revision 1275 by niro, Fri Feb 4 22:20:50 2011 UTC revision 1294 by niro, Sun Feb 6 23:21:42 2011 UTC
# Line 1  Line 1 
1  #!/bin/bash  #!/bin/bash
2  # $Id$  # $Id$
3    
4  MLIBDIR="/usr/lib/mcore-intall"  # ignore environment!
5    LC_ALL=C
6    
7    MLIBDIR="/usr/lib/mcore-install"
8    
9  # images: (get ${CDIMAGENAME})  # images: (get ${CDIMAGENAME})
10  source /mnt/cdrom/system/images.conf  source /mnt/cdrom/system/images.conf
11    
12  # includes  # includes
13  source ${MLIBDIR}/functions/findhdd.sh > /dev/null  source ${MLIBDIR}/functions/hwdetection.sh
 ### bugfix ###############################  
 cdromdev="$(echo ${cdromdev} | sed 's/ //')"  
 ########################################  
14    
15  ### System/Config Version  ### System/Config Version
16  VERSION="@@VERSION@@"  VERSION="@@VERSION@@"
17  TITLE="mcore-install - ${VERSION}"  TITLE="mcore-install - ${VERSION}"
18    
19  CDPATH="/mnt/cdrom"  CDPATH="/mnt/cdrom"
20  INSTALLPATH="/mnt/magellan"  INSTALL_ROOT="/mnt/magellan"
21    
22  ### WICHTIG: anzahl lines in der autosta_lx.tar.gz -1  ### linecount of system.tar.gz -1 !
23  CURRENTLINE=0  CURRENTLINE=0
24  #TOTALLINES=11072 # -> now in images.conf  #TOTALLINES=11072 # -> now in images.conf
25    
# Line 29  KERNELOPTS="quiet" Line 29  KERNELOPTS="quiet"
29  # default specialdevices  # default specialdevices
30  SPECIALDEVICE=""  SPECIALDEVICE=""
31    
32    # target filesystem
33    FORMAT_FILESYSTEM="ext3"
34    
35  #################################################  #################################################
36  #  DIALOG BOXEN #  #  DIALOG BOXEN #
37  #################################################  #################################################
38    
39  die()  die()
40  {  {
41   ERROR=$1   ERROR="$1"
42   RETVAL=$?   RETVAL="$?"
43   dialog_install_failure   dialog_install_failure
44   exit 1   exit 1
45  }  }
46    
47  dialog_warning()  dialog_warning()
48  {  {
49     local retval
50    
51   dialog \   dialog \
52   --backtitle "${TITLE}" \   --backtitle "${TITLE}" \
53   --colors \   --colors \
# Line 50  dialog_warning() Line 55  dialog_warning()
55   --yesno "\Z1 !!! Achtung !!! \Zn\n\n\   --yesno "\Z1 !!! Achtung !!! \Zn\n\n\
56   Diese Festplatte wird unwiederruflich geloescht werden.\n\n\   Diese Festplatte wird unwiederruflich geloescht werden.\n\n\
57   Soll ich wirklich fortfahren ?" 10 70   Soll ich wirklich fortfahren ?" 10 70
58   RES=$?   retval=$?
59   if [[ ${RES} -eq 1 ]]   if [[ ${retval} -eq 1 ]]
60   then   then
61   clear   clear
62   echo "Der Vorgang wurde abgebrochen."   echo "Der Vorgang wurde abgebrochen."
# Line 61  dialog_warning() Line 66  dialog_warning()
66    
67  dialog_setup_hdd_info()  dialog_setup_hdd_info()
68  {  {
  local SHDD="$(echo ${HDD} | sed 's/\/dev\///')"  
   
  dialog \  
  --colors \  
  --title "[ Festplatten Partitionierung ]" \  
  --backtitle "${TITLE}" \  
  --ok-label "Weiter" \  
  --msgbox "\nBitte legen Sie 3 Partitionen an.\n\n\  
  [ \Z3${SHDD}1\Zn ] Typ: \Z3Linux\Zn mit ca. 50MB\n\  
  [ \Z3${SHDD}2\Zn ] Typ: \Z3Linux Swap\Zn mit ca. 256MB\n\  
  [ \Z3${SHDD}3\Zn ] Typ: \Z3Linux \Zn mit dem Rest (min. 256MB)\n\n\  
  Bitte ${SHDD}1 als \Z3bootable\Zn markieren." 12 81  
 }  
   
 dialog_setup_hdd_info_flash()  
 {  
69   local SHDD="$(echo $HDD | sed 's/\/dev\///')"   local SHDD="$(echo $HDD | sed 's/\/dev\///')"
70    
71   dialog \   dialog \
# Line 105  dialog_setup_hdd_info_auto() Line 94  dialog_setup_hdd_info_auto()
94  dialog_setup_system_menu()  dialog_setup_system_menu()
95  {  {
96   local i   local i
97     local retval
98    
99   i=$(dialog \   i=$(dialog \
100   --backtitle "${TITLE}" \   --backtitle "${TITLE}" \
# Line 117  dialog_setup_system_menu() Line 107  dialog_setup_system_menu()
107   "1" "Automatisches Setup (Empfohlen)" \   "1" "Automatisches Setup (Empfohlen)" \
108   "" "" \   "" "" \
109   "" "\Z1Experten Modi:\Zn" \   "" "\Z1Experten Modi:\Zn" \
110   "2" "Normale IDE-Disk (Manuell)" \   "2" "Normale IDE-Disk (Manuell)")
111   "3" "Flash-Speicher (Manuell)")   retval=$?
112   RES=$?   [[ ${retval} -eq 1 ]] && return 1
113   [[ ${RES} -eq 1 ]] && return 1   if [[ ${retval} -eq 0 ]]
  if [[ ${RES} -eq 0 ]]  
114   then   then
115   case "${i}" in   case "${i}" in
116   "1") run_install_auto ;;   "1") run_install_auto ;;
117           "2") run_install_normal ;;           "2") run_install_normal ;;
  "3") run_install_flash ;;  
118   "") dialog_setup_system_menu;;   "") dialog_setup_system_menu;;
119   esac   esac
120   fi   fi
# Line 144  dialog_hardware_detection() Line 132  dialog_hardware_detection()
132   hwtmp="/tmp/hwtmp.sh"   hwtmp="/tmp/hwtmp.sh"
133   fi   fi
134    
135   [[ ! -z ${installdevs} ]] && installdevs=""   run_hardware_detection_disks
136    
137   echo "dialog \\"  > ${hwtmp}   echo "dialog \\"  > ${hwtmp}
138   echo "--backtitle \"${TITLE}\" \\" >> ${hwtmp}   echo "--backtitle \"${TITLE}\" \\" >> ${hwtmp}
# Line 154  dialog_hardware_detection() Line 142  dialog_hardware_detection()
142   echo "--msgbox \"Gefundene Hardware:\n\n \\" >> ${hwtmp}   echo "--msgbox \"Gefundene Hardware:\n\n \\" >> ${hwtmp}
143   echo " Festplatten:\n \\" >> ${hwtmp}   echo " Festplatten:\n \\" >> ${hwtmp}
144    
145   if [[ ! -z ${scsidisks} ]]   if [[ ! -z ${ALL_DISKS} ]]
146   then   then
147   for i in ${scsidisks}   for i in ${ALL_DISKS}
148   do   do
149   if [[ ${i} != ${cdromdev} ]]   echo " \\Z3${i}\\Zn\n \\" >> ${hwtmp}
  then  
  echo " \\Z7SCSI: \\Z3${i}\\Zn\n \\" >> ${hwtmp}  
  installdevs="${installdevs} ${i}"  
  fi  
150   done   done
151   fi   fi
152    
153   if [[ ! -z ${idedisks} ]]   if [[ ! -z ${ALL_CDROMS} ]]
154   then   then
155   for i in ${idedisks}   echo " \n \\" >> ${hwtmp}
156     echo " CDROM Laufwerke:\n \\" >> ${hwtmp}
157     for i in ${ALL_CDROMS}
158   do   do
159   if [[ ${i} != ${cdromdev} ]]   echo " \\Z3${i}\\Zn\n \\" >> ${hwtmp}
  then  
  echo " \\Z7IDE:  \\Z3${i}\\Zn\n \\" >> ${hwtmp}  
  installdevs="${installdevs} ${i}"  
  fi  
160   done   done
161   fi   fi
162    
  if [[ ! -z ${cdromdev} ]]  
  then  
  echo " \n \\" >> ${hwtmp}  
  echo " \\Z7andere Laufwerke:\n \\" >> ${hwtmp}  
  echo " CDROM: \\Z3${cdromdev}\\Zn\n \\" >> ${hwtmp}  
  fi  
   
163   # other devices   # other devices
164   run_hardware_detection   run_hardware_detection
165   case "${SPECIALDEVICE}" in   case "${SPECIALDEVICE}" in
166   zotac) echo " \n\n\n \\Z2Zotac Device erkannt!\\Zn \\" >> ${hwtmp} ;;   zotac) echo " \n \\Z2Zotac Device erkannt!\\Zn \\" >> ${hwtmp} ;;
167   *) echo " \n\n\n \\ZnStandard Device erkannt!\\Zn \\" >> ${hwtmp} ;;   *) echo " \n \\ZnStandard Device erkannt!\\Zn \\" >> ${hwtmp} ;;
168   esac   esac
169    
170   echo " \" 13 70" >> ${hwtmp}   echo " \" 13 70" >> ${hwtmp}
# Line 206  dialog_hardware_detection() Line 181  dialog_hardware_detection()
181  dialog_setup_hdd_partitions_manuell()  dialog_setup_hdd_partitions_manuell()
182  {  {
183   local i   local i
184     local retval
185    
186   if [[ -z ${installdevs} ]]   if [[ -z ${ALL_DISKS} ]]
187   then   then
188   dialog \   dialog \
189   --backtitle "${TITLE}" \   --backtitle "${TITLE}" \
# Line 215  dialog_setup_hdd_partitions_manuell() Line 191  dialog_setup_hdd_partitions_manuell()
191   --msgbox "Kein geeignetes Laufwerk gefunden.\nDie Installation ist fehlgeschlagen." 6 70   --msgbox "Kein geeignetes Laufwerk gefunden.\nDie Installation ist fehlgeschlagen." 6 70
192   exit 1   exit 1
193   else   else
   
194   echo "dialog \\" > /tmp/hddtmp.sh   echo "dialog \\" > /tmp/hddtmp.sh
195   echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh   echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh
196   echo "--ok-label \"Weiter\" \\" >> /tmp/hddtmp.sh   echo "--ok-label \"Weiter\" \\" >> /tmp/hddtmp.sh
# Line 223  dialog_setup_hdd_partitions_manuell() Line 198  dialog_setup_hdd_partitions_manuell()
198   echo "--stdout \\" >> /tmp/hddtmp.sh   echo "--stdout \\" >> /tmp/hddtmp.sh
199   echo "--menu \"Installations Laufwerk auswaehlen:\" 10 70 3 \\" >> /tmp/hddtmp.sh   echo "--menu \"Installations Laufwerk auswaehlen:\" 10 70 3 \\" >> /tmp/hddtmp.sh
200    
201   for i in ${installdevs}   for i in ${ALL_DISKS}
202   do   do
203   echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh   echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh
204   done   done
# Line 231  dialog_setup_hdd_partitions_manuell() Line 206  dialog_setup_hdd_partitions_manuell()
206    
207   chmod a+x /tmp/hddtmp.sh   chmod a+x /tmp/hddtmp.sh
208   HDD="$(/tmp/hddtmp.sh)"   HDD="$(/tmp/hddtmp.sh)"
209   RES=$?   retval=$?
210   [[ ${RES} -eq 1 ]] && return 1   [[ ${retval} -eq 1 ]] && return 1
211   if [[ ${RES} -eq 0 ]]   if [[ ${retval} -eq 0 ]]
212   then   then
213   dialog_setup_hdd_info   dialog_setup_hdd_info
214   setup_hdd_partitions_manuell   setup_hdd_partitions_manuell
# Line 241  dialog_setup_hdd_partitions_manuell() Line 216  dialog_setup_hdd_partitions_manuell()
216   fi   fi
217  }  }
218    
 dialog_setup_hdd_partitions_manuell_flash()  
 {  
  local i  
   
  if [[ -z ${installdevs} ]]  
  then  
  dialog \  
  --backtitle "${TITLE}" \  
  --ok-label "Beenden" \  
  --msgbox "Kein geeignetes Laufwerk gefunden.\nDie Installation ist fehlgeschlagen." 6 70  
  exit 1  
  else  
   
  echo "dialog \\" > /tmp/hddtmp.sh  
  echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh  
  echo "--ok-label \"Weiter\" \\" >> /tmp/hddtmp.sh  
  echo "--cancel-label \"Beenden\" \\" >> /tmp/hddtmp.sh  
  echo "--stdout \\" >> /tmp/hddtmp.sh  
  echo "--menu \"Installations Laufwerk auswaehlen:\" 10 70 3 \\" >> /tmp/hddtmp.sh  
   
  for i in ${installdevs}  
  do  
  echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh  
  done  
  echo -e "\n" >> /tmp/hddtmp.sh  
   
  chmod a+x /tmp/hddtmp.sh  
  HDD="$(/tmp/hddtmp.sh)"  
  RES=$?  
  [[ ${RES} -eq 1 ]] && return 1  
  if [[ ${RES} -eq 0 ]]  
  then  
  dialog_setup_hdd_info_flash  
  setup_hdd_partitions_manuell_flash  
  fi  
  fi  
 }  
   
219  dialog_setup_hdd_partitions_auto()  dialog_setup_hdd_partitions_auto()
220  {  {
221   local i   local i
222     local retval
223    
224   if [[ -z ${installdevs} ]]   if [[ -z ${ALL_DISKS} ]]
225   then   then
226   dialog \   dialog \
227   --backtitle "${TITLE}" \   --backtitle "${TITLE}" \
# Line 291  dialog_setup_hdd_partitions_auto() Line 229  dialog_setup_hdd_partitions_auto()
229   --msgbox "Kein geeignetes Laufwerk gefunden.\nDie Installation ist fehlgeschlagen." 6 70   --msgbox "Kein geeignetes Laufwerk gefunden.\nDie Installation ist fehlgeschlagen." 6 70
230   exit 1   exit 1
231   else   else
   
232   echo "dialog \\" > /tmp/hddtmp.sh   echo "dialog \\" > /tmp/hddtmp.sh
233   echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh   echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh
234   echo "--ok-label \"Weiter\" \\" >> /tmp/hddtmp.sh   echo "--ok-label \"Weiter\" \\" >> /tmp/hddtmp.sh
# Line 299  dialog_setup_hdd_partitions_auto() Line 236  dialog_setup_hdd_partitions_auto()
236   echo "--stdout \\" >> /tmp/hddtmp.sh   echo "--stdout \\" >> /tmp/hddtmp.sh
237   echo "--menu \"Installations Laufwerk auswaehlen:\" 10 70 3 \\" >> /tmp/hddtmp.sh   echo "--menu \"Installations Laufwerk auswaehlen:\" 10 70 3 \\" >> /tmp/hddtmp.sh
238    
239   for i in ${installdevs}   for i in ${ALL_DISKS}
240   do   do
241   echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh   echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh
242   done   done
# Line 307  dialog_setup_hdd_partitions_auto() Line 244  dialog_setup_hdd_partitions_auto()
244    
245   chmod a+x /tmp/hddtmp.sh   chmod a+x /tmp/hddtmp.sh
246   HDD="$(/tmp/hddtmp.sh)"   HDD="$(/tmp/hddtmp.sh)"
247   RES=$?   retval=$?
248   [[ ${RES} -eq 1 ]] && return 1   [[ ${retval} -eq 1 ]] && return 1
249   if [[ ${RES} -eq 0 ]]   if [[ ${retval} -eq 0 ]]
250   then   then
251   dialog_setup_hdd_info_auto   dialog_setup_hdd_info_auto
252   dialog_setup_hdd_create_partitions   dialog_setup_hdd_create_partitions
# Line 346  dialog_install_system_image() Line 283  dialog_install_system_image()
283   --gauge "Kopiere System-Image ..." 6 80   --gauge "Kopiere System-Image ..." 6 80
284  }  }
285    
286    dialog_install_initrd()
287    {
288     dialog \
289     --backtitle "${TITLE}" \
290     --infobox "Erstelle Initrd ..." 3 70
291    }
292    
293  dialog_install_meter()  dialog_install_meter()
294  {  {
295   while [[ ${CURRENTLINE} != ${TOTALLINES} ]]   while [[ ${CURRENTLINE} != ${TOTALLINES} ]]
296   do   do
297   CURRENTLINE=$(grep -c . /tmp/install.log)   CURRENTLINE=$(grep -c . /tmp/install.log)
298   PERCENT=$(( ${CURRENTLINE} * 100 / ${TOTALLINES}))   PERCENT=$(( ${CURRENTLINE} * 100 / ${TOTALLINES}))
299   echo ${PERCENT}   echo "${PERCENT}"
300   sleep 1   sleep 1
301   done   done
302   rm -f /tmp/install.log   rm -f /tmp/install.log
303   return 0   return 0
304  }  }
305    
   
306  dialog_install_bootsector()  dialog_install_bootsector()
307  {  {
308   dialog \   dialog \
# Line 387  dialog_install_failure() Line 330  dialog_install_failure()
330    
331  dialog_main()  dialog_main()
332  {  {
333   METHOD=0   local method=0
334     local retval
335    
336   while [[ ${METHOD} -le 2 ]]   while [[ ${method} -le 2 ]]
337   do   do
338   METHOD=$(dialog \   method=$(dialog \
339   --backtitle "${TITLE}" \   --backtitle "${TITLE}" \
340   --no-cancel \   --no-cancel \
341   --ok-label "Weiter" \   --ok-label "Weiter" \
342   --stdout \   --stdout \
343   --menu "Konfiguration" 14 70 5 \   --menu "Konfiguration" 14 70 5 \
344   "1" "AutoSta_LX installieren" \   "1" "mCore installieren" \
345   "2" "Uebersicht gefundener Laufwerke" \   "2" "Uebersicht gefundener Laufwerke" \
346   "3" "Beenden und neustarten" \   "3" "Beenden und neustarten" \
347   "4" "Beenden und eine Shell starten")   "4" "Beenden und eine Shell starten")
348   RES=$?   retval=$?
349   [[ ${RES} -eq 1 ]] && exit 1   [[ ${retval} -eq 1 ]] && exit 1
350   if [[ ${RES} -eq 0 ]]   if [[ ${retval} -eq 0 ]]
351   then   then
352   case ${METHOD} in   case ${method} in
353           "1") dialog_setup_system_menu ;;           "1") dialog_setup_system_menu ;;
354   "2") dialog_hardware_detection ;;   "2") dialog_hardware_detection ;;
355   "3") install_do_reboot ;;   "3") install_do_reboot ;;
356   "4") /bin/bash --login -i ;;   "4") clear;/bin/bash --login -i ;;
357   esac   esac
358   fi   fi
359   done   done
# Line 421  dialog_main() Line 365  dialog_main()
365  run_hardware_detection()  run_hardware_detection()
366  {  {
367   # check for special devices/clients:   # check for special devices/clients:
368   # if zotac a zotac and the disk is a removeable device, then add rootdelay to kernelcmd   #  if the device is a zotac and has a removeable device as boot disk,
369     #  then add a rootdelay of 8 seconds to kernelcmd
370   local removable=0   local removable=0
371   if [[ ! -z $(lspci -v | grep -i zotac) ]]   if [[ ! -z $(lspci -v | grep -i zotac) ]]
372   then   then
# Line 438  run_hardware_detection() Line 383  run_hardware_detection()
383   fi   fi
384  }  }
385    
386    run_hardware_detection_disks()
387    {
388     # all disks but exclude ramdisks
389     export ALL_DISKS=$(get_hwinfo disk | sed '/\/dev\/ram[0-9].*/d')
390     export ALL_CDROMS="$(get_hwinfo cdrom)"
391    }
392    
393  setup_hdd_partitions_auto()  setup_hdd_partitions_auto()
394  {  {
395   ROOTHDD="${HDD}1"   ROOTHDD="${HDD}1"
396    
397   ## delete disk   ## delete disk
398   dd if=/dev/zero of=${HDD} count=1 &> /dev/null || die   dd if=/dev/zero of="${HDD}" count=1 &> /dev/null || die
399    
400   ## setup one bootable partition   ## setup one bootable partition
401   #1. n= new disk   #1. n= new disk
# Line 454  setup_hdd_partitions_auto() Line 406  setup_hdd_partitions_auto()
406   #6. a= bootable flag   #6. a= bootable flag
407   #7. 1= boot flag for partition 1   #7. 1= boot flag for partition 1
408   #8. w= write/quit   #8. w= write/quit
409   fdisk ${HDD} &> /dev/null << EOF   fdisk "${HDD}" &> /dev/null << EOF
410  n  n
411  p  p
412  1  1
# Line 468  EOF Line 420  EOF
420    
421  setup_hdd_partitions_manuell()  setup_hdd_partitions_manuell()
422  {  {
  BOOTHDD="${HDD}1"  
  SWAPHDD="${HDD}2"  
  ROOTHDD="${HDD}3"  
   
  ## hdds partitionieren manuell  
  cfdisk ${HDD} || die  
 }  
   
 setup_hdd_partitions_manuell_flash()  
 {  
423   ROOTHDD="${HDD}1"   ROOTHDD="${HDD}1"
424     cfdisk "${HDD}" || die
  ## hdds partitionieren manuell  
  cfdisk ${HDD} || die  
425  }  }
426    
427  setup_hdd_format()  setup_hdd_format()
428  {  {
429   mkswap ${SWAPHDD} || die   # defaults to ext3
430   mke2fs -j -q ${BOOTHDD} || die   [[ -z ${FORMAT_FILESYSTEM} ]] && FORMAT_FILESYSTEM="ext3"
  mke2fs -j -q ${ROOTHDD} || die  
 }  
431    
432  setup_hdd_format_flash()   mkfs."${FORMAT_FILESYSTEM}" -q "${ROOTHDD}" || die
 {  
  mke2fs -j -q ${ROOTHDD} || die  
433  }  }
434    
435  install_mount_rootfs()  install_mount_rootfs()
436  {  {
437   swapon ${SWAPHDD} || die   mount "${ROOTHDD}" "${INSTALL_ROOT}" || die
438   mount ${ROOTHDD} ${INSTALLPATH} || die   install -d ${INSTALL_ROOT}/boot || die
439   install -d ${INSTALLPATH}/boot || die   cd ${INSTALL_ROOT} || die
  mount ${BOOTHDD} ${INSTALLPATH}/boot || die  
  cd ${INSTALLPATH} || die  
 }  
   
 install_mount_rootfs_flash()  
 {  
  mount ${ROOTHDD} ${INSTALLPATH} || die  
  install -d ${INSTALLPATH}/boot || die  
  cd ${INSTALLPATH} || die  
440  }  }
441    
442  install_system_image()  install_system_image()
443  {  {
444   tar xvjpf ${CDPATH}/system/${CDIMAGENAME} -C ${INSTALLPATH}   tar xvjpf ${CDPATH}/system/${CDIMAGENAME} -C ${INSTALL_ROOT}
445  }  }
446    
447  install_bootsector_chroot()  install_bootsector()
448  {  {
449   local my_roothdd   local uuid
450     local initrd
451     local kernelversion
452     local grubtitle
453     local chroot
454     local grubdisk
455     local CONFIG
456    
457   # grubconf schreiben   # setup a proper boot device
458   source ${INSTALLPATH}/boot/kernelversion   if [[ -z ${BOOTHDD} ]]
   
  # for mcore only  
  if [ -e ${INSTALLPATH}/etc/mcore_version ]  
459   then   then
460   OLD_MCOREVER="${MCOREVER}"   grubdisk="${ROOTHDD}"
461   source ${INSTALLPATH}/etc/mcore_version   else
462   KRNVER="mCore-${MCOREVER}"   grubdisk="${BOOTHDD}"
  MCOREVER="${OLD_MCOREVER}"  
463   fi   fi
464    
465   [[ -z ${KRNVER} ]] && KRNVER="mCore"   # first of all, create a device.map
466   [[ -z ${KRNINITRD} ]] && KRNINITRD="initrd"   create_device_map
  [[ -z ${KRNIMG} ]] && KRNIMG="vmlinuz"  
467    
468   # uuid support   # get kernelnames
469   if is_uuid_supported   initrd=/boot/$(readlink ${INSTALL_ROOT}/boot/initrd)
470     kernelversion=$(readlink ${INSTALL_ROOT}/boot/vmlinuz | sed "s:kernel-::g")
471    
472     # for mcore only
473     if [ -f ${INSTALL_ROOT}/etc/mcore_version ]
474   then   then
475   my_roothdd="UUID=$(get_uuid ${ROOTHDD})"   grubtitle="mCore-$(< ${INSTALL_ROOT}/etc/mcore_version) (${kernelversion})"
476   else   else
477   my_roothdd="${ROOTHDD}"   grubtitle="mCore (${kernelversion})"
478   fi   fi
479    
480   local grubconf=${INSTALLPATH}/boot/grub/grub.conf   # uuid support
481   : > ${grubconf} || die   uuid=$(get_uuid "${ROOTHDD}")
  echo "default 0" >> ${grubconf} || die  
  echo "timeout 3" >> ${grubconf} || die  
  # using current root password  
  echo "password --md5 $(cat ${INSTALLPATH}/etc/shadow | grep root | cut -d: -f2)"  >> ${grubconf} || die  
482    
483   echo  >> ${grubconf} || die   CONFIG="${INSTALL_ROOT}/boot/grub/grub.conf"
484   echo "# normal boot" >> ${grubconf} || die   clearconfig
485   echo "title ${KRNVER}" >> ${grubconf} || die   addconfig 'default 0'
486   echo "root (hd0,0)" >> ${grubconf} || die   addconfig 'timeout 3'
487   echo "kernel /boot/${KRNIMG} root=${my_roothdd} ${KERNELOPTS}" >> ${grubconf} || die   if [[ -f ${INSTALL_ROOT}/boot/grub/splash.xpm.gz ]]
488   if is_initrd_supported   then
489   then   addconfig "splashimage $(convert_device ${grubdisk})/boot/grub/splash.xpm.gz"
490   echo "initrd /boot/${KRNINITRD}" >> ${grubconf} || die   fi
491   fi   # using current root password
492     addconfig "password --md5 $(cat ${INSTALL_ROOT}/etc/shadow | grep root | cut -d: -f2)"
493   # bootsector schreiben chrooted schreiben (lfs/magellan)   addconfig
494   cat > ${INSTALLPATH}/root/.bashrc << CHROOTEOF   addconfig '# normal boot'
495  /usr/sbin/grub --no-floppy --batch << "EOF" 1> /dev/null 2> /dev/null   addconfig "title ${grubtitle}"
496  root (hd0,0)   addconfig "root $(convert_device ${grubdisk})"
497  setup (hd0)   addconfig "kernel /boot/kernel-${kernelversion} root=${uuid} ${KERNELOPTS}"
498     addconfig "initrd /boot/${initrd}"
499    
500     [[ ! -z ${INSTALL_ROOT} ]] && chroot=chrooted
501    
502     # update grub
503     ${chroot} grub --batch --no-floppy &> /dev/null << EOF
504    root $(convert_device ${grubdisk})
505    setup $(convert_device ${grubdisk} | sed "s:,[0-9]::")
506  quit  quit
507  EOF  EOF
 exit 0  
 CHROOTEOF  
508    
509   ## enters chroot   return 0
  mount -t proc proc ${INSTALLPATH}/proc  
  mount -t sysfs sysfs ${INSTALLPATH}/sys  
  mount -o bind /dev ${INSTALLPATH}/dev  
  chroot ${INSTALLPATH} /bin/bash --rcfile /root/.bashrc -i  
  umount ${INSTALLPATH}/proc  
  umount ${INSTALLPATH}/sys  
  umount ${INSTALLPATH}/dev  
  rm ${INSTALLPATH}/root/.bashrc  
510  }  }
511    
512  is_initrd_supported()  create_device_map()
513  {  {
514   # only generate initrds if the cmd exists   local chroot
515   [[ -x ${INSTALLPATH}/sbin/mkinitrd ]] && return 0  
516   return 1   [[ ! -z ${INSTALL_ROOT} ]] && chroot=chrooted
517    
518     # create device.map
519     ${chroot} grub --batch --no-floppy --no-config-file --device-map=/boot/grub/device.map </dev/null &> /dev/null
520  }  }
521    
522  install_initrd_chroot()  convert_device()
523  {  {
524   # only generate initrds if the cmd exists   local device="$1"
525   is_initrd_supported || return 0   local root_part=
526    
527   cat > ${INSTALLPATH}/root/.bashrc << CHROOTEOF   # extract device type (block) and major number for root drive
528  echo "MODULES=\"ext3 amd74xx piix sis5513 via82cxxx sd_mod ata_piix pata_amd pata_mpiix pata_oldpiix pata_sis pata_via sata_via sata_sis sata_nv\"" > /etc/conf.d/mkinitrd   local major_minor=$(ls -Ll ${device} | awk '{if ($6 < 64) printf("%c%d0", $1, $5); else printf("%c%d1", $1, $5)}')
 mkinitrd -f /boot/$(readlink /boot/initrd) $(readlink /boot/vmlinuz | sed "s:kernel-::g") > /dev/null  
 exit 0  
 CHROOTEOF  
529    
530   ## enters chroot   # find the matching BIOS device
531   mount -t proc proc ${INSTALLPATH}/proc   for bios_drive in $(grep -v '^#' ${INSTALL_ROOT}/boot/grub/device.map | awk '{print $2}')
532   mount -t sysfs sysfs ${INSTALLPATH}/sys   do
533   mount -o bind /dev ${INSTALLPATH}/dev   bios_major_minor=$(ls -Ll ${bios_drive} 2>/dev/null | awk '{if ($6 < 64) printf("%c%d0", $1, $5); else printf("%c%d1", $1, $5)}')
  chroot ${INSTALLPATH} /bin/bash --rcfile /root/.bashrc -i  
  umount ${INSTALLPATH}/proc  
  umount ${INSTALLPATH}/sys  
  umount ${INSTALLPATH}/dev  
  rm ${INSTALLPATH}/root/.bashrc  
 }  
534    
535  is_uuid_supported()   if [[ ${major_minor} = ${bios_major_minor} ]]
 {  
  if [[ -x $(which busybox.mkinitrd &> /dev/null) ]]  
  then  
  # only detect uuids if supported  
  if [[ ! -z $(busybox.mkinitrd | grep blkid) ]]  
536   then   then
537   return 0   # we found it
538     root_drive=$(grep ${bios_drive} ${INSTALL_ROOT}/boot/grub/device.map | awk '{print $1}')
539     root_part=$(ls -Ll ${device} | awk '{print $6}')
540     root_part=$(( ${root_part} % 16 - 1 ))
541     break
542   fi   fi
543   fi   done
544    
545   return 1   drive=$(echo ${root_drive} | sed "s:)$:,${root_part}):")
546     echo ${drive}
547  }  }
548    
549  get_uuid()  install_initrd()
550  {  {
551   local UUID   local initrd
552   local SEC_TYPE   local kernelversion
  local TYPE  
553    
554   local dev="$1"   initrd=/boot/$(readlink ${INSTALL_ROOT}/boot/initrd)
555   [[ -z ${dev} ]] && die "no dev given"   kernelversion=$(readlink ${INSTALL_ROOT}/boot/vmlinuz | sed "s:kernel-::g")
556    
557   # check if given device is already an UUID   create_initrd --initrd "${initrd}" --kernelversion "${kernelversion}" &> /dev/null
  if [[ ${dev/UUID=/}x != ${dev}x ]]  
  then  
  eval "${dev}"  
  else  
  eval $(busybox.mkinitrd blkid ${dev} | grep "${dev}:" | sed 's/.*:\ //')  
  fi  
  echo "${UUID}"  
558  }  }
559    
560  install_system_settings()  install_system_settings()
561  {  {
562     local CONFIG
563     local uuid
564    
565   # schreibe fstab   # schreibe fstab
566   if is_uuid_supported   uuid=$(get_uuid "${ROOTHDD}")
567   then   CONFIG="${INSTALL_ROOT}/etc/fstab"
568   echo -e "UUID=$(get_uuid ${BOOTHDD})\t/boot\text3\tnoatime,noauto\t1 1" > ${INSTALLPATH}/etc/fstab || die   clearconfig
569   echo -e "UUID=$(get_uuid ${ROOTHDD})\t/\text3\tnoatime\t0 0" >> ${INSTALLPATH}/etc/fstab || die   addconfig -e "UUID=${uuid}\t/\text3\tnoatime\t0 0"
570   else   addconfig -e "proc\t/proc\tproc\tdefaults\t0 0"
571   echo -e "${BOOTHDD}\t/boot\text3\tnoatime,noauto\t1 1" > ${INSTALLPATH}/etc/fstab || die   addconfig -e "shm\t/dev/shm\ttmpfs\tdefaults\t0 0"
  echo -e "${ROOTHDD}\t/\text3\tnoatime\t0 0" >> ${INSTALLPATH}/etc/fstab || die  
  fi  
  # not needed busybox loads all with swapon -a, even if not mentioned in fstab  
  #echo -e "UUID='$(get_uuid ${SWAPHDD})'\tswap\tswap\tpri=1\t0 0" >> ${INSTALLPATH}/etc/fstab || die  
  echo -e "proc\t/proc\tproc\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die  
  echo -e "shm\t/dev/shm\ttmpfs\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die  
572    
573   # install network config skeleton   # install network config skeleton
574   echo 'ONBOOT="yes"' > ${INSTALLPATH}/etc/conf.d/net.eth0 || die   CONFIG="${INSTALL_ROOT}/etc/conf.d/net.eth0"
575   echo 'NETWORKING="dhcp"' >> ${INSTALLPATH}/etc/conf.d/net.eth0 || die   clearconfig
576  }   addconfig 'ONBOOT="yes"'
577     addconfig 'NETWORKING="dhcp"'
 install_system_settings_flash()  
 {  
  # schreibe fstab  
  if is_uuid_supported  
  then  
  echo -e "UUID=$(get_uuid ${ROOTHDD})\t/\text3\tnoatime\t0 0" > ${INSTALLPATH}/etc/fstab || die  
  else  
  echo -e "${ROOTHDD}\t/\text3\tnoatime\t0 0" > ${INSTALLPATH}/etc/fstab || die  
  fi  
  echo -e "proc\t/proc\tproc\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die  
  echo -e "shm\t/dev/shm\ttmpfs\tdefaults\t0 0" >> ${INSTALLPATH}/etc/fstab || die  
578  }  }
579    
580  install_umount_rootfs()  install_umount_rootfs()
581  {  {
582   cd /   cd /
583   umount ${INSTALLPATH}/boot || die   umount ${INSTALL_ROOT} || die
  umount ${INSTALLPATH} || die  
  swapoff ${SWAPHDD} || die  
 }  
   
 install_umount_rootfs_flash()  
 {  
  cd /  
  umount ${INSTALLPATH} || die  
584  }  }
585    
586  install_do_reboot()  install_do_reboot()
# Line 702  install_do_reboot() Line 592  install_do_reboot()
592  #     Install Ablauf Scripte #  #     Install Ablauf Scripte #
593  #################################################  #################################################
594    
595  run_install_normal()  addconfig()
596  {  {
597   dialog_hardware_detection   local opts
598    
599   dialog_setup_hdd_partitions_manuell   if [[ -z ${CONFIG} ]]
600   dialog_setup_hdd_format   then
601   setup_hdd_format > /dev/null   echo "You must define \$CONFIG varibale first!"
602   install_mount_rootfs   return 1
603   (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image   fi
604    
605   dialog_install_bootsector   if [[ ! -d $(dirname ${CONFIG}) ]]
606   install_bootsector_chroot   then
607     install -d $(dirname ${CONFIG})
608     fi
609    
610   dialog_install_settings   # check for opts
611   sleep 1   case $1 in
612   install_system_settings   -n) shift; opts=" -n" ;;
613   install_initrd_chroot   -e) shift; opts=" -e" ;;
614   install_umount_rootfs   esac
615   dialog_install_successful  
616     echo ${opts} "$@" >> ${CONFIG}
617  }  }
618    
619  run_install_flash()  clearconfig()
620    {
621     if [[ -z ${CONFIG} ]]
622     then
623     echo "You must define \$CONFIG varibale first!"
624     return 1
625     fi
626    
627     if [[ ! -d $(dirname ${CONFIG}) ]]
628     then
629     install -d $(dirname ${CONFIG})
630     fi
631     : > ${CONFIG}
632    }
633    
634    run_install_normal()
635  {  {
636   dialog_hardware_detection   dialog_hardware_detection
637    
638   dialog_setup_hdd_partitions_manuell_flash   dialog_setup_hdd_partitions_manuell
639   dialog_setup_hdd_format   dialog_setup_hdd_format
640   setup_hdd_format_flash > /dev/null   setup_hdd_format > /dev/null
641   install_mount_rootfs_flash   install_mount_rootfs
642   (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image   (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image
643    
644   dialog_install_bootsector   dialog_install_bootsector
645   install_bootsector_chroot   install_bootsector
646    
647   dialog_install_settings   dialog_install_settings
648   sleep 1   sleep 1
649   install_system_settings_flash   install_system_settings
650   install_initrd_chroot   dialog_install_initrd
651   install_umount_rootfs_flash   install_initrd
652     install_umount_rootfs
653   dialog_install_successful   dialog_install_successful
654  }  }
655    
# Line 750  run_install_auto() Line 659  run_install_auto()
659    
660   dialog_setup_hdd_partitions_auto   dialog_setup_hdd_partitions_auto
661   dialog_setup_hdd_format   dialog_setup_hdd_format
662   setup_hdd_format_flash > /dev/null   setup_hdd_format > /dev/null
663   install_mount_rootfs_flash   install_mount_rootfs
664   (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image   (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image
665    
666   dialog_install_bootsector   dialog_install_bootsector
667   install_bootsector_chroot   install_bootsector
668    
669   dialog_install_settings   dialog_install_settings
670   sleep 1   sleep 1
671   install_system_settings_flash   install_system_settings
672   install_initrd_chroot   dialog_install_initrd
673   install_umount_rootfs_flash   install_initrd
674     install_umount_rootfs
675   dialog_install_successful   dialog_install_successful
676  }  }
677    

Legend:
Removed from v.1275  
changed lines
  Added in v.1294