Annotation of /mcore-src/trunk/mcore-install/bin/mcore-install.sh
Parent Directory | Revision Log
Revision 1606 -
(hide annotations)
(download)
(as text)
Fri Mar 4 17:08:39 2011 UTC (13 years, 2 months ago) by niro
File MIME type: application/x-sh
File size: 14298 byte(s)
Fri Mar 4 17:08:39 2011 UTC (13 years, 2 months ago) by niro
File MIME type: application/x-sh
File size: 14298 byte(s)
-remove the bootdevice from ALL_DISKS if it was a usbstick or similar
1 | niro | 1275 | #!/bin/bash |
2 | # $Id$ | ||
3 | |||
4 | niro | 1294 | # ignore environment! |
5 | LC_ALL=C | ||
6 | niro | 1275 | |
7 | niro | 1294 | MLIBDIR="/usr/lib/mcore-install" |
8 | |||
9 | niro | 1275 | # images: (get ${CDIMAGENAME}) |
10 | source /mnt/cdrom/system/images.conf | ||
11 | |||
12 | # includes | ||
13 | niro | 1294 | source ${MLIBDIR}/functions/hwdetection.sh |
14 | niro | 1275 | |
15 | ### System/Config Version | ||
16 | VERSION="@@VERSION@@" | ||
17 | TITLE="mcore-install - ${VERSION}" | ||
18 | |||
19 | CDPATH="/mnt/cdrom" | ||
20 | niro | 1294 | INSTALL_ROOT="/mnt/magellan" |
21 | niro | 1275 | |
22 | niro | 1294 | ### linecount of system.tar.gz -1 ! |
23 | niro | 1275 | CURRENTLINE=0 |
24 | #TOTALLINES=11072 # -> now in images.conf | ||
25 | |||
26 | # standart kernel opts | ||
27 | KERNELOPTS="quiet" | ||
28 | |||
29 | # default specialdevices | ||
30 | SPECIALDEVICE="" | ||
31 | |||
32 | niro | 1294 | # target filesystem |
33 | FORMAT_FILESYSTEM="ext3" | ||
34 | |||
35 | niro | 1275 | ################################################# |
36 | # DIALOG BOXEN # | ||
37 | ################################################# | ||
38 | |||
39 | die() | ||
40 | { | ||
41 | niro | 1294 | ERROR="$1" |
42 | RETVAL="$?" | ||
43 | niro | 1275 | dialog_install_failure |
44 | exit 1 | ||
45 | } | ||
46 | |||
47 | dialog_warning() | ||
48 | { | ||
49 | niro | 1294 | local retval |
50 | |||
51 | niro | 1275 | dialog \ |
52 | --backtitle "${TITLE}" \ | ||
53 | --colors \ | ||
54 | --defaultno \ | ||
55 | --yesno "\Z1 !!! Achtung !!! \Zn\n\n\ | ||
56 | Diese Festplatte wird unwiederruflich geloescht werden.\n\n\ | ||
57 | Soll ich wirklich fortfahren ?" 10 70 | ||
58 | niro | 1294 | retval=$? |
59 | if [[ ${retval} -eq 1 ]] | ||
60 | niro | 1275 | then |
61 | clear | ||
62 | echo "Der Vorgang wurde abgebrochen." | ||
63 | exit 1 | ||
64 | fi | ||
65 | } | ||
66 | |||
67 | dialog_setup_hdd_info() | ||
68 | { | ||
69 | local SHDD="$(echo $HDD | sed 's/\/dev\///')" | ||
70 | |||
71 | dialog \ | ||
72 | --colors \ | ||
73 | --title "[ Festplatten Partitionierung ]" \ | ||
74 | --backtitle "${TITLE}" \ | ||
75 | --ok-label "Weiter" \ | ||
76 | --msgbox "\nBitte legen Sie 1 Partition an.\n\n\ | ||
77 | [ \Z3${SHDD}1\Zn ] Typ: \Z3Linux\Zn mit dem gesamten Speicher\n\ | ||
78 | Bitte ${SHDD}1 als \Z3bootable\Zn markieren." 12 81 | ||
79 | } | ||
80 | |||
81 | dialog_setup_hdd_info_auto() | ||
82 | { | ||
83 | local SHDD="$(echo $HDD | sed 's/\/dev\///')" | ||
84 | |||
85 | dialog \ | ||
86 | --colors \ | ||
87 | --title "[ Festplatten Partitionierung ]" \ | ||
88 | --backtitle "${TITLE}" \ | ||
89 | --ok-label "Weiter" \ | ||
90 | --msgbox "\nAchtung!\n\ | ||
91 | Alle Daten werden von der Disk [ \Z3${HDD}\Zn ] gelöscht!" 12 81 | ||
92 | } | ||
93 | |||
94 | dialog_setup_system_menu() | ||
95 | { | ||
96 | local i | ||
97 | niro | 1294 | local retval |
98 | niro | 1275 | |
99 | i=$(dialog \ | ||
100 | --backtitle "${TITLE}" \ | ||
101 | --title "[ Festplatten Partitionierung ]" \ | ||
102 | --cancel-label "Abbrechen" \ | ||
103 | --ok-label "Weiter" \ | ||
104 | --stdout \ | ||
105 | --colors \ | ||
106 | --menu "\nWaehlen Sie die Installations-Methode" 14 70 5 \ | ||
107 | "1" "Automatisches Setup (Empfohlen)" \ | ||
108 | "" "" \ | ||
109 | "" "\Z1Experten Modi:\Zn" \ | ||
110 | niro | 1294 | "2" "Normale IDE-Disk (Manuell)") |
111 | retval=$? | ||
112 | [[ ${retval} -eq 1 ]] && return 1 | ||
113 | if [[ ${retval} -eq 0 ]] | ||
114 | niro | 1275 | then |
115 | case "${i}" in | ||
116 | "1") run_install_auto ;; | ||
117 | "2") run_install_normal ;; | ||
118 | "") dialog_setup_system_menu;; | ||
119 | esac | ||
120 | fi | ||
121 | } | ||
122 | |||
123 | dialog_hardware_detection() | ||
124 | { | ||
125 | local i | ||
126 | local hwtmp | ||
127 | |||
128 | if [ -x $(which mktemp &> /dev/null) ] | ||
129 | then | ||
130 | hwtmp="$(mktemp)" | ||
131 | else | ||
132 | hwtmp="/tmp/hwtmp.sh" | ||
133 | fi | ||
134 | |||
135 | niro | 1294 | run_hardware_detection_disks |
136 | niro | 1275 | |
137 | echo "dialog \\" > ${hwtmp} | ||
138 | echo "--backtitle \"${TITLE}\" \\" >> ${hwtmp} | ||
139 | echo "--ok-label \"Weiter\" \\" >> ${hwtmp} | ||
140 | echo "--stdout \\" >> ${hwtmp} | ||
141 | echo "--colors \\" >> ${hwtmp} | ||
142 | echo "--msgbox \"Gefundene Hardware:\n\n \\" >> ${hwtmp} | ||
143 | echo " Festplatten:\n \\" >> ${hwtmp} | ||
144 | |||
145 | niro | 1294 | if [[ ! -z ${ALL_DISKS} ]] |
146 | niro | 1275 | then |
147 | niro | 1294 | for i in ${ALL_DISKS} |
148 | niro | 1275 | do |
149 | niro | 1294 | echo " \\Z3${i}\\Zn\n \\" >> ${hwtmp} |
150 | niro | 1275 | done |
151 | fi | ||
152 | |||
153 | niro | 1294 | if [[ ! -z ${ALL_CDROMS} ]] |
154 | niro | 1275 | then |
155 | niro | 1294 | echo " \n \\" >> ${hwtmp} |
156 | echo " CDROM Laufwerke:\n \\" >> ${hwtmp} | ||
157 | for i in ${ALL_CDROMS} | ||
158 | niro | 1275 | do |
159 | niro | 1294 | echo " \\Z3${i}\\Zn\n \\" >> ${hwtmp} |
160 | niro | 1275 | done |
161 | fi | ||
162 | |||
163 | # other devices | ||
164 | run_hardware_detection | ||
165 | case "${SPECIALDEVICE}" in | ||
166 | niro | 1294 | zotac) echo " \n \\Z2Zotac Device erkannt!\\Zn \\" >> ${hwtmp} ;; |
167 | *) echo " \n \\ZnStandard Device erkannt!\\Zn \\" >> ${hwtmp} ;; | ||
168 | niro | 1275 | esac |
169 | |||
170 | echo " \" 13 70" >> ${hwtmp} | ||
171 | chmod a+x ${hwtmp} | ||
172 | ${hwtmp} | ||
173 | |||
174 | # remove tmp file | ||
175 | if [[ -f ${hwtmp} ]] | ||
176 | then | ||
177 | rm ${hwtmp} | ||
178 | fi | ||
179 | } | ||
180 | |||
181 | dialog_setup_hdd_partitions_manuell() | ||
182 | { | ||
183 | local i | ||
184 | niro | 1294 | local retval |
185 | niro | 1275 | |
186 | niro | 1294 | if [[ -z ${ALL_DISKS} ]] |
187 | niro | 1275 | then |
188 | dialog \ | ||
189 | --backtitle "${TITLE}" \ | ||
190 | --ok-label "Beenden" \ | ||
191 | --msgbox "Kein geeignetes Laufwerk gefunden.\nDie Installation ist fehlgeschlagen." 6 70 | ||
192 | exit 1 | ||
193 | else | ||
194 | echo "dialog \\" > /tmp/hddtmp.sh | ||
195 | echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh | ||
196 | echo "--ok-label \"Weiter\" \\" >> /tmp/hddtmp.sh | ||
197 | echo "--cancel-label \"Beenden\" \\" >> /tmp/hddtmp.sh | ||
198 | echo "--stdout \\" >> /tmp/hddtmp.sh | ||
199 | echo "--menu \"Installations Laufwerk auswaehlen:\" 10 70 3 \\" >> /tmp/hddtmp.sh | ||
200 | |||
201 | niro | 1294 | for i in ${ALL_DISKS} |
202 | niro | 1275 | do |
203 | echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh | ||
204 | done | ||
205 | echo -e "\n" >> /tmp/hddtmp.sh | ||
206 | |||
207 | chmod a+x /tmp/hddtmp.sh | ||
208 | HDD="$(/tmp/hddtmp.sh)" | ||
209 | niro | 1294 | retval=$? |
210 | [[ ${retval} -eq 1 ]] && return 1 | ||
211 | if [[ ${retval} -eq 0 ]] | ||
212 | niro | 1275 | then |
213 | dialog_setup_hdd_info | ||
214 | setup_hdd_partitions_manuell | ||
215 | fi | ||
216 | fi | ||
217 | } | ||
218 | |||
219 | dialog_setup_hdd_partitions_auto() | ||
220 | { | ||
221 | local i | ||
222 | niro | 1294 | local retval |
223 | niro | 1275 | |
224 | niro | 1294 | if [[ -z ${ALL_DISKS} ]] |
225 | niro | 1275 | then |
226 | dialog \ | ||
227 | --backtitle "${TITLE}" \ | ||
228 | --ok-label "Beenden" \ | ||
229 | --msgbox "Kein geeignetes Laufwerk gefunden.\nDie Installation ist fehlgeschlagen." 6 70 | ||
230 | exit 1 | ||
231 | else | ||
232 | echo "dialog \\" > /tmp/hddtmp.sh | ||
233 | echo "--backtitle \"${TITLE}\" \\" >> /tmp/hddtmp.sh | ||
234 | echo "--ok-label \"Weiter\" \\" >> /tmp/hddtmp.sh | ||
235 | echo "--cancel-label \"Beenden\" \\" >> /tmp/hddtmp.sh | ||
236 | echo "--stdout \\" >> /tmp/hddtmp.sh | ||
237 | echo "--menu \"Installations Laufwerk auswaehlen:\" 10 70 3 \\" >> /tmp/hddtmp.sh | ||
238 | |||
239 | niro | 1294 | for i in ${ALL_DISKS} |
240 | niro | 1275 | do |
241 | echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh | ||
242 | done | ||
243 | echo -e "\n" >> /tmp/hddtmp.sh | ||
244 | |||
245 | chmod a+x /tmp/hddtmp.sh | ||
246 | HDD="$(/tmp/hddtmp.sh)" | ||
247 | niro | 1294 | retval=$? |
248 | [[ ${retval} -eq 1 ]] && return 1 | ||
249 | if [[ ${retval} -eq 0 ]] | ||
250 | niro | 1275 | then |
251 | dialog_setup_hdd_info_auto | ||
252 | dialog_setup_hdd_create_partitions | ||
253 | setup_hdd_partitions_auto | ||
254 | fi | ||
255 | fi | ||
256 | } | ||
257 | |||
258 | dialog_setup_hdd_create_partitions() | ||
259 | { | ||
260 | dialog \ | ||
261 | --backtitle "${TITLE}" \ | ||
262 | --infobox "Erstelle Disk Partitionen ..." 3 70 | ||
263 | } | ||
264 | |||
265 | dialog_setup_hdd_format() | ||
266 | { | ||
267 | dialog \ | ||
268 | --backtitle "${TITLE}" \ | ||
269 | --infobox "Erstelle Datei-Systeme ..." 3 70 | ||
270 | } | ||
271 | |||
272 | dialog_install_settings() | ||
273 | { | ||
274 | dialog \ | ||
275 | --backtitle "${TITLE}" \ | ||
276 | --infobox "Speichere System-Einstellungen ..." 3 70 | ||
277 | } | ||
278 | |||
279 | dialog_install_system_image() | ||
280 | { | ||
281 | dialog \ | ||
282 | --backtitle "${TITLE}" \ | ||
283 | --gauge "Kopiere System-Image ..." 6 80 | ||
284 | } | ||
285 | |||
286 | niro | 1294 | dialog_install_initrd() |
287 | { | ||
288 | dialog \ | ||
289 | --backtitle "${TITLE}" \ | ||
290 | --infobox "Erstelle Initrd ..." 3 70 | ||
291 | } | ||
292 | |||
293 | niro | 1275 | dialog_install_meter() |
294 | { | ||
295 | while [[ ${CURRENTLINE} != ${TOTALLINES} ]] | ||
296 | do | ||
297 | CURRENTLINE=$(grep -c . /tmp/install.log) | ||
298 | PERCENT=$(( ${CURRENTLINE} * 100 / ${TOTALLINES})) | ||
299 | niro | 1294 | echo "${PERCENT}" |
300 | niro | 1275 | sleep 1 |
301 | done | ||
302 | rm -f /tmp/install.log | ||
303 | return 0 | ||
304 | } | ||
305 | |||
306 | dialog_install_bootsector() | ||
307 | { | ||
308 | dialog \ | ||
309 | --backtitle "${TITLE}" \ | ||
310 | --infobox "Schreibe den Bootsektor ..." 3 70 | ||
311 | } | ||
312 | |||
313 | dialog_install_successful() | ||
314 | { | ||
315 | dialog \ | ||
316 | --backtitle "${TITLE}" \ | ||
317 | --colors \ | ||
318 | --msgbox "Die Installation war \Z2erfolgreich\Zn." 5 81 | ||
319 | } | ||
320 | |||
321 | dialog_install_failure() | ||
322 | { | ||
323 | dialog \ | ||
324 | --backtitle "${TITLE}" \ | ||
325 | --colors \ | ||
326 | --msgbox "Die Installation ist \Z1Fehlgeschlagen\Zn.\n\n\ | ||
327 | Fehler bei ${ERROR}, RetVal: ${RETVAL} \ | ||
328 | " 10 81 | ||
329 | } | ||
330 | |||
331 | dialog_main() | ||
332 | { | ||
333 | niro | 1294 | local method=0 |
334 | local retval | ||
335 | niro | 1275 | |
336 | niro | 1294 | while [[ ${method} -le 2 ]] |
337 | niro | 1275 | do |
338 | niro | 1294 | method=$(dialog \ |
339 | niro | 1275 | --backtitle "${TITLE}" \ |
340 | --no-cancel \ | ||
341 | --ok-label "Weiter" \ | ||
342 | --stdout \ | ||
343 | --menu "Konfiguration" 14 70 5 \ | ||
344 | niro | 1294 | "1" "mCore installieren" \ |
345 | niro | 1275 | "2" "Uebersicht gefundener Laufwerke" \ |
346 | "3" "Beenden und neustarten" \ | ||
347 | "4" "Beenden und eine Shell starten") | ||
348 | niro | 1294 | retval=$? |
349 | [[ ${retval} -eq 1 ]] && exit 1 | ||
350 | if [[ ${retval} -eq 0 ]] | ||
351 | niro | 1275 | then |
352 | niro | 1294 | case ${method} in |
353 | niro | 1275 | "1") dialog_setup_system_menu ;; |
354 | "2") dialog_hardware_detection ;; | ||
355 | "3") install_do_reboot ;; | ||
356 | niro | 1294 | "4") clear;/bin/bash --login -i ;; |
357 | niro | 1275 | esac |
358 | fi | ||
359 | done | ||
360 | } | ||
361 | |||
362 | ################################################# | ||
363 | # Install Komandos # | ||
364 | ################################################# | ||
365 | run_hardware_detection() | ||
366 | { | ||
367 | # check for special devices/clients: | ||
368 | niro | 1294 | # 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 | niro | 1275 | local removable=0 |
371 | if [[ ! -z $(lspci -v | grep -i zotac) ]] | ||
372 | then | ||
373 | for i in /sys/block/[hs]d*/removable | ||
374 | do | ||
375 | if [[ $(< ${i}) = 1 ]] | ||
376 | then | ||
377 | removable=1 | ||
378 | fi | ||
379 | done | ||
380 | |||
381 | export KERNELOPTS="${KERNELOPTS} rootdelay=8" | ||
382 | export SPECIALDEVICE="zotac" | ||
383 | fi | ||
384 | } | ||
385 | |||
386 | niro | 1294 | run_hardware_detection_disks() |
387 | { | ||
388 | niro | 1606 | local bootdev |
389 | |||
390 | niro | 1294 | # all disks but exclude ramdisks |
391 | export ALL_DISKS=$(get_hwinfo disk | sed '/\/dev\/ram[0-9].*/d') | ||
392 | niro | 1606 | # remove the boot device from ALL_DISKS if it was an usbstick |
393 | if [[ $(grep '[[:space:]]/mnt/cdrom[[:space:]]' /proc/mounts | cut -d' ' -f3) != iso9660 ]] | ||
394 | then | ||
395 | bootdev="$(grep '[[:space:]]/mnt/cdrom[[:space:]]' /proc/mounts | cut -d' ' -f1 | sed 's:[0-9]::g')" | ||
396 | export ALL_DISKS=$(echo "${ALL_DISKS}" | grep -v "${bootdev}") | ||
397 | fi | ||
398 | niro | 1294 | export ALL_CDROMS="$(get_hwinfo cdrom)" |
399 | } | ||
400 | |||
401 | niro | 1275 | setup_hdd_partitions_auto() |
402 | { | ||
403 | ROOTHDD="${HDD}1" | ||
404 | |||
405 | ## delete disk | ||
406 | niro | 1294 | dd if=/dev/zero of="${HDD}" count=1 &> /dev/null || die |
407 | niro | 1275 | |
408 | ## setup one bootable partition | ||
409 | #1. n= new disk | ||
410 | #2. p= primary disk | ||
411 | #3. 1= first partition | ||
412 | #4. ''= default sector start | ||
413 | #5. ''= defaul sector end | ||
414 | #6. a= bootable flag | ||
415 | #7. 1= boot flag for partition 1 | ||
416 | #8. w= write/quit | ||
417 | niro | 1294 | fdisk "${HDD}" &> /dev/null << EOF |
418 | niro | 1275 | n |
419 | p | ||
420 | 1 | ||
421 | |||
422 | |||
423 | a | ||
424 | 1 | ||
425 | w | ||
426 | EOF | ||
427 | } | ||
428 | |||
429 | setup_hdd_partitions_manuell() | ||
430 | { | ||
431 | ROOTHDD="${HDD}1" | ||
432 | niro | 1294 | cfdisk "${HDD}" || die |
433 | niro | 1275 | } |
434 | |||
435 | setup_hdd_format() | ||
436 | { | ||
437 | niro | 1294 | # defaults to ext3 |
438 | [[ -z ${FORMAT_FILESYSTEM} ]] && FORMAT_FILESYSTEM="ext3" | ||
439 | niro | 1275 | |
440 | niro | 1294 | mkfs."${FORMAT_FILESYSTEM}" -q "${ROOTHDD}" || die |
441 | niro | 1275 | } |
442 | |||
443 | install_mount_rootfs() | ||
444 | { | ||
445 | niro | 1294 | mount "${ROOTHDD}" "${INSTALL_ROOT}" || die |
446 | install -d ${INSTALL_ROOT}/boot || die | ||
447 | cd ${INSTALL_ROOT} || die | ||
448 | niro | 1275 | } |
449 | |||
450 | install_system_image() | ||
451 | { | ||
452 | niro | 1294 | tar xvjpf ${CDPATH}/system/${CDIMAGENAME} -C ${INSTALL_ROOT} |
453 | niro | 1275 | } |
454 | |||
455 | niro | 1294 | install_bootsector() |
456 | niro | 1275 | { |
457 | niro | 1294 | local uuid |
458 | local initrd | ||
459 | local kernelversion | ||
460 | local grubtitle | ||
461 | local chroot | ||
462 | local grubdisk | ||
463 | local CONFIG | ||
464 | niro | 1275 | |
465 | niro | 1294 | # setup a proper boot device |
466 | if [[ -z ${BOOTHDD} ]] | ||
467 | niro | 1275 | then |
468 | niro | 1294 | grubdisk="${ROOTHDD}" |
469 | else | ||
470 | grubdisk="${BOOTHDD}" | ||
471 | niro | 1275 | fi |
472 | |||
473 | niro | 1294 | # first of all, create a device.map |
474 | create_device_map | ||
475 | niro | 1275 | |
476 | niro | 1294 | # get kernelnames |
477 | initrd=/boot/$(readlink ${INSTALL_ROOT}/boot/initrd) | ||
478 | kernelversion=$(readlink ${INSTALL_ROOT}/boot/vmlinuz | sed "s:kernel-::g") | ||
479 | |||
480 | # for mcore only | ||
481 | if [ -f ${INSTALL_ROOT}/etc/mcore_version ] | ||
482 | niro | 1275 | then |
483 | niro | 1294 | grubtitle="mCore-$(< ${INSTALL_ROOT}/etc/mcore_version) (${kernelversion})" |
484 | niro | 1275 | else |
485 | niro | 1294 | grubtitle="mCore (${kernelversion})" |
486 | niro | 1275 | fi |
487 | |||
488 | niro | 1294 | # uuid support |
489 | uuid=$(get_uuid "${ROOTHDD}") | ||
490 | niro | 1275 | |
491 | niro | 1294 | CONFIG="${INSTALL_ROOT}/boot/grub/grub.conf" |
492 | clearconfig | ||
493 | addconfig 'default 0' | ||
494 | addconfig 'timeout 3' | ||
495 | if [[ -f ${INSTALL_ROOT}/boot/grub/splash.xpm.gz ]] | ||
496 | niro | 1275 | then |
497 | niro | 1294 | addconfig "splashimage $(convert_device ${grubdisk})/boot/grub/splash.xpm.gz" |
498 | niro | 1275 | fi |
499 | niro | 1294 | # using current root password |
500 | addconfig "password --md5 $(cat ${INSTALL_ROOT}/etc/shadow | grep root | cut -d: -f2)" | ||
501 | addconfig | ||
502 | addconfig '# normal boot' | ||
503 | addconfig "title ${grubtitle}" | ||
504 | addconfig "root $(convert_device ${grubdisk})" | ||
505 | addconfig "kernel /boot/kernel-${kernelversion} root=${uuid} ${KERNELOPTS}" | ||
506 | addconfig "initrd /boot/${initrd}" | ||
507 | niro | 1275 | |
508 | niro | 1294 | [[ ! -z ${INSTALL_ROOT} ]] && chroot=chrooted |
509 | |||
510 | # update grub | ||
511 | ${chroot} grub --batch --no-floppy &> /dev/null << EOF | ||
512 | root $(convert_device ${grubdisk}) | ||
513 | setup $(convert_device ${grubdisk} | sed "s:,[0-9]::") | ||
514 | niro | 1275 | quit |
515 | EOF | ||
516 | |||
517 | niro | 1294 | return 0 |
518 | niro | 1275 | } |
519 | |||
520 | niro | 1294 | create_device_map() |
521 | niro | 1275 | { |
522 | niro | 1294 | local chroot |
523 | |||
524 | [[ ! -z ${INSTALL_ROOT} ]] && chroot=chrooted | ||
525 | |||
526 | # create device.map | ||
527 | ${chroot} grub --batch --no-floppy --no-config-file --device-map=/boot/grub/device.map </dev/null &> /dev/null | ||
528 | niro | 1275 | } |
529 | |||
530 | niro | 1294 | convert_device() |
531 | niro | 1275 | { |
532 | niro | 1294 | local device="$1" |
533 | local root_part= | ||
534 | niro | 1275 | |
535 | niro | 1294 | # extract device type (block) and major number for root drive |
536 | local major_minor=$(ls -Ll ${device} | awk '{if ($6 < 64) printf("%c%d0", $1, $5); else printf("%c%d1", $1, $5)}') | ||
537 | niro | 1275 | |
538 | niro | 1294 | # find the matching BIOS device |
539 | for bios_drive in $(grep -v '^#' ${INSTALL_ROOT}/boot/grub/device.map | awk '{print $2}') | ||
540 | do | ||
541 | 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)}') | ||
542 | niro | 1275 | |
543 | niro | 1294 | if [[ ${major_minor} = ${bios_major_minor} ]] |
544 | niro | 1275 | then |
545 | niro | 1294 | # we found it |
546 | root_drive=$(grep ${bios_drive} ${INSTALL_ROOT}/boot/grub/device.map | awk '{print $1}') | ||
547 | root_part=$(ls -Ll ${device} | awk '{print $6}') | ||
548 | root_part=$(( ${root_part} % 16 - 1 )) | ||
549 | break | ||
550 | niro | 1275 | fi |
551 | niro | 1294 | done |
552 | niro | 1275 | |
553 | niro | 1294 | drive=$(echo ${root_drive} | sed "s:)$:,${root_part}):") |
554 | echo ${drive} | ||
555 | niro | 1275 | } |
556 | |||
557 | niro | 1294 | install_initrd() |
558 | niro | 1275 | { |
559 | niro | 1294 | local initrd |
560 | local kernelversion | ||
561 | niro | 1275 | |
562 | niro | 1294 | initrd=/boot/$(readlink ${INSTALL_ROOT}/boot/initrd) |
563 | kernelversion=$(readlink ${INSTALL_ROOT}/boot/vmlinuz | sed "s:kernel-::g") | ||
564 | niro | 1275 | |
565 | niro | 1294 | create_initrd --initrd "${initrd}" --kernelversion "${kernelversion}" &> /dev/null |
566 | niro | 1275 | } |
567 | |||
568 | install_system_settings() | ||
569 | { | ||
570 | niro | 1294 | local CONFIG |
571 | local uuid | ||
572 | |||
573 | niro | 1275 | # schreibe fstab |
574 | niro | 1294 | uuid=$(get_uuid "${ROOTHDD}") |
575 | CONFIG="${INSTALL_ROOT}/etc/fstab" | ||
576 | clearconfig | ||
577 | addconfig -e "UUID=${uuid}\t/\text3\tnoatime\t0 0" | ||
578 | addconfig -e "proc\t/proc\tproc\tdefaults\t0 0" | ||
579 | addconfig -e "shm\t/dev/shm\ttmpfs\tdefaults\t0 0" | ||
580 | niro | 1275 | |
581 | # install network config skeleton | ||
582 | niro | 1294 | CONFIG="${INSTALL_ROOT}/etc/conf.d/net.eth0" |
583 | clearconfig | ||
584 | addconfig 'ONBOOT="yes"' | ||
585 | addconfig 'NETWORKING="dhcp"' | ||
586 | niro | 1275 | } |
587 | |||
588 | install_umount_rootfs() | ||
589 | { | ||
590 | cd / | ||
591 | niro | 1294 | umount ${INSTALL_ROOT} || die |
592 | niro | 1275 | } |
593 | |||
594 | install_do_reboot() | ||
595 | { | ||
596 | reboot | ||
597 | } | ||
598 | |||
599 | ################################################# | ||
600 | # Install Ablauf Scripte # | ||
601 | ################################################# | ||
602 | |||
603 | niro | 1294 | addconfig() |
604 | { | ||
605 | local opts | ||
606 | |||
607 | if [[ -z ${CONFIG} ]] | ||
608 | then | ||
609 | echo "You must define \$CONFIG varibale first!" | ||
610 | return 1 | ||
611 | fi | ||
612 | |||
613 | if [[ ! -d $(dirname ${CONFIG}) ]] | ||
614 | then | ||
615 | install -d $(dirname ${CONFIG}) | ||
616 | fi | ||
617 | |||
618 | # check for opts | ||
619 | case $1 in | ||
620 | -n) shift; opts=" -n" ;; | ||
621 | -e) shift; opts=" -e" ;; | ||
622 | esac | ||
623 | |||
624 | echo ${opts} "$@" >> ${CONFIG} | ||
625 | } | ||
626 | |||
627 | clearconfig() | ||
628 | { | ||
629 | if [[ -z ${CONFIG} ]] | ||
630 | then | ||
631 | echo "You must define \$CONFIG varibale first!" | ||
632 | return 1 | ||
633 | fi | ||
634 | |||
635 | if [[ ! -d $(dirname ${CONFIG}) ]] | ||
636 | then | ||
637 | install -d $(dirname ${CONFIG}) | ||
638 | fi | ||
639 | : > ${CONFIG} | ||
640 | } | ||
641 | |||
642 | niro | 1275 | run_install_normal() |
643 | { | ||
644 | dialog_hardware_detection | ||
645 | |||
646 | dialog_setup_hdd_partitions_manuell | ||
647 | dialog_setup_hdd_format | ||
648 | setup_hdd_format > /dev/null | ||
649 | install_mount_rootfs | ||
650 | (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image | ||
651 | |||
652 | dialog_install_bootsector | ||
653 | niro | 1294 | install_bootsector |
654 | niro | 1275 | |
655 | dialog_install_settings | ||
656 | sleep 1 | ||
657 | install_system_settings | ||
658 | niro | 1294 | dialog_install_initrd |
659 | install_initrd | ||
660 | niro | 1275 | install_umount_rootfs |
661 | dialog_install_successful | ||
662 | } | ||
663 | |||
664 | run_install_auto() | ||
665 | { | ||
666 | dialog_hardware_detection | ||
667 | |||
668 | dialog_setup_hdd_partitions_auto | ||
669 | dialog_setup_hdd_format | ||
670 | niro | 1294 | setup_hdd_format > /dev/null |
671 | install_mount_rootfs | ||
672 | niro | 1275 | (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image |
673 | |||
674 | dialog_install_bootsector | ||
675 | niro | 1294 | install_bootsector |
676 | niro | 1275 | |
677 | dialog_install_settings | ||
678 | sleep 1 | ||
679 | niro | 1294 | install_system_settings |
680 | dialog_install_initrd | ||
681 | install_initrd | ||
682 | install_umount_rootfs | ||
683 | niro | 1275 | dialog_install_successful |
684 | } | ||
685 | |||
686 | dialog_main | ||
687 | |||
688 | exit 0 |