Magellan Linux

Diff of /trunk/mlivecdbuild/files/linuxrc

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

revision 27 by niro, Wed Jan 5 05:36:10 2005 UTC revision 96 by niro, Fri Jul 1 16:41:55 2005 UTC
# Line 35  fi Line 35  fi
35  populate_udev()  populate_udev()
36  {  {
37   /sbin/udevstart   /sbin/udevstart
38    
39   #not provided by sysfs but needed   # not provided by sysfs but needed
40   ln -snf /proc/self/fd /dev/fd   ln -snf /proc/self/fd /dev/fd
41   ln -snf fd/0 /dev/stdin   ln -snf fd/0 /dev/stdin
42   ln -snf fd/1 /dev/stdout   ln -snf fd/1 /dev/stdout
# Line 44  populate_udev() Line 44  populate_udev()
44   ln -snf /proc/kcore /dev/core   ln -snf /proc/kcore /dev/core
45   ln -snf /proc/asound/oss/sndstat /dev/sndstat   ln -snf /proc/asound/oss/sndstat /dev/sndstat
46    
47   #create problematic directories   # create problematic directories
48   mkdir -p /dev/pts   mkdir -p /dev/pts
49   mkdir -p /dev/shm   mkdir -p /dev/shm
50    
51   #same as /dev/.devfsd   #same as /dev/.devfsd
52   touch /dev/.udev   touch /dev/.udev
53    
54   return 0   return 0
55  }  }
56    
# Line 86  scan_kernel_modules() Line 86  scan_kernel_modules()
86   echo -e ${COLWHITE}"--      ${i}"${COLDEFAULT}   echo -e ${COLWHITE}"--      ${i}"${COLDEFAULT}
87   fi   fi
88   else   else
89   echo -e ${COLWHITE}"--      ${i} not found."${COLDEFAULT}   echo -e ${COLWHITE}"--      ${i} not found."${COLDEFAULT}
90   fi   fi
91   done   done
92  }  }
# Line 113  check_drives() Line 113  check_drives()
113   media_id_ok=$?   media_id_ok=$?
114   fi   fi
115   umount /mnt/mnt/tmp   umount /mnt/mnt/tmp
116    
117   if [ "${media_id_ok}" -eq 0 ]   if [ "${media_id_ok}" -eq 0 ]
118   then   then
119   echo -e ${COLOREDSTAR}"${COLGREEN}Magellan boot device found.${COLDEFAULT}"   echo -e ${COLOREDSTAR}"${COLGREEN}Magellan boot device found.${COLDEFAULT}"
# Line 126  check_drives() Line 126  check_drives()
126    
127  }  }
128    
129  #first of all read in kernel-config params  # first of all read in kernel-config params
130  . /etc/conf.d/kernel  . /etc/conf.d/kernel
131    
132  #remount / writeable  # remount / writeable
133  mount -n -oremount,rw /dev/ram0 / -t cramfs  mount -n -oremount,rw /dev/ram0 / -t cramfs
134    
135  #mount proc  # mount proc
136  if [ ! -e /proc/mounts ]  if [ ! -e /proc/mounts ]
137  then  then
138   [ ! -d "/proc" ] && mkdir -p /proc   [ ! -d "/proc" ] && mkdir -p /proc
# Line 140  then Line 140  then
140   mount -t proc proc /proc   mount -t proc proc /proc
141  fi  fi
142    
143  #kernel 2.6-x needs sysfs  # kernel 2.6-x needs sysfs
144  if [ "$(kernel_major_version)" = "2.6" ]  if [ "$(kernel_major_version)" = "2.6" ]
145  then  then
146   [ ! -d /sys ] && mkdir /sys   [ ! -d /sys ] && mkdir /sys
# Line 149  then Line 149  then
149  fi  fi
150    
151  ### load devfs ###  ### load devfs ###
152  #mount devfs only with a 2.4 kernel or its really wanted with a 2.6  # mount devfs only with a 2.4 kernel or its really wanted with a 2.6
153  if [ "$(kernel_major_version)" = "2.4" -o "${RC_USED_DEV}" = "devfs" ]  if [ "$(kernel_major_version)" = "2.4" -o "${RC_USED_DEV}" = "devfs" ]
154  then  then
155   [ ! -d "/dev" ] && mkdir -p /dev   [ ! -d "/dev" ] && mkdir -p /dev
156    
157   if [ ! -e /dev/.devfsd ]   if [ ! -e /dev/.devfsd ]
158   then   then
159   echo -e ${COLOREDSTAR}"${COLWHITE}Mounting devfs file system ...${COLDEFAULT}"   echo -e ${COLOREDSTAR}"${COLWHITE}Mounting devfs file system ...${COLDEFAULT}"
# Line 162  then Line 162  then
162  fi  fi
163    
164  #### load udev ####  #### load udev ####
165  #load udev only with a 2.6 kernel  # load udev only with a 2.6 kernel
166  if [ "$(kernel_major_version)" = "2.6" -a "${RC_USED_DEV}" = "udev" ]  if [ "$(kernel_major_version)" = "2.6" -a "${RC_USED_DEV}" = "udev" ]
167  then  then
168   #create a ramdisk for populating udev   # create a ramdisk for populating udev
169   echo -e ${COLOREDSTAR}"${COLWHITE}Mounting ramfs at /dev ...${COLDEFAULT}"   echo -e ${COLOREDSTAR}"${COLWHITE}Mounting ramfs at /dev ...${COLDEFAULT}"
170   mount -n -t ramfs none /dev   mount -n -t ramfs none /dev
171    
172   #if a device tarball exists load it and if it is activated   # if a device tarball exists load it and if it is activated
173   echo -e ${COLOREDSTAR}"${COLWHITE}Configurating system to use udev ...${COLDEFAULT}"   echo -e ${COLOREDSTAR}"${COLWHITE}Configurating system to use udev ...${COLDEFAULT}"
174    
175   #now load udev   # now load udev
176   populate_udev   populate_udev
177    
178   #if hotplug support exists in the kernel use it to manage udev   # if hotplug support exists in the kernel use it to manage udev
179   echo -e ${COLOREDSTAR}"${COLWHITE}  Setting /sbin/udev as hotplug agent ...${COLDEFAULT}"   echo -e ${COLOREDSTAR}"${COLWHITE}  Setting /sbin/udev as hotplug agent ...${COLDEFAULT}"
180   echo "/sbin/udev" > /proc/sys/kernel/hotplug   echo "/sbin/udev" > /proc/sys/kernel/hotplug
181  fi  fi
182    
183  #kernel2.6 needs again devpts  # kernel2.6 needs again devpts
184  if [ "$(kernel_major_version)" = "2.6" ]  if [ "$(kernel_major_version)" = "2.6" ]
185  then  then
186   echo -e ${COLOREDSTAR}"${COLWHITE}Mounting devpts at /dev/pts ...${COLDEFAULT}"   echo -e ${COLOREDSTAR}"${COLWHITE}Mounting devpts at /dev/pts ...${COLDEFAULT}"
# Line 188  then Line 188  then
188   mount -n -t devpts -o gid=4,mode=0620 none /dev/pts   mount -n -t devpts -o gid=4,mode=0620 none /dev/pts
189  fi  fi
190    
191  #disable kernel messages to console  # disable kernel messages to console
192  echo "0" > /proc/sys/kernel/printk  echo "0" > /proc/sys/kernel/printk
193    
194  #check command line for params  # check command line for params
195  for i in $(cat /proc/cmdline)  for i in $(cat /proc/cmdline)
196  do  do
197   case "${i}" in   case "${i}" in
# Line 204  do Line 204  do
204   esac   esac
205  done  done
206    
207  #now load all needed modules  # now load all needed modules
208  if [ -n "${MODS_SCSI}" -a "${DOSCSI}" = "yes" ]  if [ -n "${MODS_SCSI}" -a "${DOSCSI}" = "yes" ]
209  then  then
210   scan_kernel_modules "scsi" "${MODS_SCSI}"   scan_kernel_modules "scsi" "${MODS_SCSI}"
# Line 218  then Line 218  then
218  fi  fi
219    
220    
221  #create newroot mount point with tmpfs  # create newroot mount point with tmpfs
222  mkdir -p /mnt  mkdir -p /mnt
223  mount -t tmpfs tmpfs /mnt  mount -t tmpfs tmpfs /mnt
224    
# Line 227  mkdir -p /mnt/mnt/cdrom Line 227  mkdir -p /mnt/mnt/cdrom
227  mkdir -p /mnt/mnt/cloop  mkdir -p /mnt/mnt/cloop
228  mkdir -p /mnt/mnt/magellan  mkdir -p /mnt/mnt/magellan
229    
230  #needed for the usbstick, the timeout maybe to short  # needed for the usbstick, the timeout maybe to short
231  echo -e ${COLOREDSTAR}"${COLWHITE}Waiting 3 seconds for possible usb mount ..."  echo -e ${COLOREDSTAR}"${COLWHITE}Waiting 3 seconds for possible usb mount ..."
232  sleep 3  sleep 3
233    
234  #searching cdrom with cdid  # searching cdrom with cdid
235  BOOT_DEVICE=""  BOOT_DEVICE=""
236  FSTYPE=""  FSTYPE=""
237    
238  echo -e ${COLOREDSTAR}"${COLWHITE}Searching for a boot device ..."  echo -e ${COLOREDSTAR}"${COLWHITE}Searching for a boot device ..."
239  #searching usbstick  # searching usbstick
240  check_drives "/dev/scsi/host[0-99]/bus[0-99]/target[0-99]/lun[0-99]/part[0-99]" "vfat"  check_drives "/dev/scsi/host[0-99]/bus[0-99]/target[0-99]/lun[0-99]/part[0-99]" "vfat"
241    
242  #for cdrom_device in $CDROM_LIST (ide)  # for cdrom_device in $CDROM_LIST (ide)
243  check_drives "/dev/cdroms/*" iso9660  check_drives "/dev/cdroms/*" iso9660
244    
245  #scsi cdroms  # scsi cdroms
246  check_drives "/dev/sr*" iso9660  check_drives "/dev/sr*" iso9660
247    
248  #mount our rootfs from cdrom  # mount our rootfs from cdrom
249  if [ "${BOOT_DEVICE}" = "" ]  if [ "${BOOT_DEVICE}" = "" ]
250  then  then
251   echo -e ${COLREDSTAR}"${COLRED}No Magellan boot CD/USBStick found!!!${COLDEFAULT}"   echo -e ${COLREDSTAR}"${COLRED}No Magellan boot CD/USBStick found!!!${COLDEFAULT}"
# Line 253  then Line 253  then
253   exit 1   exit 1
254  else  else
255   echo -e ${COLOREDSTAR}"${COLWHITE}Booting from: $BOOT_DEVICE ...${COLDEFAULT}"   echo -e ${COLOREDSTAR}"${COLWHITE}Booting from: $BOOT_DEVICE ...${COLDEFAULT}"
256     mount -o ro -t "${FSTYPE}" "${BOOT_DEVICE}" /mnt/mnt/cdrom >/dev/null 2>&1
257   #mount cdrom  
258   #mkdir -p /mnt/mnt/cdrom   # write our boot_device to /mnt/.bootdev for later use (mtab)
  if [ "${FSTYPE}" = "iso9660" ]  
  then  
  mount -o ro -t iso9660 ${BOOT_DEVICE} /mnt/mnt/cdrom >/dev/null 2>&1  
  fi  
   
  if [ "${FSTYPE}" = "vfat" ]  
  then  
  mount -o ro -t vfat ${BOOT_DEVICE} /mnt/mnt/cdrom >/dev/null 2>&1  
  fi  
   
  #mount -o ro -t ${FSTYPE} ${BOOT_DEVICE} /mnt/mnt/cdrom >/dev/null 2>&1  
   
  #write our boot_device to /mnt/.bootdev for later use (mtab)  
259   echo "BOOTDEV=${BOOT_DEVICE}" > /mnt/.bootdev   echo "BOOTDEV=${BOOT_DEVICE}" > /mnt/.bootdev
260   echo "FSTYPE=${FSTYPE}" >> /mnt/.bootdev   echo "FSTYPE=${FSTYPE}" >> /mnt/.bootdev
   
  #mount rootfs (loopback)  
  #mknod /dev/loop0 b 7 0  
  #losetup /dev/loop0 /mnt/mnt/cdrom/livecdrootfs  
         #mount -o ro -t ext2 /dev/loop0 /mnt  
   
261    
262   if [ -f /mnt/mnt/cdrom/livecdrootfs.cloop ]   if [ -f /mnt/mnt/cdrom/livecdrootfs.cloop ]
263   then   then
264   #mount rootfs (cloop)   # mount rootfs (cloop)
265   echo -e ${COLOREDSTAR}"${COLWHITE}Mounting cloop system image ...${COLDEFAULT}"   echo -e ${COLOREDSTAR}"${COLWHITE}Mounting cloop system image ...${COLDEFAULT}"
266   echo   echo
267   [ ! -e /dev/cloop ] && mknod /dev/cloop b 240 0   [ ! -e /dev/cloop ] && mknod /dev/cloop b 240 0
# Line 288  else Line 269  else
269   mkdir -p /mnt/mnt/cloop   mkdir -p /mnt/mnt/cloop
270   mount -o ro -t ext2 /dev/cloop /mnt/mnt/cloop   mount -o ro -t ext2 /dev/cloop /mnt/mnt/cloop
271   else   else
272   #mount squashfs   # mount squashfs
273   echo -e ${COLOREDSTAR}"${COLWHITE}Mounting squashfs system image ...${COLDEFAULT}"   echo -e ${COLOREDSTAR}"${COLWHITE}Mounting squashfs system image ...${COLDEFAULT}"
274   echo   echo
275   [ ! -e /dev/loop0 ] && mknod /dev/loop0 b 7 0   [ ! -e /dev/loop0 ] && mknod /dev/loop0 b 7 0
276   mount -o loop,ro -t squashfs /mnt/mnt/cdrom/livecdrootfs.sqsh /mnt/mnt/cloop   mount -o loop,ro -t squashfs /mnt/mnt/cdrom/livecdrootfs.sqsh /mnt/mnt/cloop
277   fi   fi
278    
279   #symlinking cloop rootfs to /mnt as newroot   # symlinking cloop rootfs to /mnt as newroot
280   cd /mnt   cd /mnt
281   #if [ ! -e /mnt/dev/.devfsd ]  
  #then  
  # mkdir -p dev  
  # mount -t devfs devfs /mnt/dev  
  #fi  
   
282   for x in bin sbin lib boot usr opt   for x in bin sbin lib boot usr opt
283   do   do
284   ln -s mnt/cloop/${x} ${x}   ln -s mnt/cloop/${x} ${x}
285   done   done
286   mkdir -p initrd proc tmp sys var/tmp dev   mkdir -p initrd proc tmp sys var/tmp dev
287   chmod 1777 tmp var/tmp   chmod 1777 tmp var/tmp
288    
289   #make /mnt/dev/console & /mnt/dev/null   # make /mnt/dev/console & /mnt/dev/null
290   [ ! -e /mnt/dev/console ] && mknod -m 600 /mnt/dev/console c 5 1   [ ! -e /mnt/dev/console ] && mknod -m 600 /mnt/dev/console c 5 1
291   [ ! -e /mnt/dev/null ] && mknod -m 666 /mnt/dev/null c 1 3   [ ! -e /mnt/dev/null ] && mknod -m 666 /mnt/dev/null c 1 3
292    
  #(cd /mnt/mnt/cloop/fake/needwrite; cp -a etc root home var /mnt)  
293   (cd /mnt/mnt/cloop; cp -a etc root home var /mnt)   (cd /mnt/mnt/cloop; cp -a etc root home var /mnt)
294   #cp -aR /mnt/mnt/cloop/fake/needwrite/etc /mnt  
295   #cp -aR /mnt/mnt/cloop/fake/needwrite/root /mnt   # shurely change to correct permissions
296   #cp -aR /mnt/mnt/cloop/fake/needwrite/home /mnt   chmod 1777 /mnt/tmp
  #cp -aR /mnt/mnt/cloop/fake/needwrite/var /mnt  
   
  #coping all fake/needwrite files to tmpfs  
  #cp -aR /mnt/mnt/cloop/fake/needwrite/* /mnt  
   
  #shurely change  
  chmod 1777 /mnt/tmp  
297   chmod 1777 /mnt/var/tmp   chmod 1777 /mnt/var/tmp
298    
299   #ash   #ash
300    
301   #enable kernel messages to console   # set default verbose level for kernel messages
  #echo "6" > /proc/sys/kernel/printk  
  #set default verbose level for kernel messages  
302   [ -z "${RC_VERBOSE_LEVEL}" ] && RC_VERBOSE_LEVEL=3   [ -z "${RC_VERBOSE_LEVEL}" ] && RC_VERBOSE_LEVEL=3
303   echo "${RC_VERBOSE_LEVEL}" > /proc/sys/kernel/printk   echo "${RC_VERBOSE_LEVEL}" > /proc/sys/kernel/printk
304    
305   cd /mnt   cd /mnt
306    
  #needed to check whether something else is mounted  
  #proc isn't needed anymore  
  #umount /proc  
   
   
307   pivot_root . initrd   pivot_root . initrd
  #umount -n /mnt/proc >/dev/null 2>&1  
  #exec chroot . sh -c 'umount -n /mnt >/dev/null 2>&1;\  
  # exec -a init.new /sbin/init 3'\  
  # </dev/console >/dev/console 2>&1  
   
 # #umount devpts  
 # DEVPTS_MOUNTED="$(cat /initrd/proc/mounts | grep /initrd/dev/pts | cut -d ' ' -f2)"  
 # if [ -n "${DEVPTS_MOUNTED}" ]  
 # then  
 # umount -n /initrd/dev/pts  
 # fi  
 #  
 # #umount devfs or udev  
 # DEVFS_MOUNTED="$(cat /initrd/proc/mounts | grep /initrd/dev | cut -d ' ' -f2)"  
 # if [ -n "${DEVFS_MOUNTED}" ]  
 # then  
 # umount -n /initrd/dev  
 # fi  
 #  
 # #umount sysfs  
 # SYSFS_MOUNTED="$(cat /initrd/proc/mounts | grep /initrd/sys | cut -d ' ' -f2)"  
 # if [ -n "${SYSFS_MOUNTED}" ]  
 # then  
 # umount -n /initrd/sys  
 # fi  
 #  
 # #umount proc  
 # PROC_MOUNTED="$(cat /initrd/proc/mounts | grep /initrd/proc | cut -d ' ' -f2)"  
 # if [ "${PROC_MOUNTED}" = "/initrd/proc" ]  
 # then  
 # umount -n /initrd/proc  
 # fi  
308    
309   #dirty but working   # dirty but working
310   #umount devpts   # umount devpts
311   umount -n /initrd/dev/pts &> /dev/null   umount -n /initrd/dev/pts &> /dev/null
312   #wait a little bit to be safe   # wait a little bit to be safe
313   sleep 1   sleep 1
314   #umount devfs or udev   # umount devfs or udev
315   umount -n /initrd/dev &> /dev/null   umount -n /initrd/dev &> /dev/null
316   #umount sysfs   # umount sysfs
317   umount -n /initrd/sys &> /dev/null   umount -n /initrd/sys &> /dev/null
318   #umount proc   # umount proc
319   umount -n /initrd/proc &> /dev/null   umount -n /initrd/proc &> /dev/null
320    
321   #debug   #debug
322   #/initrd/bin/busybox ash   #/initrd/bin/busybox ash
323    
324   #enter chroot and umount /initrd   #enter chroot and umount /initrd
325   exec chroot . sh -c 'umount -n /initrd >/dev/null 2>&1;\   exec chroot . sh -c 'umount -n /initrd >/dev/null 2>&1;\
326   exec -a init.new /sbin/init'\   exec -a init.new /sbin/init'\

Legend:
Removed from v.27  
changed lines
  Added in v.96