Advertisement
VinDuv

local-bottom/ramroot.sh

May 13th, 2012
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.00 KB | None | 0 0
  1. #!/bin/sh
  2. PREREQ=""
  3. prereqs()
  4. {
  5.     echo "$PREREQ"
  6. }
  7.  
  8. case $1 in
  9. prereqs)
  10.     prereqs
  11.     exit 0
  12.     ;;
  13. esac
  14.  
  15. . /scripts/functions
  16.  
  17.  
  18. generate_fstab()
  19. {
  20.     echo "# DO NOT EDIT, THIS FILE IS ON A RAM DISK!"
  21.    
  22.     # Filter out the fstab "/" entry
  23.     while read line; do
  24.         echo "$line" | while read FSNAME DIR OTHER; do
  25.             case "$FSNAME" in
  26.                 ""|\#*)
  27.                     echo "$line"
  28.                     ;;
  29.                 *)
  30.                     if [ "$DIR" != "/" ]; then
  31.                         echo "$line"
  32.                     fi
  33.                     ;;
  34.             esac
  35.            
  36.         done
  37.     done
  38.    
  39.     echo "none      /       tmpfs   defaults    0   0"
  40. }
  41.  
  42. ramroot=n
  43. for x in $(cat /proc/cmdline); do
  44.     case $x in
  45.     ramroot)
  46.         ramroot=y
  47.         ;;
  48.     esac
  49. done
  50.  
  51. if [ "$ramroot" = "y" ]; then
  52.     [ "$quiet" != "y" ] && log_begin_msg "Switching to RAMdisk root"
  53.     umount /root
  54.     mkdir /physroot
  55.     mount -o ro $ROOT /physroot
  56.     mount -t tmpfs ramroot /root
  57.     { cd /physroot; tar c .; } | { cd /root; tar x; }
  58.     generate_fstab < /physroot/etc/fstab > /root/etc/fstab
  59.     umount /physroot
  60.     rmdir /physroot
  61.     [ "$quiet" != "y" ] && log_end_msg
  62. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement