--- alx-src/trunk/alxinstall-ng/bin/alxinstall-ng.sh.in 2011/09/28 14:54:49 3260 +++ alx-src/trunk/alxinstall-ng/bin/alxinstall-ng.sh.in 2015/07/23 08:54:42 6820 @@ -1,33 +1,25 @@ #!/bin/sh -# -# $Header: /home/cvsd/alx-cvs/alx-src/alxinstall-ng/bin/alxinstall-ng.sh,v 1.15 2008-06-28 00:37:45 niro Exp $ -# -# AutoSta_LX Installation Script -# -# Niels Rogalla -# -# -# -# Install Navigation Gui -# +# $Id$ -#images: (get ${CDIMAGENAME}) +# ignore environment! +LC_ALL=C + +MLIBDIR="/usr/lib/alxinstall-ng" + +# images: (get ${CDIMAGENAME}) source /mnt/cdrom/system/images.conf -#Includes -source /usr/lib/alxinstall-ng/functions/findhdd.sh > /dev/null -### bugfix ############################### -cdromdev="$(echo ${cdromdev} | sed 's/ //')" -######################################## +# includes +source ${MLIBDIR}/functions/hwdetection.sh ### System/Config Version -VERSION="%VERSIONTAG%" +VERSION="@@VERSION@@" TITLE="alxinstall-ng - ${VERSION}" CDPATH="/mnt/cdrom" INSTALLPATH="/mnt/magellan" -### WICHTIG: anzahl lines in der autosta_lx.tar.gz -1 +### linecount of system.tar.gz -1 ! CURRENTLINE=0 #TOTALLINES=11072 # -> now in images.conf @@ -37,18 +29,20 @@ # grub options GRUBLEGACYOPTS="" GRUB2OPTS="" +GRUB2GFXPAYLOAD="1024x768x16,1024x768" # fdisk options FDISKPARTIONBELOW256MB=0 # default specialdevices SPECIALDEVICE="" +FORMFACTOR="desktop" # target filesystem FORMAT_FILESYSTEM="ext4" ################################################# -# DIALOG BOXEN # +# DIALOG BOXES # ################################################# die() @@ -93,7 +87,7 @@ Bitte ${SHDD}1 als \Z3bootable\Zn markieren." 12 81 } -dialog_setup_hdd_info_flash() +dialog_setup_hdd_info_simple() { local SHDD="$(echo $HDD | sed 's/\/dev\///')" @@ -143,8 +137,8 @@ then case "${i}" in "1") run_install_auto ;; - "2") run_install_normal ;; - "3") run_install_flash ;; + "2") run_install_normal ;; + "3") run_install_simple ;; "") dialog_setup_system_menu;; esac fi @@ -162,7 +156,7 @@ hwtmp="/tmp/hwtmp.sh" fi - [[ ! -z ${installdevs} ]] && installdevs="" + run_hardware_detection_disks echo "dialog \\" > ${hwtmp} echo "--backtitle \"${TITLE}\" \\" >> ${hwtmp} @@ -172,47 +166,39 @@ echo "--msgbox \"Gefundene Hardware:\n\n \\" >> ${hwtmp} echo " Festplatten:\n \\" >> ${hwtmp} - if [[ ! -z ${scsidisks} ]] + if [[ ! -z ${ALL_DISKS} ]] then - for i in ${scsidisks} + for i in ${ALL_DISKS} do - if [[ ${i} != ${cdromdev} ]] - then - echo " \\Z7SCSI: \\Z3${i}\\Zn\n \\" >> ${hwtmp} - installdevs="${installdevs} ${i}" - fi + echo " \\Z3${i}\\Zn\n \\" >> ${hwtmp} done fi - if [[ ! -z ${idedisks} ]] + if [[ ! -z ${ALL_CDROMS} ]] then - for i in ${idedisks} + echo " \n \\" >> ${hwtmp} + echo " CDROM Laufwerke:\n \\" >> ${hwtmp} + for i in ${ALL_CDROMS} do - if [[ ${i} != ${cdromdev} ]] - then - echo " \\Z7IDE: \\Z3${i}\\Zn\n \\" >> ${hwtmp} - installdevs="${installdevs} ${i}" - fi + echo " \\Z3${i}\\Zn\n \\" >> ${hwtmp} done fi - if [[ ! -z ${cdromdev} ]] - then - echo " \n \\" >> ${hwtmp} - echo " \\Z7andere Laufwerke:\n \\" >> ${hwtmp} - echo " CDROM: \\Z3${cdromdev}\\Zn\n \\" >> ${hwtmp} - fi - # other devices run_hardware_detection case "${SPECIALDEVICE}" in - zotac) echo " \n\n\n \\Z2Zotac Device erkannt!\\Zn \\" >> ${hwtmp} ;; - rangee) echo " \n\n\n \\Z2Rangee Device erkannt!\\Zn \\" >> ${hwtmp} ;; - maxdata) echo " \n\n\n \\Z2Maxdata Device erkannt!\\Zn \\" >> ${hwtmp} ;; - *) echo " \n\n\n \\ZnStandard Device erkannt!\\Zn \\" >> ${hwtmp} ;; + zotac*) echo " \n \\Z2Zotac Device erkannt.\\Zn \\" >> ${hwtmp} ;; + rangee) echo " \n \\Z2Rangee Device erkannt.\\Zn \\" >> ${hwtmp} ;; + maxdata) echo " \n \\Z2Maxdata Device erkannt.\\Zn \\" >> ${hwtmp} ;; + i845) echo " \n \\Z2Intel i845 Device erkannt.\\Zn \\" >> ${hwtmp} ;; + *) echo " \n \\ZnStandard Device erkannt.\\Zn \\" >> ${hwtmp} ;; esac + if [[ ${FORMFACTOR} = laptop ]] + then + echo " \n \\ZnFormfactor Laptop, Powersave Modus 'ondemand' wird aktiviert.\\Zn \\" >> ${hwtmp} + fi - echo " \" 13 70" >> ${hwtmp} + echo " \" 14 70" >> ${hwtmp} chmod a+x ${hwtmp} ${hwtmp} @@ -227,7 +213,7 @@ { local i - if [[ -z ${installdevs} ]] + if [[ -z ${ALL_DISKS} ]] then dialog \ --backtitle "${TITLE}" \ @@ -243,7 +229,7 @@ echo "--stdout \\" >> /tmp/hddtmp.sh echo "--menu \"Installations Laufwerk auswaehlen:\" 10 70 3 \\" >> /tmp/hddtmp.sh - for i in ${installdevs} + for i in ${ALL_DISKS} do echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh done @@ -261,11 +247,11 @@ fi } -dialog_setup_hdd_partitions_manuell_flash() +dialog_setup_hdd_partitions_manuell_simple() { local i - if [[ -z ${installdevs} ]] + if [[ -z ${ALL_DISKS} ]] then dialog \ --backtitle "${TITLE}" \ @@ -281,7 +267,7 @@ echo "--stdout \\" >> /tmp/hddtmp.sh echo "--menu \"Installations Laufwerk auswaehlen:\" 10 70 3 \\" >> /tmp/hddtmp.sh - for i in ${installdevs} + for i in ${ALL_DISKS} do echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh done @@ -293,8 +279,8 @@ [[ ${RES} -eq 1 ]] && return 1 if [[ ${RES} -eq 0 ]] then - dialog_setup_hdd_info_flash - setup_hdd_partitions_manuell_flash + dialog_setup_hdd_info_simple + setup_hdd_partitions_manuell_simple fi fi } @@ -303,7 +289,7 @@ { local i - if [[ -z ${installdevs} ]] + if [[ -z ${ALL_DISKS} ]] then dialog \ --backtitle "${TITLE}" \ @@ -319,7 +305,7 @@ echo "--stdout \\" >> /tmp/hddtmp.sh echo "--menu \"Installations Laufwerk auswaehlen:\" 10 70 3 \\" >> /tmp/hddtmp.sh - for i in ${installdevs} + for i in ${ALL_DISKS} do echo "\"${i}\" \"\" \\" >> /tmp/hddtmp.sh done @@ -426,7 +412,7 @@ if [[ ${RES} -eq 0 ]] then case ${METHOD} in - "1") dialog_setup_system_menu ;; + "1") dialog_setup_system_menu ;; "2") dialog_hardware_detection ;; "3") install_do_reboot ;; "4") /bin/bash --login -i ;; @@ -436,13 +422,13 @@ } ################################################# -# Install Komandos # +# Install Commands # ################################################# run_hardware_detection() { local hwinfo - hwinfo="$(hwinfo --bios --storage --pci)" + hwinfo="$(hwinfo --bios --storage --pci --gfxcard --sys)" # check for special devices/clients: # if zotac a zotac and the disk is a removeable device, then add rootdelay to kernelcmd @@ -459,7 +445,13 @@ # only add this for grub legacy, grub2 detect these settings on its own export GRUBLEGACYOPTS="rootdelay=8" - export SPECIALDEVICE="zotac" + # there are two zotac types in the wild, nvidia based gfx and intel + if [[ ! -z $(echo "${hwinfo}" | grep -i nouveau) ]] + then + export SPECIALDEVICE="zotac_nvidia" + else + export SPECIALDEVICE="zotac_intel" + fi fi # check for special devices/clients: @@ -479,6 +471,47 @@ export SPECIALDEVICE="maxdata" export GRUBLEGACYOPTS="" fi + + # check for i845 Chipsets and disable KMS and use 915 drm driver + if [[ ! -z $(echo "${hwinfo}" | grep -i i845) ]] + then + export SPECIALDEVICE="i845" + # unset default video=1024x768 opt or the drm driver breaks + export KERNELOPTS="quiet" + export GRUBLEGACYOPTS="" + # enable full kms support + export GRUB2GFXPAYLOAD="keep" + fi + + # check for radeon gfxcards + if [[ ! -z $(echo "${hwinfo}" | grep -i radeon) ]] + then + # enable full kms support + export GRUB2GFXPAYLOAD="keep" + fi + + # check for special devices/clients: + # check for laptops and activate cpufreq scaling + if [[ $(echo "${hwinfo}" | grep 'Formfactor:' | sed 's:.*Formfactor\:\ \"\(.*\)\":\1:') = laptop ]] + then + export FORMFACTOR="laptop" + export KERNELOPTS="${KERNELOPTS} cpufreq.governor=ondemand" + fi +} + +run_hardware_detection_disks() +{ + local bootdev + + # all disks but exclude ramdisks + export ALL_DISKS=$(get_hwinfo disk | sed '/\/dev\/ram[0-9].*/d') + # remove the boot device from ALL_DISKS if it was an usbstick + if [[ $(grep '[[:space:]]/mnt/cdrom[[:space:]]' /proc/mounts | cut -d' ' -f3) != iso9660 ]] + then + bootdev="$(grep '[[:space:]]/mnt/cdrom[[:space:]]' /proc/mounts | cut -d' ' -f1 | sed 's:[0-9]::g')" + export ALL_DISKS=$(echo "${ALL_DISKS}" | grep -v "${bootdev}") + fi + export ALL_CDROMS="$(get_hwinfo cdrom)" } hdd_size_below_256mb() @@ -571,7 +604,7 @@ cfdisk ${HDD} || die } -setup_hdd_partitions_manuell_flash() +setup_hdd_partitions_manuell_simple() { ROOTHDD="${HDD}1" @@ -586,7 +619,7 @@ mke2fs -j -q ${ROOTHDD} || die } -setup_hdd_format_flash() +setup_hdd_format_simple() { mke2fs -j -q ${ROOTHDD} || die } @@ -600,7 +633,7 @@ cd ${INSTALLPATH} || die } -install_mount_rootfs_flash() +install_mount_rootfs_simple() { mount ${ROOTHDD} ${INSTALLPATH} || die install -d ${INSTALLPATH}/boot || die @@ -631,8 +664,10 @@ if [[ -f ${INSTALLPATH}/etc/conf.d/grub ]] then sed -i "s:^\(export GRUB_CMDLINE_LINUX_DEFAULT=\).*:\1\"${KERNELOPTS}\":" ${INSTALLPATH}/etc/conf.d/grub || die + sed -i "s:^\(export GRUB_GFXPAYLOAD_LINUX=\).*:\1\"${GRUB2GFXPAYLOAD}\":" ${INSTALLPATH}/etc/conf.d/grub || die else echo "export GRUB_CMDLINE_LINUX_DEFAULT=\"${KERNELOPTS}\"" > ${INSTALLPATH}/etc/conf.d/grub || die + echo "export GRUB_GFXPAYLOAD_LINUX=\"${GRUB2GFXPAYLOAD}\"" >> ${INSTALLPATH}/etc/conf.d/grub || die fi echo 'grub-mkdevicemap' > ${INSTALLPATH}/root/.installrc || die echo "LC_ALL=C grub-mkconfig -o ${grub2conf} &> /dev/null" >> ${INSTALLPATH}/root/.installrc || die @@ -702,7 +737,7 @@ echo "initrd /boot/${KRNINITRD}" >> ${grubconf} || die fi - # bootsector schreiben chrooted schreiben (lfs/magellan) + # write bootsector chrooted (lfs/magellan) cat > ${INSTALLPATH}/root/.installrc << CHROOTEOF /usr/sbin/grub --no-floppy --batch << "EOF" 1> /dev/null 2> /dev/null root (hd0,0) @@ -741,13 +776,22 @@ PATAMODS="ata_piix pata_amd pata_mpiix pata_oldpiix pata_sis pata_via" SATAMODS="sata_via sata_sis sata_nv" DRMMODS="i915 mga nouveau r128 radeon savage sis tdfx ttm via" + OTHERMODS="" case ${SPECIALDEVICE} in - zotac) FBMODS="" ;; + zotac_intel|i845) FBMODS=""; DRMMODS="i915" ;; + zotac_nvidia) FBMODS=""; DRMMODS="nouveau" ;; rangee) FBMODS="" ;; ## fallback to vesafb, viafb does not run on all CLE266 boards - maxdata) FBMODS="i810fb" ;; ## check for maxdata / i810/ i815 Chipsets and disable KMS and use i810fb frambuffer + # not working with kms enabled drivers -> segfaults + #maxdata) FBMODS="i810fb" ;; ## check for maxdata / i810/ i815 Chipsets and disable KMS and use i810fb frambuffer + maxdata) FBMODS="" ;; *) FBMODS="uvesafb" ;; esac + if [[ ${FORMFACTOR} = laptop ]] + then + OTHERMODS="acpi-cpufreq cpufreq_ondemand cpufreq_conservative cpufreq_powersave" + fi + # install an appropriate uvesafb.conf install -d ${INSTALLPATH}/etc/modprobe.d || die echo "options uvesafb mode_option=1024x768-32@60 scroll=ywrap" > ${INSTALLPATH}/etc/modprobe.d/uvesafb.conf || die @@ -756,10 +800,10 @@ echo "options viafb viafb_mode=1024x768 viafb_refresh=60" > ${INSTALLPATH}/etc/modprobe.d/viafb.conf || die # install an appropriate i810fb.conf - echo "echo i810fb xres=1024 yres=768 bpp=16 mtrr=1 hsync1=30 hsync2=62 vsync1=30 vsync2=60" > ${INSTALLPATH}/etc/modprobe.d/i810fb.conf || die + echo "options i810fb xres=1024 yres=768 bpp=16 mtrr=1 hsync1=30 hsync2=62 vsync1=30 vsync2=60" > ${INSTALLPATH}/etc/modprobe.d/i810fb.conf || die cat > ${INSTALLPATH}/root/.installrc << CHROOTEOF -echo "MODULES=\"${FORMAT_FILESYSTEM} ${DISKMODS} ${OLDATAMODS} ${PATAMODS} ${SATAMODS} ${DRMMODS} ${FBMODS}\"" > /etc/conf.d/mkinitrd +echo "MODULES=\"${FORMAT_FILESYSTEM} ${DISKMODS} ${OLDATAMODS} ${PATAMODS} ${SATAMODS} ${DRMMODS} ${FBMODS} ${OTHERMODS}\"" > /etc/conf.d/mkinitrd mkinitrd -f /boot/$(readlink /boot/initrd) $(readlink /boot/vmlinuz | sed "s:kernel-::g") > /dev/null exit 0 CHROOTEOF @@ -826,11 +870,24 @@ # install network config skeleton install -m0644 ${INSTALLPATH}/etc/alxconfig-ng/skel/net/net.eth0 ${INSTALLPATH}/etc/conf.d/ || die + + # intel framebufer quirk + if [[ -e /proc/fb ]] + then + if [[ ! -z $(grep 'inteldrmfb' /proc/fb) ]] + then + fbdev=$(grep 'inteldrmfb' /proc/fb | sed 's:\([0-9]\).*:\1:') + if [[ ${fbdev} != 0 ]] + then + sed -i "s:^\(SPLASH_DEV=\).*:\1\"/dev/fb${fbdev}\":" ${INSTALLPATH}/etc/splash/splash.conf || die + fi + fi + fi } -install_system_settings_flash() +install_system_settings_simple() { - # schreibe fstab + # write fstab if is_uuid_supported then echo -e "UUID=$(get_uuid ${ROOTHDD})\t/\t${FORMAT_FILESYSTEM}\tnoatime\t0 0" > ${INSTALLPATH}/etc/fstab || die @@ -849,7 +906,7 @@ swapoff ${SWAPHDD} || die } -install_umount_rootfs_flash() +install_umount_rootfs_simple() { cd / umount ${INSTALLPATH} || die @@ -861,7 +918,7 @@ } ################################################# -# Install Ablauf Scripte # +# Install Main Scripts # ################################################# run_install_normal() @@ -886,25 +943,25 @@ dialog_install_successful } -run_install_flash() +run_install_simple() { dialog_hardware_detection - dialog_setup_hdd_partitions_manuell_flash + dialog_setup_hdd_partitions_manuell_simple dialog_setup_hdd_format - setup_hdd_format_flash > /dev/null - install_mount_rootfs_flash + setup_hdd_format_simple > /dev/null + install_mount_rootfs_simple (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image dialog_install_settings sleep 1 - install_system_settings_flash + install_system_settings_simple install_initrd_chroot dialog_install_bootsector install_bootsector_chroot - install_umount_rootfs_flash + install_umount_rootfs_simple dialog_install_successful } @@ -914,19 +971,19 @@ dialog_setup_hdd_partitions_auto dialog_setup_hdd_format - setup_hdd_format_flash > /dev/null - install_mount_rootfs_flash + setup_hdd_format_simple > /dev/null + install_mount_rootfs_simple (install_system_image > /tmp/install.log) 2> /tmp/install_errors.log | dialog_install_meter | dialog_install_system_image dialog_install_settings sleep 1 - install_system_settings_flash + install_system_settings_simple install_initrd_chroot dialog_install_bootsector install_bootsector_chroot - install_umount_rootfs_flash + install_umount_rootfs_simple dialog_install_successful }