mirror of
https://github.com/RasppleII/a2server.git
synced 2024-12-22 17:29:34 +00:00
alternate URL for precompiled binaries with A2SERVER_BINARY_URL
self-hosted external dependency fallback; or default via A2SERVER_NO_EXTERNAL=1 a2serverrc sets default A2SERVER_SCRIPT_URL and A2SERVER_BINARY_URL 64-bit Debian precompiled binary support support for reorganized files subdirectory better information re unsupported OS at start of install info about netboot at end of install no longer deletes ~/GNUstep install libdb5.1 and libssl1.0.0 by default instead of older versions small tweaks and fixes regarding Debian detection, case insensitive fs, etc updated source code path for The Unarchiver this is internal version 1.2.8; see "release" notes about external dependencies
This commit is contained in:
parent
04ad897c97
commit
14f5ef66be
114
fix/fix.txt
Normal file
114
fix/fix.txt
Normal file
@ -0,0 +1,114 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo
|
||||
echo "A2SERVER fix: This utility will make a Raspberry Pi SD card boot if it"
|
||||
echo "kernel panics (crashes) on startup after updating its operating system"
|
||||
echo "while A2SERVER is installed."
|
||||
echo
|
||||
echo -n "Continue? "
|
||||
read
|
||||
doFix=
|
||||
if [[ ${REPLY:0:1} == "y" || ${REPLY:0:1} == "Y" ]]; then
|
||||
while true; do
|
||||
echo
|
||||
echo "If attached, remove the Raspberry Pi's SD card from this computer."
|
||||
echo -n "Press return to continue..."; read; echo
|
||||
|
||||
ls -1 /dev/sd? > /tmp/sd1 2> /dev/null
|
||||
|
||||
echo "Insert the Raspberry Pi's SD card into this computer, using a USB"
|
||||
echo "reader if you don't have an SD slot. If this is a virtual machine,"
|
||||
echo "make sure you select the reader or SD slot from its USB menu."
|
||||
echo -n "Press return to continue..."; read; echo
|
||||
|
||||
ls -1 /dev/sd? > /tmp/sd2 2> /dev/null
|
||||
|
||||
# if exactly one drive has been inserted, exit loop
|
||||
if { ! diff /tmp/sd1 /tmp/sd2 &> /dev/null; }; then
|
||||
# files are different, get dev name
|
||||
if [[ $(wc -c /tmp/sd1 | cut -f 1 -d ' ') -eq 0 ]]; then
|
||||
if [[ $(wc -l /tmp/sd2 | cut -f 1 -d ' ') -eq 1 ]]; then
|
||||
devName=$(cat /tmp/sd2)
|
||||
break
|
||||
else
|
||||
echo "More than one volume seems to have appeared. Trying again..."
|
||||
echo
|
||||
fi
|
||||
else
|
||||
devName=$(grep -v "$(cat /tmp/sd1)" /tmp/sd2)
|
||||
if [[ $(wc -l <<< $devName) -eq 1 ]]; then
|
||||
break
|
||||
else
|
||||
echo "More than one volume seems to have appeared. Trying again..."
|
||||
echo
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo "No SD card found. Trying again..."
|
||||
echo
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
mkdir -p /tmp/sd
|
||||
sudo mount ${devName}6 /tmp/sd
|
||||
|
||||
raspbianDate=$(date -d "$(zcat /tmp/sd/usr/share/doc/raspberrypi-bootloader/changelog.Debian.gz | grep -m 1 ' --' | rev | cut -f 1-6 -d ' ' | rev)" +%s)
|
||||
doFix=
|
||||
if [[ $raspbianDate -lt 1403204265 ]]; then
|
||||
echo "This doesn't appear to be a version of Raspbian that requires fixing."
|
||||
echo -n "Are you sure you want to continue? "
|
||||
read
|
||||
if [[ ${REPLY:0:1} == "y" || ${REPLY:0:1} == "Y" ]]; then
|
||||
doFix=1
|
||||
fi
|
||||
else
|
||||
doFix=1
|
||||
fi
|
||||
|
||||
if [[ $doFix ]]; then
|
||||
while read kernelRelease; do
|
||||
kernelReplaced=
|
||||
kernelMajorRelease=$(cut -d '.' -f 1 <<< $kernelRelease)
|
||||
kernelMinorRelease=$(cut -d '.' -f 2 <<< $kernelRelease | sed 's/\(^[0-9]*\)[^0-9].*$/\1/')
|
||||
kernelPatchRelease=$(cut -d '.' -f 3- <<< $kernelRelease | sed 's/\(^[0-9]*\)[^0-9].*$/\1/')
|
||||
# if kernel 3.12 below 3.12.25+, delete defective AppleTalk kernel
|
||||
if [[ $kernelMajorRelease -eq 3 && $kernelMinorRelease -eq 12 && $kernelPatchRelease -lt 25 ]]; then
|
||||
if [[ -f /tmp/sd/lib/modules/$kernelRelease/kernel/net/appletalk/appletalk.ko ]]; then
|
||||
if [[ $(sha1sum /tmp/sd/lib/modules/$kernelRelease/kernel/net/appletalk/appletalk.ko | cut -f 1 -d ' ') != "ecb239fc084c36de93f6926e7749b80f6024f269" ]]; then
|
||||
echo "Removing defective AppleTalk module from kernel $kernelRelease..."
|
||||
sudo rm -rf /tmp/sd/lib/modules/$kernelRelease/kernel/net/appletalk 2> /dev/null
|
||||
wget -qO /tmp/appletalk.ko.gz ${A2SERVER_SCRIPT_URL}files/appletalk-$kernelRelease.ko.gz
|
||||
if [[ $? -eq 0 ]]; then
|
||||
# if we found a prebuilt one on a2server site, so install it
|
||||
gunzip -f /tmp/appletalk.ko.gz
|
||||
sudo mkdir -p /tmp/sd/lib/modules/$kernelRelease/kernel/net/appletalk
|
||||
sudo mv /tmp/appletalk.ko /tmp/sd/lib/modules/$kernelRelease/kernel/net/appletalk
|
||||
echo "Installed fixed AppleTalk module for kernel $kernelRelease."
|
||||
kernelReplaced=1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done <<< "$(ls -1 /tmp/sd/lib/modules | sort -V)"
|
||||
sudo umount /tmp/sd
|
||||
|
||||
echo kern:$kernelReplaced
|
||||
if [[ $kernelReplaced ]]; then
|
||||
echo
|
||||
echo "All set. Remove your SD card, put it back in your Pi, and boot it."
|
||||
echo
|
||||
echo "You should be able to connect from your Apple II, but if you can't,"
|
||||
echo "log in to your Pi and type 'a2server-setup' to complete the fix."
|
||||
else
|
||||
echo
|
||||
echo "Okey doke. Half done. Remove your SD card, and put it back in your Pi."
|
||||
echo "After it boots, log in and type 'a2server-setup' to complete the fix."
|
||||
fi
|
||||
echo "See the A2SERVER web site at http://ivanx.com/a2server for more help."
|
||||
echo "(You can type 'sudo shutdown -h now' if you're done on this machine.)"
|
||||
echo
|
||||
fi
|
||||
fi
|
||||
|
||||
rm fix &> /dev/null
|
@ -7,14 +7,26 @@
|
||||
# Ensure URL we'll use ends in a /
|
||||
case "$A2SERVER_SCRIPT_URL" in
|
||||
*/) scriptURL="$A2SERVER_SCRIPT_URL" ;;
|
||||
*) scriptURL="${A2SERVER_SCRIPT_URL:-http://appleii.ivanx.com/a2server}/" ;;
|
||||
*) scriptURL="${A2SERVER_SCRIPT_URL:-http://ivanx.com/a2server}/" ;;
|
||||
esac
|
||||
case "$A2SERVER_BINARY_URL" in
|
||||
*/) binaryURL="$A2SERVER_BINARY_URL" ;;
|
||||
*) binaryURL="${A2SERVER_BINARY_URL:-http://ivanx.com/a2server/files}/" ;;
|
||||
esac
|
||||
useExternalURL=1
|
||||
[[ $A2SERVER_NO_EXTERNAL ]] && useExternalURL=
|
||||
|
||||
isRpi=
|
||||
[[ -f /usr/bin/raspi-config ]] && isRpi=1
|
||||
|
||||
isDebian=
|
||||
[[ ( -f /etc/debian_version ) && ( $(cut -c 1 < /etc/debian_version) -ge "7" ) && ( $(uname -m) == "i686" ) ]] && isDebian=1
|
||||
arch=
|
||||
if [[ -f /usr/bin/raspi-config ]]; then
|
||||
isRpi=1
|
||||
elif lsb_release -a 2> /dev/null | grep -q 'Distributor ID:.Debian' && [[ ( -f /etc/debian_version ) && ( $(cut -c 1 < /etc/debian_version) -ge "7" ) ]]; then
|
||||
uname_m="$(uname -m)"
|
||||
if [[ $uname_m == "i686" ]]; then
|
||||
arch='debian_x86'
|
||||
elif [[ $uname_m == "x86_64" ]]; then
|
||||
arch='debian_x64'
|
||||
fi
|
||||
fi
|
||||
|
||||
isJessie=
|
||||
[[ ( -f /etc/debian_version ) && ( $(cut -c 1-2 < /etc/debian_version) == "8." ) ]] && isJessie=1
|
||||
@ -26,10 +38,8 @@ if ! command -v nulib2 > /dev/null; then
|
||||
echo "A2SERVER: Installing nulib2..."
|
||||
|
||||
cd /tmp
|
||||
if [[ $isRpi ]]; then
|
||||
wget -qO- "http://appleii.ivanx.com/a2server/files/nulib2-rpi.tgz" | sudo tar Pzx
|
||||
elif [[ $isDebian ]]; then
|
||||
wget -qO- "http://appleii.ivanx.com/a2server/files/nulib2-debian7_x86.tgz" | sudo tar Pzx
|
||||
if [[ $arch ]]; then
|
||||
{ wget -qO- "${binaryURL}precompiled/nulib2-${arch}.tgz" | sudo tar Pzx; } &> /dev/null
|
||||
fi
|
||||
|
||||
if ! command -v nulib2 > /dev/null; then
|
||||
@ -48,8 +58,14 @@ if ! command -v nulib2 > /dev/null; then
|
||||
rm -rf /tmp/nulib &> /dev/null
|
||||
mkdir /tmp/nulib
|
||||
cd /tmp/nulib
|
||||
wget -q -O nulib.tgz http://web.archive.org/web/20131031160750/http://www.nulib.com/downloads/nulibdist.tar.gz
|
||||
tar zxf nulib.tgz
|
||||
if [[ $useExternalURL ]]; then
|
||||
wget -q -O nulibdist.tar.gz http://web.archive.org/web/20131031160750/http://www.nulib.com/downloads/nulibdist.tar.gz
|
||||
tar zxf nulibdist.tar.gz &> /dev/null
|
||||
fi
|
||||
if [[ ! -d nulib2-220 ]]; then
|
||||
wget -q -O nulibdist.tar.gz ${binaryURL}external/nulibdist.tar.gz
|
||||
tar zxf nulibdist.tar.gz &> /dev/null
|
||||
fi
|
||||
cd nufxlib*
|
||||
./configure
|
||||
make
|
||||
@ -81,22 +97,16 @@ if ! command -v unar > /dev/null; then
|
||||
|
||||
# jessie and later: Just use the unar package
|
||||
if [[ $isJessie ]]; then
|
||||
sudo apt-get install -y unar
|
||||
sudo apt-get -y install unar
|
||||
sudo apt-get clean
|
||||
fi
|
||||
|
||||
if ! command -v unar > /dev/null; then
|
||||
if [[ $isRpi || $isDebian ]]; then
|
||||
|
||||
if [[ $arch ]]; then
|
||||
# Dependencies: for unar
|
||||
sudo apt-get -y install libgnustep-base1.22
|
||||
sudo apt-get clean
|
||||
|
||||
if [[ $isRpi ]]; then
|
||||
wget -qO- "http://appleii.ivanx.com/a2server/files/unar-rpi_wheezy.tgz" | sudo tar Pzx
|
||||
elif [[ $isDebian ]]; then
|
||||
wget -qO- "http://appleii.ivanx.com/a2server/files/unar-debian7_x86.tgz" | sudo tar Pzx
|
||||
fi
|
||||
{ wget -qO- "${binaryURL}precompiled/unar-${arch}.tgz" | sudo tar Pzx; } &> /dev/null
|
||||
fi
|
||||
|
||||
# If all else fails, compile from source.
|
||||
@ -109,9 +119,15 @@ if ! command -v unar > /dev/null; then
|
||||
rm -rf /tmp/unar &> /dev/null
|
||||
mkdir /tmp/unar
|
||||
cd /tmp/unar
|
||||
wget -qO unar1.7_src.zip http://theunarchiver.googlecode.com/files/unar1.7_src.zip
|
||||
unzip -o unar1.7_src.zip
|
||||
cd The\ Unarchiver/XADMaster
|
||||
if [[ $useExternalURL ]]; then
|
||||
wget -O unar_1.8.zip https://github.com/incbee/Unarchiver/archive/unar-1.8.zip
|
||||
unzip -o unar_1.8.zip &> /dev/null
|
||||
fi
|
||||
if [ ! -d *Unarchiver*/XADMaster ]; then # need single bracket for glob
|
||||
wget -O unar_1.8.zip ${binaryURL}external/unar-1.8.zip
|
||||
unzip -o unar_1.8.zip &> /dev/null
|
||||
fi
|
||||
cd *Unarchiver*/XADMaster
|
||||
make -f Makefile.linux
|
||||
sudo mv lsar unar /usr/local/bin
|
||||
cd ../Extra
|
||||
@ -135,6 +151,7 @@ if ! command -v unzip >/dev/null; then
|
||||
|
||||
# Dependencies: unzip
|
||||
sudo apt-get -y install unzip
|
||||
sudo apt-get clean
|
||||
else
|
||||
echo "A2SERVER: unzip has already been installed."
|
||||
fi
|
||||
@ -162,9 +179,9 @@ echo "source /usr/local/etc/a2serverrc" | sudo tee -a /etc/bash.bashrc > /dev/nu
|
||||
|
||||
motd="/etc/motd"
|
||||
if [[ ! $(grep A2SERVER $motd) ]]; then
|
||||
echo | sudo tee -a $motd > /dev/null
|
||||
echo "Type 'system-shutdown' to turn off A2SERVER." | sudo tee -a $motd > /dev/null
|
||||
echo "Type 'a2server-setup' to configure network boot." | sudo tee -a $motd > /dev/null
|
||||
echo "Type 'a2server-help' for a list of other commands." | sudo tee -a $motd > /dev/null
|
||||
echo | sudo tee -a $motd > /dev/null
|
||||
echo | sudo tee -a $motd > /dev/null
|
||||
echo "Type 'system-shutdown' to turn off A2SERVER." | sudo tee -a $motd > /dev/null
|
||||
echo "Type 'a2server-setup' to configure network boot." | sudo tee -a $motd > /dev/null
|
||||
echo "Type 'a2server-help' for a list of other commands." | sudo tee -a $motd > /dev/null
|
||||
echo | sudo tee -a $motd > /dev/null
|
||||
fi
|
||||
|
@ -19,12 +19,26 @@ case "$A2SERVER_SCRIPT_URL" in
|
||||
*/) scriptURL="$A2SERVER_SCRIPT_URL" ;;
|
||||
*) scriptURL="${A2SERVER_SCRIPT_URL:-http://appleii.ivanx.com/a2server}/" ;;
|
||||
esac
|
||||
case "$A2SERVER_BINARY_URL" in
|
||||
*/) binaryURL="$A2SERVER_BINARY_URL" ;;
|
||||
*) binaryURL="${A2SERVER_BINARY_URL:-http://ivanx.com/a2server/files}/" ;;
|
||||
esac
|
||||
useExternalURL=1
|
||||
[[ $A2SERVER_NO_EXTERNAL ]] && useExternalURL=
|
||||
|
||||
isRpi=
|
||||
[[ -f /usr/bin/raspi-config ]] && isRpi=1
|
||||
|
||||
isDebian_x86=
|
||||
[[ ( -f /etc/debian_version ) && ( $(cut -c 1 < /etc/debian_version) -ge 7 ) && ( $(uname -m) == "i686" ) ]] && isDebian_x86=1
|
||||
arch=
|
||||
if [[ -f /usr/bin/raspi-config ]]; then
|
||||
isRpi=1
|
||||
arch='rpi'
|
||||
elif lsb_release -a 2> /dev/null | grep -q 'Distributor ID:.Debian' && [[ ( -f /etc/debian_version ) && ( $(cut -c 1 < /etc/debian_version) -ge "7" ) ]]; then
|
||||
uname_m="$(uname -m)"
|
||||
if [[ $uname_m == "i686" ]]; then
|
||||
arch='debian_x86'
|
||||
elif [[ $uname_m == "x86_64" ]]; then
|
||||
arch='debian_x64'
|
||||
fi
|
||||
fi
|
||||
|
||||
isJessie=
|
||||
[[ ( -f /etc/debian_version ) && ( $(cut -c 1-2 < /etc/debian_version) == "8." ) ]] && isJessie=1
|
||||
@ -55,27 +69,31 @@ else
|
||||
pkgFile=${url##*/}
|
||||
pkgName=${pkgFile%%_*}
|
||||
if ! dpkg -l $pkgName 2> /dev/null | grep -q '^ii'; then
|
||||
wget -qO /tmp/${url##*/} "$url"
|
||||
sudo dpkg -i /tmp/${url##*/}
|
||||
if [[ $useExternalURL ]]; then
|
||||
wget -qO "/tmp/${url##*/}" "$url"
|
||||
fi
|
||||
if [[ $? -ne 0 || ! -f "/tmp/${url##*/}" ]]; then
|
||||
wget -qO "/tmp/${url##*/}" "${binaryURL}external/deb/${url##*/}"
|
||||
fi
|
||||
sudo dpkg -i "/tmp/${url##*/}"
|
||||
sudo apt-get clean
|
||||
rm /tmp/${url##*/}
|
||||
rm "/tmp/${url##*/}"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
compileFromSource=1
|
||||
urls=
|
||||
while [[ $isRpi || $isDebian_x86 ]]; do
|
||||
while [[ $arch ]]; do
|
||||
# Install runtime libraries needed by Netatalk
|
||||
if [[ $isJessie ]]; then
|
||||
if [[ $isRpi ]]; then
|
||||
if [[ $arch == "rpi" ]]; then
|
||||
getOldPackage "http://mirrordirector.raspbian.org/raspbian/pool/main/d/db/libdb5.1_5.1.29-5_armhf.deb"
|
||||
elif [[ $isDebian_x86 ]]; then
|
||||
elif [[ $arch == "debian_x86" ]]; then
|
||||
getOldPackage "http://ftp.debian.org/debian/pool/main/d/db/libdb5.1_5.1.29-5_i386.deb"
|
||||
elif [[ $arch == "debian_x64" ]]; then
|
||||
getOldPackage "http://ftp.debian.org/debian/pool/main/d/db/libdb5.1_5.1.29-5_amd64.deb"
|
||||
fi
|
||||
elif [[ $(apt-cache search '^libdb4.8$') ]]; then
|
||||
# FIXME: Obsolete?
|
||||
sudo apt-get -y install libdb4.8
|
||||
elif [[ $(apt-cache search '^libdb5.1$') ]]; then
|
||||
# Dependencies: netatalk 2.2.4
|
||||
sudo apt-get -y install libdb5.1
|
||||
@ -85,18 +103,17 @@ else
|
||||
if [[ $(apt-cache search '^libssl1.0.0$') ]]; then
|
||||
# Dependencies: netatalk 2.2.4
|
||||
sudo apt-get -y install libssl1.0.0
|
||||
elif [[ $(apt-cache search '^libssl0.9.8$') ]]; then
|
||||
# FIXME: Obsolete?
|
||||
sudo apt-get -y install libssl0.9.8
|
||||
else
|
||||
break
|
||||
fi
|
||||
|
||||
if [[ $isJessie ]]; then
|
||||
if [[ $isRpi ]]; then
|
||||
if [[ $arch == "rpi" ]]; then
|
||||
getOldPackage "http://mirrordirector.raspbian.org/raspbian/pool/main/libg/libgcrypt11/libgcrypt11_1.5.0-5+deb7u3_armhf.deb"
|
||||
elif [[ $isDebian_x86 ]]; then
|
||||
elif [[ $arch == "debian_x86" ]]; then
|
||||
getOldPackage "http://ftp.debian.org/debian/pool/main/libg/libgcrypt11/libgcrypt11_1.5.0-5+deb7u3_i386.deb"
|
||||
elif [[ $arch == "debian_x64" ]]; then
|
||||
getOldPackage "http://ftp.debian.org/debian/pool/main/libg/libgcrypt11/libgcrypt11_1.5.0-5+deb7u3_amd64.deb"
|
||||
fi
|
||||
elif [[ $(apt-cache search '^libgcrypt11$') ]]; then
|
||||
# Dependencies: netatalk 2.2.4
|
||||
@ -106,10 +123,8 @@ else
|
||||
fi
|
||||
|
||||
# install Netatalk
|
||||
if [[ $isRpi ]]; then
|
||||
{ wget -qO- /tmp/netatalk.tgz "http://appleii.ivanx.com/a2server/files/netatalk224-rpi_wheezy.tgz" | sudo tar Pzx; } 2> /dev/null
|
||||
elif [[ $isDebian_x86 ]]; then
|
||||
{ wget -qO- /tmp/netatalk.tgz "http://appleii.ivanx.com/a2server/files/netatalk224-debian7_x86.tgz" | sudo tar Pzx; } 2> /dev/null
|
||||
if [[ $arch ]]; then
|
||||
{ wget -qO- "${binaryURL}precompiled/netatalk224-${arch}.tgz" | sudo tar Pzx; } &> /dev/null
|
||||
fi
|
||||
sudo mandb &> /dev/null
|
||||
|
||||
@ -121,18 +136,20 @@ else
|
||||
if [[ $compileFromSource ]]; then
|
||||
# Dependencies: build-deps for netatalk 2.2.4
|
||||
sudo apt-get -y install build-essential libssl-dev
|
||||
if [[ $isJessie ]]; then
|
||||
if [[ $isRpi ]]; then
|
||||
if [[ $arch ]]; then
|
||||
if [[ $arch == "rpi" ]]; then
|
||||
getOldPackage "http://mirrordirector.raspbian.org/raspbian/pool/main/d/db/libdb5.1-dev_5.1.29-5_armhf.deb"
|
||||
elif [[ $isDebian_x86 ]]; then
|
||||
elif [[ $arch == "debian_x86" ]]; then
|
||||
getOldPackage "http://ftp.us.debian.org/debian/pool/main/d/db/libdb5.1-dev_5.1.29-5_i386.deb"
|
||||
elif [[ $arch == "debian_x64" ]]; then
|
||||
getOldPackage "http://ftp.us.debian.org/debian/pool/main/d/db/libdb5.1-dev_5.1.29-5_amd64.deb"
|
||||
fi
|
||||
elif [[ $(apt-cache search '^libdb4.8-dev$') ]]; then
|
||||
# FIXME: Obsolete?
|
||||
sudo apt-get -y install libdb4.8-dev
|
||||
elif [[ $(apt-cache search '^libdb5.1-dev$') ]]; then
|
||||
# Dependencies: build-deps for netatalk 2.2.4
|
||||
sudo apt-get -y install libdb5.1-dev
|
||||
elif [[ $(apt-cache search '^libdb4.8-dev$') ]]; then
|
||||
# Dependencies: build-deps for netatalk 2.2.4
|
||||
sudo apt-get -y install libdb4.8-dev
|
||||
else
|
||||
echo "A2SERVER: WARNING: unknown version of libdb-dev is being installed."
|
||||
# Dependencies: build-deps for netatalk 2.2.4
|
||||
@ -140,10 +157,12 @@ else
|
||||
fi
|
||||
if [[ $isJessie ]]; then
|
||||
sudo apt-get -y install libgpg-error-dev
|
||||
if [[ $isRpi ]]; then
|
||||
if [[ $arch == "rpi" ]]; then
|
||||
getOldPackage "http://mirrordirector.raspbian.org/raspbian/pool/main/libg/libgcrypt11/libgcrypt11-dev_1.5.0-5+deb7u3_armhf.deb"
|
||||
elif [[ $isDebian_x86 ]]; then
|
||||
elif [[ $arch == "debian_x86" ]]; then
|
||||
getOldPackage "http://ftp.debian.org/debian/pool/main/libg/libgcrypt11/libgcrypt11-dev_1.5.0-5+deb7u3_i386.deb"
|
||||
elif [[ $arch == "debian_x64" ]]; then
|
||||
getOldPackage "http://ftp.debian.org/debian/pool/main/libg/libgcrypt11/libgcrypt11-dev_1.5.0-5+deb7u3_amd64.deb"
|
||||
fi
|
||||
elif [[ $(apt-cache search '^libgcrypt11-dev$') ]]; then
|
||||
# Dependencies: build-deps for netatalk 2.2.4
|
||||
@ -160,8 +179,14 @@ else
|
||||
mkdir /tmp/netatalk
|
||||
cd /tmp/netatalk
|
||||
|
||||
wget -q "http://downloads.sourceforge.net/project/netatalk/netatalk/2.2.4/netatalk-2.2.4.tar.gz"
|
||||
tar zxf netatalk-2.2.4.tar.gz
|
||||
if [[ $useExternalURL ]]; then
|
||||
wget -qO netatalk-2.2.4.tar.gz "http://downloads.sourceforge.net/project/netatalk/netatalk/2.2.4/netatalk-2.2.4.tar.gz"
|
||||
tar zxf netatalk-2.2.4.tar.gz &> /dev/null
|
||||
fi
|
||||
if [[ ! -d netatalk-2.2.4 ]]; then
|
||||
wget -O netatalk-2.2.4.tar.gz "${binaryURL}external/netatalk-2.2.4.tar.gz"
|
||||
tar zxf netatalk-2.2.4.tar.gz &> /dev/null
|
||||
fi
|
||||
cd netatalk-2.2.4
|
||||
|
||||
# Patch the source so file dates are preserved during a GS/OS folder copy,
|
||||
@ -191,10 +216,8 @@ fi
|
||||
if ! command -v macipgw > /dev/null; then
|
||||
echo "A2SERVER: Installing TCP over AppleTalk (MacIP)..."
|
||||
|
||||
if [[ $isRpi ]]; then
|
||||
wget -qO- "http://appleii.ivanx.com/a2server/files/macipgw-rpi.tgz" | sudo tar Pzx
|
||||
elif [[ $isDebian_x86 ]]; then
|
||||
wget -qO- "http://appleii.ivanx.com/a2server/files/macipgw-debian7_x86.tgz" | sudo tar Pzx
|
||||
if [[ $arch ]]; then
|
||||
{ wget -qO- "${binaryURL}precompiled/macipgw-${arch}.tgz" | sudo tar Pzx; } 2> /dev/null
|
||||
fi
|
||||
|
||||
if ! command -v macipgw > /dev/null; then
|
||||
@ -203,8 +226,14 @@ if ! command -v macipgw > /dev/null; then
|
||||
rm -rf /tmp/macipgw &> /dev/null
|
||||
mkdir /tmp/macipgw
|
||||
cd /tmp/macipgw
|
||||
wget -qO macipgw-master.zip "https://github.com/zero2sixd/macipgw/archive/master.zip"
|
||||
unzip macipgw-master.zip
|
||||
if [[ $useExternalURL ]]; then
|
||||
wget -qO macipgw.zip "https://github.com/zero2sixd/macipgw/archive/master.zip"
|
||||
unzip macipgw-src.zip &> /dev/null
|
||||
fi
|
||||
if [[ ! -d macipgw-master ]]; then
|
||||
wget -qO macipgw-src.zip "${binaryURL}external/macipgw-src.zip"
|
||||
unzip macipgw-src.zip &> /dev/null
|
||||
fi
|
||||
cd macipgw-master
|
||||
make
|
||||
sudo make install
|
||||
@ -222,7 +251,7 @@ echo "A2SERVER: Configuring Netatalk..."
|
||||
# if missing Netatalk startup file, download a fresh one
|
||||
if [ ! -f /etc/init.d/netatalk ]; then
|
||||
echo "A2SERVER: Downloading new Netatalk startup script..."
|
||||
sudo wget -qO /etc/init.d/netatalk http://appleii.ivanx.com/a2server/files/netatalk-init.d-clean.txt
|
||||
sudo wget -qO /etc/init.d/netatalk ${binaryURL}netatalk-init.d-clean.txt
|
||||
fi
|
||||
|
||||
# make the Netatalk startup script work correctly
|
||||
@ -325,10 +354,11 @@ if [[ -d /srv/A2SERVER/A2FILES && ! -d /srv/A2SERVER/.a2files ]]; then
|
||||
fi
|
||||
rm /srv/A2SERVER/A2FILES/.APPLEDESKTOP 2> /dev/null
|
||||
mkdir -p /tmp/netboot
|
||||
a2FilesList="$(wget -qO- http://ivanx.com/a2server/files/A2FILES-list.txt)"
|
||||
find /srv/A2SERVER/A2FILES -name '*' | tail -n +2 | tac | while read -d $'\n' thisFile; do
|
||||
wget -qO /tmp/A2FILES-list.txt ${binaryURL}A2FILES-list.txt
|
||||
find /srv/A2SERVER/A2FILES -name '*' | tail -n +2 | tac > /tmp/filelist.txt
|
||||
while read thisFile; do
|
||||
mixedCase="${thisFile##*/}"
|
||||
gsosPath=$(grep -i "^${thisFile}$" <<< "$a2FilesList")
|
||||
gsosPath=$(grep -i -m 1 "^${thisFile}$" /tmp/A2FILES-list.txt)
|
||||
[[ $gsosPath ]] && mixedCase="${gsosPath##*/}"
|
||||
sudo setfattr -n "user.filename" -v "$mixedCase" "$thisFile"
|
||||
if [[ ${thisFile##*/} != $mixedCase ]]; then
|
||||
@ -336,12 +366,12 @@ if [[ -d /srv/A2SERVER/A2FILES && ! -d /srv/A2SERVER/.a2files ]]; then
|
||||
else
|
||||
echo -e " processing $thisFile\n"
|
||||
fi
|
||||
sudo mv "$thisFile" "${thisFile%/*}"/"$(tr [:upper:] [:lower:] <<< $mixedCase)" 2> /dev/null
|
||||
done
|
||||
sudo mv "$thisFile" "${thisFile%/*}/${mixedCase,,}" 2> /dev/null
|
||||
done < /tmp/filelist.txt
|
||||
mv /srv/A2SERVER/A2FILES /srv/A2SERVER/.a2files
|
||||
mkdir /srv/A2SERVER/A2FILES
|
||||
sudo sed -i 's/casefold:toupper //' /usr/local/etc/netatalk/AppleVolumes.default
|
||||
sudo sed -i 's/^VOLCASEFOLD:.*/VOLCASEFOLD:/' /srv/A2SERVER/.a2files/.appledesktop/.volinfo
|
||||
sudo sed -i 's/casefold:toupper //' /usr/local/etc/netatalk/AppleVolumes.default 2> /dev/null
|
||||
sudo sed -i 's/^VOLCASEFOLD:.*/VOLCASEFOLD:/' /srv/A2SERVER/.a2files/.appledesktop/.volinfo 2> /dev/null
|
||||
fi
|
||||
|
||||
# 1.3.0: remove GSFILES if empty
|
||||
@ -375,11 +405,8 @@ if ! command -v ciopfs > /dev/null; then
|
||||
|
||||
# Dependency: For ciopfs
|
||||
sudo apt-get -y install fuse libglib2.0-0 libattr1 libfuse2
|
||||
|
||||
if [[ $isRpi ]]; then
|
||||
wget -qO- "http://appleii.ivanx.com/a2server/files/ciopfs-rpi.tgz" | sudo tar Pzx
|
||||
elif [[ $isDebian_x86 ]]; then
|
||||
wget -qO- "http://appleii.ivanx.com/a2server/files/ciopfs-debian7_x86.tgz" | sudo tar Pzx
|
||||
if [[ $arch ]]; then
|
||||
{ wget -qO- "${binaryURL}precompiled/ciopfs-${arch}.tgz" | sudo tar Pzx; } &> /dev/null
|
||||
fi
|
||||
if [[ -f /etc/fuse.conf ]] && sudo grep -q user_allow_other /etc/fuse.conf; then
|
||||
sudo sed -i 's/#user_allow_other/user_allow_other/' /etc/fuse.conf
|
||||
@ -402,8 +429,14 @@ if ! command -v ciopfs > /dev/null; then
|
||||
rm -rf /tmp/ciopfs &> /dev/null
|
||||
mkdir /tmp/ciopfs
|
||||
cd /tmp/ciopfs
|
||||
wget -q -O ciopfs-0.4.tar.gz http://www.brain-dump.org/projects/ciopfs/ciopfs-0.4.tar.gz
|
||||
tar zxf ciopfs-0.4.tar.gz
|
||||
if [[ $useExternalURL ]]; then
|
||||
wget -q -O ciopfs-0.4.tar.gz http://www.brain-dump.org/projects/ciopfs/ciopfs-0.4.tar.gz
|
||||
tar zxf ciopfs-0.4.tar.gz &> /dev/null
|
||||
fi
|
||||
if [ ! -f ciopfs*/ciopfs.c ]; then # single brackets required for glob
|
||||
wget -q -O ciopfs-0.4.tar.gz ${binaryURL}external/ciopfs-0.4.tar.gz
|
||||
tar zxf ciopfs-0.4.tar.gz &> /dev/null
|
||||
fi
|
||||
cd ciopfs*
|
||||
make
|
||||
sudo mv ciopfs /usr/local/bin
|
||||
@ -458,11 +491,8 @@ else
|
||||
# set registered user login using RandNum authentication
|
||||
sudo afppasswd -c
|
||||
sudo sed -i "s/^\(${USER}\).*$/\1:6170706C65320000:****************:********/" /usr/local/etc/netatalk/afppasswd
|
||||
# while [[ ! $(sudo afppasswd -a $USER) ]]; do
|
||||
# true
|
||||
# done
|
||||
# (The afppasswd -c only needs to ever be done once. You can repeat
|
||||
# the afppasswd -a to make Netatalk logins for other Linux users.)
|
||||
# the afppasswd -a to make Netatalk randnum logins for other Linux users.)
|
||||
|
||||
fi
|
||||
|
||||
@ -498,26 +528,27 @@ if [[ $kernelMajor -eq 3 && $kernelMinor -ge 12 && $kernelMinor -le 15 ]]; then
|
||||
fi
|
||||
|
||||
# if IPDDP module exists (e.g. Debian, but not Raspbian),
|
||||
# AppleTalk kernel module can't work with MacIP
|
||||
# AppleTalk kernel module has been compiled to support it and can't work with MacIP
|
||||
if [[ -f "/lib/modules/$kernelRelease/kernel/drivers/net/appletalk/ipddp.ko" ]]; then
|
||||
sudo /etc/init.d/netatalk stop &> /dev/null
|
||||
sudo rmmod ipddp 2> /dev/null
|
||||
sudo rmmod appletalk 2> /dev/null
|
||||
echo "A2SERVER: Attempting to replace AppleTalk kernel module for MacIP use..."
|
||||
|
||||
sudo mv /lib/modules/$kernelRelease/kernel/net/appletalk/appletalk.ko /tmp
|
||||
sudo mv /lib/modules/$kernelRelease/kernel/net/appletalk/appletalk.ko /tmp 2> /dev/null
|
||||
|
||||
if [[ $isDebian_x86 ]]; then
|
||||
echo "A2SERVER: Attempting to fetch AppleTalk kernel module for Debian x86..."
|
||||
wget -qO /tmp/appletalk.tgz http://appleii.ivanx.com/a2server/files/appletalk-$kernelRelease-debian_x86.tgz
|
||||
if [[ ${arch%_*} == "debian" ]]; then
|
||||
echo "A2SERVER: Attempting to fetch AppleTalk kernel module for Debian..."
|
||||
wget -qO /tmp/appletalk.tgz ${binaryURL}precompiled/appletalk-$kernelRelease-${arch}.tgz
|
||||
if [[ $? -eq 0 ]]; then
|
||||
# if we found a prebuilt one on a2server site, install it and load it
|
||||
sudo tar Pxf /tmp/appletalk.tgz
|
||||
sudo tar Pxf /tmp/appletalk.tgz &> /dev/null
|
||||
sudo depmod
|
||||
sudo modprobe appletalk
|
||||
if [[ $(lsmod | grep appletalk) ]]; then
|
||||
# if it loaded, restart netatalk
|
||||
sudo sed -i "s/ATALKD_RUN=no/ATALKD_RUN=yes/" /etc/default/netatalk; sudo /etc/init.d/netatalk restart &> /dev/null
|
||||
sudo sed -i "s/ATALKD_RUN=no/ATALKD_RUN=yes/" /etc/default/netatalk
|
||||
sudo /etc/init.d/netatalk restart &> /dev/null
|
||||
else
|
||||
# if we didn't load it successfully, remove it
|
||||
sudo rm /lib/modules/$kernelRelease/kernel/net/appletalk/appletalk.ko 2> /dev/null
|
||||
@ -542,11 +573,11 @@ if [[ -f "/lib/modules/$kernelRelease/kernel/drivers/net/appletalk/ipddp.ko" ]];
|
||||
cd /usr/src
|
||||
kernelSrc=$(find linux-source-${kernelMajorMinor}*)
|
||||
if [[ ${kernelSrc##*.} == "xz" ]]; then
|
||||
xzcat $kernelSrc | sudo tar x
|
||||
{ xzcat $kernelSrc | sudo tar x; } &> /dev/null
|
||||
elif [[ ${kernelSrc##*.} == "bz2" ]]; then
|
||||
sudo tar jxf $kernelSrc
|
||||
sudo tar jxf $kernelSrc &> /dev/null
|
||||
elif [[ ${kernelSrc##*.} == "gz" || ${kernelSrc##*.} == "tgz" ]]; then
|
||||
sudo tar zxf $kernelSrc
|
||||
sudo tar zxf $kernelSrc &> /dev/null
|
||||
fi
|
||||
cd linux-source-$kernelMajorMinor
|
||||
sudo make mrproper
|
||||
@ -620,10 +651,10 @@ if [[ ( ! $(ps aux | grep [a]talkd) ) && ( $isRpi ) ]]; then
|
||||
# if no AppleTalk module, try to download it from a2server site
|
||||
if [[ ! -f /lib/modules/$kernelRelease/kernel/net/appletalk/appletalk.ko ]]; then # check for rpi kernel module
|
||||
echo "A2SERVER: Attempting to install AppleTalk kernel module for Raspbian..."
|
||||
wget -qO /tmp/appletalk.ko.gz http://appleii.ivanx.com/a2server/files/appletalk-$kernelRelease.ko.gz
|
||||
wget -qO /tmp/appletalk.ko.gz ${binaryURL}appletalk-$kernelRelease-rpi.ko.gz
|
||||
if [[ $? -eq 0 ]]; then
|
||||
# if we found a prebuilt one on a2server site, install it and load it
|
||||
gunzip -f /tmp/appletalk.ko.gz
|
||||
gunzip -f /tmp/appletalk.ko.gz &> /dev/null
|
||||
sudo mkdir -p /lib/modules/$kernelRelease/kernel/net/appletalk
|
||||
sudo mv /tmp/appletalk.ko /lib/modules/$kernelRelease/kernel/net/appletalk
|
||||
sudo depmod
|
||||
|
@ -12,6 +12,12 @@ case "$A2SERVER_SCRIPT_URL" in
|
||||
*/) scriptURL="$A2SERVER_SCRIPT_URL" ;;
|
||||
*) scriptURL="${A2SERVER_SCRIPT_URL:-http://ivanx.com/a2server}/" ;;
|
||||
esac
|
||||
case "$A2SERVER_BINARY_URL" in
|
||||
*/) binaryURL="$A2SERVER_BINARY_URL" ;;
|
||||
*) binaryURL="${A2SERVER_BINARY_URL:-http://ivanx.com/a2server/files}/" ;;
|
||||
esac
|
||||
useExternalURL=1
|
||||
[[ $A2SERVER_NO_EXTERNAL ]] && useExternalURL=
|
||||
|
||||
gsosDir="/srv/A2SERVER/A2FILES"
|
||||
imagesDir=$gsosDir/GSOS.Installer/Images
|
||||
@ -72,11 +78,18 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then
|
||||
echo "A2SERVER: Downloading Apple II Boot Blocks..."
|
||||
cd /tmp/netboot
|
||||
|
||||
wget --max-redirect 0 -qO Disk_7_of_7-Apple_II_Setup.sea.bin ${gsosURL}Disk_7_of_7-Apple_II_Setup.sea.bin
|
||||
if (( $? != 0 )); then
|
||||
wget -qO Disk_7_of_7-Apple_II_Setup.sea.bin ${gsosBackupURL}Disk_7_of_7-Apple_II_Setup.sea.bin
|
||||
if [[ $useExternalURL ]]; then
|
||||
wget --max-redirect 0 -qO Disk_7_of_7-Apple_II_Setup.sea.bin ${gsosURL}Disk_7_of_7-Apple_II_Setup.sea.bin
|
||||
unar -k skip Disk_7_of_7-Apple_II_Setup.sea.bin &> /dev/null
|
||||
if (( $? != 0 )); then
|
||||
wget -qO Disk_7_of_7-Apple_II_Setup.sea.bin ${gsosBackupURL}Disk_7_of_7-Apple_II_Setup.sea.bin
|
||||
unar -k skip Disk_7_of_7-Apple_II_Setup.sea.bin &> /dev/null
|
||||
fi
|
||||
fi
|
||||
if [[ ! -f 'Disk 7 of 7-Apple II Setup.sea' ]]; then
|
||||
wget -qO Disk_7_of_7-Apple_II_Setup.sea.bin ${binaryURL}external/appleii/gsos601/Disk_7_of_7-Apple_II_Setup.sea.bin
|
||||
unar -k skip Disk_7_of_7-Apple_II_Setup.sea.bin &> /dev/null
|
||||
fi
|
||||
unar -k skip Disk_7_of_7-Apple_II_Setup.sea.bin &> /dev/null
|
||||
truncate -s 819284 'Disk 7 of 7-Apple II Setup.sea'
|
||||
dd if='Disk 7 of 7-Apple II Setup.sea' of=APPLE2SETUP.HDV bs=84 skip=1 2> /dev/null
|
||||
|
||||
@ -234,21 +247,38 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then
|
||||
afpsync -v $gsosDir > /dev/null
|
||||
|
||||
for diskname in ${diskNames[@]}; do
|
||||
outfile="$imagesDir/$diskname"
|
||||
outfile="$imagesDir/$diskname.po"
|
||||
(( activeDisk++ ))
|
||||
echo "A2SERVER: Disk ${activeDisk} of ${#diskNames[@]}: $diskname"
|
||||
if (( $gsosInstall == 1 )); then
|
||||
wget --max-redirect 0 -qO "Disk_${activeDisk}_of_7-$diskname.sea.bin" "${gsosURL}Disk_${activeDisk}_of_7-$diskname.sea.bin"
|
||||
if (( $? != 0 )); then
|
||||
wget -qO "Disk_${activeDisk}_of_7-$diskname.sea.bin" "${gsosBackupURL}Disk_${activeDisk}_of_7-$diskname.sea.bin"
|
||||
if [[ $useExternalURL ]]; then
|
||||
wget --max-redirect 0 -qO "Disk_${activeDisk}_of_7-${diskname}.sea.bin" "${gsosURL}Disk_${activeDisk}_of_7-${diskname}.sea.bin"
|
||||
unar -k skip "Disk_${activeDisk}_of_7-${diskname}.sea.bin" &> /dev/null
|
||||
if [[ ! -f "Disk ${activeDisk} of 7-${diskname}.sea" ]]; then
|
||||
wget -qO "Disk_${activeDisk}_of_7-${diskname}.sea.bin" "${gsosBackupURL}Disk_${activeDisk}_of_7-${diskname}.sea.bin"
|
||||
unar -k skip "Disk_${activeDisk}_of_7-${diskname}.sea.bin" &> /dev/null
|
||||
fi
|
||||
fi
|
||||
if [[ ! -f "Disk ${activeDisk} of 7-${diskname}.sea" ]]; then
|
||||
wget -qO "Disk_${activeDisk}_of_7-${diskname}.sea.bin" "${binaryURL}external/appleii/gsos601/Disk_${activeDisk}_of_7-${diskname}.sea.bin"
|
||||
unar -k skip "Disk_${activeDisk}_of_7-${diskname}.sea.bin" &> /dev/null
|
||||
fi
|
||||
unar -k skip "Disk_${activeDisk}_of_7-$diskname.sea.bin" &> /dev/null
|
||||
truncate -s 819284 "Disk ${activeDisk} of 7-${diskname}.sea"
|
||||
dd if="Disk ${activeDisk} of 7-${diskname}.sea" of=${outfile} bs=84 skip=1 &> /dev/null
|
||||
elif (( $gsosInstall == 2 )); then
|
||||
wget -qO $outfile "$gsosURL/IIGS%20System%206.0.2%20-%20Disk%20${activeDisk}%20${diskWebNames[$activeDisk-1]}.po"
|
||||
if [[ $useExternalURL ]]; then
|
||||
wget -qO $outfile "$gsosURL/IIGS%20System%206.0.2%20-%20Disk%20${activeDisk}%20${diskWebNames[$activeDisk-1]}.po"
|
||||
fi
|
||||
if [[ $? -ne 0 || ! -f $outfile ]]; then
|
||||
wget -qO $outfile "${binaryURL}external/appleii/gsos602/$diskname.po"
|
||||
fi
|
||||
elif (( $gsosInstall == 3 )); then
|
||||
wget -qO $outfile "$gsosURL/$diskname.po"
|
||||
if [[ $useExternalURL ]]; then
|
||||
wget -qO $outfile "$gsosURL/$diskname.po"
|
||||
fi
|
||||
if [[ $? -ne 0 || ! -f $outfile ]]; then
|
||||
wget -qO $outfile "${binaryURL}external/appleii/gsos603/$diskname.po"
|
||||
fi
|
||||
fi
|
||||
cppo -s -ad $outfile $netInstallDir 2> /dev/null
|
||||
done
|
||||
@ -358,8 +388,14 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then
|
||||
else
|
||||
echo
|
||||
cd /tmp/netboot
|
||||
wget -qO Asimov.shk http://www.ninjaforce.com/downloads/Asimov.shk
|
||||
nulib2 -x -s Asimov.shk > /dev/null
|
||||
if [[ $useExternalURL ]]; then
|
||||
wget -qO Asimov.shk http://www.ninjaforce.com/downloads/Asimov.shk
|
||||
nulib2 -x -s Asimov.shk &> /dev/null
|
||||
fi
|
||||
if [[ ! -d Asimov ]]; then
|
||||
wget -qO Asimov.shk ${binaryURL}external/appleii/Asimov.shk
|
||||
nulib2 -x -s Asimov.shk &> /dev/null
|
||||
fi
|
||||
cp -p Asimov/Asimov $imageToolsDir/Asimov
|
||||
afpsync -v $gsosDir > /dev/null
|
||||
cat Asimov/Asimov_rsrc_ >> $imageToolsDir/.AppleDouble/Asimov
|
||||
@ -372,14 +408,22 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then
|
||||
echo " is already installed."
|
||||
else
|
||||
echo
|
||||
cd /tmp/netboot
|
||||
wget -qO gshk.sea http://web.archive.org/web/20131031160750/http://nulib.com/library/gshk11.sea
|
||||
#wget -qO gshk.sea http://www.nulib.com/library/gshk11.sea
|
||||
nulib2 -x -s gshk.sea > /dev/null
|
||||
mkdir -p /tmp/netboot/gshk
|
||||
cd /tmp/netboot/gshk
|
||||
if [[ $useExternalURL ]]; then
|
||||
wget -qO gshk11.sea http://web.archive.org/web/20131031160750/http://nulib.com/library/gshk11.sea
|
||||
#wget -qO gshk11.sea http://www.nulib.com/library/gshk11.sea
|
||||
nulib2 -x -s gshk11.sea &> /dev/null
|
||||
fi
|
||||
if [[ ! -f GSHK ]]; then
|
||||
wget -qO gshk11.sea ${binaryURL}external/appleii/gshk11.sea
|
||||
nulib2 -x -s gshk11.sea &> /dev/null
|
||||
fi
|
||||
cp -p GSHK $imageToolsDir/GSHK
|
||||
afpsync -v $gsosDir > /dev/null
|
||||
cat GSHK_rsrc_ >> $imageToolsDir/.AppleDouble/GSHK
|
||||
afptype -p S16 -a DB07 -q $imageToolsDir/GSHK
|
||||
cd /tmp/netboot
|
||||
fi
|
||||
|
||||
echo -n "MountIt 1.4"
|
||||
@ -389,7 +433,12 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then
|
||||
else
|
||||
echo
|
||||
cd /tmp/netboot
|
||||
wget -q -O MOUNTIT.SHK http://www.brutaldeluxe.fr/products/apple2gs/MOUNTIT.SHK
|
||||
if [[ $useExternalURL ]]; then
|
||||
wget -q -O MOUNTIT.SHK http://www.brutaldeluxe.fr/products/apple2gs/MOUNTIT.SHK
|
||||
fi
|
||||
if [[ $? -ne 0 || ! -f MOUNTIT.SHK ]]; then
|
||||
wget -qO MOUNTIT.SHK ${binaryURL}external/appleii/MOUNTIT.SHK
|
||||
fi
|
||||
cp -p MOUNTIT.SHK $imageToolsDir/MOUNTIT.SHK
|
||||
afpsync -v $gsosDir > /dev/null
|
||||
afptype -p SHK -q $imageToolsDir/MOUNTIT.SHK
|
||||
@ -415,9 +464,14 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then
|
||||
else
|
||||
echo
|
||||
cd /tmp/netboot
|
||||
wget -qO shrinkit.sdk http://web.archive.org/web/20131031160750/http://www.nulib.com/library/shrinkit.sdk
|
||||
[[ ! -f shrinkit.sdk ]] && wget -qO shrinkit.sdk "http://appleii.ivanx.com/a2server/files/shrinkit.sdk"
|
||||
nulib2 -xs shrinkit.sdk > /dev/null
|
||||
if [[ $useExternalURL ]]; then
|
||||
wget -qO shrinkit.sdk http://web.archive.org/web/20131031160750/http://www.nulib.com/library/shrinkit.sdk
|
||||
nulib2 -x -s shrinkit.sdk &> /dev/null
|
||||
fi
|
||||
if [[ ! -f SHRINKIT ]]; then
|
||||
wget -qO shrinkit.sdk ${binaryURL}external/appleii/shrinkit.sdk
|
||||
nulib2 -x -s shrinkit.sdk &> /dev/null
|
||||
fi
|
||||
cppo -s -ad SHRINKIT /SHRINKIT/SHRINKIT $diskToolsP8Dir 2> /dev/null
|
||||
afpsync -v $sharepath > /dev/null
|
||||
fi
|
||||
@ -429,8 +483,14 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then
|
||||
else
|
||||
echo
|
||||
cd /tmp/netboot
|
||||
wget -q -O dsk2file.shk http://www.dwheeler.com/6502/oneelkruns/dsk2file.zip
|
||||
nulib2 -x -s dsk2file.shk > /dev/null
|
||||
if [[ $useExternalURL ]]; then
|
||||
wget -q -O dsk2file.shk http://www.dwheeler.com/6502/oneelkruns/dsk2file.zip
|
||||
nulib2 -x -s dsk2file.shk &> /dev/null
|
||||
fi
|
||||
if [[ ! -f DSK2FILE58 ]]; then
|
||||
wget -qO dsk2file.shk ${binaryURL}external/appleii/dsk2file.shk
|
||||
nulib2 -x -s dsk2file.shk &> /dev/null
|
||||
fi
|
||||
cp -p DSK2FILE58 $diskToolsP8Dir/DSK2FILE
|
||||
afpsync -v $sharepath > /dev/null
|
||||
afptype -p SYS -q $diskToolsP8Dir/DSK2FILE
|
||||
@ -442,11 +502,17 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then
|
||||
else
|
||||
echo
|
||||
cd /tmp/netboot
|
||||
wget --max-redirect 0 -qO Apple_II_System_Disk_3.2.sea.bin http://download.info.apple.com/Apple_Support_Area/Apple_Software_Updates/English-North_American/Apple_II/Apple_II_Supplemental/Apple_II_System_Disk_3.2.sea.bin
|
||||
if (( $? != 0 )); then
|
||||
wget -qO Apple_II_System_Disk_3.2.sea.bin http://archive.org/download/download.info.apple.com.2012.11/download.info.apple.com.2012.11.zip/download.info.apple.com%2FApple_Support_Area%2FApple_Software_Updates%2FEnglish-North_American%2FApple_II%2FApple_II_Supplemental%2FApple_II_System_Disk_3.2.sea.bin
|
||||
if [[ $useExternalURL ]]; then
|
||||
wget --max-redirect 0 -qO Apple_II_System_Disk_3.2.sea.bin http://download.info.apple.com/Apple_Support_Area/Apple_Software_Updates/English-North_American/Apple_II/Apple_II_Supplemental/Apple_II_System_Disk_3.2.sea.bin
|
||||
if (( $? != 0 )); then
|
||||
wget -qO Apple_II_System_Disk_3.2.sea.bin http://archive.org/download/download.info.apple.com.2012.11/download.info.apple.com.2012.11.zip/download.info.apple.com%2FApple_Support_Area%2FApple_Software_Updates%2FEnglish-North_American%2FApple_II%2FApple_II_Supplemental%2FApple_II_System_Disk_3.2.sea.bin
|
||||
unar -k skip Apple_II_System_Disk_3.2.sea.bin &> /dev/null
|
||||
fi
|
||||
fi
|
||||
if [[ ! -f 'Apple II System Disk 3.2.sea' ]]; then
|
||||
wget -qO Apple_II_System_Disk_3.2.sea.bin ${binaryURL}external/appleii/Apple_II_System_Disk_3.2.sea.bin
|
||||
unar -k skip Apple_II_System_Disk_3.2.sea.bin &> /dev/null
|
||||
fi
|
||||
unar -k skip Apple_II_System_Disk_3.2.sea.bin &> /dev/null
|
||||
truncate -s 819284 'Apple II System Disk 3.2.sea'
|
||||
dd if='Apple II System Disk 3.2.sea' of=A2SYSDISK32.HDV bs=84 skip=1 2> /dev/null
|
||||
cppo -s -ad A2SYSDISK32.HDV /UTILITIES/SYSUTIL.SYSTEM $diskToolsP8Dir/SYSUTIL 2> /dev/null
|
||||
@ -478,22 +544,33 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then
|
||||
else
|
||||
mkdir -p $spectrumDir
|
||||
echo
|
||||
mkdir -p /tmp/netboot
|
||||
cd /tmp/netboot
|
||||
mkdir -p /tmp/netboot/spectrum
|
||||
cd /tmp/netboot/spectrum
|
||||
if [[ ! -f $gsosDir/SYSTEM/START.GS.OS ]]; then
|
||||
#if true; then
|
||||
# provide disk images for MountIt if no GS/OS present
|
||||
wget -qO- http://www.speccie.co.uk/speccie/software/spectrum.2mg | dd bs=64 skip=1 of=$spectrumDir/SPECTRUM.HDV 2> /dev/null
|
||||
wget -qO- http://www.speccie.co.uk/speccie/software/spectrum_extras.2mg | dd bs=64 skip=1 of=$spectrumDir/EXTRAS.HDV 2> /dev/null
|
||||
wget -qO- http://www.speccie.co.uk/speccie/software/spectrum_sounds.2mg | dd bs=64 skip=1 of=$spectrumDir/SOUNDS.HDV 2> /dev/null
|
||||
wget -qO- http://www.speccie.co.uk/speccie/software/spectrum_manuals.2mg | dd bs=64 skip=1 of=$spectrumDir/MANUALS.HDV 2> /dev/null
|
||||
echo -n "These Spectrum installer disk image files can be converted to floppy disks with Asimov or DSK2FILE, or mounted directly with MountIt. If using MountIt, mount bouth SPECTRUM.HDV and EXTRAS.HDV before running the installer." > $spectrumDir/SPECTRUM.README
|
||||
for filename in spectrum.2mg spectrum_extras.2mg spectrum_sounds.2mg spectrum_manuals.2mg; do
|
||||
if [[ $useExternalURL ]]; then
|
||||
wget -qO $filename http://www.speccie.co.uk/speccie/software/$filename
|
||||
fi
|
||||
if [[ $? -ne 0 || ! -f $filename ]]; then
|
||||
wget -qO $filename ${binaryURL}external/appleii/spectrum/$filename
|
||||
fi
|
||||
dd bs=64 skip=1 if=$filename of=$spectrumDir/${filename,,}.HDV 2> /dev/null
|
||||
done
|
||||
echo -n "The Spectrum installer disk image files can be converted to floppy disks with Asimov or DSK2FILE, or mounted directly with MountIt. If using MountIt, mount bouth SPECTRUM.HDV and EXTRAS.HDV before running the installer." > $spectrumDir/SPECTRUM.README
|
||||
afpsync -v $gsosDir > /dev/null
|
||||
afptype -p TXT -q $spectrumDir/SPECTRUM.README
|
||||
else
|
||||
# install Spectrum into GS/OS
|
||||
wget -qO spectrum_gold_2mg.zip http://www.speccie.co.uk/speccie/software/spectrum_gold_2mg.zip
|
||||
unzip -p spectrum_gold_2mg.zip | dd bs=64 skip=1 of=Spectrum.Gold.HDV 2> /dev/null
|
||||
if [[ $useExternalURL ]]; then
|
||||
wget -qO spectrum_gold_2mg.zip http://www.speccie.co.uk/speccie/software/spectrum_gold_2mg.zip
|
||||
unzip -p spectrum_gold_2mg.zip 2> /dev/null | dd bs=64 skip=1 of=Spectrum.Gold.HDV 2> /dev/null
|
||||
fi
|
||||
if [[ ! -f Spectrum.Gold.2mg ]]; then
|
||||
wget -qO spectrum_gold_2mg.zip ${binaryURL}external/appleii/spectrum/spectrum_gold_2mg.zip
|
||||
unzip -p spectrum_gold_2mg.zip 2> /dev/null | dd bs=64 skip=1 of=Spectrum.Gold.HDV 2> /dev/null
|
||||
fi
|
||||
cppo -s -ad Spectrum.Gold.HDV .
|
||||
userFolder=$(tr [:lower:] [:upper:] <<< $USER)
|
||||
for thisFolder in \
|
||||
@ -532,7 +609,7 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then
|
||||
mkdir -p $zlinkDir/.AppleDouble
|
||||
echo
|
||||
cd /tmp/netboot
|
||||
wget -qO A2CLOUD.HDV "http://ivanx.com/a2server/files/A2CLOUD.HDV"
|
||||
wget -qO A2CLOUD.HDV "${binaryURL}A2CLOUD.HDV"
|
||||
cppo -ad A2CLOUD.HDV . > /dev/null
|
||||
cd A2CLOUD
|
||||
mv *PT3* *PROTERM* $protermDir
|
||||
@ -561,8 +638,6 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then
|
||||
|
||||
# clean up
|
||||
cd
|
||||
[[ -d /tmp/netboot ]] && rm -rf /tmp/netboot
|
||||
[[ -d ~/GNUstep ]] && rm -rf ~/GNUstep
|
||||
|
||||
# rock and roll!
|
||||
echo
|
||||
@ -572,7 +647,7 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then
|
||||
echo "GS/OS network boot (for registered user and Guest) and"
|
||||
fi
|
||||
echo "ProDOS 8 network boot (for Guest only) is now configured."
|
||||
echo "See http://appleii.ivanx.com/a2server for info using it."
|
||||
echo "See http://ivanx.com/a2server for info using it."
|
||||
|
||||
fi
|
||||
|
||||
@ -585,7 +660,7 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupNetBoot ]]; then
|
||||
if [[ $autoAnswerYes || ${REPLY:0:1} == "Y" || ${REPLY:0:1} == "y" ]]; then
|
||||
# Farallon bridge patch for GS/OS courtesy of Geoff Body
|
||||
echo "A2SERVER: Downloading Farallon bridge patch..."
|
||||
wget -O /tmp/FARALLON.PO "http://appleii.ivanx.com/a2server/files/FARALLON.B1.PO" &> /dev/null
|
||||
wget -O /tmp/FARALLON.PO "${binaryURL}FARALLON.B1.PO" &> /dev/null
|
||||
if [[ -d $gsosDir/SYSTEM/SYSTEM.SETUP ]]; then
|
||||
cppo -s -ad /tmp/FARALLON.PO /ATALKPATCH/ATALKIRQ $gsosDir/SYSTEM/SYSTEM.SETUP &> /dev/null
|
||||
echo
|
||||
|
@ -31,7 +31,7 @@ if [[ ! $autoAnswerYes || -f /tmp/a2server-setupWindowsSharing ]]; then
|
||||
# Dependency: samba for Windows/modern Macs
|
||||
# FIXME: Figure out when smbpasswd moved and adjust this as necessary
|
||||
sudo apt-get -y install samba
|
||||
command -v smbpasswd >/dev/null || sudo apt-get -y install samba-common-bin
|
||||
command -v smbpasswd > /dev/null || sudo apt-get -y install samba-common-bin
|
||||
sudo apt-get clean
|
||||
fi
|
||||
|
||||
|
233
scripts/raspbian-update.txt
Normal file
233
scripts/raspbian-update.txt
Normal file
@ -0,0 +1,233 @@
|
||||
#!/bin/bash
|
||||
|
||||
# raspbian-update
|
||||
# updates Raspbian to latest version, including NOOBS if installed
|
||||
|
||||
[[ -f /usr/bin/raspi-config ]] && isRpi=1 || isRpi=
|
||||
|
||||
if [[ ! $isRpi ]]; then
|
||||
echo "This ain't a Raspberry Pi."
|
||||
[[ $0 == "-bash" ]] && return 1 || exit 1
|
||||
fi
|
||||
|
||||
skipRepoUpdate=
|
||||
autoYes=
|
||||
updateA2Cloud=
|
||||
updateA2Server=
|
||||
while [[ $1 ]]; do
|
||||
if [[ $1 == "-r" ]]; then
|
||||
shift
|
||||
skipRepoUpdate="-r"
|
||||
elif [[ $1 == "-y" ]]; then
|
||||
shift
|
||||
autoYes="-y"
|
||||
elif [[ $1 == "-n" ]]; then
|
||||
shift
|
||||
noobsOnly="-n"
|
||||
elif [[ $1 == "a2cloud" ]]; then
|
||||
shift
|
||||
updateA2Cloud=1
|
||||
elif [[ $1 == "a2server" ]]; then
|
||||
shift
|
||||
updateA2Server=1
|
||||
elif [[ $1 ]]; then
|
||||
echo "options:"
|
||||
echo "-y: auto-answer yes to all prompts and don't prompt for restart"
|
||||
echo "-r: don't update package repositories"
|
||||
echo "-n: update NOOBS only; don't update Raspbian"
|
||||
echo "a2cloud : update A2CLOUD when complete"
|
||||
echo "a2server: update A2SERVER when complete"
|
||||
[[ $0 == "-bash" ]] && return 1 || exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
noobs=
|
||||
readarray -t partitions < <(sudo fdisk -l | grep '^/dev')
|
||||
if [[ \
|
||||
${partitions[0]:0:14} == "/dev/mmcblk0p1" && ${partitions[0]:57:2} == " e" &&
|
||||
${partitions[1]:0:14} == "/dev/mmcblk0p2" && ${partitions[1]:57:2} == "85" &&
|
||||
${partitions[2]:0:14} == "/dev/mmcblk0p3" && ${partitions[2]:57:2} == "83" &&
|
||||
${partitions[3]:0:14} == "/dev/mmcblk0p5" && ${partitions[3]:57:2} == " c" &&
|
||||
${partitions[4]:0:14} == "/dev/mmcblk0p6" && ${partitions[4]:57:2} == "83" ]]; then
|
||||
noobs=" and the NOOBS install manager"
|
||||
fi
|
||||
|
||||
if [[ ! $autoYes ]]; then
|
||||
echo
|
||||
echo "You are about to update your SD card to the latest version of the"
|
||||
echo "Raspbian operating system${noobs}."
|
||||
echo
|
||||
echo "This may take an hour or more, and will require restarting when complete."
|
||||
echo "You might want a backup before continuing in case it doesn't go as planned."
|
||||
echo
|
||||
echo -n "Update Raspbian? "
|
||||
read
|
||||
if [[ ${REPLY:0:1} != "Y" && ${REPLY:0:1} != "y" ]]; then
|
||||
[[ $0 == "-bash" ]] && return 2 || exit 2
|
||||
fi
|
||||
fi
|
||||
|
||||
origDir="$PWD"
|
||||
cd /tmp
|
||||
|
||||
if [[ ! $skipRepoUpdate ]]; then
|
||||
echo "Updating package repositories..."
|
||||
sudo apt-get -y update > /dev/null
|
||||
else
|
||||
echo "Not updating package repositories..."
|
||||
echo
|
||||
fi
|
||||
|
||||
if [[ ! $noobsOnly ]]; then
|
||||
{ cd /tmp; sudo apt-get -y autoremove; sudo apt-get -y autoclean; sudo apt-get -y clean; } > /dev/null
|
||||
freeSpace=$(df / | tail -1 | awk '{ print $4 }')
|
||||
if (( $freeSpace < 400000 )); then
|
||||
if dpkg -l | grep -q wolfram-engine; then
|
||||
if [[ ! $autoYes ]]; then
|
||||
echo "In order to create enough space on your SD card to upgrade,"
|
||||
echo "the Wolfram Language and Mathematica software packages must be removed."
|
||||
echo "If you don't know what these are, this won't affect you at all."
|
||||
echo
|
||||
echo -n "Remove Wolfram software? "
|
||||
read
|
||||
if [[ ${REPLY:0:1} != "Y" && ${REPLY:0:1} != "y" ]]; then
|
||||
[[ $0 == "-bash" ]] && return 2 || exit 2
|
||||
fi
|
||||
sudo rm /opt/Wolfram/WolframEngine/10.0/SystemFiles/Java/Linux-ARM 2> /dev/null
|
||||
sudo apt-get -y purge wolfram-engine
|
||||
else
|
||||
echo "Removing Wolfram software due to space constraints..."
|
||||
sudo rm /opt/Wolfram/WolframEngine/10.0/SystemFiles/Java/Linux-ARM 2> /dev/null
|
||||
sudo apt-get -y purge wolfram-engine
|
||||
fi
|
||||
else
|
||||
echo "You don't have enough free space on your SD card to upgrade."
|
||||
echo "Sorry, man. Delete some stuff or get a bigger card."
|
||||
[[ $0 == "-bash" ]] && return 1 || exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
{ cd /tmp; sudo apt-get -y autoremove; sudo apt-get -y autoclean; sudo apt-get -y clean; } > /dev/null
|
||||
dpkg -l | grep -q a2pi && sudo apt-get -y --force-yes install a2pi
|
||||
dpkg -l | grep -q apple2user && sudo apt-get -y --force-yes install apple2user gsport
|
||||
if dpkg -l | grep -q wolfram-engine; then
|
||||
sudo rm /opt/Wolfram/WolframEngine/10.0/SystemFiles/Java/Linux-ARM 2> /dev/null
|
||||
if [[ $freeSpace -lt 750000 && $(apt-get -s install wolfram-engine | grep upgraded) ]]; then
|
||||
sudo apt-get -y purge wolfram-engine
|
||||
{ cd /tmp; sudo apt-get -y autoremove; sudo apt-get -y autoclean; sudo apt-get -y clean; } > /dev/null
|
||||
fi
|
||||
sudo apt-get -y install wolfram-engine
|
||||
{ cd /tmp; sudo apt-get -y autoremove; sudo apt-get -y autoclean; sudo apt-get -y clean; } > /dev/null
|
||||
fi
|
||||
sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
|
||||
{ cd /tmp; sudo apt-get -y autoremove; sudo apt-get -y autoclean; sudo apt-get -y clean; } > /dev/null
|
||||
sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade
|
||||
{ cd /tmp; sudo apt-get -y autoremove; sudo apt-get -y autoclean; sudo apt-get -y clean; } > /dev/null
|
||||
sudo apt-get -y install raspberrypi-ui-mods
|
||||
{ cd /tmp; sudo apt-get -y autoremove; sudo apt-get -y autoclean; sudo apt-get -y clean; } > /dev/null
|
||||
fi
|
||||
|
||||
if [[ $noobs ]]; then
|
||||
echo "Updating NOOBS..."
|
||||
|
||||
# update Partition 3
|
||||
mkdir -p /tmp/p3
|
||||
sudo mount /dev/mmcblk0p3 /tmp/p3
|
||||
sudo rm -rf /tmp/p3/os/* 2> /dev/null
|
||||
if grep -q 'Raspple II' /tmp/p3/installed_os.json; then
|
||||
echo "Downloading Raspple II lite..."
|
||||
noobsUrl="ivanx.com/rasppleii/files/RasppleII_lite.zip"
|
||||
noobsOSurl="ivanx.com/rasppleii/noobs-os"
|
||||
distDir="Raspple_II"
|
||||
sudo mkdir -p /tmp/p3/os/$distDir
|
||||
sudo sed -i 's:/Raspbian:/Raspple_II:' /tmp/p3/installed_os.json
|
||||
sudo wget -qO /tmp/p3/icon.png $noobsOSurl/Raspple_II.png
|
||||
{ wget -qO- $noobsOSurl/slidesAB.tar | sudo tar -C /tmp/p3/os/$distDir -x; } &> /dev/null
|
||||
else
|
||||
echo "Downloading NOOBS lite..."
|
||||
noobsRoot="downloads.raspberrypi.org/NOOBS_lite/images/"
|
||||
noobsDir=$(wget -qO- $noobsRoot | grep '^<tr><td' | tail -1 | grep -P -o 'href=".*?"' | cut -c 6- | tr -d '"')
|
||||
noobsUrl=$noobsRoot$noobsDir$(wget -qO- $noobsRoot$noobsDir | grep -P -o 'href=".*.zip"' | cut -c 6- | tr -d '"')
|
||||
noobsOSurl="downloads.raspberrypi.org/raspbian"
|
||||
distDir="Raspbian"
|
||||
sudo mkdir -p /tmp/p3/os/$distDir
|
||||
sudo wget -qO /tmp/p3/icon.png $noobsOSurl/Raspbian.png
|
||||
{ wget -qO- $noobsOSurl/marketing.tar | sudo tar -C /tmp/p3/os/$distDir -x; } &> /dev/null
|
||||
fi
|
||||
sudo rm -rf /tmp/p3/cache 2> /dev/null
|
||||
releaseDate=$(wget -qO- $noobsOSurl/os.json | grep 'release_date' | cut -f 4 -d '"')
|
||||
sudo sed -i 's/"release_date".*$/"release_date" : "'$releaseDate'"/' /tmp/p3/installed_os.json
|
||||
sudo sed -i 's/keyboard_layout=gb/keyboard_layout=us/' /tmp/p3/noobs.conf
|
||||
sudo sed -i 's:/mnt/:/settings/:' /tmp/p3/installed_os.json
|
||||
sudo sed -i 's@"icon".*,@"icon" : "/settings/os/'$distDir'/icon.png",@' /tmp/p3/installed_os.json
|
||||
sudo cp /tmp/p3/icon.png /tmp/p3/os/$distDir
|
||||
sudo wget -qO /tmp/p3/os/$distDir/os.json $noobsOSurl/os.json
|
||||
sudo wget -qO /tmp/p3/os/$distDir/partition_setup.sh $noobsOSurl/partition_setup.sh
|
||||
sudo wget -qO /tmp/p3/os/$distDir/partitions.json $noobsOSurl/partitions.json
|
||||
sudo umount /tmp/p3
|
||||
rmdir /tmp/p3
|
||||
|
||||
# update Partition 1
|
||||
mkdir -p /tmp/p1
|
||||
sudo mount /dev/mmcblk0p1 /tmp/p1
|
||||
wget -qO /tmp/noobs_lite.zip $noobsUrl
|
||||
sudo rm -rf /tmp/p1/*
|
||||
sudo unzip -d /tmp/p1 /tmp/noobs_lite.zip
|
||||
sudo sed -i 's/^runinstaller //' /tmp/p1/recovery.cmdline
|
||||
sudo sed -i 's/silentinstall//' /tmp/p1/recovery.cmdline
|
||||
grep -q 'keyboard=us' /tmp/p1/recovery.cmdline || sudo sed -i '1 s/^\(.*\)$/\1 keyboard=us/' /tmp/p1/recovery.cmdline
|
||||
grep -q 'disablesafemode' /tmp/p1/recovery.cmdline || sudo sed -i '1 s/^\(.*\)$/\1 disablesafemode/' /tmp/p1/recovery.cmdline
|
||||
sudo umount /tmp/p1
|
||||
rmdir /tmp/p1
|
||||
|
||||
sudo sed -i 's/\(Raspple II release.*[^u]$\)/\1u/' /etc/issue
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "*** Raspbian update completed. ***"
|
||||
echo
|
||||
|
||||
cd /tmp
|
||||
|
||||
if [[ $updateA2Cloud ]]; then
|
||||
wget -qO /tmp/a2cloud-setup ivanx.com/a2cloud/setup/
|
||||
source /tmp/a2cloud-setup -y -r noSetGroups
|
||||
if acmd -g /usr/share/gsport/disks/GSport\ Internet\ Starter\ Kit.2mg SYSTEM/FONTS/SIS.4.10 &> /dev/null; then
|
||||
wget -qO /tmp/ua2.txt ivanx.com/rasppleii/files/a/ua2.txt
|
||||
source /tmp/ua2.txt
|
||||
fi
|
||||
echo
|
||||
echo "*** A2CLOUD update completed. ***"
|
||||
echo
|
||||
fi
|
||||
|
||||
cd /tmp
|
||||
|
||||
if [[ $updateA2Server ]]; then
|
||||
wget -q -O /tmp/a2server-setup ivanx.com/a2server/setup/
|
||||
if ps aux | grep -q [s]mbd; then
|
||||
source /tmp/a2server-setup -y -r -w
|
||||
else
|
||||
source /tmp/a2server-setup -y -r
|
||||
fi
|
||||
echo
|
||||
echo "*** A2SERVER update completed. ***"
|
||||
echo
|
||||
fi
|
||||
|
||||
cd "$origDir"
|
||||
|
||||
if [[ ! $autoYes ]]; then
|
||||
echo
|
||||
echo
|
||||
echo "Your system has been updated and needs to reboot to use its new software."
|
||||
echo
|
||||
echo -n "Reboot now (recommended)? "
|
||||
read
|
||||
if [[ ${REPLY:0:1} == "Y" || ${REPLY:0:1} == "y" ]]; then
|
||||
sudo shutdown -r now
|
||||
fi
|
||||
else
|
||||
echo "*** raspbian-update completed. ***"
|
||||
sudo shutdown -r now
|
||||
fi
|
@ -2,17 +2,17 @@
|
||||
# vim: set tabstop=4 shiftwidth=4 expandtab filetype=sh:
|
||||
|
||||
alias a2server-help="more /usr/local/etc/a2server-help.txt"
|
||||
alias a2server-setup="wget -q -O /tmp/a2server-setup ${A2SERVER_SCRIPT_URL:-http://appleii.ivanx.com/a2server}$([[ "$A2SERVER_SCRIPT_URL" == */ ]] || echo -n "/")setup/ || { echo \"Can't download A2SERVER setup scripts. Do you has internet?\"; false; } && source /tmp/a2server-setup"
|
||||
alias a2server-setup="wget -q -O /tmp/a2server-setup ${A2SERVER_SCRIPT_URL}setup/index.txt || { echo \"Can't download A2SERVER setup scripts. Do you has internet?\"; false; } && source /tmp/a2server-setup"
|
||||
|
||||
alias a2server-version="cat /usr/local/etc/A2SERVER-version"
|
||||
alias a2server-update="wget -q -O /tmp/a2server-update ${A2SERVER_SCRIPT_URL:-http://appleii.ivanx.com/a2server}$([[ "$A2SERVER_SCRIPT_URL" == */ ]] || echo -n "/")update/ || { echo \"Can't download A2SERVER setup scripts. Do you has internet?\"; false; } && source /tmp/a2server-update"
|
||||
alias a2server-update="wget -q -O /tmp/a2server-update ${A2SERVER_SCRIPT_URL}update/index.txt || { echo \"Can't download A2SERVER setup scripts. Do you has internet?\"; false; } && source /tmp/a2server-update"
|
||||
|
||||
alias system-shutdown='sudo shutdown -h now'
|
||||
alias system-restart='sudo shutdown -r now'
|
||||
|
||||
|
||||
alias raspi-config='[[ -f /usr/bin/raspi-config ]] && sudo /usr/bin/raspi-config || echo "raspi-config not found. Are you using a Raspberry Pi with Raspbian?"'
|
||||
alias raspbian-update='wget -qO /tmp/raspbian-update ivanx.com/a2server/files/raspbian-update.txt; source /tmp/raspbian-update'
|
||||
alias raspbian-update='wget -qO /tmp/raspbian-update ${A2SERVER_SCRIPT_URL}scripts/raspbian-update.txt; source /tmp/raspbian-update'
|
||||
alias rasppleii-update='raspbian-update a2cloud a2server'
|
||||
|
||||
alias welcome-message-edit='sudo nano /etc/motd'
|
||||
|
@ -1,4 +1,6 @@
|
||||
#! /bin/bash
|
||||
# vim: set tabstop=4 shiftwidth=4 expandtab filetype=sh:
|
||||
|
||||
export A2SERVER_SCRIPT_URL="${A2SERVER_SCRIPT_URL:-http://ivanx.com/a2server/}"
|
||||
export A2SERVER_BINARY_URL="${A2SERVER_BINARY_URL:-http://ivanx.com/a2server/files/}"
|
||||
source /usr/local/etc/a2server-aliases
|
||||
|
@ -4,30 +4,41 @@
|
||||
# A2SERVER master setup script, last update 17-Nov-15
|
||||
# it downloads and executes several scripts related to the setup of
|
||||
# netatalk configured for Apple II use on Debian or Raspbian.
|
||||
# more info is at http://appleii.ivanx.com/a2server
|
||||
# more info is at http://ivanx.com/a2server
|
||||
|
||||
# to download and execute, type:
|
||||
# wget appleii.ivanx.com/a2server/setup; source setup
|
||||
# wget ivanx.com/a2server/setup; source setup
|
||||
|
||||
a2serverVersion="128d3"
|
||||
a2serverVersion="128"
|
||||
|
||||
# Ensure URL we'll use ends in a /
|
||||
case "$A2SERVER_SCRIPT_URL" in
|
||||
*/) scriptURL="$A2SERVER_SCRIPT_URL" ;;
|
||||
*) scriptURL="${A2SERVER_SCRIPT_URL:-http://appleii.ivanx.com/a2server}/" ;;
|
||||
*) scriptURL="${A2SERVER_SCRIPT_URL:-http://ivanx.com/a2server}/" ;;
|
||||
esac
|
||||
case "$A2SERVER_BINARY_URL" in
|
||||
*/) binaryURL="$A2SERVER_BINARY_URL" ;;
|
||||
*) binaryURL="${A2SERVER_BINARY_URL:-http://ivanx.com/a2server/files}/" ;;
|
||||
esac
|
||||
useExternalURL=1
|
||||
[[ $A2SERVER_NO_EXTERNAL ]] && useExternalURL=
|
||||
|
||||
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
|
||||
lsb_release -a 2> /dev/null | grep -q 'Distributor ID:.Debian' && [[ ( -f /etc/debian_version ) && ( $(cut -c 1 < /etc/debian_version) -ge "7" ) ]] && 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
|
||||
|
||||
echo
|
||||
[[ $scriptURL != *"ivanx.com"* ]] && echo "Using script URL: $scriptURL"
|
||||
[[ $binaryURL != *"ivanx.com"* ]] && echo "Using binary URL: $binaryURL"
|
||||
[[ ! $useExternalURL ]] && echo -e "Not using external URLs. Payloads must be in:\n ${binaryURL}external\n (See A2SERVER developer page for more information.)"
|
||||
|
||||
skipRepoUpdate=
|
||||
autoAnswerYes=
|
||||
setupNetBoot=
|
||||
@ -78,7 +89,7 @@ done
|
||||
|
||||
if [[ $updateRasppleII ]]; then
|
||||
echo "A2SERVER: Updating Raspple II (takes up to an hour)..."
|
||||
wget -qO /tmp/raspbian-update "http://appleii.ivanx.com/a2server/files/raspbian-update.txt"
|
||||
wget -qO /tmp/raspbian-update "${A2SERVER_SCRIPT_URL}scripts/raspbian-update.txt"
|
||||
source /tmp/raspbian-update a2cloud a2server $autoAnswerYes $skipRepoUpdate
|
||||
[[ $0 == "-bash" ]] && return 0 || exit 0
|
||||
fi
|
||||
@ -100,19 +111,33 @@ if [[ $isRpi ]]; then #supported Raspbian? (16-Feb-15, 20-Jun-14, 09-Jan-14, etc
|
||||
fwsupported="-8aca5762- -462f3e3f476f7b6- -c32bc633039cd9- -9d34d0475f9-
|
||||
-d4f5315cfac4e- -6f4a90c8cb8817f- -5dd9b4962e- -17c8799375-
|
||||
-960832a6c2590635216c296b6ee0bebf67b21d50-"
|
||||
[[ "$fwsupported" == *-$fwhash-* ]] && unsupportedOS=0
|
||||
[[ ($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)" == "7.3" || "$(lsb_release -rs 2> /dev/null)" == "7.6" || "$(lsb_release -rs 2> /dev/null)" == "7.8" ]]; then # tested Debian?
|
||||
unsupportedOS=0
|
||||
[[ "$fwsupported" == *-$fwhash-* ]] && unsupportedOS=
|
||||
# [[ ($fwhash == "8aca5762") || ($fwhash == "462f3e3f476f7b6") || ($fwhash == "c32bc633039cd9") || ($fwhash == "9d34d0475f9") || ($fwhash == "d4f5315cfac4e") || ($fwhash == "6f4a90c8cb8817f") || ($fwhash == "5dd9b4962e") || ($fwhash == "17c8799375") ]] && unsupportedOS=
|
||||
elif [[ $isDebian ]]; then # supported Debian?
|
||||
debianVersion=$(cat /etc/debian_version)
|
||||
debianSupported="-8.2- -7.9- -7.8- -7.6- -7.3-"
|
||||
[[ $debianSupported == *-$debianVersion-* ]] && unsupportedOS=
|
||||
fi
|
||||
|
||||
if (( unsupportedOS )); then
|
||||
if [[ $unsupportedOS && $isRpi ]]; 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 "A2SERVER and its installer scripts have been tested on Raspbian Wheezy and"
|
||||
echo "Jessie, though not this specific firmware version ($fwhash). Just FYI."
|
||||
unsupportedOS=
|
||||
elif [[ $unsupportedOS && $isDebian ]]; then
|
||||
echo
|
||||
echo "A2SERVER and its installer scripts have been tested on Debian 7 and 8,"
|
||||
echo "though not this specific point release ($debianVersion). Just FYI."
|
||||
unsupportedOS=
|
||||
fi
|
||||
|
||||
if [[ $unsupportedOS ]]; then
|
||||
echo
|
||||
echo "WARNING: A2SERVER and its installer scripts have only been tested on"
|
||||
echo "Debian and Raspbian. 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."
|
||||
echo "More information is at http://ivanx.com/a2server."
|
||||
fi
|
||||
|
||||
doSetup=1
|
||||
@ -132,7 +157,7 @@ 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 "For details, visit http://ivanx.com/a2server."
|
||||
echo
|
||||
if [[ ! $autoAnswerYes ]]; then
|
||||
echo -n "Continue? "
|
||||
@ -230,7 +255,19 @@ if (( $doSetup )); then
|
||||
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
|
||||
if [[ -f /srv/A2SERVER/A2FILES/System/Start.GS.OS ]]; then
|
||||
echo
|
||||
echo "You can network boot GS/OS. On a ROM 01 IIgs, set slot 1 or 2, and slot 7,"
|
||||
echo 'to AppleTalk, and Startup Slot to 7 or "Scan". On a ROM 3 IIgs, set'
|
||||
echo "slot 1 or 2, and startup slot, to AppleTalk."
|
||||
fi
|
||||
if [[ -f /srv/A2SERVER/A2FILES/BASIC.System ]]; then
|
||||
echo
|
||||
echo "You can network boot ProDOS 8. On an Apple IIe, put your Workstation Card"
|
||||
echo "in a slot above your disk controller card, or type PR#X with open-apple"
|
||||
echo "held down, with X being the slot of your Workstation Card."
|
||||
echo 'On a IIgs, press "8" during the initial procession of periods.'
|
||||
fi
|
||||
echo
|
||||
echo "A2SERVER setup is complete! Go connect from your Apple II!"
|
||||
echo
|
||||
|
@ -4,7 +4,7 @@
|
||||
# Ensure URL we'll use ends in a /
|
||||
case "$A2SERVER_SCRIPT_URL" in
|
||||
*/) scriptURL="$A2SERVER_SCRIPT_URL" ;;
|
||||
*) scriptURL="${A2SERVER_SCRIPT_URL:-http://appleii.ivanx.com/a2server}/" ;;
|
||||
*) scriptURL="${A2SERVER_SCRIPT_URL:-http://ivanx.com/a2server}/" ;;
|
||||
esac
|
||||
|
||||
currentVersion=$(wget -qO- "${scriptURL}setup/index.txt" | grep '^a2serverVersion' | cut -d '"' -f 2)
|
||||
|
@ -51,7 +51,7 @@
|
||||
1.2.4: Jul 2015: offer to download A2CLOUD disk contents onto A2FILES volume
|
||||
|
||||
1.2.4+:Oct 2015: support for using A2SERVER scripts from a location other than
|
||||
appleii.ivanx.com/a2server for development purposes
|
||||
ivanx.com/a2server for development purposes
|
||||
[not released]
|
||||
|
||||
1.2.5: Nov 2015: netboot install option for GS/OS 6.0.2/3
|
||||
@ -80,5 +80,12 @@
|
||||
fixes and tweaks
|
||||
[not released]
|
||||
|
||||
128d1: Dec 2015: moved /media/A2SHARED to /srv/A2SERVER
|
||||
1.2.8: Dec 2015: moved /media/A2SHARED to /srv/A2SERVER
|
||||
macipgw installed
|
||||
files subdirectory reorganized
|
||||
64-bit Debian binaries
|
||||
A2SERVER_SCRIPT_URL now works everywhere
|
||||
A2SERVER_BINARY_URL can now be specified
|
||||
self-hosted binaries fallback, or preferred with A2SERVER_NO_EXTERNAL
|
||||
better information at start and end of install
|
||||
[not released]
|
||||
|
Loading…
Reference in New Issue
Block a user