initramfs-init 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #!/bin/busybox sh
  2. echo In PrawnOS Init
  3. cmdline() {
  4. local value
  5. value=" $(cat /proc/cmdline) "
  6. value="${value##* ${1}=}"
  7. value="${value%% *}"
  8. [ "${value}" != "" ] && echo "${value}"
  9. }
  10. rootpartuuid() {
  11. local value
  12. value=$1
  13. value="${value%/*}"
  14. value="${value#*=}"
  15. [ "${value}" != "" ] && echo "${value}"
  16. }
  17. # mount the bare necesities
  18. mount -n -t proc proc /proc
  19. mount -n -t sysfs sysfs /sys
  20. mount -n -t devtmpfs devtmpfs /dev
  21. # get the root device, so we can find the boot partiton
  22. UNPARSED=$(cmdline root)
  23. ROOT_PARTUUID=$(rootpartuuid $UNPARSED)
  24. echo ${ROOT_PARTUUID}
  25. BLKID=$(/bin/blkid | grep $ROOT_PARTUUID )
  26. echo ${BLKID}
  27. #If its an mmcblk device, the partiton will p1. If it is a usb device, the partiton will just be 1
  28. #Just want everything before the 1: so this will work
  29. ROOT_DEV="${BLKID%1:*}"
  30. echo ${ROOT_DEV}
  31. #uncomment for debugging
  32. # exec setsid /bin/sh -c 'exec /bin/sh </dev/tty1 >/dev/tty1 2>&1'
  33. # we use this to change what cmdline options get passed into
  34. # the next boot stage, aka to enable root encryption
  35. CMDLINE='cat /proc/cmdline'
  36. # mount new root
  37. [ -d /newroot ] || mkdir -p /newroot
  38. mount ${ROOT_DEV}3 /newroot
  39. umount /sys
  40. umount /proc
  41. umount /dev
  42. # exec setsid /bin/sh -c 'exec /bin/sh </dev/tty1 >/dev/tty1 2>&1'
  43. #swith to the new rootfs
  44. exec switch_root /newroot /sbin/init ${CMDLINE}