#!/bin/sh # This script will (hopefully) detect up to 2 cd/dvd type devices in one pc # and configure them. It will set up links in /dev and modify /etc/fstab without # any user intervention. # # wile_coyote was here # fstab="/etc/fstab" rm -f /dev/cdrom 2>/dev/null rm -f /dev/cdwriter 2>/dev/null rm -f /dev/dvd 2>/dev/null p="/proc/ide" # # I'm setting up an array to be used later # declare -a cdtype # # This is where the device discovery and symbolic links in /dev get set up. # NOTE: The cdwriter will always win as THE burning device...the cdrom will always win as the cdrom device for i in hda hdb hdc hdd do if [ -d $p/$i ] then cd $p/$i if [ `cat media` = "cdrom" ] then CDDEVICE=`cat model` case $CDDEVICE in `cat model|grep "CDRW"` | `cat model|grep "CD-RW"` | `cat model|grep "CD/R"` | `cat model|grep "CD/RW"` ) echo "Configuring /dev/"$i" as a cdwriter..." if [ -f /dev/cdwriter ] then ln -sf /dev/$i /dev/cdwriter else ln -sf /dev/$i /dev/cdwriter fi if [ ! -f /dev/cdrom ] then ln -s /dev/$i /dev/cdrom 2>/dev/null fi cdtype[0]="cdwriter" CDWRITER="$i" ;; `cat model|grep "DVDRW"` | `cat model|grep "DVD-RW"` | `cat model|grep "DVDR"` | `cat model|grep "DVD/RW"` | `cat model|grep "DVD+R"` | `cat model|grep "DVD+RW"` ) echo "Configuring /dev/"$i" as a dvdwriter..." if [ ! -f /dev/cdwriter ] then ln -s /dev/$i /dev/cdwriter 2>/dev/null fi if [ ! -f /dev/cdrom ] then ln -s /dev/$i /dev/cdrom 2>/dev/null fi if [ ! -f /dev/dvd ] then ln -s /dev/$i /dev/dvd 2>/dev/null fi cdtype[1]="dvdwriter" DVDWRITER="$i" ;; `cat model|grep "CD-ROM"` | `cat model|grep "CDROM"` | `cat model|grep "CD"` ) echo "Configuring /dev/"$i" as a cd-rom..." if [ -f /dev/cdrom ] then ln -sf /dev/$i /dev/cdrom else ln -sf /dev/$i /dev/cdrom fi cdtype[2]="cdrom" CDROM="$i" ;; `cat model|grep "DVDROM"` | `cat model|grep "DVD-ROM"` | `cat model|grep "DV"` ) echo "Configuring /dev/"$i" as a dvd-rom..." if [ -f /dev/dvd ] then ln -sf /dev/$i /dev/dvd else ln -sf /dev/$i /dev/dvd fi if [ ! -f /dev/cdrom ] then ln -s /dev/$i /dev/cdrom 2>/dev/null fi cdtype[3]="dvdrom" DVDROM="$i" ;; esac fi fi done # # This writes any needed items to /etc/fstab # # NOTE: If both a cdwriter and a dvdwriter are found, the cdwriter get's an entry in /etc/fstab but the # dvdwriter does not. If a cdrom and a dvdrom exist, the cdrom will win as the cdrom in /etc/fstab. # # Order of importance: # R/RW ROM # cdwriter 1 3 # dvdwriter 2 4 # cdrom n/a 1 # dvdrom n/a 2 # # if [ `echo ${cdtype[*]} | grep -o "cdwriter"` ] 2>/dev/null then echo "/dev/$CDWRITER /mnt/cdwriter subfs fs=auto,user,ro 0 0" >> $fstab fi if [ ! `echo ${cdtype[*]} | grep -o "cdwriter"` -a `echo ${cdtype[*]} | grep -o "dvdwriter"` ] 2>/dev/null then echo "/dev/$DVDWRITER /mnt/cdwriter subfs fs=auto,user,ro 0 0" >> $fstab fi if [ `echo ${cdtype[*]} | grep -o "cdrom"` ] 2>/dev/null then echo "/dev/$CDROM /mnt/cdrom subfs fs=auto,user,ro 0 0" >> $fstab fi if [ ! `echo ${cdtype[*]} | grep -o "cdrom"` -a `echo ${cdtype[*]} | grep -o "dvdrom"` ] 2>/dev/null then echo "/dev/$DVDROM /mnt/cdrom subfs fs=auto,user,ro 0 0" >> $fstab fi .