Magellan Linux

Diff of /trunk/mkinitrd-magellan/livecd/linuxrc.sh

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

revision 673 by niro, Fri Jan 25 11:12:52 2008 UTC revision 1793 by niro, Mon Apr 2 11:40:49 2012 UTC
# Line 1  Line 1 
1  #!/bin/sh  #!/bin/sh
2  # $Header: /home/cvsd/magellan-cvs/magellan-src/mkinitrd-magellan/livecd/linuxrc.sh,v 1.5 2008-01-25 11:12:52 niro Exp $  # $Id$
3    
4  # loads given kernel modules  # loads given kernel modules
5  load_kernel_modules()  load_kernel_modules()
# Line 55  check_drives() Line 55  check_drives()
55  ## some defaults ##  ## some defaults ##
56  DOSCSI=no  DOSCSI=no
57  DOUSB=no  DOUSB=no
58  DOSATA=no  DOSATA=yes
59  DOFB=no  DOFB=no
60  DOPATA=no  DOPATA=yes
61  FORCED_ROOTFS=""  FORCED_ROOTFS=""
62    INITEXEC="/sbin/init"
63    BREAK_ENABLED=no
64    UNIONFS=no
65    UNIONFS_FILE=""
66    CLOOPMOUNTDIR="/sysroot/mnt/cloop"
67    
68  ## starts here ##  ## starts here ##
69    
70  # mount essential filesystems  # mount essential filesystems
71  mount -t proc proc /proc  mount -t proc proc /proc
72  mount -t sysfs sysfs /sys  mount -t sysfs sysfs /sys
73    if [[ -z $(grep '[[:space:]]/dev[[:space:]]' /proc/mounts | cut -d ' ' -f2) ]]
74    then
75     # many video drivers needed exec access
76     fstype=ramfs
77     # tmpfs was suggested by Greg Kroah-Hartman
78     [[ $(grep '[[:space:]]tmpfs' /proc/filesystems | cut -d $'\t' -f2) = tmpfs ]] && fstype=tmpfs
79     # mount devtmpfs if supported
80     [[ $(grep '[[:space:]]devtmpfs' /proc/filesystems | cut -d $'\t' -f2) = devtmpfs ]] && fstype=devtmpfs
81     mount -t ${fstype} dev /dev -o exec,nosuid,mode=0755,size=10M
82    fi
83    
84    # install all busybox applets
85    busybox --install -s
86    
87  # silencio  # silencio
88  echo 0 > /proc/sys/kernel/printk  echo 0 > /proc/sys/kernel/printk
# Line 73  echo 0 > /proc/sys/kernel/printk Line 91  echo 0 > /proc/sys/kernel/printk
91  for i in $(cat /proc/cmdline)  for i in $(cat /proc/cmdline)
92  do  do
93   case "${i}" in   case "${i}" in
94   doscsi)   doscsi) DOSCSI=yes;;
95   DOSCSI=yes   noscsi) DOSCSI=no;;
96   ;;   dousb) DOUSB=yes;;
97   dousb)   nousb) DOUSB=no;;
98   DOUSB=yes   dosata) DOSATA=yes ;;
99   ;;   nosata) DOSATA=no ;;
100   dosata)   dofb) DOFB=yes;;
101   DOSATA=yes   nofb) DOFB=no;;
102   ;;   dopata) DOPATA=yes;;
103   dofb)   nopata) DOPATA=no;;
104   DOFB=yes   rootfs=*) FORCED_ROOTFS="${i#*=}";;
105   ;;   init=*) INITEXEC="${i#*=}";;
106   dopata)   break) BREAK_ENABLED=yes ;;
107   DOPATA=yes   unionfs) UNIONFS=yes;;
108   ;;   unionfs_file=*) UNIONFS_FILE="${i#*=}";;
109   rootfs=*)   rootdelay=*) ROOTDELAY="${i#*=}";;
  FORCED_ROOTFS="${i#*=}"  
  ;;  
110   esac   esac
111  done  done
112    
# Line 102  load_kernel_modules "generic" Line 118  load_kernel_modules "generic"
118  [ "${DOUSB}" = "yes" ] && load_kernel_modules "usb"  [ "${DOUSB}" = "yes" ] && load_kernel_modules "usb"
119  [ "${DOSATA}" = "yes" ] && load_kernel_modules "sata"  [ "${DOSATA}" = "yes" ] && load_kernel_modules "sata"
120    
121    # populate dev
122    mdev -s
123    # handle hotplug events properly
124    echo /sbin/mdev > /proc/sys/kernel/hotplug
125    
126  # create newroot mount point  # create newroot mount point
127  mkdir -p /sysroot  mkdir -p /sysroot
128  # fake a new filesystem (also needed with an initramfs!!)  # fake a new filesystem (also needed with an initramfs!!)
# Line 118  if [ "${DOUSB}" = "yes" ]; then Line 139  if [ "${DOUSB}" = "yes" ]; then
139   sleep 8   sleep 8
140  fi  fi
141    
142    # respect rootdelay kernel param
143    if [ ! -z "${ROOTDELAY}" ]; then
144     echo "-- Requested a rootdelay of ${ROOTDELAY} seconds ..."
145     sleep ${ROOTDELAY}
146    fi
147    
148  # searching cdrom with cdid  # searching cdrom with cdid
149  BOOT_DEVICE=""  BOOT_DEVICE=""
150  FSTYPE=""  FSTYPE=""
# Line 127  echo "Searching for a boot device ..." Line 154  echo "Searching for a boot device ..."
154  # searching usbstick  # searching usbstick
155  if [ "${DOUSB}" = "yes" ]; then  if [ "${DOUSB}" = "yes" ]; then
156   ROOTFS="vfat"   ROOTFS="vfat"
157   [[ -n ${FORCED_ROOTFS} ]] && ROOTFS="${FORCED_ROOTFS}"   [[ ! -z ${FORCED_ROOTFS} ]] && ROOTFS="${FORCED_ROOTFS}"
158   check_drives "/dev/sd*" "${ROOTFS}"   check_drives "/dev/sd*" "${ROOTFS}"
159   check_drives "/dev/sg*" "${ROOTFS}"   check_drives "/dev/sg*" "${ROOTFS}"
160  fi  fi
161    
162  # for cdrom_device in $CDROM_LIST (ide)  # for cdrom_device in $CDROM_LIST (ide)
163  ROOTFS="iso9660"  ROOTFS="iso9660"
164  [[ -n ${FORCED_ROOTFS} ]] && ROOTFS="${FORCED_ROOTFS}"  [[ ! -z ${FORCED_ROOTFS} ]] && ROOTFS="${FORCED_ROOTFS}"
165  check_drives "/dev/cdroms/*" "${ROOTFS}"  check_drives "/dev/cdroms/*" "${ROOTFS}"
166  check_drives "/dev/hd*" "${ROOTFS}"  check_drives "/dev/hd*" "${ROOTFS}"
167    
168  # scsi cdroms  # scsi cdroms
169  if [ "${DOSCSI}" = "yes" ] || [ "${DOSATA}" = "yes" ]; then  if [ "${DOSCSI}" = "yes" ] || [ "${DOSATA}" = "yes" ]; then
170   ROOTFS="iso9660"   ROOTFS="iso9660"
171   [[ -n ${FORCED_ROOTFS} ]] && ROOTFS="${FORCED_ROOTFS}"   [[ ! -z ${FORCED_ROOTFS} ]] && ROOTFS="${FORCED_ROOTFS}"
172   check_drives "/dev/sr*" "${ROOTFS}"   check_drives "/dev/sr*" "${ROOTFS}"
173   check_drives "/dev/sg*" "${ROOTFS}"   check_drives "/dev/sg*" "${ROOTFS}"
174   check_drives "/dev/scd*" "${ROOTFS}"   check_drives "/dev/scd*" "${ROOTFS}"
# Line 165  else Line 192  else
192   echo -e "Mounting squashfs system image ..."   echo -e "Mounting squashfs system image ..."
193   echo   echo
194   [ ! -e /dev/loop0 ] && mknod /dev/loop0 b 7 0   [ ! -e /dev/loop0 ] && mknod /dev/loop0 b 7 0
195   mount -o loop,ro -t squashfs /sysroot/mnt/cdrom/livecdrootfs.sqsh /sysroot/mnt/cloop   mount -o loop,ro -t squashfs /sysroot/mnt/cdrom/livecdrootfs.sqsh "${CLOOPMOUNTDIR}"
196    
197     # mount unionfs if enabled
198     if [[ ${UNIONFS} = yes ]]
199     then
200     echo -e "Mounting writeable cdbuffer (unionfs) ..."
201    
202     # default setting
203     CLOOPMOUNTDIR="/sysroot/mnt/unionfs"
204     [[ -z ${UNIONFS_FILE} ]] && UNIONFS_FILE="/sysroot/mnt/cdrom/unionfs"
205    
206     [[ ! -d /sysroot/mnt/unionfs ]] && install -d /sysroot/mnt/unionfs
207     mount -t unionfs dirs=${UNIONFS_FILE}=rw:/sysroot/mnt/cloop=ro ${CLOOPMOUNTDIR}
208     fi
209    
210   # symlinking cloop rootfs to /mnt as newroot   # symlinking cloop rootfs to /mnt as newroot
211   cd /sysroot   cd /sysroot
212    
213   for x in bin sbin lib lib64 boot usr opt   for x in bin sbin lib lib64 boot usr opt
214   do   do
215   [ -d mnt/cloop/${x} ] && ln -s mnt/cloop/${x} ${x}   [ -d ${CLOOPMOUNTDIR/\/sysroot\//}/${x} ] && ln -s ${CLOOPMOUNTDIR/\/sysroot\//}/${x} ${x}
216   done   done
217   mkdir -p initrd proc tmp sys var/tmp dev media   mkdir -p initrd proc tmp sys var/tmp dev media
218    
219   # make /sysroot/dev/console & /mnt/dev/null   # use devtmpfs if supported
220   [ ! -e /sysroot/dev/console ] && mknod -m 600 /sysroot/dev/console c 5 1   if [ "$(grep devtmpfs /proc/filesystems | cut -d$'\t' -f2)" = "devtmpfs" ]
221   [ ! -e /sysroot/dev/null ] && mknod -m 666 /sysroot/dev/null c 1 3   then
222     mount -t devtmpfs dev /sysroot/dev
223     else
224     # make /sysroot/dev/console & /mnt/dev/null
225     [ ! -e /sysroot/dev/console ] && mknod -m 600 /sysroot/dev/console c 5 1
226     [ ! -e /sysroot/dev/null ] && mknod -m 666 /sysroot/dev/null c 1 3
227     # only to be safe and to have a log channel
228     [ ! -e /sysroot/dev/tty ] && mknod /sysroot/dev/tty c 5 0
229     # busybox needs this one
230     [ ! -e /sysroot/dev/tty5 ] && mknod /sysroot/dev/tty5 c 4 5
231     fi
232    
233     (cd ${CLOOPMOUNTDIR}; cp -a etc root home var /sysroot)
234    
235   (cd /sysroot/mnt/cloop; cp -a etc root home var /sysroot)   # ensure that /sysroot/linurc exists
236     [ ! -e /sysroot/linuxrc ] && ln -snf ${INITEXEC} /sysroot/linuxrc
237    
238   # ensure the right permissions   # ensure the right permissions
239   chmod 1777 /sysroot/tmp   chmod 1777 /sysroot/tmp
# Line 189  fi Line 242  fi
242    
243  cd /  cd /
244    
245    # unset hotplug event-manager
246    echo > /proc/sys/kernel/hotplug
247    
248  # de-silencio  # de-silencio
249  echo 3 > /proc/sys/kernel/printk  echo 3 > /proc/sys/kernel/printk
250    
251    if [[ ${BREAK_ENABLED} = yes ]]
252    then
253     echo "-- Break requested, type 'exit' to resume operation ..."
254     ash
255    fi
256    
257  echo "-- Switching to real sysroot ..."  echo "-- Switching to real sysroot ..."
258  umount /sys  mount --move /dev /sysroot/dev
259  umount /proc  mount --move /sys /sysroot/sys
260    mount --move /proc /sysroot/proc
261    
262  exec run-init /sysroot /sbin/init $@ </sysroot/dev/console >/sysroot/dev/console  exec run-init /sysroot ${INITEXEC} $@ </sysroot/dev/console >/sysroot/dev/console

Legend:
Removed from v.673  
changed lines
  Added in v.1793