summaryrefslogtreecommitdiffstats
path: root/load.sh
diff options
context:
space:
mode:
authorKyle K <kylek389@gmail.com>2012-12-23 01:41:33 +0000
committerKyle Kaminski <kyle@kkaminsk.com>2012-12-23 01:41:33 +0000
commitf0531d88e958b5fa77f8dc9bb34e697e872aeba9 (patch)
tree873915769ff30f32953d58519131b3956190a584 /load.sh
parentadbfb7c71fe1e958a2a2397c7b88c3061043c54e (diff)
downloadkernelhello-f0531d88e958b5fa77f8dc9bb34e697e872aeba9.tar.gz
kernelhello-f0531d88e958b5fa77f8dc9bb34e697e872aeba9.tar.bz2
kernelhello-f0531d88e958b5fa77f8dc9bb34e697e872aeba9.zip
register char device and prepare mknod script
Diffstat (limited to 'load.sh')
-rwxr-xr-xload.sh24
1 files changed, 24 insertions, 0 deletions
diff --git a/load.sh b/load.sh
new file mode 100755
index 0000000..41266bc
--- /dev/null
+++ b/load.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+MODULE=hello
+DEVICE=skull
+MODE=664
+
+# invoke insmod with all arguments and use a pathname
+# as newer modutils don't look into . by default
+/usr/bin/insmod ./${MODULE}.ko $* || exit 1
+
+# remove stale nodes
+rm -f /dev/${DEVICE}[0]
+
+MAJOR=$(awk "\$2 == \"$DEVICE\" {print \$1}" /proc/devices)
+
+mknod /dev/${DEVICE}0 c $MAJOR 0
+
+# give appriopriate permissions
+GROUP=staff
+grep -q '^staff' /etc/group || GROUP=wheel
+
+chgrp $GROUP /dev/${DEVICE}0
+chmod $MODE /dev/${DEVICE}0
+