commit e45b6d421f168e52c8708de698d37be571183b7b Author: Alex Bradbury Date: Sun Jun 10 21:32:01 2012 +0100 Initial commit diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..dd318ed --- /dev/null +++ b/LICENSE @@ -0,0 +1,26 @@ +raspi-config is licensed under the terms of the MIT license reproduced below. + +##################################################### + +Copyright (c) 2012 Alex Bradbury + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..141476a --- /dev/null +++ b/debian/changelog @@ -0,0 +1,5 @@ +raspi-config (20120610) unstable; urgency=low + + * Initial release + + -- Alex Bradbury Sun, 10 Jun 2012 15:59:17 +0000 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..45a4fb7 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +8 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..16e2f9c --- /dev/null +++ b/debian/control @@ -0,0 +1,14 @@ +Source: raspi-config +Section: unknown +Priority: extra +Maintainer: Alex Bradbury +Build-Depends: debhelper (>= 8.0.0) +Standards-Version: 3.9.2 +Homepage: https://github.com/asb/raspi-config +#Vcs-Git: git://git.debian.org/collab-maint/raspi-config.git +#Vcs-Browser: http://git.debian.org/?p=collab-maint/raspi-config.git;a=summary + +Package: raspi-config +Architecture: all +Depends: ${misc:Depends}, whiptail, parted +Description: Simple configuration for Raspberry Pi diff --git a/debian/raspi-config.docs b/debian/raspi-config.docs new file mode 100644 index 0000000..7bbdb9b --- /dev/null +++ b/debian/raspi-config.docs @@ -0,0 +1,2 @@ +LICENSE +sample_profile_d.sh diff --git a/debian/raspi-config.install b/debian/raspi-config.install new file mode 100644 index 0000000..20765bd --- /dev/null +++ b/debian/raspi-config.install @@ -0,0 +1 @@ +./raspi-config /usr/bin/ diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..b760bee --- /dev/null +++ b/debian/rules @@ -0,0 +1,13 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +%: + dh $@ diff --git a/raspi-config b/raspi-config new file mode 100755 index 0000000..f2727a7 --- /dev/null +++ b/raspi-config @@ -0,0 +1,187 @@ +#!/bin/sh +# Part of raspi-config http://github.com/asb/raspi-config +# +# See LICENSE file for copyright and license details + + +if [ $(id -u) -ne 0 ]; then + printf "Script must be run as root\n" + exit 1 +fi + +do_info() { + whiptail --msgbox "This tool provides a straight-forward way of doing + initial configuration of the Raspberry Pi. Although it can be run at any + time, some of the options may have difficulties if you have heavily + customised your installation." 20 60 1 +} + +do_expand_rootfs() { + # Get the starting offset of the root partition + PART_START=$(parted /dev/mmcblk0 -ms unit s p | grep "^2" | cut -f 2 -d:) + [ "$PART_START" ] || return 1 + # Return value will likely be error for fdisk as it fails to reload the + # partition table because the root fs is mounted + fdisk /dev/mmcblk0 < /etc/init.d/resize2fs_once && + #!/bin/sh +### BEGIN INIT INFO +# Provides: resize2fs_once +# Required-Start: +# Required-Stop: +# Default-Start: 2 3 4 5 S +# Default-Stop: +# Short-Description: Resize the root filesystem to fill partition +# Description: +### END INIT INFO + +. /lib/lsb/init-functions + +case "$1" in + start) + log_daemon_msg "Starting resize2fs_once" && + resize2fs /dev/mmcblk0p2 && + rm /etc/init.d/resize2fs_once && + update-rc.d resize2fs_once remove && + log_end_msg $? + ;; + *) + echo "Usage: $0 start" >&2 + exit 3 + ;; +esac +EOF + chmod +x /etc/init.d/resize2fs_once && + update-rc.d resize2fs_once defaults && + whiptail --msgbox "Root partition has been resized.\n\ +The filesystem will be enlarged upon the next reboot" 20 60 2 +} + +# $1 is 0 to disable overscan, 1 to disable it +set_overscan() { + # Stop if /boot is not a mountpoint + if ! mountpoint -q /boot; then + return 1 + fi + + [ -e /boot/config.txt ] || touch /boot/config.txt + + if [ "$1" -eq 0 ]; then # disable overscan + sed /boot/config.txt -i -e "s/^overscan_/#overscan_/" + if grep -q "^disable_overscan" /boot/config.txt; then + sed -i /boot/config.txt -e "s/^disable_overscan.*$/disable_overscan=1/" + else + printf "disable_overscan=1\n" >> /boot/config.txt + fi + else # enable overscan + sed -i /boot/config.txt -e "s/^disable_overscan.*$/disable_overscan=0/" + fi +} + +do_overscan() { + whiptail --yesno "What would you like to do with overscan" 20 60 2 \ + --yes-button Disable --no-button Enable + RET=$? + if [ $RET -eq 0 ] || [ $RET -eq 1 ]; then + set_overscan $RET; + else + return 1 + fi +} + +do_change_pass() { + whiptail --msgbox "You will now be asked to enter a new password for the pi user" 20 60 1 + passwd pi && + whiptail --msgbox "Password changed successfully" 20 60 1 +} + +do_configure_keyboard() { + dpkg-reconfigure keyboard-setup && + printf "Reloading keymap. This may take a short while\n" && + invoke-rc.d keyboard-setup start +} + +do_change_locale() { + dpkg-reconfigure locales +} + +do_change_timezone() { + dpkg-reconfigure tzdata +} + +do_memory_split() { + # Stop if /boot is not a mountpoint + if ! mountpoint -q /boot; then + return 1 + fi + MEMSPLIT=$(whiptail --menu "Set memory split" 20 60 10 \ + "224" "224MiB for ARM, 32MiB for VideoCore" \ + "192" "192MiB for ARM, 64MiB for VideoCore" \ + "128" "128MiB for ARM, 128MiB for VideoCore" \ + 3>&1 1>&2 2>&3) + if [ $? -eq 0 ]; then + cp -a /boot/arm${MEMSPLIT}_start.elf /boot/start.elf + fi +} + +do_ssh() { + whiptail --yesno "Would you like the SSH server enabled or disabled?" 20 60 2 \ + --yes-button Enable --no-button Disable + RET=$? + if [ $RET -eq 0 ]; then + update-rc.d ssh enable && + invoke-rc.d ssh start && + whiptail --msgbox "SSH server enabled" 20 60 1 + elif [ $RET -eq 1 ]; then + update-rc.d ssh disable && + whiptail --msgbox "SSH server disabled" 20 60 1 + else + return $RET + fi +} + +do_finish() { + if [ -e /etc/profile.d/raspi-config.sh ]; then + rm -f /etc/profile.d/raspi-config.sh + sed -i /etc/inittab \ + -e "s/^#\(.*\)#\s*RPICFG_TO_ENABLE\s*/\1/" \ + -e "/#\s*RPICFG_TO_DISABLE/d" + telinit q + fi + whiptail --msgbox "Done" 20 60 1 + exit 0 +} + +while true; do + FUN=$(whiptail --menu "Raspi-config" 20 80 10 --cancel-button Exit \ + "info" "Information about this tool" \ + "expand_rootfs" "Expand root partition to fill SD card" \ + "overscan" "Change overscan" \ + "change_pass" "Change password for 'pi' user" \ + "configure_keyboard" "Set keyboard layout" \ + "change_locale" "Set locale" \ + "change_timezone" "Set timezone" \ + "memory_split" "Change memory split" \ + "ssh" "Enable or disable ssh server" \ + "finish" "Finish config and don't start raspi-config at boot" \ + 3>&1 1>&2 2>&3) + if [ $? -ne 0 ]; then + exit 0; + else + "do_$FUN" || whiptail --msgbox "There was an error running do_$FUN" 20 60 1 + fi +done + diff --git a/sample_profile_d.sh b/sample_profile_d.sh new file mode 100644 index 0000000..c72ab3f --- /dev/null +++ b/sample_profile_d.sh @@ -0,0 +1,17 @@ +#!/bin/sh +# Part of raspi-config http://github.com/asb/raspi-config +# +# See LICENSE file for copyright and license details + +# Should be installed to /etc/profile.d/raspi-config.sh to force raspi-config +# to run at initial login + +# You may also want to set automatic login in /etc/inittab on tty1 by adding a +# line such as: +# 1:2345:respawn:/bin/login -f root tty1 /dev/tty1 2>&1 # RPICFG_TO_DISABLE + +if [ $(id -u) -ne 0 ]; then + printf "\nNOTICE: this Raspberry Pi has not been fully configured. Please run 'sudo raspi-config'\n\n" +else + which raspi-config && exec raspi-config +fi