Magellan Linux

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

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

revision 3 by niro, Mon Dec 13 22:52:07 2004 UTC revision 1095 by niro, Wed Jul 14 13:11:03 2010 UTC
# Line 1  Line 1 
1  #!/bin/bash  #!/bin/bash
2    # $Id$
3    
4  source /etc/sysconfig/rc  source /etc/conf.d/rc
5  source $rc_functions  source ${rc_functions}
 source /etc/mageversion  
6    
7    # get mage version
8    MAGEVER="$(< /etc/mageversion)"
9    
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  #some needed functions functions  # override devicemanager helper functions
14  populate_udev() {  if [[ ${RC_DEVICEMANAGER} = udev ]] && [[ -f ${rc_base}/init.d/udev ]]
15   /sbin/udevstart  then
16     source ${rc_base}/init.d/udev
17   #not provided by sysfs but needed  
18   ln -snf /proc/self/fd /dev/fd  elif [[ ${RC_DEVICEMANAGER} = mdev ]] && [[ -f source ${rc_base}/init.d/mdev ]]
19   ln -snf fd/0 /dev/stdin  then
20   ln -snf fd/1 /dev/stdout   source ${rc_base}/init.d/mdev
21   ln -snf fd/2 /dev/stderr  fi
  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  
 }  
22    
23  trap "" INT QUIT TSTP  trap "" INT QUIT TSTP
24    
25  [ "$1" != "" ] && runlevel=$1  [ "$1" != "" ] && runlevel=$1
26    
27  if [ "$runlevel" = "sysinit" ]  if [[ $runlevel = sysinit ]]
28  then  then
29   echo   echo
30   echo -e "${COLGREEN}Starting ${COLBLUE}MAGELLAN (v${MAGEVER}) ${COLGREEN}Linux${COLDEFAULT}"   echo -e "${COLGREEN}Starting ${COLBLUE}MAGELLAN (v${MAGEVER}) ${COLGREEN}Linux${COLDEFAULT}"
31   echo -e "\"I'm not a Gentoo-System, I'm a pure LFS\""   echo -e "Copyright 2001-2010 Niels Rogalla; http://magellan-linux.net"
32   echo   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 ..."   echo -e ${COLOREDSTAR}"Mounting proc file system ..."
# Line 49  then Line 40  then
40   evaluate_retval   evaluate_retval
41   fi   fi
42    
43   #set default verbose level for kernel messages   # set default verbose level for kernel messages
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 ]   echo -e ${COLOREDSTAR}"Mounting sysfs file system ..."
51   then   mount -n -t sysfs sysfs /sys
52   echo -e ${COLOREDSTAR}"Mounting sysfs file system ..."   evaluate_retval
53   mount -t sysfs none /sys   else
54   evaluate_retval   echo -e ${COLORED}"Fatal: mountpoint /sys missing ..."
55   else   echo -e ${COLYELLOW}"Please create the directory /sys (mkdir -p /sys)."
56   echo -e ${COLORED}"Fatal: mountpoint /sys missing ..."   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    
  ## load devfs ##  
  #load devfs only with a 2.4 kernel or its really wanted with a 2.6  
  if [ "$(kernel_major_version)" == "2.4" -o "${RC_USED_DEV}" == "devfs" ]  
  then  
  # start devfsd daemon, needed for bootsplash;  
  # no use of '/etc/rc.d/init.d/devfs' anymore  
  # check if devfs was mounted by the kernel,  
  # if not mount it (mbuild_livecd needs this one)  
  if [ ! -e /dev/.devfsd ]  
  then  
  echo -e ${COLOREDSTAR}"Mounting devfs file system ..."  
  mount -t devfs devfs /dev  
  evaluate_retval  
  fi  
59    
60     #### load udev|mdev| ####
61   if [ -e /dev/.devfsd ]   start_devicemanager
62   then   ## end udev|mdev ##
  echo -e ${COLOREDSTAR}"Starting devfsd ..."  
  ## directory /lib/dev-state !must! exists ##  
  /sbin/devfsd /dev &> /dev/null  
  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  
  fi  
63    
  fi  
64    
65   #### load udev ####   ## load devpts ##
66   #load udev only with a 2.6 kernel   # devfs/udev with 2.6 has no ptys, so devpts is also needed
67   if [ "$(kernel_major_version)" == "2.6" -a "${RC_USED_DEV}" == "udev" ]   # check if we really have devpts support
68     if kernel_supports_fs devpts
69   then   then
70  # #first at all unmount devfs if this was loaded by the kernel   # /dev/pts maybe not exists.
71  # DEVFS_MOUNTED="$(cat /proc/mounts | grep devfs | cut -d ' ' -f3)"   # We only create this directory only if devfs was mounted,
72  # if [ "${DEVFS_MOUNTED}" == "devfs" ]   # or it will fail as / is still mounted readonly
73  # then   # udev has this dir already, only a sanity check for devfs
74  # umount -n /dev \   if [ ! -d "/dev/pts" -a -e "/dev/.devfsd" ] && is_fs_mounted devfs
 # && echo "debug: unmounted devfs successfully" \  
 # || echo "debug: unmounting devfs failed"  
 # fi  
   
  #create a ramdisk for populating udev  
  echo -e ${COLOREDSTAR}"Mounting ramfs at /dev ..."  
  mount -n -t ramfs none /dev  
  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" ]  
75   then   then
76   echo -e ${COLOREDSTAR}"  Populating /dev with with device nodes ..."   mkdir -p /dev/pts &> /dev/null || \
77   tar -jxpf /lib/udev-state/devices.tar.bz2 -C /dev   echo "Could not create /dev/pts !"
  evaluate_retval  
78   fi   fi
79    
80   #now load udev   # now mount devpts
81   populate_udev   if [ -d /dev/pts ]
   
  #if hotplug support exists in the kernel use it to manage udev  
  if [ -e /proc/sys/kernel/hotplug -a -x /sbin/hotplug ]  
82   then   then
83   echo -e ${COLOREDSTAR}"  Using /sbin/hotplug for udev management ..."   echo -e ${COLOREDSTAR}"Mounting devpts at /dev/pts ..."
84     mount -n -t devpts -o gid=4,mode=0620 devpts /dev/pts
85   elif [ -e /proc/sys/kernel/hotplug ]   evaluate_retval
  then  
  echo -e ${COLOREDSTAR}"  Setting /sbin/udev as hotplug agent ..."  
  echo "/sbin/udev" > /proc/sys/kernel/hotplug  
  else  
  echo -e ${COLOREDSTAR}${COLYELLOW}"  Kernel was not compiled with hotplug support !"  
86   fi   fi
87   evaluate_retval   else
88     # devpts is not supported, give a warning
89     echo -e ${COLRED}"No devpts filesystem found ..."
90     echo -e ${COLYELLOW}"Your Kernel doesn't support the devpts filesystem."
91     echo -e ${COLYELLOW}"Devfs/Udev with a kernel-2.6.x needs devpts,"
92     echo -e ${COLYELLOW}"or no pty's are available."
93     echo -e ${COLYELLOW}"Please make sure that this is enabled in your kernel."
94     echo
95     echo -e ${COLYELLOW}"Press any key to continue ..."
96     read
97   fi   fi
98     ## end devpts ##
99    
100    
101   ## load devpts ##   ## load usbfs ##
102   # devfs/udev with 2.6 has no ptys, so devpts is also needed   if kernel_supports_fs usbfs
  if [ $(kernel_major_version) == 2.6 ]  
103   then   then
104   # check if we really have devpts support   echo -e ${COLOREDSTAR}"Mounting usbfs at /proc/bus/usb ..."
105   DEVPTS_CHECK="$(cat /proc/filesystems | grep devpts | cut -d $'\t' -f2)"   mount -n -t usbfs usbfs /proc/bus/usb
106   DEVFS_MOUNTED="$(cat /proc/mounts | grep devfs | cut -d ' ' -f3)"   evaluate_retval
  if [ "${DEVPTS_CHECK}" == devpts ]  
  then  
  # /dev/pts maybe not exists.  
  # We only create this directory only if devfs was mounted,  
  # or it will fail as / is still mounted readonly  
  if [ ! -d "/dev/pts" \  
  -a -e "/dev/.devfsd" \  
  -a  "${DEVFS_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 none /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  
107   fi   fi
108     ## end usbfs ##
109    
110   ### services state dir ###   ## services state dir ##
111   echo -e ${COLOREDSTAR}"Mounting tmpfs at ${svcdir} ..."   echo -e ${COLOREDSTAR}"Mounting tmpfs at ${svcdir} ..."
112   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
113   evaluate_retval   evaluate_retval
114    
115   #load bootsplash   # load bootsplash
116   splash "rc_init" "${runlevel}"   splash "rc_init" "${runlevel}"
117  fi  fi
118    
119    
120    if [[ $runlevel = 0 ]] || [[ $runlevel = 6 ]]
 if [ "$runlevel" == "0" ]  
121  then  then
122     # load bootsplash
  #load bootsplash  
123   splash "rc_init" "${runlevel}"   splash "rc_init" "${runlevel}"
124    
   
125   # if requested save devices to a device tarball before halt   # if requested save devices to a device tarball before halt
126   # only for kernels >=2.6 *and* udev   # only for kernels >=2.6 *and* udev
127   # make shure that udev is mounted but *not* devfs --> /dev/.devfsd   # make shure that udev is mounted but *not* devfs --> /dev/.devfsd
128   if [ "${RC_DEVICE_TARBALL}" = "yes" \   if [[ ${RC_DEVICE_TARBALL} = yes ]] && \
129   -a -e /dev/.udev \   [ -e /dev/.udev -a ! -e /dev/.devfsd -a ! -e /.bootdev ]
  -a ! -e /dev/.devfsd ]  
130   then   then
131   echo -e ${COLOREDSTAR}"Saving /dev device nodes ..."   echo -e ${COLOREDSTAR}"Saving /dev device nodes ..."
132   cd /dev   ( cd /dev; tar -jclpf "/tmp/devices-$$.tar.bz2" * &> /dev/null )
133   tar -jclpf "/tmp/devices-$$.tar.bz2" * &> /dev/null   mv -f "/tmp/devices-$$.tar.bz2" /lib/udev/state/devices.tar.bz2
  mv -f "/tmp/devices-$$.tar.bz2" /lib/udev-state/devices.tar.bz2  
134   evaluate_retval   evaluate_retval
135   fi   fi
 fi  
   
 if [ "$runlevel" == "6" ]  
 then  
   
  #load bootsplash  
  splash "rc_init" "${runlevel}"  
136    
137   # if requested save devices to a device tarball before halt   # stop udev|mdev now
138   # only for kernels >=2.6 *and* udev   stop_devicemanager
  # make shure that udev is mounted but *not* devfs --> /dev/.devfsd  
  if [ "${RC_DEVICE_TARBALL}" = "yes" \  
  -a -e /dev/.udev \  
  -a ! -e /dev/.devfsd ]  
  then  
  echo -e ${COLOREDSTAR}"Saving /dev device nodes ..."  
  cd /dev  
  tar -jclpf "/tmp/devices-$$.tar.bz2" * &> /dev/null  
  mv -f "/tmp/devices-$$.tar.bz2" /lib/udev-state/devices.tar.bz2  
  cd ..  
  evaluate_retval  
  fi  
139  fi  fi
140    
141    
142  if [ "$runlevel" = "" ]  if [ "$runlevel" = "" ]
143  then  then
144   echo "Usage: $0 <runlevel>" >&2   echo "Usage: $0 <runlevel>" >&2
145   exit 1   exit 1
146  fi  fi
147    
148    
149  previous=$PREVLEVEL  previous=$PREVLEVEL
150  [ "$previous" = "" ] && previous=N  [ "$previous" = "" ] && previous=N
151    

Legend:
Removed from v.3  
changed lines
  Added in v.1095