Deprecate the prep command
This commit is contained in:
parent
8ad0b9dbe5
commit
9b126e90f0
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,380 +0,0 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# .---. . .
|
||||
# | | |
|
||||
# |--- .--. .-. .-. .-.| .-. .--.--. |.-. .-. .--. .-.
|
||||
# | | (.-' (.-' ( | ( )| | | | )( )| | (.-'
|
||||
# ' ' --' --' -' - -' ' ' -' -' -' ' - --'
|
||||
#
|
||||
# Freedom in the Cloud
|
||||
#
|
||||
# This script installs the Debian image to the microSD card, and should
|
||||
# be run on your laptop/desktop with the microSD card plugged in.
|
||||
|
||||
# License
|
||||
# =======
|
||||
#
|
||||
# Copyright (C) 2014-2015 Bob Mottram <bob@robotics.uk.to>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# The number of arguments
|
||||
NO_OF_ARGS=$#
|
||||
|
||||
PROJECT_NAME='freedombone'
|
||||
|
||||
export TEXTDOMAIN=${PROJECT_NAME}-prep
|
||||
export TEXTDOMAINDIR="/usr/share/locale"
|
||||
|
||||
# Version number of this script
|
||||
VERSION="1.01"
|
||||
|
||||
# typically /dev/sdb or /dev/sdc, depending upon how
|
||||
# many drives there are on your system
|
||||
MICROSD_DRIVE=
|
||||
|
||||
# IP address of the router (gateway)
|
||||
ROUTER_IP_ADDRESS="192.168.1.254"
|
||||
|
||||
# The fixed IP address of the Beaglebone Black on your local network
|
||||
BOX_IP_ADDRESS="192.168.1.55"
|
||||
|
||||
# DNS
|
||||
NAMESERVER1='213.73.91.35'
|
||||
NAMESERVER2='85.214.20.141'
|
||||
|
||||
MICROSD_MOUNT_POINT="/media/$USER"
|
||||
|
||||
DEBIAN_IMAGE_FILENAME=
|
||||
DEBIAN_FILE_NAME="bone-debian-8.1-console-armhf-2015-07-12-2gb.img"
|
||||
|
||||
# Downloads for the Debian installer
|
||||
DOWNLOAD_LINK1="https://rcn-ee.com/rootfs/bb.org/testing/2015-07-12/console/$DEBIAN_FILE_NAME.xz"
|
||||
|
||||
ROOTFS='rootfs'
|
||||
ROOTFS_SUBDIR=''
|
||||
|
||||
PARTITION_NUMBER=1
|
||||
|
||||
CURR_DIR=$(pwd)
|
||||
|
||||
function show_help {
|
||||
echo ''
|
||||
echo $'freedombone-prep -i [image filename] -d [microSD device] --ip [BBB LAN IP address] --iprouter [Router LAN IP address] --mount [mount directory]'
|
||||
echo ''
|
||||
echo $'See the manpage for more details'
|
||||
echo ''
|
||||
}
|
||||
|
||||
function configure_networking {
|
||||
rootdir=$1
|
||||
temp_interfaces=/tmp/freedombone_interfaces
|
||||
echo "# This file describes the network interfaces available on your system
|
||||
# and how to activate them. For more information, see interfaces(5).
|
||||
|
||||
# The loopback network interface
|
||||
auto lo
|
||||
iface lo inet loopback
|
||||
|
||||
# The primary network interface
|
||||
auto eth0
|
||||
iface eth0 inet static
|
||||
address $BOX_IP_ADDRESS
|
||||
netmask 255.255.255.0
|
||||
gateway $ROUTER_IP_ADDRESS
|
||||
dns-nameservers $NAMESERVER1 $NAMESERVER2
|
||||
# Example to keep MAC address between reboots
|
||||
#hwaddress ether B5:A2:BE:3F:1A:FE
|
||||
|
||||
# The secondary network interface
|
||||
#auto eth1
|
||||
#iface eth1 inet dhcp
|
||||
|
||||
# WiFi Example
|
||||
#auto wlan0
|
||||
#iface wlan0 inet dhcp
|
||||
# wpa-ssid \"essid\"
|
||||
# wpa-psk \"password\"
|
||||
|
||||
# Ethernet/RNDIS gadget (g_ether)
|
||||
# ... or on host side, usbnet and random hwaddr
|
||||
# Note on some boards, usb0 is automaticly setup with an init script
|
||||
#iface usb0 inet static
|
||||
# address 192.168.7.2
|
||||
# netmask 255.255.255.0
|
||||
# network 192.168.7.0
|
||||
# gateway 192.168.7.1" > $temp_interfaces
|
||||
|
||||
hexarray=( 1 2 3 4 5 6 7 8 9 0 a b c d e f )
|
||||
a=${hexarray[$RANDOM%16]}${hexarray[$RANDOM%16]}
|
||||
b=${hexarray[$RANDOM%16]}${hexarray[$RANDOM%16]}
|
||||
c=${hexarray[$RANDOM%16]}${hexarray[$RANDOM%16]}
|
||||
d=${hexarray[$RANDOM%16]}${hexarray[$RANDOM%16]}
|
||||
e=${hexarray[$RANDOM%16]}${hexarray[$RANDOM%16]}
|
||||
sed -i "s|#hwaddress ether.*|hwaddress ether de:$a:$b:$c:$d:$e|g" \
|
||||
$temp_interfaces
|
||||
|
||||
$SUDO cp $temp_interfaces $rootdir/etc/network/interfaces
|
||||
rm $temp_interfaces
|
||||
|
||||
$SUDO sed -i "s/nameserver.*/nameserver $NAMESERVER1/g" $rootdir/etc/resolv.conf
|
||||
$SUDO sed -i "/nameserver $NAMESERVER1/a\nameserver $NAMESERVER2" $rootdir/etc/resolv.conf
|
||||
}
|
||||
|
||||
# if no arguments are given
|
||||
if [[ $NO_OF_ARGS == 0 ]]; then
|
||||
show_help
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ -d /media ]; then
|
||||
# different directories for Debian
|
||||
if [ -d /media/usb1 ]; then
|
||||
MICROSD_MOUNT_POINT=/media
|
||||
ROOTFS=usb1
|
||||
fi
|
||||
if [ -d /media/usb1/@ ]; then
|
||||
MICROSD_MOUNT_POINT=/media
|
||||
ROOTFS=usb1
|
||||
ROOTFS_SUBDIR='/@'
|
||||
fi
|
||||
if [ -d /media/usb0 ]; then
|
||||
MICROSD_MOUNT_POINT=/media
|
||||
fi
|
||||
fi
|
||||
if [ ! -d $MICROSD_MOUNT_POINT ]; then
|
||||
echo $"The mount directory $MICROSD_MOUNT_POINT does not exist."
|
||||
echo $'Use the --mount option to specify where the microSD gets mounted to.'
|
||||
exit 67563
|
||||
fi
|
||||
|
||||
echo "MICROSD_MOUNT_POINT=$MICROSD_MOUNT_POINT"
|
||||
|
||||
while [[ $# > 1 ]]
|
||||
do
|
||||
key="$1"
|
||||
|
||||
case $key in
|
||||
-h|--help)
|
||||
show_help
|
||||
;;
|
||||
# Drive path for the microSD
|
||||
-d|--drive)
|
||||
shift
|
||||
MICROSD_DRIVE="$1"
|
||||
;;
|
||||
# debian disk image created with freedombone-image
|
||||
-i|--image)
|
||||
shift
|
||||
DEBIAN_IMAGE_FILENAME="$1"
|
||||
ROOTFS_SUBDIR='/@'
|
||||
;;
|
||||
# BBB static IP address on the LAN
|
||||
--ip)
|
||||
shift
|
||||
BOX_IP_ADDRESS="$1"
|
||||
;;
|
||||
# Router IP address on the LAN
|
||||
--iprouter)
|
||||
shift
|
||||
ROUTER_IP_ADDRESS="$1"
|
||||
;;
|
||||
# mount point
|
||||
--mount)
|
||||
shift
|
||||
MICROSD_MOUNT_POINT="$1"
|
||||
;;
|
||||
# nameserver 1
|
||||
--ns1)
|
||||
shift
|
||||
NAMESERVER1="$1"
|
||||
;;
|
||||
# nameserver 2
|
||||
--ns2)
|
||||
shift
|
||||
NAMESERVER2="$1"
|
||||
;;
|
||||
*)
|
||||
# unknown option
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
|
||||
if [ ! $MICROSD_DRIVE ]; then
|
||||
echo $'You need to specify a drive for the connected microSD.'
|
||||
echo $'This can most easily be found by removing the microSD, then'
|
||||
echo $'running:'
|
||||
echo ''
|
||||
echo ' ls /dev/sd*'
|
||||
echo ''
|
||||
echo 'or'
|
||||
echo ''
|
||||
echo ' ls /dev/mmcblk*'
|
||||
echo ''
|
||||
echo $'Then plugging the microSD back in and entering the same command again'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -b ${MICROSD_DRIVE}${PARTITION_NUMBER} ]; then
|
||||
if [ -b ${MICROSD_DRIVE}p${PARTITION_NUMBER} ]; then
|
||||
PARTITION_NUMBER=p${PARTITION_NUMBER}
|
||||
else
|
||||
echo $"The microSD drive could not be found at ${MICROSD_DRIVE}1"
|
||||
exit 2
|
||||
fi
|
||||
fi
|
||||
|
||||
SUDO=
|
||||
if [ -f /usr/bin/sudo ]; then
|
||||
SUDO='sudo'
|
||||
fi
|
||||
$SUDO apt-get install p7zip wget
|
||||
|
||||
if [ ! -d ~/freedombone ]; then
|
||||
mkdir ~/freedombone
|
||||
fi
|
||||
cd ~/freedombone
|
||||
|
||||
# extract the image
|
||||
if [ $DEBIAN_IMAGE_FILENAME ]; then
|
||||
# debian image filename specified as an option
|
||||
if [[ $DEBIAN_IMAGE_FILENAME == *".bz2" ]]; then
|
||||
tar -xjvf $DEBIAN_IMAGE_FILENAME
|
||||
pattern="*.img"
|
||||
files=( $pattern )
|
||||
DEBIAN_IMAGE_FILENAME=${files[0]}
|
||||
fi
|
||||
if [[ $DEBIAN_IMAGE_FILENAME != *".img" ]]; then
|
||||
echo $'Debian image (.img) file expected'
|
||||
exit 62394
|
||||
fi
|
||||
DEBIAN_FILE_NAME=$DEBIAN_IMAGE_FILENAME
|
||||
if [ ! -f ~/freedombone/$DEBIAN_FILE_NAME ]; then
|
||||
cd $CURR_DIR
|
||||
cp $DEBIAN_FILE_NAME ~/freedombone/$DEBIAN_FILE_NAME
|
||||
cd ~/freedombone
|
||||
fi
|
||||
else
|
||||
# default debian image downloaded from elsewhere
|
||||
if [ ! -f ~/freedombone/$DEBIAN_FILE_NAME.xz ]; then
|
||||
if [ ! -f ~/freedombone/$DEBIAN_FILE_NAME ]; then
|
||||
wget $DOWNLOAD_LINK1
|
||||
fi
|
||||
fi
|
||||
xz -d $DEBIAN_FILE_NAME.xz
|
||||
fi
|
||||
|
||||
if [ ! -f ~/freedombone/$DEBIAN_FILE_NAME ]; then
|
||||
echo $"Couldn't extract image $DEBIAN_FILE_NAME"
|
||||
exit 4
|
||||
fi
|
||||
|
||||
cd ~/freedombone
|
||||
echo $'Flashing image. This may take a while.'
|
||||
#$SUDO dd if=$DEBIAN_FILE_NAME of=$MICROSD_DRIVE
|
||||
sync
|
||||
|
||||
sleep 5
|
||||
if [ -d $MICROSD_MOUNT_POINT/$ROOTFS ]; then
|
||||
umount $MICROSD_MOUNT_POINT/$ROOTFS
|
||||
$SUDO rm $MICROSD_MOUNT_POINT/$ROOTFS
|
||||
fi
|
||||
$SUDO mkdir -p $MICROSD_MOUNT_POINT/$ROOTFS
|
||||
$SUDO mount ${MICROSD_DRIVE}${PARTITION_NUMBER} $MICROSD_MOUNT_POINT/$ROOTFS
|
||||
sync
|
||||
|
||||
if [ ! -b ${MICROSD_DRIVE}${PARTITION_NUMBER} ]; then
|
||||
echo ''
|
||||
echo $"The microSD drive could not be found at ${MICROSD_DRIVE}${PARTITION_NUMBER}"
|
||||
read -p $"Wait for the drive to mount then press any key... " -n1 -s
|
||||
if [ ! -b ${MICROSD_DRIVE}${PARTITION_NUMBER} ]; then
|
||||
echo $"microSD drive not found at ${MICROSD_DRIVE}${PARTITION_NUMBER}"
|
||||
exit 5
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -d $MICROSD_MOUNT_POINT/$ROOTFS ]; then
|
||||
echo ''
|
||||
echo $"The rootfs partition $MICROSD_MOUNT_POINT/$ROOTFS was not found."
|
||||
ls $MICROSD_MOUNT_POINT
|
||||
exit 65688
|
||||
fi
|
||||
|
||||
if [ ! -d $MICROSD_MOUNT_POINT/$ROOTFS$ROOTFS_SUBDIR/home ]; then
|
||||
echo ''
|
||||
echo $"The rootfs partition was not written correctly."
|
||||
ls $MICROSD_MOUNT_POINT/$ROOTFS$ROOTFS_SUBDIR
|
||||
exit 65688
|
||||
fi
|
||||
|
||||
configure_networking $MICROSD_MOUNT_POINT/$ROOTFS$ROOTFS_SUBDIR
|
||||
|
||||
# copy the commands to the card
|
||||
$SUDO cp -f $(which freedombone)* $MICROSD_MOUNT_POINT/$ROOTFS$ROOTFS_SUBDIR/usr/local/bin/
|
||||
$SUDO cp -f $(which zeronetavahi)* $MICROSD_MOUNT_POINT/$ROOTFS$ROOTFS_SUBDIR/usr/local/bin/
|
||||
$SUDO cp -f $MICROSD_MOUNT_POINT/$ROOTFS$ROOTFS_SUBDIR/usr/local/bin/freedombone-mesh $MICROSD_MOUNT_POINT/$ROOTFS$ROOTFS_SUBDIR/usr/local/bin/mesh
|
||||
$SUDO cp -f $MICROSD_MOUNT_POINT/$ROOTFS$ROOTFS_SUBDIR/usr/local/bin/freedombone-meshweb $MICROSD_MOUNT_POINT/$ROOTFS$ROOTFS_SUBDIR/usr/local/bin/meshweb
|
||||
if [ ! -f $MICROSD_MOUNT_POINT/$ROOTFS$ROOTFS_SUBDIR/usr/local/bin/freedombone ]; then
|
||||
echo $'There was a problem with writing freedombone commands to the SD card'
|
||||
exit 8736
|
||||
fi
|
||||
|
||||
# remove automatic motd creator if it exists
|
||||
if [ -f $MICROSD_MOUNT_POINT/$ROOTFS$ROOTFS_SUBDIR/etc/init.d/motd ]; then
|
||||
$SUDO rm -f $MICROSD_MOUNT_POINT/$ROOTFS$ROOTFS_SUBDIR/etc/init.d/motd
|
||||
fi
|
||||
|
||||
# change the motd to show further install instructions
|
||||
echo '' >> /tmp/freedombone_motd
|
||||
echo $'Create a user for the system with:' >> /tmp/freedombone_motd
|
||||
echo '' >> /tmp/freedombone_motd
|
||||
echo ' adduser [username]' >> /tmp/freedombone_motd
|
||||
echo '' >> /tmp/freedombone_motd
|
||||
echo $'Enter the command "exit" a couple of times to get back to your main system' >> /tmp/freedombone_motd
|
||||
echo $'then log back in as the user you just created with:' >> /tmp/freedombone_motd
|
||||
echo '' >> /tmp/freedombone_motd
|
||||
echo " ssh [username]@$BOX_IP_ADDRESS" >> /tmp/freedombone_motd
|
||||
echo '' >> /tmp/freedombone_motd
|
||||
echo $'and use the "su" command to become the root user again.' >> /tmp/freedombone_motd
|
||||
echo '' >> /tmp/freedombone_motd
|
||||
echo $'Finally you can use the freedombone command to install a server configuration:' >> /tmp/freedombone_motd
|
||||
echo '' >> /tmp/freedombone_motd
|
||||
echo ' apt-get update' >> /tmp/freedombone_motd
|
||||
echo ' apt-get -y install git dialog build-essential' >> /tmp/freedombone_motd
|
||||
echo ' freedombone menuconfig' >> /tmp/freedombone_motd
|
||||
|
||||
$SUDO cp -f /tmp/freedombone_motd $MICROSD_MOUNT_POINT/$ROOTFS$ROOTFS_SUBDIR/etc/motd
|
||||
|
||||
clear
|
||||
echo $'*** Initial microSD card setup is complete ***'
|
||||
echo ''
|
||||
echo $'To avoid running out of disk space you may first wish to resize the'
|
||||
echo $'partition to the size of your microSD card, using something like gparted.'
|
||||
echo ''
|
||||
echo $'The microSD card can now be removed and inserted into the Beaglebone Black.'
|
||||
echo $'Once the Beaglebone has booted then you can log in with:'
|
||||
echo ''
|
||||
echo " ssh root@$BOX_IP_ADDRESS"
|
||||
echo ''
|
||||
echo $'The root password should be changed with the command "passwd".'
|
||||
cat /tmp/freedombone_motd
|
||||
rm /tmp/freedombone_motd
|
||||
$SUDO umount $MICROSD_MOUNT_POINT/$ROOTFS
|
||||
sync
|
||||
if [ -d $MICROSD_MOUNT_POINT/$ROOTFS ]; then
|
||||
$SUDO rm -rf $MICROSD_MOUNT_POINT/$ROOTFS
|
||||
fi
|
||||
exit 0
|
Loading…
Reference in New Issue