Magellan Linux

Diff of /trunk/mkinitrd/mkinitrd.sh

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

revision 300 by niro, Sat Dec 3 19:52:07 2005 UTC revision 301 by niro, Mon Dec 5 22:45:33 2005 UTC
# Line 1  Line 1 
1  #!/bin/bash  #!/bin/bash
2  # $Header: /home/cvsd/magellan-cvs/magellan-src/mkinitrd/mkinitrd.sh,v 1.4 2005-12-03 19:52:07 niro Exp $  # $Header: /home/cvsd/magellan-cvs/magellan-src/mkinitrd/mkinitrd.sh,v 1.5 2005-12-05 22:45:33 niro Exp $
3    
4  # mkinitrd  # mkinitrd
5  #  #
# Line 55  builtins="" Line 55  builtins=""
55  modulefile=/etc/modules.conf  modulefile=/etc/modules.conf
56  rc=0  rc=0
57    
58  IMAGESIZE=8000  IMAGESIZE=4000
59  PRESCSIMODS="sd_mod"  PRESCSIMODS="sd_mod"
60  fstab="/etc/fstab"  fstab="/etc/fstab"
61    
# Line 391  while [ $# -gt 0 ]; do Line 391  while [ $# -gt 0 ]; do
391   --allow-missing) allowmissing=yes ;;   --allow-missing) allowmissing=yes ;;
392   --noresume) noresume=1 ;;   --noresume) noresume=1 ;;
393   --help) usage -n ;;   --help) usage -n ;;
394     --initramfs) IMAGE_TYPE=initramfs ;;
395     --loopback) IMAGE_TYPE=loopback ;;
396   *)   *)
397   if [ -z "${target}" ]   if [ -z "${target}" ]
398   then   then
# Line 407  while [ $# -gt 0 ]; do Line 409  while [ $# -gt 0 ]; do
409   shift   shift
410  done  done
411    
412    # enforce loopback method as default
413    [[ -z ${IMAGE_TYPE} ]] && IMAGE_TYPE=loopback
414    
415  if [ -z "${target}" -o -z "${kernel}" ]  if [ -z "${target}" -o -z "${kernel}" ]
416  then  then
417   usage   usage
# Line 445  fi Line 450  fi
450  ##############################  ##############################
451  ####### get modules ##########  ####### get modules ##########
452    
453  echo "Creating initramfs"  echo "Creating ${IMAGE_TYPE} initrd image"
454  modulefile=/etc/modprobe.conf  modulefile=/etc/modprobe.conf
455    
456  for n in ${PREMODS}  for n in ${PREMODS}
# Line 645  echo "Using modules:${MODULES}" Line 650  echo "Using modules:${MODULES}"
650  install -d ${DEST}/{bin,dev,etc,lib,loopfs,proc,sys,sysroot} || die  install -d ${DEST}/{bin,dev,etc,lib,loopfs,proc,sys,sysroot} || die
651    
652  # install busybox  # install busybox
653    echo "$(which busybox.mkinitrd)"
654  install -m0755 $(which busybox.mkinitrd) ${DEST}/bin/busybox || die  install -m0755 $(which busybox.mkinitrd) ${DEST}/bin/busybox || die
655  for i in '[' ash basename cat cut chroot clear cp dirname echo env false find \  for i in '[' ash basename cat cut chroot clear cp dirname echo env false find \
656   grep gunzip gzip ln ls loadkmap losetup mkdir mknod modprobe more mount mv \   grep gunzip gzip init ln ls loadkmap losetup mkdir mknod modprobe more mount mv \
657   ps pwd rm rmdir sh sleep test touch true umount uname \   pivot_root ps pwd rm rmdir sh sleep test touch true umount uname \
658   xargs yes chmod chown   xargs yes chmod chown
659  do  do
660   # static links   # static links
# Line 656  do Line 662  do
662  done  done
663    
664  # install run-init  # install run-init
665    echo "$(which run-init.mkinitrd)"
666  install -m0755 $(which run-init.mkinitrd) ${DEST}/bin/run-init || die  install -m0755 $(which run-init.mkinitrd) ${DEST}/bin/run-init || die
667    
668  # install insmod.static  # install insmod.static
669    echo "$(which insmod.static)"
670  install -m0755 $(which insmod.static) ${DEST}/bin/insmod || die  install -m0755 $(which insmod.static) ${DEST}/bin/insmod || die
671    
672  # install udev  # install udev
# Line 702  add_initrd '#!/bin/sh' Line 710  add_initrd '#!/bin/sh'
710  add_initrd 'mount -t proc proc /proc'  add_initrd 'mount -t proc proc /proc'
711  add_initrd 'mount -t sysfs sysfs /sys'  add_initrd 'mount -t sysfs sysfs /sys'
712    
713    [[ ${IMAGE_TYPE} = loopback ]] && add_initrd 'mount -t ramfs -o remount,rw /dev/ram /'
714    
715  add_initrd 'echo "-- Creating inital device nodes ..."'  add_initrd 'echo "-- Creating inital device nodes ..."'
716  add_initrd 'mount -o mode=0755 -t tmpfs udev /dev'  add_initrd 'mount -o mode=0755 -t tmpfs udev /dev'
717  add_initrd 'mkdir /dev/pts'  add_initrd 'mkdir /dev/pts'
# Line 824  fi Line 834  fi
834    
835  add_initrd 'echo "-- Mounting sysroot ..."'  add_initrd 'echo "-- Mounting sysroot ..."'
836  add_initrd '. /etc/rootdev'  add_initrd '. /etc/rootdev'
837  add_initrd 'mknod ${device} b ${major} ${minor}'  add_initrd '[ ! -e ${device} ] && mknod ${device} b ${major} ${minor}'
838  add_initrd 'echo "${device} /sysroot ${rootfs} defaults,ro 0 0" > /etc/fstab'  add_initrd 'echo "${device} /sysroot ${rootfs} defaults,ro 0 0" > /etc/fstab'
839  add_initrd 'mount /sysroot'  add_initrd 'mount /sysroot'
840    
841  add_initrd 'echo "-- Switching to real sysroot ..."'  add_initrd 'echo "-- Switching to real sysroot ..."'
842  add_initrd 'umount /sys'  add_initrd 'umount /sys'
843  add_initrd 'umount /proc'  add_initrd 'umount /proc'
844  add_initrd 'exec run-init /sysroot /sbin/init $@ </sysroot/dev/console >/sysroot/dev/console'  
845    [[ ${IMAGE_TYPE} = initramfs ]] && add_initrd 'exec run-init /sysroot /sbin/init $@ </sysroot/dev/console >/sysroot/dev/console'
846    if [[ ${IMAGE_TYPE} = loopback ]]
847    then
848     add_initrd 'cd /sysroot'
849     add_initrd 'pivot_root . initrd'
850     add_initrd "exec /sbin/chroot . sh -c 'umount -n /initrd >/dev/null 2>&1;exec -a init.new /sbin/init'</dev/console >/dev/console 2>&1"
851    fi
852    
853  chmod +x ${DEST}/init || die  chmod +x ${DEST}/init || die
854    
# Line 856  done Line 873  done
873    
874  # create the image  # create the image
875  echo "Creating initrd image '${target}' ..."  echo "Creating initrd image '${target}' ..."
876  (cd "${DEST}" ; find . | cpio --quiet --dereference -o -H newc | gzip -9 >${IMAGE})  if [[ ${IMAGE_TYPE} = initramfs ]]
877  cat ${IMAGE} > ${target} || die  then
878     (cd "${DEST}" ; find . | cpio --quiet -o -H newc | gzip -9 >${IMAGE})
879     cat ${IMAGE} > ${target} || die
880    fi
881    
882    if [[ ${IMAGE_TYPE} = loopback ]]
883    then
884     MOUNTTMP="$(mktemp -d)"
885    
886     # create ext2 img
887     dd if=/dev/zero of=${IMAGE} bs=1024 count=${IMAGESIZE} &> /dev/null || die
888     mke2fs -m 0 -i 1024 -F ${IMAGE} &> /dev/null || die
889     mount -o loop ${IMAGE} ${MOUNTTMP} || die
890     mv ${DEST}/* ${MOUNTTMP} || die
891     umount ${MOUNTTMP} || die
892     gzip -9 ${IMAGE} || die
893     cat ${IMAGE}.gz > ${target} || die
894     [ -d ${MOUNTTMP} ] && rm -rf ${MOUNTTMP}
895    
896     # create inird dir for pivot_root
897     [ ! -d /initrd ] && { install -d /initrd || die; }
898    fi
899    
900  # clean up  # clean up
901  [ -d ${DEST} ] && rm -rf ${DEST}  [ -d ${DEST} ] && rm -rf ${DEST}

Legend:
Removed from v.300  
changed lines
  Added in v.301