Magellan Linux

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

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

revision 605 by niro, Sat Nov 10 19:56:21 2007 UTC revision 1513 by niro, Wed Sep 7 17:42:43 2011 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.2 2007-11-10 19:56:21 niro Exp $  # $Id$
3    
4  # loads given kernel modules  # loads given kernel modules
5  load_kernel_modules()  load_kernel_modules()
# Line 45  check_drives() Line 45  check_drives()
45   then   then
46   echo -e "Magellan boot device found."   echo -e "Magellan boot device found."
47   BOOT_DEVICE="${dev}"   BOOT_DEVICE="${dev}"
48   FSTYPE=${fs}   FSTYPE="${fs}"
49   break   break
50   fi   fi
51   fi   fi
# 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  NOPATA=no  DOFB=no
60    DOPATA=yes
61    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    mount -t tmpfs tmpfs /dev -o rw,mode=0644,size=1024
74    
75    # install all busybox applets
76    busybox --install -s
77    
78  # silencio  # silencio
79  echo 0 > /proc/sys/kernel/printk  echo 0 > /proc/sys/kernel/printk
# Line 71  echo 0 > /proc/sys/kernel/printk Line 82  echo 0 > /proc/sys/kernel/printk
82  for i in $(cat /proc/cmdline)  for i in $(cat /proc/cmdline)
83  do  do
84   case "${i}" in   case "${i}" in
85   doscsi)   doscsi) DOSCSI=yes;;
86   DOSCSI=yes   noscsi) DOSCSI=no;;
87   ;;   dousb) DOUSB=yes;;
88   dousb)   nousb) DOUSB=no;;
89   DOUSB=yes   dosata) DOSATA=yes ;;
90   ;;   nosata) DOSATA=no ;;
91   dosata)   dofb) DOFB=yes;;
92   DOSATA=yes   nofb) DOFB=no;;
93   ;;   dopata) DOPATA=yes;;
94   nopata)   nopata) DOPATA=no;;
95   NOPATA=yes   rootfs=*) FORCED_ROOTFS="${i#*=}";;
96   ;;   init=*) INITEXEC="${i#*=}";;
97     break) BREAK_ENABLED=yes ;;
98     unionfs) UNIONFS=yes;;
99     unionfs_file=*) UNIONFS_FILE="${i#*=}";;
100     rootdelay=*) ROOTDELAY="${i#*=}";;
101   esac   esac
102  done  done
103    
104  # now load all needed modules  # now load all needed modules
105    [ "${DOFB}" = "yes" ] && load_kernel_modules "framebuffer"
106  load_kernel_modules "generic"  load_kernel_modules "generic"
107  [ "${NOPATA}" != "yes" ] && load_kernel_modules "pata"  [ "${DOPATA}" = "yes" ] && load_kernel_modules "pata"
108  [ "${DOSCSI}" = "yes" ] && load_kernel_modules "scsi"  [ "${DOSCSI}" = "yes" ] && load_kernel_modules "scsi"
109  [ "${DOUSB}" = "yes" ] && load_kernel_modules "usb"  [ "${DOUSB}" = "yes" ] && load_kernel_modules "usb"
110  [ "${DOSATA}" = "yes" ] && load_kernel_modules "sata"  [ "${DOSATA}" = "yes" ] && load_kernel_modules "sata"
111    
112    # populate dev
113    mdev -s
114    # handle hotplug events properly
115    echo /sbin/mdev > /proc/sys/kernel/hotplug
116    
117  # create newroot mount point  # create newroot mount point
118  mkdir -p /sysroot  mkdir -p /sysroot
119  # fake a new filesystem (also needed with an initramfs!!)  # fake a new filesystem (also needed with an initramfs!!)
# Line 109  if [ "${DOUSB}" = "yes" ]; then Line 130  if [ "${DOUSB}" = "yes" ]; then
130   sleep 8   sleep 8
131  fi  fi
132    
133    # respect rootdelay kernel param
134    if [ ! -z "${ROOTDELAY}" ]; then
135     echo "-- Requested a rootdelay of ${ROOTDELAY} seconds ..."
136     sleep ${ROOTDELAY}
137    fi
138    
139  # searching cdrom with cdid  # searching cdrom with cdid
140  BOOT_DEVICE=""  BOOT_DEVICE=""
141  FSTYPE=""  FSTYPE=""
# Line 117  echo "Searching for a boot device ..." Line 144  echo "Searching for a boot device ..."
144    
145  # searching usbstick  # searching usbstick
146  if [ "${DOUSB}" = "yes" ]; then  if [ "${DOUSB}" = "yes" ]; then
147   check_drives "/dev/sd*" "vfat"   ROOTFS="vfat"
148   check_drives "/dev/sg*" "vfat"   [[ ! -z ${FORCED_ROOTFS} ]] && ROOTFS="${FORCED_ROOTFS}"
149     check_drives "/dev/sd*" "${ROOTFS}"
150     check_drives "/dev/sg*" "${ROOTFS}"
151  fi  fi
152    
153  # for cdrom_device in $CDROM_LIST (ide)  # for cdrom_device in $CDROM_LIST (ide)
154  check_drives "/dev/cdroms/*" iso9660  ROOTFS="iso9660"
155  check_drives "/dev/hd*" iso9660  [[ ! -z ${FORCED_ROOTFS} ]] && ROOTFS="${FORCED_ROOTFS}"
156    check_drives "/dev/cdroms/*" "${ROOTFS}"
157    check_drives "/dev/hd*" "${ROOTFS}"
158    
159  # scsi cdroms  # scsi cdroms
160  if [ "${DOSCSI}" = "yes" ] || [ "${DOSATA}" = "yes" ]; then  if [ "${DOSCSI}" = "yes" ] || [ "${DOSATA}" = "yes" ]; then
161   check_drives "/dev/sr*" iso9660   ROOTFS="iso9660"
162   check_drives "/dev/sg*" iso9660   [[ ! -z ${FORCED_ROOTFS} ]] && ROOTFS="${FORCED_ROOTFS}"
163   check_drives "/dev/scd*" iso9660   check_drives "/dev/sr*" "${ROOTFS}"
164     check_drives "/dev/sg*" "${ROOTFS}"
165     check_drives "/dev/scd*" "${ROOTFS}"
166  fi  fi
167    
168  # mount our rootfs from cdrom  # mount our rootfs from cdrom
# Line 150  else Line 183  else
183   echo -e "Mounting squashfs system image ..."   echo -e "Mounting squashfs system image ..."
184   echo   echo
185   [ ! -e /dev/loop0 ] && mknod /dev/loop0 b 7 0   [ ! -e /dev/loop0 ] && mknod /dev/loop0 b 7 0
186   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}"
187    
188     # mount unionfs if enabled
189     if [[ ${UNIONFS} = yes ]]
190     then
191     echo -e "Mounting writeable cdbuffer (unionfs) ..."
192    
193     # default setting
194     CLOOPMOUNTDIR="/sysroot/mnt/unionfs"
195     [[ -z ${UNIONFS_FILE} ]] && UNIONFS_FILE="/sysroot/mnt/cdrom/unionfs"
196    
197     [[ ! -d /sysroot/mnt/unionfs ]] && install -d /sysroot/mnt/unionfs
198     mount -t unionfs dirs=${UNIONFS_FILE}=rw:/sysroot/mnt/cloop=ro ${CLOOPMOUNTDIR}
199     fi
200    
201   # symlinking cloop rootfs to /mnt as newroot   # symlinking cloop rootfs to /mnt as newroot
202   cd /sysroot   cd /sysroot
203    
204   for x in bin sbin lib lib64 boot usr opt   for x in bin sbin lib lib64 boot usr opt
205   do   do
206   [ -d mnt/cloop/${x} ] && ln -s mnt/cloop/${x} ${x}   [ -d ${CLOOPMOUNTDIR/\/sysroot\//}/${x} ] && ln -s ${CLOOPMOUNTDIR/\/sysroot\//}/${x} ${x}
207   done   done
208   mkdir -p initrd proc tmp sys var/tmp dev media   mkdir -p initrd proc tmp sys var/tmp dev media
209    
210   # make /sysroot/dev/console & /mnt/dev/null   # make /sysroot/dev/console & /mnt/dev/null
211   [ ! -e /sysroot/dev/console ] && mknod -m 600 /sysroot/dev/console c 5 1   [ ! -e /sysroot/dev/console ] && mknod -m 600 /sysroot/dev/console c 5 1
212   [ ! -e /sysroot/dev/null ] && mknod -m 666 /sysroot/dev/null c 1 3   [ ! -e /sysroot/dev/null ] && mknod -m 666 /sysroot/dev/null c 1 3
213     # only to be safe and to have a log channel
214     [ ! -e /sysroot/dev/tty ] && mknod /sysroot/dev/tty c 5 0
215     # busybox needs this one
216     [ ! -e /sysroot/dev/tty5 ] && mknod /sysroot/dev/tty5 c 4 5
217    
218   (cd /sysroot/mnt/cloop; cp -a etc root home var /sysroot)   (cd ${CLOOPMOUNTDIR}; cp -a etc root home var /sysroot)
219    
220     # ensure that /sysroot/linurc exists
221     [ ! -e /sysroot/linuxrc ] && ln -snf ${INITEXEC} /sysroot/linuxrc
222    
223   # ensure the right permissions   # ensure the right permissions
224   chmod 1777 /sysroot/tmp   chmod 1777 /sysroot/tmp
# Line 174  fi Line 227  fi
227    
228  cd /  cd /
229    
230    # unset hotplug event-manager
231    echo > /proc/sys/kernel/hotplug
232    
233  # de-silencio  # de-silencio
234  echo 3 > /proc/sys/kernel/printk  echo 3 > /proc/sys/kernel/printk
235    
236    if [[ ${BREAK_ENABLED} = yes ]]
237    then
238     echo "-- Break requested, type 'exit' to resume operation ..."
239     ash
240    fi
241    
242  echo "-- Switching to real sysroot ..."  echo "-- Switching to real sysroot ..."
243    umount /dev
244  umount /sys  umount /sys
245  umount /proc  umount /proc
246    
247  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.605  
changed lines
  Added in v.1513