Advertisement
Guest User

Raspi Setup

a guest
Jul 10th, 2012
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.24 KB | None | 0 0
  1. #!/bin/bash
  2. #Raspi-Setup Script
  3. #Joshua O'Leary 2012
  4. BOOTCONFIG=/boot/config.txt
  5. SETUPDIR=/etc/raspi-setup/
  6. HOMEDIR=/home/pi
  7. EDITOR=nano
  8. ROOT_DEVICE=/dev/root
  9. if [ "$USER" != "root" ]; then echo 'This script must be run as root. Exiting...'; exit; fi
  10. printmenu()
  11. {
  12. args=("$@")
  13. count=1
  14. end=$(($# + 1))
  15. while [ "$count" -lt "$end" ];
  16. do
  17. echo "$count: ${args[$(($count - 1))]}"
  18. count=$((count + 1))
  19. done
  20. }
  21. selectchoice()
  22. {
  23. choice=""
  24. echo ""
  25. read -e -n 1 -p '? ' choice
  26. }
  27. yesno()
  28. {
  29. echo '1: Yes 2: No'
  30. }
  31. anykey()
  32. {
  33. echo 'Press any key to continue.'
  34. read -n 1
  35. }
  36. avmenu()
  37. {
  38. clear
  39. printmenu "TV Type" "Change Overscan" "Audio Mode" "Back"
  40. selectchoice
  41. case $choice in
  42. 1 ) printmenu "NTSC (Default)" "Japan NTSC" "PAL" "Brazilian PAL"
  43. selectchoice
  44. for check in {1..4}
  45. do
  46. if [ "$check" = "$choice" ]; then valid=true; fi
  47. done
  48. if [ "$valid" = "true" ];
  49. then
  50. value=$(($choice - 1))
  51. echo $value > $SETUPDIR/config/tvtype
  52. valid="false"
  53. avmenu
  54. else
  55. echo 'Not a valid option'
  56. anykey
  57. avmenu
  58. fi
  59. ;;
  60. 2 ) printmenu "Enable" "Disable"
  61. selectchoice
  62. case $choice in
  63. 1 ) echo 'true' > $SETUPDIR/config/overscan ;;
  64. 2 ) echo 'false' > $SETUPDIR/config/overscan ;;
  65. * ) avmenu ;;
  66. esac
  67. ;;
  68. 3 ) printmenu "DVI only" "HDMI sound"
  69. selectchoice
  70. case $choice in
  71. 1 ) echo 'DVI' > $CONFIGDIR/config/soundmode ;;
  72. 2 ) echo 'HDMI' > $CONFIGDIR/config/soundmode ;;
  73. * ) avmenu ;;
  74. esac
  75. ;;
  76. 4 ) toplevel ;;
  77. * ) avmenu ;;
  78. esac
  79. }
  80. do_exit()
  81. {
  82. if [ -f $SETUPDIR/firstrun ]; then usermod --lock root; rm $SETUPDIR/firstrun; fi
  83. echo '# Generated by raspi-setup' > $BOOTCONFIG
  84. if [ "`cat $SETUPDIR/config/overscan`" = "false" ]; then echo 'disable_overscan=1' >> $BOOTCONFIG; fi
  85. if [ -f $SETUPDIR/config/tvtype ]; then echo "sdtv_mode=`cat $SETUPDIR/config/tvtype`" >> $BOOTCONFIG; fi
  86. if [ "`cat $SETUPDIR/config/soundmode`" = "HDMI" ]; then echo 'hdmi_drive=2' >> $BOOTCONFIG; fi
  87. echo '# Custom config from /etc/raspi-setup/config/config.append' >> $BOOTCONFIG
  88. cat $SETUPDIR/config/config.append >> $BOOTCONFIG
  89. exit 0
  90. }
  91. installdesktop()
  92. {
  93. clear
  94. echo 'Install xorg and fluxbox?'
  95. yesno
  96. selectchoice
  97. case $choice in
  98. 1 ) apt-get install xorg fluxbox -y
  99. xinstallresult=$?
  100. cp $SETUPDIR/xinitrc $HOMEDIR/.xinitrc
  101. cp $SETUPDIR/defaults/xinitrc /etc/skel/.xinitrc
  102. if [ "$xinstallresult" = "0" ]; then echo 'You can now start fluxbox by running startx.'; else echo 'Error during installation'; fi
  103. anykey
  104. toplevel
  105. ;;
  106. 2 ) toplevel
  107. ;;
  108. * ) installdesktop
  109. ;;
  110. esac
  111. }
  112. expandrootfs()
  113. {
  114. clear
  115. echo 'Are you sure? Not responsible for data loss!'
  116. echo '1: Yes 2: No'
  117. selectchoice
  118. if [ "$choice" = "1" ];
  119. then echo 'Resizing, please be patient...'
  120. /sbin/resize2fs $ROOT_DEVICE
  121. if [ "$?" = "0" ]; then echo 'Successful!'; else echo 'Resized failed.'; fi
  122. anykey
  123. fi
  124. toplevel
  125. }
  126. bootmenu()
  127. {
  128. clear
  129. echo "Enter config in the file below. Use Control+O to save in nano."
  130. echo "Video settings should be changed using this script."
  131. echo "Don't forget to choose 'finish' in the menu afterwards."
  132. anykey
  133. $EDITOR /etc/raspi-setup/config/config.append
  134. toplevel
  135. }
  136. changepasswd()
  137. {
  138. clear
  139. echo 'The following screen will change password for user pi.'
  140. anykey
  141. passwd pi
  142. toplevel
  143. }
  144. do_update()
  145. {
  146. clear
  147. echo 'Update firmware?'
  148. yesno
  149. selectchoice
  150. if [ "$choice" = "1" ]; then /usr/bin/rpi-update; anykey; fi
  151. toplevel
  152. }
  153. localemenu()
  154. {
  155. clear
  156. printmenu "Timezone" "Keyboard Layout" "Locales"
  157. selectchoice
  158. case $choice in
  159. 1 ) dpkg-reconfigure tzdata ;;
  160. 2 ) dpkg-reconfigure console-data ;;
  161. 3 ) dpkg-reconfigure locales ;;
  162. *) localemenu
  163. esac
  164. }
  165. toplevel()
  166. {
  167. clear
  168. echo "=========================="
  169. echo " Raspi-Setup Menu"
  170. echo "=========================="
  171. printmenu "A/V Settings" "Boot Settings" "Change Password" "Firmware Update" "Install Desktop System" "Expand Rootfs" "Localisation" "Finish / Write Config"
  172. selectchoice
  173. case $choice in
  174. 1 ) avmenu ;;
  175. 2 ) bootmenu ;;
  176. 3 ) changepasswd ;;
  177. 4 ) do_update ;;
  178. 5 ) installdesktop ;;
  179. 6 ) expandrootfs ;;
  180. 7 ) localemenu ;;
  181. 8 ) do_exit ;;
  182. * ) toplevel ;;
  183. esac
  184. }
  185. trap 'toplevel' INT
  186. toplevel
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement