Advertisement
Guest User

Untitled

a guest
May 26th, 2012
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.64 KB | None | 0 0
  1. #!/bin/sh
  2. echo "Welcome to Vogue Linux"
  3. mkdir -m 0755 /proc
  4. mount -t proc proc /proc
  5. mkdir -m 0755 /sys
  6. mount -t sysfs sys /sys
  7.  
  8. #Configure Devices
  9. MAKEDEVS
  10.  
  11. fail() {
  12. echo "Failed"
  13. echo "$1"
  14. exec /bin/sh
  15. }
  16. while [ ! -d /sys/block/mmcblk0 ] ; do
  17. echo "Waiting for SD Card"
  18. sleep 1
  19. done
  20. #Wait a bit once mmcblk0 appears
  21. #Reading partition table could take some time
  22. sleep 1
  23.  
  24. #Call it ... root= ?
  25. #I don't do that because I don't want to interfer in any way with kernel
  26. root_partition=`/bin/grep -o "root_partition=.*" /proc/cmdline | /bin/sed -e "s/.*root_partition=//g" -e "s/ .*//g"`
  27. if ! [ "$root_partition" = "" ];then
  28. mkdir /rfs
  29. mount -t ext2 $root_partition /rfs
  30. mount -t tmpfs -o size=100K tmpfs /rfs/dev
  31. cp -a /dev/* /rfs/dev
  32. exec switch_root /rfs /init
  33. fi
  34.  
  35. partition=`/bin/grep -o "loop_partition=.*" /proc/cmdline | /bin/sed -e "s/.*loop_partition=//g" -e "s/ .*//g"`
  36. if [ "$partition" = "" ];then
  37. partition="mmcblk0p1"
  38. fi
  39.  
  40. # Try unpartitioned card
  41. if [ ! -d /sys/block/mmcblk0/$partition ] ; then
  42. partition=mmcblk0
  43. fi
  44.  
  45. mkdir -m 0777 /card0
  46. echo "Running an fsck on the SD card"
  47. dosfsck -y /dev/block/$partition
  48. mount -t vfat -o fmask=0000,dmask=0000,utf8,rw,flush,noatime,nodiratime /dev/block/$partition /card0
  49. [ $? -eq 0 ] || fail "Failed to mount the SD card. Cannot continue."
  50.  
  51. CARD_PATH=`/bin/grep -o "rel_path=.*" /proc/cmdline | /bin/sed -e "s/.*rel_path=//g" -e "s/ .*//g"`
  52.  
  53. if [ "$CARD_PATH" = "" ];then
  54. CARD_PATH="andboot"
  55. fi
  56.  
  57. if [ -d /card0/$CARD_PATH ] ; then
  58. card=/card0/$CARD_PATH
  59. else
  60. card=/card0
  61. fi
  62.  
  63. if [ -f $card/rootfs.img ] ; then
  64. root="$card/rootfs.img"
  65. SQUASHFS=0
  66. elif [ -f $card/rootfs.sqsh ]; then
  67. root="$card/rootfs.sqsh"
  68. SQUASHFS=1
  69. else
  70. fail "Failed to find rootfs on SD Card. You need to unzip a rootfs zip file to the root of your SD card."
  71. fi
  72.  
  73. mkdir -m 0755 /rfs
  74. losetup /dev/block/loop2 $root
  75. [ $? -eq 0 ] || fail "Failed to mount rootfs on SD Card."
  76.  
  77. if [ $SQUASHFS -eq 0 ]; then
  78. e2fsck -y /dev/block/loop2
  79. mount -t ext2 -o noatime,nodiratime,sync,ro /dev/block/loop2 /rfs
  80. [ $? -eq 0 ] || fail "Failed to mount rootfs"
  81. else
  82. mount -t squashfs -o noatime,nodiratime,sync,ro /dev/block/loop2 /rfs
  83. [ $? -eq 0 ] || fail "Failed to mount rootfs"
  84. fi
  85.  
  86. #mkdir /rfs/dev
  87. mount -t tmpfs -o size=100K tmpfs /rfs/dev
  88. cp -a /dev/* /rfs/dev
  89.  
  90. df
  91.  
  92. echo "Cleaning up..."
  93. umount -l /sys
  94. umount -l /proc
  95.  
  96. ls -l /rfs
  97.  
  98. echo "Switching to rootfs..."
  99.  
  100. cd /rfs
  101. chroot /rfs
  102. exec /init
  103.  
  104. exec switch_root /rfs /init || {
  105. echo ""
  106. echo "### switch_root failed - falling back to shell. ###"
  107. echo ""
  108. exec /bin/sh
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement