Remove all vestiges of /usr programs (awk, sed, grep...) from MAKEDEV.

MAKEDEV can now run (with /sbin/chown and /bin/chgrp, still) without
any /usr.  The default PATH for MAKEDEV is now "/sbin:/bin" to prevent
against further spammage of /usr programs in MAKEDEV.  In the event
of an emergency, the variable "MAKEDEVPATH" can be used to replace
PATH, but I don't know what that emergency could be.
   Let me know if you have any problems.  I've tested it as well as
I could, which basically means everything except for RocketPorts.

Reviewed in principle by:	peter
This commit is contained in:
Brian Feldman 1999-12-19 09:42:15 +00:00
parent 68567ff127
commit 1d1811b172
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=54814

View file

@ -134,7 +134,11 @@
# $FreeBSD$ # $FreeBSD$
# #
PATH=/sbin:/bin/:/usr/bin:/usr/sbin:$PATH if [ -n "$MAKEDEVPATH" ]; then
PATH="$MAKEDEVPATH"
else
PATH=/sbin:/bin
fi
umask 77 umask 77
# Usage: die exitcode msg # Usage: die exitcode msg
@ -297,9 +301,12 @@ std)
mknod stderr c 22 2; chmod 666 stderr mknod stderr c 22 2; chmod 666 stderr
mknod pci c 78 0; chmod 644 pci mknod pci c 78 0; chmod 644 pci
mkdir -p fd mkdir -p fd
(cd fd && eval `echo "" | awk ' BEGIN { \ (cd fd && i=0 &&
for (i = 0; i < 64; i++) \ while [ $i -lt 64 ]; do
printf("mknod %d c 22 %d;", i, i)}'`) mknod $i c 22 $i
i=$(($i + 1))
done
)
chown -R root:wheel fd chown -R root:wheel fd
chmod 555 fd chmod 555 fd
chmod 666 fd/* chmod 666 fd/*
@ -607,13 +614,14 @@ xpt*)
if [ -z "${units}" ]; then if [ -z "${units}" ]; then
units=1 units=1
fi fi
eval `echo ${chr} ${units} ${name} |awk \ i=0
'{ c=$1; n=$2; name=$3;} END { while [ $i -lt $units ]; do
for (i = 0; i < n; i++) dname=$name$i
printf("rm -f %s%d r%s%d; mknod %s%d c %d %d; \ rm -rf $dname r$dname
chgrp operator %s%d;", \ mknod $dname c $chr $i
name, i, name, i, name, i, c, i, \ chown root:operator $dname
name, i); }'` i=$(($i + 1))
done
;; ;;
# CAM passthrough device # CAM passthrough device
pass*|uk*) pass*|uk*)
@ -625,13 +633,14 @@ pass*|uk*)
if [ -z "${units}" ]; then if [ -z "${units}" ]; then
units=1 units=1
fi fi
eval `echo ${chr} ${units} ${name} |awk \ i=0
'{ c=$1; n=$2; name=$3;} END { while [ $i -lt $units ]; do
for (i = 0; i < n; i++) dname=$name$i
printf("rm -f %s%d r%s%d; mknod %s%d c %d %d; \ rm -rf $dname r$dname
chgrp operator %s%d;", \ mknod $dname c $chr $i
name, i, name, i, name, i, c, i, \ chown root:operator $dname
name, i); }'` i=$(($i + 1))
done
;; ;;
pty*) pty*)
class=`expr $i : 'pty\(.*\)'` class=`expr $i : 'pty\(.*\)'`
@ -648,21 +657,21 @@ pty*)
# This still leaves [tuTU]. # This still leaves [tuTU].
*) echo bad unit for pty in: $i;; *) echo bad unit for pty in: $i;;
esac esac
umask 0
case $class in case $class in
0|1|2|3|4|5|6|7) 0|1|2|3|4|5|6|7)
umask 0 i=0
eval `echo $offset $name | awk ' { b=0+$1; n=$2 } END { \ while [ $i -lt 32 ]; do
for (i = 0; i < 32; i++) { # This was an awk substr() before.
c = substr("0123456789abcdefghijklmnopqrstuv", i + 1, 1); \ c=$(echo 0123456789abcdefghijklmnopqrstuv |
printf("mknod tty%s%s c 5 %d; \ dd bs=1 skip=$i count=1 2>/dev/null)
mknod pty%s%s c 6 %d;", \ mknod tty$name$c c 5 $(($offset + $i))
n, c, b+i, \ mknod pty$name$c c 6 $(($offset + $i))
n, c, b+i); \ i=$(($i + 1))
} \ done
}'`
umask 77
;; ;;
esac esac
umask 77
;; ;;
sa*) sa*)
@ -742,21 +751,17 @@ acd*|cd*|mcd*|scd*)
units=1 units=1
fi fi
if [ "${units}" -le 31 ]; then if [ "${units}" -le 31 ]; then
eval `echo ${chr} ${units} ${name} |awk \ i=0
'{ c=$1; n=$2; name=$3;} END{ while [ $i -lt $units ]; do
for (i = 0; i < n; i++){ dname=$name$i
printf("rm -f %s%d* r%s%d*; \ rm -rf ${dname}* r${dname}*
mknod %s%da c %d %d; \ mknod ${dname}a c $chr $(($i * 8))
mknod %s%dc c %d %d; \ mknod ${dname}c c $chr $(($i * 8 + 2))
mknod r%s%da c %d %d; \ mknod r${dname}a c $chr $(($i * 8))
mknod r%s%dc c %d %d; \ mknod r${dname}c c $chr $(($i * 8 + 2))
chgrp operator %s%d* r%s%d*;", chown root:operator ${dname}* r${dname}*
name, i, name, i, i=$(($i + 1))
name, i, c, (i * 8), done
name, i, c, (i * 8) + 2,
name, i, c, (i * 8),
name, i, c, (i * 8) + 2,
name, i, name, i); }}'`
else else
echo "$i is invalid -- can't have more than 32 cd devices" echo "$i is invalid -- can't have more than 32 cd devices"
fi fi
@ -871,12 +876,14 @@ ugen*)
echo $i - Invalid unit number echo $i - Invalid unit number
fi fi
if [ -z "${endpoint}" ]; then # ugen0 & ugen0.1 - ugen0.15 if [ -z "${endpoint}" ]; then # ugen0 & ugen0.1 - ugen0.15
eval `echo ${unit} | awk ' { u=0+$1 } END { mknod ugen$unit c 114 $(($unit * 16))
printf("mknod ugen%d c 114 %d;", u, u*16+0); i=1
for (i = 1; i < 16; i++) while [ $i -lt 16 ]; do
printf("mknod ugen%d.%d c 114 %d;", u, i, u*16+i); }'` mknod ugen$unit.$i c 114 $(($unit * 16 + $i))
i=$(($i + 1))
done
else else
minor=`expr $unit \* 16 + $endpoint` minor=$(($unit * 16 + $endpoint))
mknod ugen$unit.$endpoint c 114 $minor mknod ugen$unit.$endpoint c 114 $minor
fi fi
;; ;;
@ -899,9 +906,11 @@ tw*)
vty*) vty*)
chr=12 chr=12
units=`expr $i : 'vty\(.*\)'` units=`expr $i : 'vty\(.*\)'`
eval `echo ${chr} ${units} | awk ' { c=0+$1; n=0+$2 } END { i=0
for (i = 0; i < n; i++) while [ $i -lt $units ]; do
printf("mknod ttyv%01x c %d %d;", i, c, i); }'` mknod ttyv$(printf %01x $i) c $chr $i
i=$(($i + 1))
done
ln -fs ttyv0 vga # XXX X still needs this pccons relic ln -fs ttyv0 vga # XXX X still needs this pccons relic
;; ;;
@ -910,7 +919,7 @@ bpf*)
unit=0 unit=0
while [ $unit -le $nbpf ]; do while [ $unit -le $nbpf ]; do
mknod bpf$unit c 23 $unit mknod bpf$unit c 23 $unit
unit=`expr $unit + 1` unit=$(($unit + 1))
done done
;; ;;
@ -1002,7 +1011,7 @@ ttyA*)
mknod ttyA$name c $major $minor mknod ttyA$name c $major $minor
mknod ttyiA$name c $major `expr $minor + 65536` mknod ttyiA$name c $major `expr $minor + 65536`
mknod ttylA$name c $major `expr $minor + 131072` mknod ttylA$name c $major `expr $minor + 131072`
port=`expr $port + 1` port=$(($port + 1))
done done
# For the user-mode control program, 'sicontrol' # For the user-mode control program, 'sicontrol'
mknod si_control c 68 262144 mknod si_control c 68 262144
@ -1020,7 +1029,7 @@ cuaA*)
mknod cuaiA$name c $major `expr $minor + 128 + 65536` mknod cuaiA$name c $major `expr $minor + 128 + 65536`
mknod cualA$name c $major `expr $minor + 128 + 131072` mknod cualA$name c $major `expr $minor + 128 + 131072`
chown uucp:dialer cuaA$name cuaiA$name cualA$name chown uucp:dialer cuaA$name cuaiA$name cualA$name
port=`expr $port + 1` port=$(($port + 1))
done done
umask 77 umask 77
;; ;;
@ -1121,46 +1130,80 @@ cuaM?)
ttyR?) ttyR?)
major=81 major=81
BOARD=1; MINOR=65536; Rnum=0 BOARD=1; Rnum=0
MINOR=`expr $BOARD \* 65536` MINOR=$(($BOARD * 65536))
dmesg | grep ^RocketPort[0-4] > /tmp/rp_list controllers=$(
controllers=`awk '{print $1}' < /tmp/rp_list` dmesg | while read first rest; do
rm -f /dev/ttyR*; rm -f /dev/ttyiR*; rm -f /dev/ttylR* case "\$first" in
for i in $controllers;do RocketPort[0-4])
ndevices=`grep ^$i /tmp/rp_list | sed -e 's/.* \([0-9]*\) ports/\1/'` echo "\$first"
;;
esac
done
)
rm -f /dev/ttyR* /dev/ttyiR* /dev/ttylR*
for i in $controllers; do
ndevices=$(
dmesg | while read first bar ports rest; do
case "\$first" in
$i*)
echo "\$ports"
;;
esac
done
)
echo -n "Creating $ndevices devices for $i: " echo -n "Creating $ndevices devices for $i: "
for dev in `jot $ndevices 0`;do dev=0
while [ $dev -lt $ndevices ]; do
mknod /dev/ttyR$Rnum c $major $MINOR mknod /dev/ttyR$Rnum c $major $MINOR
mknod /dev/ttylR$Rnum c $major `expr $MINOR + 32` mknod /dev/ttylR$Rnum c $major $(($MINOR + 32))
mknod /dev/ttyiR$Rnum c $major `expr $MINOR + 64` mknod /dev/ttyiR$Rnum c $major $(($MINOR + 64))
Rnum=`expr $Rnum + 1` Rnum=$(($Rnum + 1))
MINOR=`expr $MINOR + 1` MINOR=$(($MINOR + 1))
dev=$(($dev + 1))
done done
BOARD=`expr $BOARD + 1` BOARD=$(($BOARD + 1))
MINOR=`expr $BOARD \* 65536` MINOR=$(($BOARD * 65536))
echo " " echo " "
done done
;; ;;
cuaR?) cuaR?)
major=81 major=81
BOARD=1; MINOR=65536; Rnum=0 BOARD=1; Rnum=0
MINOR=`expr $BOARD \* 65536` MINOR=$(($BOARD * 65536))
dmesg | grep ^RocketPort[0-4] > /tmp/rp_list controllers=$(
controllers=`awk '{print $1}' < /tmp/rp_list` dmesg | while read first rest; do
rm -f /dev/cuaR*; rm -f /dev/cuaiR*; rm -f /dev/cualR* case "\$first" in
for i in $controllers;do RocketPort[0-4])
ndevices=`grep ^$i /tmp/rp_list | sed -e 's/.* \([0-9]*\) ports/\1/'` echo "\$first"
;;
esac
done
)
rm -f /dev/cuaR* /dev/cuaiR* /dev/cualR*
for i in $controllers; do
ndevices=$(
dmesg | while read first bar ports rest; do
case "\$first" in
$i*)
echo "\$ports"
;;
esac
done
)
echo -n "Creating $ndevices devices for $i: " echo -n "Creating $ndevices devices for $i: "
for dev in `jot $ndevices 0`;do dev=0
mknod /dev/cuaR$Rnum c $major `expr $MINOR + 128` while [ $dev -lt $ndevices ]; do
mknod /dev/cualR$Rnum c $major `expr $MINOR + 128 + 32` mknod /dev/cuaR$Rnum c $major $(($MINOR + 128))
mknod /dev/cuaiR$Rnum c $major `expr $MINOR + 128 + 64` mknod /dev/cualR$Rnum c $major $(($MINOR + 128 + 32))
Rnum=`expr $Rnum + 1` mknod /dev/cuaiR$Rnum c $major $(($MINOR + 128 + 64))
MINOR=`expr $MINOR + 1` Rnum=$(($Rnum + 1))
MINOR=$(($MINOR + 1))
dev=$(($dev + 1))
done done
BOARD=`expr $BOARD + 1` BOARD=$(($BOARD + 1))
MINOR=`expr $BOARD \* 65536` MINOR=$(($BOARD * 65536))
echo " " echo " "
done done
chown uucp:dialer /dev/cuaR* chown uucp:dialer /dev/cuaR*
@ -1324,7 +1367,7 @@ tun*)
while [ $unit -le $ntun ]; do while [ $unit -le $ntun ]; do
mknod tun$unit c 52 $unit mknod tun$unit c 52 $unit
chown uucp:dialer tun$unit chown uucp:dialer tun$unit
unit=`expr $unit + 1` unit=$(($unit + 1))
done done
;; ;;