#!/sbin/sh # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2010 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # postinstall script for SUNWos86r package. # # check_add_drv() checks if the module has an entry in # etc/name_to_major. If not, it simply calls add_drv with the arguments # given. If there is such an entry in name_to_major file, it adds # entries in driver_aliases driver_classes and minor_perm if necessary. # The syntax of this function is the same as add_drv. check_add_drv() { basedir=/ alias="" class="" ADD_ALIAS=0 ADD_CLASS=0 ADD_MINOR=0 OPTIND=1 IS_NET_DRIVER=0 cmd="add_drv" while getopts i:b:m:c:n opt do case $opt in i ) ADD_ALIAS=1 alias=$OPTARG cmd=$cmd" -i '$alias'" ;; m ) ADD_MINOR=1 minor=$OPTARG cmd=$cmd" -m '$minor'" ;; c) ADD_CLASS=1 class=$OPTARG cmd=$cmd" -c $class" ;; b) basedir=$OPTARG cmd=$cmd" -b $basedir" ;; n) IS_NET_DRIVER=1 ;; \?) echo "check_add_drv can not handle this option" return ;; esac done shift `/usr/bin/expr $OPTIND - 1` drvname=$1 cmd=$cmd" "$drvname drvname=`echo $drvname | /usr/bin/sed 's;.*/;;g'` /usr/bin/grep "^$drvname[ ]" $basedir/etc/name_to_major > /dev/null 2>&1 if [ $? -ne 0 ] then eval $cmd else # entry already in name_to_major, add alias, class, minorperm # if necessary if [ $ADD_ALIAS = 1 ] then for i in $alias do /usr/bin/egrep "^$drvname[ ]+$i" $basedir/etc/driver_aliases>/dev/null 2>&1 if [ $? -ne 0 ] then echo "$drvname $i" >> $basedir/etc/driver_aliases fi done fi if [ $ADD_CLASS = 1 ] then /usr/bin/egrep "^$drvname[ ]+$class( | |$)" $basedir/etc/driver_classes > /dev/null 2>&1 if [ $? -ne 0 ] then echo "$drvname\t$class" >> $basedir/etc/driver_classes fi fi if [ $ADD_MINOR = 1 ] then /usr/bin/grep "^$drvname:" $basedir/etc/minor_perm > /dev/null 2>&1 if [ $? -ne 0 ] then minorentry="$drvname:$minor" echo $minorentry >> $basedir/etc/minor_perm fi fi fi # The following clone device/dev is needed for Custom Jumpstart if [ $IS_NET_DRIVER -eq 1 ] then CLONE_DEVICE=devices/pseudo/clone@0:$drvname set `/usr/bin/grep "^clone[ ]" $basedir/etc/name_to_major` CLONE_MAJ=$2 set `/usr/bin/grep "^$drvname[ ]" $basedir/etc/name_to_major` DRIVER_MAJ=$2 mknod $basedir/$CLONE_DEVICE c $CLONE_MAJ $DRIVER_MAJ chmod 600 $basedir/$CLONE_DEVICE chgrp sys $basedir/$CLONE_DEVICE chown root $basedir/$CLONE_DEVICE ln -s ../$CLONE_DEVICE $basedir/dev/$drvname fi } # check_rem_drv() checks if the module has an entry in # etc/name_to_major. If so, it simply calls rem_drv with the arguments # given to remove the driver from the system. The syntax of this # function is the same as rem_drv. check_rem_drv() { basedir=/ OPTIND=1 cmd="rem_drv" while getopts b: opt do case $opt in b) basedir=$OPTARG cmd=$cmd" -b $basedir" ;; \?) echo "check_rem_drv can not handle this option" return ;; esac done shift `/usr/bin/expr $OPTIND - 1` drvname=$1 cmd=$cmd" "$drvname drvname=`echo $drvname | /usr/bin/sed 's;.*/;;g'` /usr/bin/grep "^$drvname[ ]" $basedir/etc/name_to_major > /dev/null 2>&1 if [ $? -eq 0 ] then eval $cmd fi } # Platform-specific drivers case "${ARCH}" in i386) check_add_drv -b "${BASEDIR}" \ -i '"pci1011,2" "pci1011,9" "pci1011,14" "pci1011,19" "pci1109,1400" "pci1109,2400" "pci10b8,2001" "pci2646,1"' \ dnet check_add_drv -b "${BASEDIR}" \ -i '"pci1022,2000" "pci103c,104c"' \ pcn check_add_drv -b "${BASEDIR}" \ -i '"pci1011,21" "pci1014,22"' \ pci_pci check_add_drv -b "${BASEDIR}" \ -c scsi \ -i '"pci1000,1" "pci1000,2" "pci1000,3" "pci1000,4" "pci1000,6" "pci1000,c" "pci1000,f" "pci1000,8f" ' \ ncrs check_add_drv -b "${BASEDIR}" \ -i '"pci8086,1029" "pci8086,1229" "pci8086,1229.8086.1" "pci8086,1229.8086.2" "pci8086,1229.8086.3" "pci8086,1229.8086.4" "pci8086,1229.8086.5" "pci8086,1229.8086.6" "pci8086,1229.8086.7" "pci8086,1229.8086.8" "pci8086,1229.8086.9" "pci8086,1229.8086.a" "pci8086,1229.8086.b" "pci8086,1229.8086.c" "pci8086,1229.8086.d" "pci8086,1229.8086.e" "pci8086,1229.8086.f" "pci8086,1229.8086.10" "pci8086,1229.8086.11" "pci8086,1229.8086.12" "pci8086,1229.8086.13" "pci8086,1229.8086.30" "pci8086,1229.8086.31" "pci8086,1229.8086.40" "pci8086,1229.8086.41" "pci8086,1229.8086.42" "pci8086,1229.8086.50" "pci8086,1229.8086.1009" "pci8086,1229.8086.100c" "pci8086,1229.8086.1012" "pci8086,1229.8086.1013" "pci8086,1229.8086.1015" "pci8086,1229.8086.1016" "pci8086,1229.8086.1017" "pci8086,1229.8086.1030" "pci8086,1229.8086.1040" "pci8086,1229.8086.1041" "pci8086,1229.8086.1042" "pci8086,1229.8086.1050" "pci8086,1229.8086.1051" "pci8086,1229.8086.1052" "pci8086,1229.8086.10f0" "pci8086,1229.8086.1229" "pci8086,1229.8086.2009" "pci8086,1229.8086.200d" "pci8086,1229.8086.200e" "pci8086,1229.8086.200f" "pci8086,1229.8086.2010" "pci8086,1229.8086.2013" "pci8086,1229.8086.2016" "pci8086,1229.8086.2017" "pci8086,1229.8086.2018" "pci8086,1229.8086.2019" "pci8086,1229.8086.2101" "pci8086,1229.8086.2102" "pci8086,1229.8086.2103" "pci8086,1229.8086.2104" "pci8086,1229.8086.2105" "pci8086,1229.8086.2106" "pci8086,1229.8086.2107" "pci8086,1229.8086.2108" "pci8086,1229.8086.2200" "pci8086,1229.8086.2201" "pci8086,1229.8086.2202" "pci8086,1229.8086.2203" "pci8086,1229.8086.2204" "pci8086,1229.8086.2205" "pci8086,1229.8086.2206" "pci8086,1229.8086.2207" "pci8086,1229.8086.2208" "pci8086,1229.8086.2402" "pci8086,1229.8086.2407" "pci8086,1229.8086.2408" "pci8086,1229.8086.2409" "pci8086,1229.8086.240f" "pci8086,1229.8086.2410" "pci8086,1229.8086.2411" "pci8086,1229.8086.2412" "pci8086,1229.8086.2413" "pci8086,1229.8086.3000" "pci8086,1229.8086.3001" "pci8086,1229.8086.3002" "pci8086,1229.8086.3006" "pci8086,1229.8086.3007" "pci8086,1229.8086.3008" "pci8086,1229.8086.3010" "pci8086,1229.8086.3011" "pci8086,1229.8086.3012" "pci8086,1229.8086.301a" "pci8086,1229.8086.3411" "pci8086,1030" "pci8086,1031" "pci8086,1032" "pci8086,1038" "pci8086,1039" "pci8086,103d" "pci8086,1050" "pci8086,1059" "pci8086,103d.8086.103d" "pci8086,1050.8086.3020" "pci8086,1050.8086.302f" "pci8086,1050.8086.3427" "pci8086,1068" "pci8086,1069" "pci8086,1092" "pci8086,1209" "pci8086,2449" "pci8086,27dc" "pci8086,2449.8086.3010" "pci8086,2449.8086.3011" "pci8086,2449.8086.3012" "pci8086,2449.8086.3013" "pci8086,2449.8086.3014" "pci8086,2449.8086.3015" "pci8086,2449.8086.3016" "pci8086,2449.8086.3017" "pci8086,2449.8086.3018" "pci8086,27dc.8086.308d"' \ iprb check_add_drv -b "${BASEDIR}" \ -i '"pci10b8,5"' \ spwr # The sd driver should be installed to the system before rcs9.sh # is called. check_add_drv -b "${BASEDIR}" \ -m '* 0640 root sys' \ -i '"scsiclass,00" "scsiclass,05"' \ sd # Call the rcs9.sh script to update necessary files in case of upgrade # for the PCI physical device pathname change from 2.4. # # Also used to preserve escd.rf (devconf configuration information) # saved on floppy during an install boot. # if [ -s /tmp/diskette_rc.d/rcs9.sh ] then /sbin/sh /tmp/diskette_rc.d/rcs9.sh "post" fi # # If there is no data in OWconfig, remove it. # OWC=/etc/openwin/server/etc/OWconfig removef $PKGINST $OWC |\ while read pathname do if [ ! -s $pathname ]; then echo Removing empty `basename $pathname` rm -f $pathname fi done removef -f $PKGINST ;; esac # Remove erroneous entry for Symbios Logic 53c875/95 (ncrs) TMPFILE=/tmp/ncrs_tmp sed -e '/^ncrs "pci1000,1000"$/d' ${BASEDIR}/etc/driver_aliases >$TMPFILE cp $TMPFILE ${BASEDIR}/etc/driver_aliases exit 0