Magellan Linux

Diff of /trunk/magellan-initscripts/etc/rc.d/init.d/rc

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 376 by niro, Mon May 29 21:25:45 2006 UTC revision 515 by niro, Fri Aug 17 22:08:33 2007 UTC
# Line 1  Line 1 
1  #!/bin/bash  #!/bin/bash
2  # $Header: /home/cvsd/magellan-cvs/magellan-src/magellan-initscripts/etc/rc.d/init.d/rc,v 1.9 2006-05-29 21:25:45 niro Exp $  # $Header: /home/cvsd/magellan-cvs/magellan-src/magellan-initscripts/etc/rc.d/init.d/rc,v 1.16 2007-08-17 22:08:33 niro Exp $
3    
4  source /etc/sysconfig/rc  source /etc/sysconfig/rc
5  source $rc_functions  source $rc_functions
# Line 21  udev_version() Line 21  udev_version()
21   version=${version##0}   version=${version##0}
22   # Older udev's will print nothing   # Older udev's will print nothing
23   [[ -z ${version} ]] && version=0   [[ -z ${version} ]] && version=0
24     elif [[ -x /sbin/udevd ]]
25     then
26     version=$(/sbin/udevd --version)
27     version=${version##0}
28     [[ -z ${version} ]] && version=0
29   fi   fi
30    
31   echo "${version}"   echo "${version}"
32  }  }
33    
 # this works only for 2.6.15 kernels and greater  
 trigger_events()  
 {  
  local list=""  
  local i  
  local first  
  local last  
  local default  
   
  # if you want real hotplug (with all modules being loaded for all  
  # devices in the system), uncomment out the next line.  
  #list="$list $(echo /sys/bus/*/devices/*/uevent)"  
  list="${list} $(echo /sys/class/*/*/uevent)"  
  list="${list} $(echo /sys/block/*/uevent /sys/block/*/*/uevent)"  
  for i in ${list}  
  do  
  case "${i}" in  
  */device/uevent)  
  # skip followed device symlinks  
  continue  
  ;;  
  */class/mem/*|*/class/tty/*)  
  first="${first} ${i}"  
  ;;  
  */block/md*)  
  last="${last} ${i}"  
  ;;  
  */*)  
  default="${default} ${i}"  
  ;;  
  esac  
  done  
   
  # trigger the sorted events  
  for i in ${first} ${default} ${last}  
  do  
  echo "add" > "${i}"  
  done  
 }  
   
34  populate_udev()  populate_udev()
35  {  {
36   local loop   local opts
37    
38     # tell modprobe.sh to be verbose to $CONSOLE
39     echo CONSOLE=${CONSOLE} > /dev/.udev_populate
40    
41   # populate /dev with devices already found by the kernel   # populate /dev with devices already found by the kernel
42   if [ "$(kernel_version | sed 's:\.::g' | cut -d_ -f1)" -gt "2614" ]   if [ "$(kernel_version | sed 's:\.::g' | cut -d_ -f1)" -gt "2614" ]
43   then   then
44   echo -e ${COLOREDSTAR}"  Populating /dev with existing devices through uevents ..."   echo -e ${COLOREDSTAR}"  Populating /dev with existing devices through uevents ..."
45   trigger_events   [[ $(udev_version) -ge "96" ]] && [[ ${RC_COLDPLUG} != yes ]] && opts="--attr-match=dev"
46     /sbin/udevtrigger ${opts}
47   evaluate_retval   evaluate_retval
48   else   else
49   echo -e ${COLOREDSTAR}"  Populating /dev with existing devices with udevstart ..."   echo -e ${COLOREDSTAR}"  Populating /dev with existing devices with udevstart ..."
# Line 83  populate_udev() Line 52  populate_udev()
52   fi   fi
53    
54   # loop until everything is finished   # loop until everything is finished
  # there's gotta be a better way...  
55   echo -e ${COLOREDSTAR}"  Letting udev process events ..."   echo -e ${COLOREDSTAR}"  Letting udev process events ..."
56   loop=0   /sbin/udevsettle --timeout=60
  while test -d /dev/.udev/queue  
  do  
  sleep 0.1;  
  test "${loop}" -gt 300 && break  
  loop=$((${loop} + 1))  
  done  
57   evaluate_retval   evaluate_retval
58    
59     rm -f /dev/.udev_populate
60   return 0   return 0
61  }  }
62    
# Line 102  seed_dev() Line 65  seed_dev()
65   # seed /dev with some things that we know we need   # seed /dev with some things that we know we need
66   echo -e ${COLOREDSTAR}"  Seeding /dev with needed nodes ..."   echo -e ${COLOREDSTAR}"  Seeding /dev with needed nodes ..."
67   (   (
68     [ ! -c /dev/console ] && mknod /dev/console c 5 1
69     [ ! -c /dev/tty1 ] && mknod /dev/tty1 c 4 1
70     [ ! -c /dev/null ] && mknod /dev/null c 1 3
71    
72   # copy over any persistant things   # copy over any persistant things
73   cp --preserve=all --recursive --update /lib/udev/devices/* /dev   if [[ -d /lib/udev/devices ]]
74     then
75     cp --preserve=all --recursive --update /lib/udev/devices/* /dev 2>/dev/null
76     fi
77    
78   # not provided by sysfs but needed   # not provided by sysfs but needed
79   ln -snf /proc/self/fd /dev/fd   ln -snf /proc/self/fd /dev/fd
80   ln -snf fd/0 /dev/stdin   ln -snf fd/0 /dev/stdin
# Line 126  if [[ $runlevel = sysinit ]] Line 96  if [[ $runlevel = sysinit ]]
96  then  then
97   echo   echo
98   echo -e "${COLGREEN}Starting ${COLBLUE}MAGELLAN (v${MAGEVER}) ${COLGREEN}Linux${COLDEFAULT}"   echo -e "${COLGREEN}Starting ${COLBLUE}MAGELLAN (v${MAGEVER}) ${COLGREEN}Linux${COLDEFAULT}"
99   echo -e "Copyright 2001-2006 Niels Rogalla; http://magellan-linux.net"   echo -e "Copyright 2001-2007 Niels Rogalla; http://magellan-linux.net"
100   echo   echo
101    
102   # mount proc filesystem, needed for bootsplash;   # mount proc filesystem, needed for bootsplash;
# Line 194  then Line 164  then
164   # load udev only with a 2.6 kernel   # load udev only with a 2.6 kernel
165   if [[ $(kernel_major_version) = 2.6 ]] && [[ ${RC_USED_DEV} = udev ]]   if [[ $(kernel_major_version) = 2.6 ]] && [[ ${RC_USED_DEV} = udev ]]
166   then   then
167     # check if /dev/console exists outside tmpfs
168     [ -c /dev/console ] ; need_redirect=$?
169    
170   # create a ramdisk for populating udev   # create a ramdisk for populating udev
171   echo -e ${COLOREDSTAR}"Mounting udev at /dev ..."   echo -e ${COLOREDSTAR}"Mounting udev at /dev ..."
  # tmpfs was suggested by Greg Kroah-Hartman  
172   # many video drivers needed exec access   # many video drivers needed exec access
173   mount -n -t ramfs udev /dev -o exec,nosuid,mode=0755   fstype=ramfs
174     # tmpfs was suggested by Greg Kroah-Hartman
175     kernel_supports_fs tmpfs && fstype=tmpfs
176     mount -n -t ${fstype} udev /dev -o exec,nosuid,mode=0755
177   evaluate_retval   evaluate_retval
178    
179   # if a device tarball exists load it and if it is activated   # if a device tarball exists load it and if it is activated
# Line 220  then Line 195  then
195   echo -e ${COLOREDSTAR}"  Using netlink for hotplug events ..."   echo -e ${COLOREDSTAR}"  Using netlink for hotplug events ..."
196   echo "" > /proc/sys/kernel/hotplug   echo "" > /proc/sys/kernel/hotplug
197   evaluate_retval   evaluate_retval
198   elif [[ $(udev_version) -ge "48" ]]   else
  then  
199   echo -e ${COLOREDSTAR}"  Setting /sbin/udevsend as hotplug agent ..."   echo -e ${COLOREDSTAR}"  Setting /sbin/udevsend as hotplug agent ..."
200   echo "/sbin/udevsend" > /proc/sys/kernel/hotplug   echo "/sbin/udevsend" > /proc/sys/kernel/hotplug
201   evaluate_retval   evaluate_retval
  elif [[ -x /sbin/hotplug ]]  
  then  
  echo -e ${COLOREDSTAR}"  Using /sbin/hotplug as hotplug agent ..."  
  print_status success  
  else  
  echo -e ${COLOREDSTAR}"  Setting /sbin/udev as hotplug agent ..."  
  echo "/sbin/udev" > /proc/sys/kernel/hotplug  
  evaluate_retval  
202   fi   fi
203   else   else
204   echo -e ${COLOREDSTAR}${COLYELLOW}"  Kernel was not compiled with hotplug support !"   echo -e ${COLOREDSTAR}${COLYELLOW}"  Kernel was not compiled with hotplug support !"
# Line 240  then Line 206  then
206   fi   fi
207    
208   echo -e ${COLOREDSTAR}"  Starting udevd daemon ..."   echo -e ${COLOREDSTAR}"  Starting udevd daemon ..."
209   /sbin/udevd --daemon   if [ ${need_redirect} -eq 1 ]
210     then
211     # we need to open fds 0 1 2
212     /sbin/udevd --daemon </dev/console >/dev/console 2>/dev/console
213     else
214     /sbin/udevd --daemon
215     fi
216   evaluate_retval   evaluate_retval
217    
218     /lib/udev/write_root_link_rule
219   populate_udev   populate_udev
220    
221   # create nodes that udev can't   # create nodes that udev can't
# Line 293  then Line 266  then
266   fi   fi
267   fi   fi
268    
269     ## load usbfs ##
270     if kernel_supports_fs usbfs
271     then
272     echo -e ${COLOREDSTAR}"Mounting usbfs at /proc/bus/usb ..."
273     mount -n -t usbfs usbfs /proc/bus/usb
274     evaluate_retval
275     fi
276    
277   ### services state dir ###   ### services state dir ###
278   echo -e ${COLOREDSTAR}"Mounting tmpfs at ${svcdir} ..."   echo -e ${COLOREDSTAR}"Mounting tmpfs at ${svcdir} ..."
279   mount -n -t tmpfs tmpfs "${svcdir}" -o rw,mode=0644,size="${svcsize}"k   mount -n -t tmpfs tmpfs "${svcdir}" -o rw,mode=0644,size="${svcsize}"k

Legend:
Removed from v.376  
changed lines
  Added in v.515