#!/bin/bash

# TTY's
mknod -m 0666 tty c 5 0
number=0
for i in tty{0,1,2,3,4,5,6,7,8,9,10,11,12} ; do
  mknod -m 0660 $i c 4 $number
  let number=$number+1
done

# Serial TTY's
mknod -m 0660 ttyS0 c 4 64
mknod -m 0660 ttyS1 c 4 65
mknod -m 0660 ttyS2 c 4 66
mknod -m 0660 ttyS3 c 4 67

# PTMX is required for pty's to work!
mknod -m 0660 ptmx c 5 2

# System console
mknod -m 0660 console c 5 1

# vcs is virtual console?
mknod -m 0660 vcs c 7 0

# tgt is ?? fix group once this is identified
mknod -m 0660 tgt c 10 62

# rtc is real-time-clock
mknod -m 0660 rtc c 10 135

# Frame Buffers
number=0
for i in fb{0,1,2,3,4,5,6} ; do
  mknod -m 0660 $i c 29 $number
  let number=$number+1
done

# First RAM disk
mknod -m 0660 initrd b 1 250
number=0
for i in ram{0,1,2,3} ; do
  mknod -m 0660 $i b 1 $number
  let number=$number+1
done

# Loopback
number=0
for i in loop{0,1,2,3,4,5,6,7,8,9} ; do
  mknod -m 0660 $i b 7 $number
  let number=$number+1
done

# Standard Disks
number=0
for j in a b c d e f g h i j k l ; do
  for i in sd${j}{0,1,2,3,4,5,6,7,8,9,1{0,1,2,3,4,5}} ; do
    #if [[ $number != "16" && $number != "32" && $number != "48" && $number != "64" && $number != "80" && $number != "96" && $number != "112" && $number != "128" && $number != "144" && $number != "160" && $number != "176" ]] ; then
    if [[ $i != "sd${j}0" ]] ; then
      mknod -m 0660 $i b 8 $number
    else
      mknod -m 0660 sd${j} b 8 $number
    fi
    let number=$number+1
  done
done

# Parallel-Port IDE disk
mknod -m 0660 pda b 45 0
mknod -m 0660 pdb b 45 16

number=1
for i in pda{1,2,3,4,5,6,7,8,9,1{0,1,2,3,4,5}} ; do
  mknod -m 0660 $i b 45 $number
  let number=$number+1
done
number=17
for i in pdb{1,2,3,4,5,6,7,8,9,1{0,1,2,3,4,5}} ; do
  mknod -m 0660 $i b 45 $number
  let number=$number+1
done

number=0
for i in pf{0,1,2,3} ; do
  mknod -m 0660 $i b 47 $number
  let number=$number+1
done

# Raid Disks
number=0
for i in md{0,1,2,3,4,5,6,7,8,9,1{0,1,2,3,4,5}} ; do
  mknod -m 0660 $i b 9 $number
  let number=$number+1
done

# ROM Cards (rw)
number=0
for i in rom{0,1,2,3,4,5,6,7} ; do
  mknod -m 0660 $i b 31 $number
  let number=$number+1
done
number=8
for i in rrom{0,1,2,3,4,5,6,7} ; do
  mknod -m 0660 $i b 31 $number
  let number=$number+1
done
number=16
for i in flash{0,1,2,3,4,5,6,7} ; do
  mknod -m 0660 $i b 31 $number
  let number=$number+1
done
number=24
for i in rflash{0,1,2,3,4,5,6,7} ; do
  mknod -m 0660 $i b 31 $number
  let number=$number+1
done

# SCSCI/SATA/PATA cdrom devices
number=0
for i in sr{0,1,2,3,4,5,6,7,8,9} ; do
  mknod -m 0660 $i b 11 $number
  let number=$number+1
done
number=0
for i in sg{0,1,2,3,4,5,6,7,8,9} ; do
  mknod -m 0660 $i b 21 $number
  let number=$number+1
done

# MMC Disks
number=179
for i in mmc{0,1,2,3,4,5,6,7,8,9} ; do
  mknod -m 0640 $i b $number 0;
  inner_number=1
  for j in p{1,2,3,4,5,6,7,8,9} ; do
    mknod -m 0640 $i$j b $number $inner_number
    let inner_number=$inner_number+1
  done
  let number=$number+1
done

# Raw block device
#number=0
#for i in raw{0,1,2,3,4,5,6,7} ; do
#  mknod -m 0660 c 162 $i $number
#  let number=$number+1
#done

# mtd0, mtd0ro, and mtdblock0 devices
mknod -m 0660 mtd0      c 90 0
mknod -m 0660 mtd0ro    c 90 1 
mknod -m 0660 mtdblock0 b 31 0

# Floppy Device
mknod -m 0660 fd0 b 2 0 ;
mknod -m 0660 fd1 b 2 1 ;

# Physical memory access
mknod -m 0640 mem c 1 1 ;

# Kernel virtual memory access
mknod -m 0640 kmem c 1 2 ;

# I/O port access
mknod -m 0660 port c 1 4 ;

# Null device
mknod -m 0660 null c 1 3 ;

# Full device
mknod -m 0660 full c 1 7 ;

# NVRam device
mknod -m 0660 nvram c 10 144 ;

# Null byte source
mknod -m 0660 zero c 1 5 ;

# Random Devices
mknod -m 0440 random c 1 8 ;
mknod -m 0440 urandom c 1 9 ;
mknod -m 0660 hw_random c 1 3 ;

# Fuse Devuce
mknod -m 0660 fuse c 10 229 ;

# Grsecurity Device
mknod -m 0640 grsec c 1 13 ;

# Agpgart (graphics related) device
mknod -m 0660 agpgart c 10 175 ;

# uinput
mknod -m 0660 uinput c 10 223 ;

# Synbolic links
ln -sfn ../proc/self/fd fd
ln -sfn fd/0 stdin
ln -sfn fd/1 stdout
ln -sfn fd/2 stderr

# make input devices available
mkdir -p input/
mknod -m 0640 input/mice c 13 63
mknod -m 0640 input/event0 c 13 64
mknod -m 0640 input/event1 c 13 65
mknod -m 0640 input/event2 c 13 66
mknod -m 0640 input/event3 c 13 67
mknod -m 0640 input/event4 c 13 68
mknod -m 0640 input/event5 c 13 69
mknod -m 0640 input/ts0 c 13 128
mknod -m 0640 input/ts1 c 13 129
