mirror of
https://github.com/RasppleII/a2server.git
synced 2025-01-11 11:31:21 +00:00
Add main setup/update scripts
This commit is contained in:
parent
4e8c5fe86b
commit
08a2d8ddf1
285
docs/ivanx/setup/index.txt
Normal file
285
docs/ivanx/setup/index.txt
Normal file
@ -0,0 +1,285 @@
|
||||
# A2SERVER master setup script, last update 15-Feb-2015
|
||||
# it downloads and executes several scripts related to the setup of
|
||||
# netatalk configured for Apple II use on Debian, Raspbian, or Ubuntu.
|
||||
# more info is at http://appleii.ivanx.com/a2server
|
||||
|
||||
# to download and execute, type:
|
||||
# wget appleii.ivanx.com/a2server/setup; source setup
|
||||
|
||||
a2serverVersion="124"
|
||||
|
||||
isRpi=
|
||||
[[ -f /usr/bin/raspi-config ]] && isRpi=1
|
||||
|
||||
isDebian=
|
||||
[[ ( -f /etc/debian_version ) && ( $(cut -c 1-2 < /etc/debian_version) == "7." ) && ( $(uname -m) == "i686" ) ]] && isDebian=1
|
||||
|
||||
if [[ -f /usr/local/etc/A2SERVER-version ]]; then
|
||||
echo "A2SERVER version available: $a2serverVersion"
|
||||
echo "A2SERVER version installed: $(cat /usr/local/etc/A2SERVER-version)"
|
||||
fi
|
||||
|
||||
skipRepoUpdate=
|
||||
autoAnswerYes=
|
||||
setupNetBoot=
|
||||
setupWindowsSharing=
|
||||
updateRasppleII=
|
||||
while [[ $1 ]]; do
|
||||
if [[ $1 == "-r" ]]; then
|
||||
shift
|
||||
skipRepoUpdate="-r"
|
||||
touch /tmp/a2server-packageReposUpdated
|
||||
elif [[ $1 == "-y" ]]; then
|
||||
shift
|
||||
autoAnswerYes="-y"
|
||||
touch /tmp/a2server-autoAnswerYes
|
||||
elif [[ $1 == "-b" ]]; then
|
||||
shift
|
||||
setupNetBoot="-b"
|
||||
touch /tmp/a2server-setupNetBoot
|
||||
elif [[ $1 == "-w" ]]; then
|
||||
shift
|
||||
setupWindowsSharing="-w"
|
||||
touch /tmp/a2server-setupWindowsSharing
|
||||
elif [[ $1 == "-os" || $1 == "os" ]]; then
|
||||
# elif [[ ${1,,} == "rasppleii" || ${1,,} == "raspple" || ${1,,} == "rasappleii" || ${1,,} == "rasapple" || ${1,,} == "raspple2" || ${1,,} == "rasapple2" ]]; then
|
||||
shift
|
||||
updateRasppleII=1
|
||||
elif [[ $1 == "-v" ]]; then
|
||||
shift
|
||||
if [[ ! -f /usr/local/etc/A2SERVER-version ]]; then
|
||||
echo "A2SERVER version available: $a2serverVersion"
|
||||
echo "A2SERVER version installed: none"
|
||||
fi
|
||||
[[ $0 == "-bash" ]] && return 1 || exit 1
|
||||
elif [[ $1 ]]; then
|
||||
echo "options:"
|
||||
echo "-v: display installed and available versions, then exit"
|
||||
echo "-y: auto-answer yes to all prompts"
|
||||
echo "-r: don't update package repositories"
|
||||
echo "-b: auto-setup network boot (use with -y)"
|
||||
echo "-w: auto-setup Windows file sharing (use with -y)"
|
||||
if [[ $isRpi ]]; then
|
||||
echo "-os: update Raspbian OS, A2CLOUD, A2SERVER, and Apple II Pi"
|
||||
fi
|
||||
[[ $0 == "-bash" ]] && return 1 || exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ $updateRasppleII ]]; then
|
||||
echo "A2SERVER: Updating Raspple II (takes up to an hour)..."
|
||||
wget -qO /tmp/raspbian-update ivanx.com/a2server/files/raspbian-update.txt
|
||||
source /tmp/raspbian-update a2cloud a2server $autoAnswerYes $skipRepoUpdate
|
||||
[[ $0 == "-bash" ]] && return 0 || exit 0
|
||||
fi
|
||||
|
||||
if { [[ -f /usr/local/etc/A2SERVER-version ]] && (( $(cat /usr/local/etc/A2SERVER-version) < 110 )); }; then
|
||||
echo
|
||||
echo "WARNING: The current A2SERVER installer scripts haven't been tested for"
|
||||
echo "updating the earlier version of A2SERVER that you have. A fresh install"
|
||||
echo "is suggested. Continuing is not recommended and could make A2SERVER"
|
||||
echo "no longer work properly, or cause data to be lost."
|
||||
fi
|
||||
|
||||
a2server_update=0
|
||||
doSetup=1
|
||||
|
||||
unsupportedOS=1
|
||||
if [[ $isRpi ]]; then #supported Raspbian? (16-Feb-15, 20-Jun-14, 09-Jan-14, etc)
|
||||
fwhash=$(zcat /usr/share/doc/raspberrypi-bootloader/changelog.Debian.gz | grep -m 1 'as of' | awk '{print $NF}')
|
||||
[[ ($fwhash == "8aca5762") || ($fwhash == "462f3e3f476f7b6") || ($fwhash == "c32bc633039cd9") || ($fwhash == "9d34d0475f9") || ($fwhash == "d4f5315cfac4e") || ($fwhash == "6f4a90c8cb8817f") || ($fwhash == "5dd9b4962e") || ($fwhash == "17c8799375") ]] && unsupportedOS=0
|
||||
elif [[ "$(lsb_release -rs 2> /dev/null)" == "12.04" ]]; then #Ubuntu 12.04?
|
||||
unsupportedOS=0
|
||||
elif [[ "$(lsb_release -rs 2> /dev/null)" == "7.3" || "$(lsb_release -rs 2> /dev/null)" == "7.6" || "$(lsb_release -rs 2> /dev/null)" == "7.8" ]]; then # tested Debian?
|
||||
unsupportedOS=0
|
||||
fi
|
||||
|
||||
if (( unsupportedOS )); then
|
||||
echo
|
||||
echo "WARNING: A2SERVER and its installer scripts have not been tested on this"
|
||||
echo "operating system version. Continuing is probably fine, but might not be."
|
||||
echo "Worst case could make your operating system no longer work properly,"
|
||||
echo "or cause data to be lost."
|
||||
echo "More information is at http://appleii.ivanx.com/a2server."
|
||||
fi
|
||||
|
||||
doSetup=1
|
||||
if [[ ! -f /usr/local/etc/a2server-help.txt ]] || (( $a2server_update )); then
|
||||
echo
|
||||
echo "Setting up A2SERVER will take up to 60 minutes, during which"
|
||||
echo "you'll see a bunch of stuff spit out across the screen."
|
||||
echo
|
||||
if [[ ! $autoAnswerYes ]]; then
|
||||
echo -n "Ready to set up A2SERVER? "
|
||||
read
|
||||
[[ ${REPLY:0:1} == "y" || ${REPLY:0:1} == "Y" ]]; doSetup=$(( 1 - $? ))
|
||||
fi
|
||||
fi
|
||||
|
||||
if (( $doSetup )); then
|
||||
|
||||
echo
|
||||
echo "a2server-setup modifies files and performs actions as the root user."
|
||||
echo "For details, visit http://appleii.ivanx.com/a2server."
|
||||
echo
|
||||
if [[ ! $autoAnswerYes ]]; then
|
||||
echo -n "Continue? "
|
||||
read
|
||||
[[ ${REPLY:0:1} == "y" || ${REPLY:0:1} == "Y" ]]; doSetup=$(( 1 - $? ))
|
||||
fi
|
||||
|
||||
if (( $doSetup )); then
|
||||
|
||||
userPw=$(sudo grep "^$USER" /etc/shadow | cut -f 2 -d ':')
|
||||
[[ $userPw == "$(echo 'apple2' | perl -e '$_ = <STDIN>; chomp; print crypt($_, $ARGV[0])' "${userPw%"${userPw#\$*\$*\$}"}")" ]] && isApple2Pw=1 || isApple2Pw=
|
||||
[[ $userPw == "$(echo 'raspberry' | perl -e '$_ = <STDIN>; chomp; print crypt($_, $ARGV[0])' "${userPw%"${userPw#\$*\$*\$}"}")" ]] && isRaspberryPw=1 || isRaspberryPw=
|
||||
|
||||
password="your password"
|
||||
[[ $isApple2Pw ]] && password="'apple2'"
|
||||
[[ $isRaspberryPw ]] && password="'raspberry'"
|
||||
|
||||
|
||||
[[ $isRpi ]] && a2server="your Raspberry Pi" || a2server="A2SERVER"
|
||||
if [[ ! $isApple2Pw && ! -f /usr/local/etc/A2SERVER-version ]]; then
|
||||
if [[ ! $autoAnswerYes ]]; then
|
||||
echo
|
||||
echo "To ensure that all client computers are able to connect to"
|
||||
echo "${a2server} using the same password, you are recommended"
|
||||
echo "to change your user password to 'apple2'."
|
||||
echo
|
||||
echo -n "Do you want to change the password for user '$USER' to 'apple2' now? "
|
||||
read
|
||||
fi
|
||||
if [[ $autoAnswerYes || ${REPLY:0:1} == "Y" || ${REPLY:0:1} == "y" ]]; then
|
||||
echo "A2SERVER: changing password for user '$USER' to 'apple2'..."
|
||||
echo "$USER:apple2" | sudo chpasswd
|
||||
fi
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "During this installation, enter ${password} if prompted for passwords."
|
||||
echo
|
||||
|
||||
sudo true
|
||||
|
||||
echo
|
||||
echo "A2SERVER: Downloading scripts..."
|
||||
|
||||
wget -q -O /tmp/1.storage appleii.ivanx.com/a2server/scripts/a2server-1-storage.txt
|
||||
chmod ugo+x /tmp/1.storage
|
||||
|
||||
wget -q -O /tmp/2.tools appleii.ivanx.com/a2server/scripts/a2server-2-tools.txt
|
||||
chmod ugo+x /tmp/2.tools
|
||||
|
||||
wget -q -O /tmp/3.sharing appleii.ivanx.com/a2server/scripts/a2server-3-sharing.txt
|
||||
chmod ugo+x /tmp/3.sharing
|
||||
|
||||
wget -q -O /tmp/5.netboot appleii.ivanx.com/a2server/scripts/a2server-5-netboot.txt
|
||||
chmod ugo+x /tmp/5.netboot
|
||||
|
||||
wget -q -O /tmp/6.samba appleii.ivanx.com/a2server/scripts/a2server-6-samba.txt
|
||||
chmod ugo+x /tmp/6.samba
|
||||
|
||||
wget -q -O /tmp/7.console appleii.ivanx.com/a2server/scripts/a2server-7-console.txt
|
||||
chmod ugo+x /tmp/7.console
|
||||
|
||||
echo "A2SERVER: Scripts have been downloaded. Installing..."
|
||||
|
||||
/tmp/1.storage
|
||||
rm /tmp/1.storage
|
||||
/tmp/2.tools
|
||||
rm /tmp/2.tools
|
||||
/tmp/3.sharing
|
||||
rm /tmp/3.sharing
|
||||
/tmp/5.netboot
|
||||
rm /tmp/5.netboot
|
||||
/tmp/6.samba
|
||||
rm /tmp/6.samba
|
||||
/tmp/7.console
|
||||
rm /tmp/7.console
|
||||
rm /tmp/a2server-packageReposUpdated &> /dev/null
|
||||
|
||||
if [[ ! -f /usr/local/etc/A2SERVER-version ]] \
|
||||
|| (( $(cat /usr/local/etc/A2SERVER-version) < "$a2serverVersion" )); then
|
||||
echo "$a2serverVersion" | sudo tee /usr/local/etc/A2SERVER-version &> /dev/null
|
||||
fi
|
||||
|
||||
source /usr/local/etc/a2server-aliases
|
||||
|
||||
# get Kernel release (e.g. 3.6.11+) and version (e.g. #557)
|
||||
kernelRelease=$(uname -r)
|
||||
kernelMajorRelease=$(cut -d '.' -f 1 <<< $kernelRelease)
|
||||
kernelMinorRelease=$(cut -d '.' -f 2 <<< $kernelRelease | sed 's/\(^[0-9]*\)[^0-9].*$/\1/')
|
||||
|
||||
# all done, see if AppleTalk is available and notify either way
|
||||
if [[ $(ps aux | grep [a]talkd) ]]; then
|
||||
echo "You now have a fully functional file server for Apple II clients."
|
||||
echo "On an Apple IIe, it should be accessible via \"Log In\" on the"
|
||||
echo "Workstation Card software. For IIgs users, it should be accessible"
|
||||
echo "via the AppleShare control panel."
|
||||
echo
|
||||
echo
|
||||
echo "A2SERVER setup is complete! Go connect from your Apple II!"
|
||||
echo
|
||||
elif [[ -f /tmp/rpiUpdate ]]; then
|
||||
echo "A2SERVER is now configured, but Apple II clients will not be able"
|
||||
echo "to connect until you restart your Raspberry Pi."
|
||||
echo
|
||||
if [[ ! $autoAnswerYes ]]; then
|
||||
echo -n "Restart now? "
|
||||
read
|
||||
fi
|
||||
if [[ $autoAnswerYes || ${REPLY:0:1} == "Y" || ${REPLY:0:1} == "y" ]]; then
|
||||
sudo shutdown -r now
|
||||
echo
|
||||
echo "A2SERVER: Preparing to restart..."
|
||||
while :; do sleep 60; done
|
||||
fi
|
||||
rm /tmp/rpiUpdate
|
||||
echo
|
||||
elif [[ $kernelMajorRelease -eq 3 && $kernelMinorRelease -ge 12 ]]; then
|
||||
echo "A2SERVER is now configured, but Apple II clients cannot connect"
|
||||
echo "because of a kernel-crashing bug in Linux kernel 3.12 through 3.15."
|
||||
echo "You have kernel version $kernelMajorRelease.$kernelMinorRelease."
|
||||
echo "A2SERVER has disabled AppleTalk networking to prevent crashes."
|
||||
echo "Please use kernel 3.11 or earlier, or kernel 3.16 or later."
|
||||
echo
|
||||
else
|
||||
echo "A2SERVER is now configured, but Apple II clients cannot connect because"
|
||||
echo "AppleTalk networking is unavailable. Please make sure that"
|
||||
echo "your Linux distribution has a loadable AppleTalk kernel module or"
|
||||
echo "has AppleTalk built into the kernel, and restart your server."
|
||||
echo "Or, if you previously disabled AppleTalk in A2SERVER, re-enable it"
|
||||
echo "by typing 'appletalk-on'."
|
||||
echo
|
||||
fi
|
||||
|
||||
if [[ -f /tmp/singleUser ]]; then
|
||||
if [[ ! $autoAnswerYes ]]; then
|
||||
echo "Your Raspberry Pi was started in single-user mode in order to"
|
||||
echo -n "fix a problem. You should restart to operate normally. Restart now? "
|
||||
read
|
||||
fi
|
||||
if [[ $autoAnswerYes || ${REPLY:0:1} == "Y" || ${REPLY:0:1} == "y" ]]; then
|
||||
sudo shutdown -r now
|
||||
echo
|
||||
echo "A2SERVER: Preparing to restart..."
|
||||
while :; do sleep 60; done
|
||||
fi
|
||||
echo
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "Type 'system-shutdown' to turn off A2SERVER."
|
||||
echo "Type 'a2server-setup' to configure network boot."
|
||||
echo "Type 'a2server-help' for a list of other commands."
|
||||
fi
|
||||
fi
|
||||
|
||||
unset a2server_update 2> /dev/null
|
||||
unset doSetup 2> /dev/null
|
||||
rm /tmp/a2server-autoAnswerYes 2> /dev/null
|
||||
rm /tmp/a2server-packageReposUpdated 2> /dev/null
|
||||
rm /tmp/a2server-setupNetBoot 2> /dev/null
|
||||
rm /tmp/a2server-setupWindowsSharing 2> /dev/null
|
||||
rm setup &> /dev/null
|
37
docs/ivanx/update/index.txt
Normal file
37
docs/ivanx/update/index.txt
Normal file
@ -0,0 +1,37 @@
|
||||
currentVersion=124
|
||||
|
||||
if [[ -f /usr/local/etc/A2SERVER-version ]]; then
|
||||
installedVersion=$(cat /usr/local/etc/A2SERVER-version)
|
||||
else
|
||||
installedVersion=100
|
||||
fi
|
||||
|
||||
autoAnswerYes=
|
||||
for arg in $@; do
|
||||
if [[ $arg == "-y" ]]; then
|
||||
autoAnswerYes=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
echo
|
||||
echo "Update history:"
|
||||
wget -qO- appleii.ivanx.com/a2server/update/versionhistory.txt
|
||||
echo
|
||||
echo "installed version: ${installedVersion:0:1}.${installedVersion:1:1}.${installedVersion:2:1}"
|
||||
echo "current version: ${currentVersion:0:1}.${currentVersion:1:1}.${currentVersion:2:1}"
|
||||
echo
|
||||
if [[ $autoAnswerYes ]]; then
|
||||
REPLY="y"
|
||||
else
|
||||
echo -n "Do you want to update (or reinstall) A2SERVER? "
|
||||
read
|
||||
fi
|
||||
if [[ ${REPLY:0:1} == "y" || ${REPLY:0:1} == "Y" ]]; then
|
||||
sudo rm /usr/local/etc/A2SERVER-version &> /dev/null
|
||||
# sudo rm /usr/local/etc/netatalk/a2boot/* &> /dev/null
|
||||
wget -q -O /tmp/setup appleii.ivanx.com/a2server/setup; source /tmp/setup "$@"
|
||||
fi
|
||||
|
||||
unset currentVersion 2> /dev/null
|
||||
unset installedVersion 2> /dev/null
|
Loading…
x
Reference in New Issue
Block a user