Magellan Linux

Diff of /trunk/initscripts/sysvinit/rc/rc

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

trunk/magellan-initscripts/etc/rc.d/init.d/rc revision 425 by niro, Wed Feb 7 08:07:43 2007 UTC trunk/initscripts/sysvinit/rc/rc revision 1356 by niro, Sat Jun 4 21:05:01 2011 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.12 2007-02-07 08:07:43 niro Exp $  # $Id$
3    
4  source /etc/sysconfig/rc  source /etc/conf.d/rc
5  source $rc_functions  source ${rc_functions}
6    
7  # get mage version  # get mage version
8  MAGEVER="$(< /etc/mageversion)"  MAGEVER="$(< /etc/mageversion)"
# 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  udev_version()  # override devicemanager helper functions
14  {  if [[ ${RC_DEVICEMANAGER} = udev ]] && [[ -f ${rc_base}/init.d/udev ]]
15   local version=0  then
16     source ${rc_base}/init.d/udev
  if [[ -x /sbin/udev ]]  
  then  
  version=$(/sbin/udev -V)  
  # We need it without a leading '0', else bash do the wrong thing  
  version=${version##0}  
  # Older udev's will print nothing  
  [[ -z ${version} ]] && version=0  
  fi  
   
  echo "${version}"  
 }  
   
 populate_udev()  
 {  
  local opts  
   
  # populate /dev with devices already found by the kernel  
  if [ "$(kernel_version | sed 's:\.::g' | cut -d_ -f1)" -gt "2614" ]  
  then  
  echo -e ${COLOREDSTAR}"  Populating /dev with existing devices through uevents ..."  
  [[ $(udev_version) -ge "96" ]] && opts="--attr-match=dev"  
  /sbin/udevtrigger ${opts}  
  evaluate_retval  
  else  
  echo -e ${COLOREDSTAR}"  Populating /dev with existing devices with udevstart ..."  
  /sbin/udevstart  
  evaluate_retval  
  fi  
   
  # loop until everything is finished  
  echo -e ${COLOREDSTAR}"  Letting udev process events ..."  
  /sbin/udevsettle --timeout=60  
  evaluate_retval  
   
  return 0  
 }  
17    
18  seed_dev()  elif [[ ${RC_DEVICEMANAGER} = mdev ]] && [[ -f ${rc_base}/init.d/mdev ]]
19  {  then
20   # seed /dev with some things that we know we need   source ${rc_base}/init.d/mdev
21   echo -e ${COLOREDSTAR}"  Seeding /dev with needed nodes ..."  fi
  (  
  # copy over any persistant things  
  if [[ -d /lib/udev/devices ]]  
  then  
  cp --preserve=all --recursive --update /lib/udev/devices/* /dev  
  fi  
   
  # 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  
  [[ -e /proc/kcore ]] && ln -snf /proc/kcore /dev/core  
   
  # create problematic directories  
  mkdir -p /dev/{pts,shm}  
  )  
  evaluate_retval  
 }  
22    
23  trap "" INT QUIT TSTP  trap "" INT QUIT TSTP
24    
# Line 81  trap "" INT QUIT TSTP Line 26  trap "" INT QUIT TSTP
26    
27  if [[ $runlevel = sysinit ]]  if [[ $runlevel = sysinit ]]
28  then  then
29   echo   rc_echo
30   echo -e "${COLGREEN}Starting ${COLBLUE}MAGELLAN (v${MAGEVER}) ${COLGREEN}Linux${COLDEFAULT}"   rc_echo -e "${COLGREEN}Starting ${COLBLUE}MAGELLAN (v${MAGEVER}) ${COLGREEN}Linux${COLDEFAULT}"
31   echo -e "Copyright 2001-2007 Niels Rogalla; http://magellan-linux.net"   rc_echo "Copyright 2001-2011 Niels Rogalla; http://magellan-linux.net"
32   echo   rc_echo
33    
34   # mount proc filesystem, needed for bootsplash;   # mount proc filesystem, needed for bootsplash;
35   # no use of '/etc/rc.d/init.d/mountproc' anymore   # no use of '/etc/rc.d/init.d/mountproc' anymore
36   if [ ! -e /proc/mounts ]   if [ ! -e /proc/mounts ]
37   then   then
38   echo -e ${COLOREDSTAR}"Mounting proc file system ..."   rc_print "Mounting proc file system ..."
39   mount -n /proc   mount -n /proc
40   evaluate_retval   evaluate_retval
41   fi   fi
# Line 99  then Line 44  then
44   [ -z "${RC_VERBOSE_LEVEL}" ] && RC_VERBOSE_LEVEL=3   [ -z "${RC_VERBOSE_LEVEL}" ] && RC_VERBOSE_LEVEL=3
45   echo "${RC_VERBOSE_LEVEL}" > /proc/sys/kernel/printk   echo "${RC_VERBOSE_LEVEL}" > /proc/sys/kernel/printk
46    
47   # mount sys file system before udev or devfs (kernel-2.6)   # mount sys file system before udev
48   if [[ $(kernel_major_version) = 2.6 ]]   if [ -d /sys ]
49   then   then
50   if [ -d /sys ]   rc_print "Mounting sysfs file system ..."
51   then   mount -n -t sysfs sysfs /sys
52   echo -e ${COLOREDSTAR}"Mounting sysfs file system ..."   evaluate_retval
53   mount -n -t sysfs sysfs /sys   else
54   evaluate_retval   rc_echo -e ${COLORED}"Fatal: mountpoint /sys missing ..."
55   else   rc_echo -e ${COLYELLOW}"Please create the directory /sys (mkdir -p /sys)."
56   echo -e ${COLORED}"Fatal: mountpoint /sys missing ..."   rc_echo -e ${COLYELLOW}"It's essential for a 2.6 kernel."
  echo -e ${COLYELLOW}"Please create the directory /sys (mkdir -p /sys)."  
  echo -e ${COLYELLOW}"It's essential for a 2.6 kernel."  
  fi  
57   fi   fi
58    
59   ## load devfs ##   # start device management
60   # load devfs only with a 2.4 kernel or its really wanted with a 2.6   start_devicemanager
61   if [[ $(kernel_major_version) = 2.4 ]] || [[ ${RC_USED_DEV} = devfs ]]  
62     ## load devpts ##
63     # devfs/udev with 2.6 has no ptys, so devpts is also needed
64     # check if we really have devpts support
65     if kernel_supports_fs devpts
66   then   then
67   # start devfsd daemon, needed for bootsplash;   # /dev/pts maybe not exists.
68   # no use of '/etc/rc.d/init.d/devfs' anymore   # We only create this directory only if devfs was mounted,
69   # check if devfs was mounted by the kernel,   # or it will fail as / is still mounted readonly
70   # if not mount it (mbuild_livecd needs this one)   # udev has this dir already, only a sanity check for devfs
71   if [ ! -e /dev/.devfsd ]   if [ ! -d "/dev/pts" -a -e "/dev/.devfsd" ] && is_fs_mounted devfs
72   then   then
73   echo -e ${COLOREDSTAR}"Mounting devfs file system ..."   mkdir -p /dev/pts &> /dev/null || \
74   mount -n -t devfs devfs /dev   rc_echo "Could not create /dev/pts !"
  evaluate_retval  
75   fi   fi
76    
77   if [ -e /dev/.devfsd ]   # now mount devpts
78     if [ -d /dev/pts ]
79   then   then
80   echo -e ${COLOREDSTAR}"Starting devfsd ..."   rc_print "Mounting devpts at /dev/pts ..."
81   ## directory /lib/dev-state !must! exists ##   mount -n -t devpts -o gid=4,mode=0620 devpts /dev/pts
  /sbin/devfsd /dev &> /dev/null  
82   evaluate_retval   evaluate_retval
  else  
  echo -e ${COLRED}"No devfs filesystem found ..."  
  echo -e ${COLYELLOW}"Your Kernel doesn't support the devfs filesystem."  
  echo -e ${COLYELLOW}"Devfs is necessary to run Magellan-Linux."  
  echo -e ${COLYELLOW}"Please make shure that this is enabled in your kernel."  
  echo  
  echo -e ${COLYELLOW}"Press any key to shutdown the system safely ..."  
  read  
  $rc_base/init.d/halt  
83   fi   fi
84     else
85     # devpts is not supported, give a warning
86     rc_echo -e ${COLRED}"No devpts filesystem found ..."
87     rc_echo -e ${COLYELLOW}"Your Kernel doesn't support the devpts filesystem."
88     rc_echo -e ${COLYELLOW}"Devfs/Udev with a kernel-2.6.x needs devpts,"
89     rc_echo -e ${COLYELLOW}"or no pty's are available."
90     rc_echo -e ${COLYELLOW}"Please make sure that this is enabled in your kernel."
91     rc_echo
92     rc_echo -e ${COLYELLOW}"Press any key to continue ..."
93     read
94   fi   fi
95     ## end devpts ##
96    
  #### load udev ####  
  # load udev only with a 2.6 kernel  
  if [[ $(kernel_major_version) = 2.6 ]] && [[ ${RC_USED_DEV} = udev ]]  
  then  
  # create a ramdisk for populating udev  
  echo -e ${COLOREDSTAR}"Mounting udev at /dev ..."  
  # many video drivers needed exec access  
  fstype=ramfs  
  # tmpfs was suggested by Greg Kroah-Hartman  
  kernel_supports_fs tmpfs && fstype=tmpfs  
  mount -n -t ${fstype} udev /dev -o exec,nosuid,mode=0755  
  evaluate_retval  
   
  # if a device tarball exists load it and if it is activated  
  echo -e ${COLOREDSTAR}"Configurating system to use udev ..."  
  if [[ ${RC_DEVICE_TARBALL} = yes ]]  
  then  
  echo -e ${COLOREDSTAR}"  Populating /dev with saved device nodes ..."  
  tar -jxpf /lib/udev-state/devices.tar.bz2 -C /dev  
  evaluate_retval  
  fi  
   
  # other eeded device nodes with udev  
  seed_dev  
   
  if [ -e /proc/sys/kernel/hotplug ]  
  then  
  if [ "$(kernel_version | sed 's:\.::g' | cut -d_ -f1)" -gt "2614" ]  
  then  
  echo -e ${COLOREDSTAR}"  Using netlink for hotplug events ..."  
  echo "" > /proc/sys/kernel/hotplug  
  evaluate_retval  
  else  
  echo -e ${COLOREDSTAR}"  Setting /sbin/udevsend as hotplug agent ..."  
  echo "/sbin/udevsend" > /proc/sys/kernel/hotplug  
  evaluate_retval  
  fi  
  else  
  echo -e ${COLOREDSTAR}${COLYELLOW}"  Kernel was not compiled with hotplug support !"  
  print_status failure  
  fi  
   
  echo -e ${COLOREDSTAR}"  Starting udevd daemon ..."  
  /sbin/udevd --daemon  
  evaluate_retval  
   
  populate_udev  
97    
98   # create nodes that udev can't   ## load usbfs ##
99   echo -e ${COLOREDSTAR}"  Finializing udev configuration ..."   if kernel_supports_fs usbfs
  [[ -x /sbin/dmsetup ]] && /sbin/dmsetup mknodes &>/dev/null  
  [[ -x /sbin/lvm ]] && /sbin/lvm vgscan -P --mknodes --ignorelockingfailure &>/dev/null  
  [[ -x /sbin/evms_activate ]] && /sbin/evms_activate -q &>/dev/null  
  print_status success  
   
  # same thing as /dev/.devfsd  
  touch /dev/.udev  
  fi  
   
  ## load devpts ##  
  # devfs/udev with 2.6 has no ptys, so devpts is also needed  
  if [[ $(kernel_major_version) = 2.6 ]]  
100   then   then
101   # check if we really have devpts support   rc_print "Mounting usbfs at /proc/bus/usb ..."
102   if kernel_supports_fs devpts   mount -n -t usbfs usbfs /proc/bus/usb
103   then   evaluate_retval
  # /dev/pts maybe not exists.  
  # We only create this directory only if devfs was mounted,  
  # or it will fail as / is still mounted readonly  
  # udev has this dir already, only a sanity check for devfs  
  if [ ! -d "/dev/pts" -a -e "/dev/.devfsd" ] && is_fs_mounted devfs  
  then  
  mkdir -p /dev/pts &> /dev/null || \  
  echo "Could not create /dev/pts !"  
  fi  
   
  # now mount devpts  
  if [ -d /dev/pts ]  
  then  
  echo -e ${COLOREDSTAR}"Mounting devpts at /dev/pts ..."  
  mount -n -t devpts -o gid=4,mode=0620 devpts /dev/pts  
  evaluate_retval  
  fi  
  else  
  # devpts is not supported, give a warning  
  echo -e ${COLRED}"No devpts filesystem found ..."  
  echo -e ${COLYELLOW}"Your Kernel doesn't support the devpts filesystem."  
  echo -e ${COLYELLOW}"Devfs with a kernel-2.6.x needs devpts,"  
  echo -e ${COLYELLOW}"or no pty's are available."  
  echo -e ${COLYELLOW}"Please make shure that this is enabled in your kernel."  
  echo  
  echo -e ${COLYELLOW}"Press any key to continue ..."  
  read  
  fi  
104   fi   fi
105     ## end usbfs ##
106    
107   ### services state dir ###   ## services state dir ##
108   echo -e ${COLOREDSTAR}"Mounting tmpfs at ${svcdir} ..."   rc_print "Mounting tmpfs at ${svcdir} ..."
109   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
110   evaluate_retval   evaluate_retval
111    
# Line 264  then Line 125  then
125   if [[ ${RC_DEVICE_TARBALL} = yes ]] && \   if [[ ${RC_DEVICE_TARBALL} = yes ]] && \
126   [ -e /dev/.udev -a ! -e /dev/.devfsd -a ! -e /.bootdev ]   [ -e /dev/.udev -a ! -e /dev/.devfsd -a ! -e /.bootdev ]
127   then   then
128   echo -e ${COLOREDSTAR}"Saving /dev device nodes ..."   rc_print "Saving /dev device nodes ..."
129   ( cd /dev; tar -jclpf "/tmp/devices-$$.tar.bz2" * &> /dev/null )   ( cd /dev; tar -jclpf "/tmp/devices-$$.tar.bz2" * &> /dev/null )
130   mv -f "/tmp/devices-$$.tar.bz2" /lib/udev-state/devices.tar.bz2   mv -f "/tmp/devices-$$.tar.bz2" /lib/udev/state/devices.tar.bz2
131   evaluate_retval   evaluate_retval
132   fi   fi
133    
134     # stop device management
135     stop_devicemanager
136  fi  fi
137    
138    
139  if [ "$runlevel" = "" ]  if [ "$runlevel" = "" ]
140  then  then
141   echo "Usage: $0 <runlevel>" >&2   rc_echo "Usage: $0 <runlevel>" >&2
142   exit 1   exit 1
143  fi  fi
144    
# Line 284  previous=$PREVLEVEL Line 148  previous=$PREVLEVEL
148    
149  if [ ! -d $rc_base/rc$runlevel.d ]  if [ ! -d $rc_base/rc$runlevel.d ]
150  then  then
151   echo "$rc_base/rc$runlevel.d does not exist"   rc_echo "$rc_base/rc$runlevel.d does not exist"
152   exit 1   exit 1
153  fi  fi
154    
# Line 304  then Line 168  then
168   if [ ! -f $prev_start ] && [ ! -f $sysinit_start ]   if [ ! -f $prev_start ] && [ ! -f $sysinit_start ]
169   then   then
170   $WARNING   $WARNING
171   echo "$i can't be executed because it was"   rc_echo "$i can't be executed because it was"
172   echo "not started in the previous runlevel ($previous)"   rc_echo "not started in the previous runlevel ($previous)"
173   $NORMAL   $NORMAL
174   continue   continue
175   fi   fi

Legend:
Removed from v.425  
changed lines
  Added in v.1356