Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
asb committed Jun 10, 2012
0 parents commit e45b6d4
Show file tree
Hide file tree
Showing 9 changed files with 266 additions and 0 deletions.
26 changes: 26 additions & 0 deletions LICENSE
@@ -0,0 +1,26 @@
raspi-config is licensed under the terms of the MIT license reproduced below.

#####################################################

Copyright (c) 2012 Alex Bradbury <asb@asbradbury.org>

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.
5 changes: 5 additions & 0 deletions debian/changelog
@@ -0,0 +1,5 @@
raspi-config (20120610) unstable; urgency=low

* Initial release

-- Alex Bradbury <asb@asbradbury.org> Sun, 10 Jun 2012 15:59:17 +0000
1 change: 1 addition & 0 deletions debian/compat
@@ -0,0 +1 @@
8
14 changes: 14 additions & 0 deletions debian/control
@@ -0,0 +1,14 @@
Source: raspi-config
Section: unknown
Priority: extra
Maintainer: Alex Bradbury <asb@asbradbury.org>
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
2 changes: 2 additions & 0 deletions debian/raspi-config.docs
@@ -0,0 +1,2 @@
LICENSE
sample_profile_d.sh
1 change: 1 addition & 0 deletions debian/raspi-config.install
@@ -0,0 +1 @@
./raspi-config /usr/bin/
13 changes: 13 additions & 0 deletions 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 $@
187 changes: 187 additions & 0 deletions 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 <<EOF
p
d
2
n
p
2
$PART_START
p
w
EOF

# now set up an init.d script
cat <<\EOF > /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

17 changes: 17 additions & 0 deletions 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 >/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

0 comments on commit e45b6d4

Please sign in to comment.