⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 makedev.sh

📁 操作系统源代码
💻 SH
字号:
#!/bin/sh## MAKEDEV 2.18 - Make special devices.			Author: Kees J. Botcase $1 in-n)	e=echo; shift ;;	# Just echo when -n is given.*)	e=esaccase $#:$1 in1:std)		# Standard devices.	set -$- mem fd0 fd1 fd0a fd1a \		hd0 hd1a hd5 hd6a cd0 cd1a sd0 sd1a sd5 sd6a st4 \		tty ttyc1 tty00 tty01 ttyp0 ttyp1 ttyp2 ttyp3 eth	;;0:|1:-\?)	cat >&2 <<EOFUsage:	$0 [-n] key ...Where key is one of the following:	ram mem kmem null	# One of these makes all these memory devices	fd0 fd1 ...		# Floppy devices for drive 0, 1, ...	fd0a fd1a ...		# Make fd0[a-d], fd1[a-d], ...	hd0 hd5 ...		# Make hd[0-4], hd[5-9], ...	hd1a hd2a ... hd6a ...	# Make hd1[a-d], hd2[a-d], hd6[a-d], ...	sd0 sd5 sd1a ...	# Make SCSI disks	st0 st1 ...		# Make SCSI tapes rst0, nrst0, rst1 ...	cd0 cd1a		# Make CD-ROM devices (non SCSI)	console lp tty log	# One of these makes all four	ttyc1 ... ttyc7		# Virtual consoles	tty00 ... tty03		# Make serial lines	ttyp0 ... ttyq0 ...	# Make tty, pty pairs	eth ip tcp udp		# One of these makes TCP/IP devices	audio mixer		# Make audio devices	std			# All standard devicesEOF	exit 1esacumask 077ex=0for devdo	case $dev in	ram|mem|kmem|null)		# Memory devices.		#		$e mknod ram b 1 0;	$e chmod 600 ram		$e mknod mem c 1 1;	$e chmod 640 mem		$e mknod kmem c 1 2;	$e chmod 640 kmem		$e mknod null c 1 3;	$e chmod 666 null		$e chgrp kmem ram mem kmem null		;;	fd[0-3]|pc[0-3]|at[0-3]|qd[0-3]|ps[0-3]|pat[0-3]|qh[0-3]|PS[0-3])		# Floppy disk drive n.		#		n=`expr $dev : '.*\\(.\\)'`	# Drive number.		m=$n				# Minor device number.		$e mknod fd$n  b 2 $m;	m=`expr $m + 4`		$e mknod pc$n  b 2 $m;	m=`expr $m + 4`		$e mknod at$n  b 2 $m;	m=`expr $m + 4`		$e mknod qd$n  b 2 $m;	m=`expr $m + 4`		$e mknod ps$n  b 2 $m;	m=`expr $m + 4`		$e mknod pat$n b 2 $m;	m=`expr $m + 4`		$e mknod qh$n  b 2 $m;	m=`expr $m + 4`		$e mknod PS$n  b 2 $m;	m=`expr $m + 4`		$e chmod 666 fd$n pc$n at$n qd$n ps$n pat$n qh$n PS$n		;;	fd[0-3][a-d])		# Floppy disk partitions.		#		dev=`expr $dev : '\\(.*\\).'`	# Chop off the letter.		drive=`expr $dev : '..\\(.\\)'`	# Drive number.		n=`expr 112 + $drive`		# Partition 'a'.		alldev=		for par in a b c d		do			$e mknod $dev$par b 2 $n	# Make e.g. fd0a - fd0d			alldev="$alldev $dev$par"			n=`expr $n + 4`		done		$e chmod 666 $alldev		;;	[hs]d[0-9]|[hs]d[123][0-9]|cd[0-4])		# Hard disk drive & partitions.		#		case $dev in		h*)	name=hd maj=3		# Winchester.			;;		c*)	name=cd maj=8		# CD-ROM.			;;		s*)	name=sd maj=10		# SCSI.		esac		n=`expr $dev : '[^0-9]*\\(.*\\)'`  # Minor device number.		n=`expr $n / 5 '*' 5`		# Down to a multiple of 5.		alldev=		for par in 0 1 2 3 4		do			$e mknod $name$n b $maj $n	# Make e.g. hd5 - hd9			alldev="$alldev $name$n"			n=`expr $n + 1`		done		$e chmod 600 $alldev		;;	[hs]d[1-46-9][a-d]|[hs]d[123][1-46-9][a-d]|cd[1-4][a-d])		# Hard disk subpartitions.		#		case $dev in		h*)	name=hd maj=3		# Winchester.			;;		c*)	name=cd maj=8		# CD-ROM.			;;		s*)	name=sd maj=10		# SCSI.		esac		par=`expr $dev : '..\\(.*\\).'`	# Partition number.		drive=`expr $par / 5`		# Drive number.		n=`expr $drive '*' 16 + 128`	# Subpartition '1a', '6a', ...		alldev=		for par in 1 2 3 4		do			dev=$name`expr $drive '*' 5 + $par`			for sub in a b c d			do				# Make e.g. hd6a, hd6b, ... hd9d				$e mknod $dev$sub b $maj $n				alldev="$alldev $dev$sub"				n=`expr $n + 1`			done		done		$e chmod 600 $alldev		;;	st[0-7]|rst[0-7]|nrst[0-7])		# SCSI tape.		#		n=`expr $dev : '.*\\(.\\)'`		m=`expr 64 + $n '*' 2`		# Minor of rstX.		$e mknod nrst$n c 10 $m		$e mknod rst$n c 10 `expr $m + 1`		$e chmod 660 rst$n nrst$n		;;	console|lp|tty|log)		# Console, line printer, anonymous tty, diagnostics device.		#		$e mknod console c 4 0		$e chmod 600 console		$e chgrp tty console		$e mknod tty c 5 0		$e chmod 666 tty		$e mknod lp c 6 0		$e chown daemon lp		$e chgrp daemon lp		$e chmod 200 lp		$e mknod log c 4 15		$e chmod 222 log		;;	ttyc[1-7])		# Virtual consoles.		#		n=`expr $dev : '....\\(.*\\)'`	# Minor device number.		$e mknod $dev c 4 $n		$e chgrp tty $dev		$e chmod 600 $dev		;;	tty0[0-3])		# Serial lines.		#		n=`expr $dev : '.*\\(.\\)'`		$e mknod $dev c 4 `expr $n + 16`		$e chmod 666 $dev		$e chgrp tty $dev		;;	tty[p-s][0-9a-f]|pty[p-s][0-9a-f])		# Pseudo ttys.		#		dev=`expr $dev : '...\\(..\\)'`		g=`expr $dev : '\\(.\\)'`	# Which group.		g=`echo $g | tr 'pqrs' '0123'`		n=`expr $dev : '.\\(.\\)'`	# Which pty in the group.		case $n in		[a-f])	n=1`echo $n | tr 'abcdef' '012345'`		esac		$e mknod tty$dev c 4 `expr $g '*' 16 + $n + 128`		$e mknod pty$dev c 4 `expr $g '*' 16 + $n + 192`		$e chgrp tty tty$dev pty$dev		$e chmod 666 tty$dev pty$dev		;;	eth|ip|tcp|udp)		# TCP/IP devices.		#		$e mknod eth c 7 1		$e mknod ip c 7 2		$e mknod tcp c 7 3		$e mknod udp c 7 4		$e chmod 600 eth ip		$e chmod 666 tcp udp		;;	audio|mixer)		# Audio devices.		#		$e mknod audio c 13 0		$e mknod mixer c 14 0		$e chmod 666 audio mixer		;;	*)		echo "$0: don't know about $dev" >&2		ex=1	esacdoneexit $ex

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -