Annotation of /mcore-src/trunk/mcore-install/bin/mcore-install.sh
Parent Directory | Revision Log
Revision 1660 -
(hide annotations)
(download)
(as text)
Thu Mar 10 22:06:27 2011 UTC (13 years, 2 months ago) by niro
File MIME type: application/x-sh
File size: 14234 byte(s)
Thu Mar 10 22:06:27 2011 UTC (13 years, 2 months ago) by niro
File MIME type: application/x-sh
File size: 14234 byte(s)
-use ext4 as default filesystem and honor this in fstab
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 | niro | 1660 | FORMAT_FILESYSTEM="ext4" |
34 | niro | 1294 | |
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 | mkfs."${FORMAT_FILESYSTEM}" -q "${ROOTHDD}" || die |
438 | niro | 1275 | } |
439 | |||
440 | install_mount_rootfs() | ||
441 | { | ||
442 | niro | 1294 | mount "${ROOTHDD}" "${INSTALL_ROOT}" || die |
443 | install -d ${INSTALL_ROOT}/boot || die | ||
444 | cd ${INSTALL_ROOT} || die | ||
445 | niro | 1275 | } |
446 | |||
447 | install_system_image() | ||
448 | { | ||
449 | niro | 1294 | tar xvjpf ${CDPATH}/system/${CDIMAGENAME} -C ${INSTALL_ROOT} |
450 | niro | 1275 | } |
451 | |||
452 | niro | 1294 | install_bootsector() |
453 | niro | 1275 | { |
454 | niro | 1294 | local uuid |
455 | local initrd | ||
456 | local kernelversion | ||
457 | local grubtitle | ||
458 | local chroot | ||
459 | local grubdisk | ||
460 | local CONFIG | ||
461 | niro | 1275 | |
462 | niro | 1294 | # setup a proper boot device |
463 | if [[ -z ${BOOTHDD} ]] | ||
464 | niro | 1275 | then |
465 | niro | 1294 | grubdisk="${ROOTHDD}" |
466 | else | ||
467 | grubdisk="${BOOTHDD}" | ||
468 | niro | 1275 | fi |
469 | |||
470 | niro | 1294 | # first of all, create a device.map |
471 | create_device_map | ||
472 | niro | 1275 | |
473 | niro | 1294 | # get kernelnames |
474 | initrd=/boot/$(readlink ${INSTALL_ROOT}/boot/initrd) | ||
475 | kernelversion=$(readlink ${INSTALL_ROOT}/boot/vmlinuz | sed "s:kernel-::g") | ||
476 | |||
477 | # for mcore only | ||
478 | if [ -f ${INSTALL_ROOT}/etc/mcore_version ] | ||
479 | niro | 1275 | then |
480 | niro | 1294 | grubtitle="mCore-$(< ${INSTALL_ROOT}/etc/mcore_version) (${kernelversion})" |
481 | niro | 1275 | else |
482 | niro | 1294 | grubtitle="mCore (${kernelversion})" |
483 | niro | 1275 | fi |
484 | |||
485 | niro | 1294 | # uuid support |
486 | uuid=$(get_uuid "${ROOTHDD}") | ||
487 | niro | 1275 | |
488 | niro | 1294 | CONFIG="${INSTALL_ROOT}/boot/grub/grub.conf" |
489 | clearconfig | ||
490 | addconfig 'default 0' | ||
491 | addconfig 'timeout 3' | ||
492 | if [[ -f ${INSTALL_ROOT}/boot/grub/splash.xpm.gz ]] | ||
493 | niro | 1275 | then |
494 | niro | 1294 | addconfig "splashimage $(convert_device ${grubdisk})/boot/grub/splash.xpm.gz" |
495 | niro | 1275 | fi |
496 | niro | 1294 | # using current root password |
497 | addconfig "password --md5 $(cat ${INSTALL_ROOT}/etc/shadow | grep root | cut -d: -f2)" | ||
498 | addconfig | ||
499 | addconfig '# normal boot' | ||
500 | addconfig "title ${grubtitle}" | ||
501 | addconfig "root $(convert_device ${grubdisk})" | ||
502 | addconfig "kernel /boot/kernel-${kernelversion} root=${uuid} ${KERNELOPTS}" | ||
503 | addconfig "initrd /boot/${initrd}" | ||
504 | niro | 1275 | |
505 | niro | 1294 | [[ ! -z ${INSTALL_ROOT} ]] && chroot=chrooted |
506 | |||
507 | # update grub | ||
508 | ${chroot} grub --batch --no-floppy &> /dev/null << EOF | ||
509 | root $(convert_device ${grubdisk}) | ||
510 | setup $(convert_device ${grubdisk} | sed "s:,[0-9]::") | ||
511 | niro | 1275 | quit |
512 | EOF | ||
513 | |||
514 | niro | 1294 | return 0 |
515 | niro | 1275 | } |
516 | |||
517 | niro | 1294 | create_device_map() |
518 | niro | 1275 | { |
519 | niro | 1294 | local chroot |
520 | |||
521 | [[ ! -z ${INSTALL_ROOT} ]] && chroot=chrooted | ||
522 | |||
523 | # create device.map | ||
524 | ${chroot} grub --batch --no-floppy --no-config-file --device-map=/boot/grub/device.map </dev/null &> /dev/null | ||
525 | niro | 1275 | } |
526 | |||
527 | niro | 1294 | convert_device() |
528 | niro | 1275 | { |
529 | niro | 1294 | local device="$1" |
530 | local root_part= | ||
531 | niro | 1275 | |
532 | niro | 1294 | # extract device type (block) and major number for root drive |
533 | local major_minor=$(ls -Ll ${device} | awk '{if ($6 < 64) printf("%c%d0", $1, $5); else printf("%c%d1", $1, $5)}') | ||
534 | niro | 1275 | |
535 | niro | 1294 | # find the matching BIOS device |
536 | for bios_drive in $(grep -v '^#' ${INSTALL_ROOT}/boot/grub/device.map | awk '{print $2}') | ||
537 | do | ||
538 | 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)}') | ||
539 | niro | 1275 | |
540 | niro | 1294 | if [[ ${major_minor} = ${bios_major_minor} ]] |
541 | niro | 1275 | then |
542 | niro | 1294 | # we found it |
543 | root_drive=$(grep ${bios_drive} ${INSTALL_ROOT}/boot/grub/device.map | awk '{print $1}') | ||
544 | root_part=$(ls -Ll ${device} | awk '{print $6}') | ||
545 | root_part=$(( ${root_part} % 16 - 1 )) | ||
546 | break | ||
547 | niro | 1275 | fi |
548 | niro | 1294 | done |
549 | niro | 1275 | |
550 | niro | 1294 | drive=$(echo ${root_drive} | sed "s:)$:,${root_part}):") |
551 | echo ${drive} | ||
552 | niro | 1275 | } |
553 | |||
554 | niro | 1294 | install_initrd() |
555 | niro | 1275 | { |
556 | niro | 1294 | local initrd |
557 | local kernelversion | ||
558 | niro | 1275 | |
559 | niro | 1294 | initrd=/boot/$(readlink ${INSTALL_ROOT}/boot/initrd) |
560 | kernelversion=$(readlink ${INSTALL_ROOT}/boot/vmlinuz | sed "s:kernel-::g") | ||
561 | niro | 1275 | |
562 | niro | 1294 | create_initrd --initrd "${initrd}" --kernelversion "${kernelversion}" &> /dev/null |
563 | niro | 1275 | } |
564 | |||
565 | install_system_settings() | ||
566 | { | ||
567 | niro | 1294 | local CONFIG |
568 | local uuid | ||
569 | |||
570 | niro | 1275 | # schreibe fstab |
571 | niro | 1294 | uuid=$(get_uuid "${ROOTHDD}") |
572 | CONFIG="${INSTALL_ROOT}/etc/fstab" | ||
573 | clearconfig | ||
574 | niro | 1660 | addconfig -e "UUID=${uuid}\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" |
575 | niro | 1294 | addconfig -e "proc\t/proc\tproc\tdefaults\t0 0" |
576 | addconfig -e "shm\t/dev/shm\ttmpfs\tdefaults\t0 0" | ||
577 | niro | 1275 | |
578 | # install network config skeleton | ||
579 | niro | 1294 | CONFIG="${INSTALL_ROOT}/etc/conf.d/net.eth0" |
580 | clearconfig | ||
581 | addconfig 'ONBOOT="yes"' | ||
582 | addconfig 'NETWORKING="dhcp"' | ||
583 | niro | 1275 | } |
584 | |||
585 | install_umount_rootfs() | ||
586 | { | ||
587 | cd / | ||
588 | niro | 1294 | umount ${INSTALL_ROOT} || die |
589 | niro | 1275 | } |
590 | |||
591 | install_do_reboot() | ||
592 | { | ||
593 | reboot | ||
594 | } | ||
595 | |||
596 | ################################################# | ||
597 | # Install Ablauf Scripte # | ||
598 | ################################################# | ||
599 | |||
600 | niro | 1294 | addconfig() |
601 | { | ||
602 | local opts | ||
603 | |||
604 | if [[ -z ${CONFIG} ]] | ||
605 | then | ||
606 | echo "You must define \$CONFIG varibale first!" | ||
607 | return 1 | ||
608 | fi | ||
609 | |||
610 | if [[ ! -d $(dirname ${CONFIG}) ]] | ||
611 | then | ||
612 | install -d $(dirname ${CONFIG}) | ||
613 | fi | ||
614 | |||
615 | # check for opts | ||
616 | case $1 in | ||
617 | -n) shift; opts=" -n" ;; | ||
618 | -e) shift; opts=" -e" ;; | ||
619 | esac | ||
620 | |||
621 | echo ${opts} "$@" >> ${CONFIG} | ||
622 | } | ||
623 | |||
624 | clearconfig() | ||
625 | { | ||
626 | if [[ -z ${CONFIG} ]] | ||
627 | then | ||
628 | echo "You must define \$CONFIG varibale first!" | ||
629 | return 1 | ||
630 | fi | ||
631 | |||
632 | if [[ ! -d $(dirname ${CONFIG}) ]] | ||
633 | then | ||
634 | install -d $(dirname ${CONFIG}) | ||
635 | fi | ||
636 | : > ${CONFIG} | ||
637 | } | ||
638 | |||
639 | niro | 1275 | run_install_normal() |
640 | { | ||
641 | dialog_hardware_detection | ||
642 | |||
643 | dialog_setup_hdd_partitions_manuell | ||
644 | dialog_setup_hdd_format | ||
645 | setup_hdd_format > /dev/null | ||
646 | install_mount_rootfs | ||
647 | (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image | ||
648 | |||
649 | dialog_install_bootsector | ||
650 | niro | 1294 | install_bootsector |
651 | niro | 1275 | |
652 | dialog_install_settings | ||
653 | sleep 1 | ||
654 | install_system_settings | ||
655 | niro | 1294 | dialog_install_initrd |
656 | install_initrd | ||
657 | niro | 1275 | install_umount_rootfs |
658 | dialog_install_successful | ||
659 | } | ||
660 | |||
661 | run_install_auto() | ||
662 | { | ||
663 | dialog_hardware_detection | ||
664 | |||
665 | dialog_setup_hdd_partitions_auto | ||
666 | dialog_setup_hdd_format | ||
667 | niro | 1294 | setup_hdd_format > /dev/null |
668 | install_mount_rootfs | ||
669 | niro | 1275 | (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image |
670 | |||
671 | dialog_install_bootsector | ||
672 | niro | 1294 | install_bootsector |
673 | niro | 1275 | |
674 | dialog_install_settings | ||
675 | sleep 1 | ||
676 | niro | 1294 | install_system_settings |
677 | dialog_install_initrd | ||
678 | install_initrd | ||
679 | install_umount_rootfs | ||
680 | niro | 1275 | dialog_install_successful |
681 | } | ||
682 | |||
683 | dialog_main | ||
684 | |||
685 | exit 0 |