Advertisement
Guest User

init

a guest
Sep 20th, 2014
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.34 KB | None | 0 0
  1. #!/bin/sh
  2.  
  3. /bin/busybox --install -s
  4.  
  5. [ -d /dev ]  || mkdir -m 0755 /dev
  6. [ -d /root ] || mkdir -m 0700 /root
  7. [ -d /sys ]  || mkdir /sys
  8. [ -d /proc ] || mkdir /proc
  9. [ -d /tmp ]  || mkdir /tmp
  10. [ -d /mnt ]  || mkdir /mnt
  11. mkdir -p /var/lock
  12.  
  13. mount -t sysfs -o nodev,noexec,nosuid sysfs /sys
  14. mount -t proc -o nodev,noexec,nosuid proc /proc
  15.  
  16. tmpfs_size="10M"
  17. if ! mount -t devtmpfs -o size=$tmpfs_size,mode=0755 udev /dev; then
  18.     echo "W: devtmpfs not available, falling back to tmpfs for /dev"
  19.     mount -t tmpfs -o size=$tmpfs_size,mode=0755 udev /dev
  20.     [ -e /dev/console ] || mknod -m 0600 /dev/console c 5 1
  21.     [ -e /dev/null ] || mknod /dev/null c 1 3
  22. fi
  23.  
  24. mkdir /dev/pts
  25. mount -t devpts -o noexec,nosuid,gid=5,mode=0620 devpts /dev/pts || true
  26. mount -t tmpfs -o "nosuid,size=20%,mode=0755" tmpfs /run
  27.  
  28.  
  29. export ROOT=
  30. export ROOTDELAY=
  31. export ROOTFLAGS=
  32. export ROOTFSTYPE=
  33. export IP=
  34. export BOOT=
  35. export BOOTIF=
  36. export UBIMTD=
  37. export break=
  38. #export init=/sbin/init
  39. export quiet=n
  40. export readonly=y
  41. #export rootmnt=/root
  42. export debug=
  43. export panic=
  44. export blacklist=
  45. export resume=
  46. export resume_offset=
  47.  
  48.  
  49. # Parse command line options
  50. for x in $(cat /proc/cmdline); do
  51.     case $x in
  52.     init=*)
  53.         init=${x#init=}
  54.         ;;
  55.     root=*)
  56.         ROOT=${x#root=}
  57.         case $ROOT in
  58.         LABEL=*)
  59.             ROOT="${ROOT#LABEL=}"
  60.  
  61.             # support any / in LABEL= path (escape to \x2f)
  62.             case "${ROOT}" in
  63.             */*)
  64.             if command -v sed >/dev/null 2>&1; then
  65.                 ROOT="$(echo ${ROOT} | sed 's,/,\\x2f,g')"
  66.             else
  67.                 if [ "${ROOT}" != "${ROOT#/}" ]; then
  68.                     ROOT="\x2f${ROOT#/}"
  69.                 fi
  70.                 if [ "${ROOT}" != "${ROOT%/}" ]; then
  71.                     ROOT="${ROOT%/}\x2f"
  72.                 fi
  73.                 IFS='/'
  74.                 newroot=
  75.                 for s in $ROOT; do
  76.                     newroot="${newroot:+${newroot}\\x2f}${s}"
  77.                 done
  78.                 unset IFS
  79.                 ROOT="${newroot}"
  80.             fi
  81.             esac
  82.             ROOT="/dev/disk/by-label/${ROOT}"
  83.             ;;
  84.         UUID=*)
  85.             ROOT="/dev/disk/by-uuid/${ROOT#UUID=}"
  86.             ;;
  87.         /dev/nfs)
  88.             [ -z "${BOOT}" ] && BOOT=nfs
  89.             ;;
  90.         esac
  91.         ;;
  92.     rootflags=*)
  93.         ROOTFLAGS="-o ${x#rootflags=}"
  94.         ;;
  95.     rootfstype=*)
  96.         ROOTFSTYPE="${x#rootfstype=}"
  97.         ;;
  98.     rootdelay=*)
  99.         ROOTDELAY="${x#rootdelay=}"
  100.         case ${ROOTDELAY} in
  101.         *[![:digit:].]*)
  102.             ROOTDELAY=
  103.             ;;
  104.         esac
  105.         ;;
  106.     nfsroot=*)
  107.         NFSROOT="${x#nfsroot=}"
  108.         ;;
  109.     ip=*)
  110.         IP="${x#ip=}"
  111.         ;;
  112.     boot=*)
  113.         BOOT=${x#boot=}
  114.         ;;
  115.     ubi.mtd=*)
  116.         UBIMTD=${x#ubi.mtd=}
  117.         ;;
  118.     resume=*)
  119.         RESUME="${x#resume=}"
  120.         case $RESUME in
  121.             UUID=*)
  122.             RESUME="/dev/disk/by-uuid/${RESUME#UUID=}"
  123.         esac
  124.         ;;
  125.     resume_offset=*)
  126.         resume_offset="${x#resume_offset=}"
  127.         ;;
  128.     noresume)
  129.         noresume=y
  130.         ;;
  131.     panic=*)
  132.         panic="${x#panic=}"
  133.         case ${panic} in
  134.         *[![:digit:].]*)
  135.             panic=
  136.             ;;
  137.         esac
  138.         ;;
  139.     quiet)
  140.         quiet=y
  141.         ;;
  142.     ro)
  143.         readonly=y
  144.         ;;
  145.     rw)
  146.         readonly=n
  147.         ;;
  148.     debug)
  149.         debug=y
  150.         quiet=n
  151.         exec >/run/initramfs/initramfs.debug 2>&1
  152.         set -x
  153.         ;;
  154.     debug=*)
  155.         debug=y
  156.         quiet=n
  157.         set -x
  158.         ;;
  159.     break=*)
  160.         break=${x#break=}
  161.         ;;
  162.     break)
  163.         break=premount
  164.         ;;
  165.     blacklist=*)
  166.         blacklist=${x#blacklist=}
  167.         ;;
  168.     netconsole=*)
  169.         netconsole=${x#netconsole=}
  170.         ;;
  171.     BOOTIF=*)
  172.         BOOTIF=${x#BOOTIF=}
  173.         ;;
  174.     esac
  175. done
  176.  
  177.  
  178. echo "=========boot arguments========="
  179. for i in $(cat /proc/cmdline) ; do
  180.     echo $i
  181. done
  182. echo "================================"
  183.  
  184. echo "root = $ROOT"
  185.  
  186. sleep 10
  187.  
  188. exec /sbin/init -i </dev/console >/dev/console 2>&1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement