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 318 by niro, Tue Jan 3 18:03:21 2006 UTC revision 431 by niro, Tue Mar 6 00:10:26 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.6 2006-01-03 18:03:21 niro Exp $  # $Header: /home/cvsd/magellan-cvs/magellan-src/magellan-initscripts/etc/rc.d/init.d/rc,v 1.14 2007-03-06 00:10:26 niro Exp $
3    
4  source /etc/sysconfig/rc  source /etc/sysconfig/rc
5  source $rc_functions  source $rc_functions
# Line 10  MAGEVER="$(< /etc/mageversion)" Line 10  MAGEVER="$(< /etc/mageversion)"
10  # source kernel config if exists  # source kernel config if exists
11  [ -f /etc/conf.d/kernel ] && source /etc/conf.d/kernel  [ -f /etc/conf.d/kernel ] && source /etc/conf.d/kernel
12    
13  # this works only for 2.6.15 kernels and greater  udev_version()
 trigger_events()  
14  {  {
15   local list=""   local version=0
16   local i  
17   local first   if [[ -x /sbin/udev ]]
18   local last   then
19   local default   version=$(/sbin/udev -V)
20     # We need it without a leading '0', else bash do the wrong thing
21   # if you want real hotplug (with all modules being loaded for all   version=${version##0}
22   # devices in the system), uncomment out the next line.   # Older udev's will print nothing
23   #list="$list $(echo /sys/bus/*/devices/*/uevent)"   [[ -z ${version} ]] && version=0
24   list="${list} $(echo /sys/class/*/*/uevent)"   elif [[ -x /sbin/udevd ]]
25   list="${list} $(echo /sys/block/*/uevent /sys/block/*/*/uevent)"   then
26   for i in ${list}   version=$(/sbin/udevd --version)
27   do   version=${version##0}
28   case "${i}" in   [[ -z ${version} ]] && version=0
29   */device/uevent)   fi
30   # skip followed device symlinks  
31   continue   echo "${version}"
  ;;  
  */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  
32  }  }
33    
34  populate_udev() {  populate_udev()
35   local loop  {
36     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')" -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 66  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    
63  seed_dev() {  seed_dev()
64    {
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
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 100  seed_dev() { Line 88  seed_dev() {
88   evaluate_retval   evaluate_retval
89  }  }
90    
 # # some needed functions functions  
 # populate_udev() {  
 # /sbin/udevstart  
 #  
 # # not provided by sysfs but needed  
 # ln -snf /proc/self/fd /dev/fd  
 # ln -snf fd/0 /dev/stdin  
 # ln -snf fd/1 /dev/stdout  
 # ln -snf fd/2 /dev/stderr  
 # ln -snf /proc/kcore /dev/core  
 # ln -snf /proc/asound/oss/sndstat /dev/sndstat  
 #  
 # # create problematic directories  
 # mkdir -p /dev/{pts,shm}  
 #  
 # # same as /dev/.devfsd  
 # touch /dev/.udev  
 #  
 # return 0  
 # }  
   
91  trap "" INT QUIT TSTP  trap "" INT QUIT TSTP
92    
93  [ "$1" != "" ] && runlevel=$1  [ "$1" != "" ] && runlevel=$1
# Line 129  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-2005 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 197  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 218  then Line 190  then
190    
191   if [ -e /proc/sys/kernel/hotplug ]   if [ -e /proc/sys/kernel/hotplug ]
192   then   then
193   if [ "$(kernel_version | sed 's:\.::g')" -gt "2614" ]   if [ "$(kernel_version | sed 's:\.::g' | cut -d_ -f1)" -gt "2614" ]
194   then   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 243  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   populate_udev   populate_udev

Legend:
Removed from v.318  
changed lines
  Added in v.431