Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

enhance installer script #55

Merged
merged 1 commit into from
Dec 20, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 105 additions & 21 deletions environment-setup/foxbunto_env_setup.sh
Original file line number Diff line number Diff line change
@@ -1,34 +1,77 @@
echo “Setting up Foxbuntu build environment…”

#!/bin/bash
# one line installer
# cd ~ && wget https://raw.githubusercontent.com/noon92/femtofox/refs/heads/main/environment-setup/foxbunto_env_setup.sh -O foxbunto_env_setup.sh && bash foxbunto_env_setup.sh
cd ~
if [ -f /etc/os-release ]; then
. /etc/os-release
if [ "$VERSION_ID" != "22.04" ] || [ "$NAME" != "Ubuntu" ]; then
echo "This script is intended for Ubuntu 22.04, exiting..."
exit 1
fi
else
echo "This script is intended for Ubuntu 22.04, exiting..."
exit 1
fi
if [ "$EUID" -eq 0 ]; then
echo "Please run this script without sudo."
exit 1
fi
echo
echo "=========================================="
echo " Foxbuntu Build Environment"
echo "=========================================="
echo
echo "Setting up new Foxbuntu build environment..."
echo
echo "This script will install the necessary packages to build the Foxbuntu image."
echo "It will also set up a chroot environment to install additional packages. This will all take some time."
echo
echo "You will need to answer some questions during the start of the script."
echo "Please make sure you have a stable internet connection and enough disk space. (20GB)"
echo "Choose the default of [0] if unknown, and [1] for Ubuntu when prompted."
echo "When the Kernel build GUI appears, just exit without making any changes."
echo
echo "Press Enter to continue, or Ctrl+C to cancel."
read
# get the luckfox build environment
if [ -d ~/femtofox ]; then
echo "WARNING: ~/femtofox exists, this script will overwrite it."
echo "Press Ctrl+C to cancel, or Enter to continue."
read
sudo rm -rf ~/femtofox
fi
if [ -d ~/luckfox-pico ]; then
echo "WARNING: ~/luckfox-pico exists, this script will overwrite it."
echo "Press Ctrl+C to cancel, or Enter to continue."
read
sudo rm -rf ~/luckfox-pico
fi

# get updates and packages
sudo apt update

sudo apt-get install -y git ssh make gcc gcc-multilib g++-multilib module-assistant expect g++ gawk texinfo libssl-dev bison flex fakeroot cmake unzip gperf autoconf device-tree-compiler libncurses5-dev pkg-config bc python-is-python3 passwd openssl openssh-server openssh-client vim file cpio rsync

git clone https://github.com/LuckfoxTECH/luckfox-pico.git

cd ~/luckfox-pico
echo "### Choose [1] Ubuntu ### Choose [1] Ubuntu ###"
sudo ./build.sh lunch
sudo ./build.sh

# get the femtofox environment
cd ~
git clone https://github.com/noon92/femtofox.git
~/femtofox/foxbuntu/updatefs.sh
cd ~/luckfox-pico/

sudo ./build.sh kernelconfig
sudo ./build.sh

cd ~/luckfox-pico/output/image

sudo wget https://gist.github.com/Spiritdude/da36d2cf064e49094c870e0a8b9f972f/archive/8f05ce57f5dede06a45f25298982fab543d95084.zip

sudo unzip -j ./8f05ce57f5dede06a45f25298982fab543d95084.zip
sudo rm ./8f05ce57f5dede06a45f25298982fab543d95084.zip
sudo chmod +x ./blkenvflash

# get the blkenvflash imagemaker v2.2
sudo wget https://gist.githubusercontent.com/Spiritdude/da36d2cf064e49094c870e0a8b9f972f/raw/8f05ce57f5dede06a45f25298982fab543d95084/blkenvflash -O ~/luckfox-pico/output/image/blkenvflash
sudo chmod +x ~/luckfox-pico/output/image/blkenvflash

# build the kernel
echo "### exit no changes ### exit no changes ###"
sudo ./build.sh

# SETUP CHROOT

sudo mkdir -p ~/luckfox-pico/sysdrv/out/rootfs_uclibc_rv1106/lib/modules/5.10.160
sudo cp ~/luckfox-pico/sysdrv/out/kernel_drv_ko/* ~/luckfox-pico/sysdrv/out/rootfs_uclibc_rv1106/lib/modules/5.10.160

Expand All @@ -41,7 +84,7 @@ sudo cp /usr/bin/qemu-arm-static ~/luckfox-pico/sysdrv/out/rootfs_uclibc_rv1106/
echo "Entering chroot and running commands..."
sudo mount --bind /proc ~/luckfox-pico/sysdrv/out/rootfs_uclibc_rv1106/proc && sudo mount --bind /sys ~/luckfox-pico/sysdrv/out/rootfs_uclibc_rv1106/sys && sudo mount --bind /dev ~/luckfox-pico/sysdrv/out/rootfs_uclibc_rv1106/dev && sudo mount --bind /dev/pts ~/luckfox-pico/sysdrv/out/rootfs_uclibc_rv1106/dev/pts

sudo chroot ~/luckfox-pico/sysdrv/out/rootfs_uclibc_rv1106 /bin/bash <<EOF
sudo -k chroot ~/luckfox-pico/sysdrv/out/rootfs_uclibc_rv1106 /bin/bash <<EOF
echo "Inside chroot environment..."
echo "tmpfs /run tmpfs rw,nodev,nosuid,size=32M 0 0" | sudo tee -a /etc/fstab

Expand All @@ -64,7 +107,45 @@ sudo DEBIAN_FRONTEND=noninteractive apt install -y --option Dpkg::Options::="--f

sudo DEBIAN_FRONTEND=noninteractive apt upgrade -y --option Dpkg::Options::="--force-confold"

pip3 install requests pytap2 meshtastic pypubsub geopy maidenhead beautifulsoup4 dadjokes schedule wikipedia googlesearch-python
# emoji font
sudo DEBIAN_FRONTEND=noninteractive apt install -y --option Dpkg::Options::="--force-confold" fonts-noto-color-emoji ninja-build

# meshtastic CLI / API
pip3 install pypubsub meshtastic

################ meshtastic community projects

echo "Installing meshtastic community projects..."

echo "Installing meshing around BBS..."
git clone https://github.com/spudgunman/meshing-around.git /opt/meshing-around
# Dependencies for meshing around
pip3 install requests geopy maidenhead beautifulsoup4 dadjokes schedule wikipedia googlesearch-python

# Set up the meshing around service
# sudo cp /opt/meshing-around/meshing-around.service /etc/systemd/system/meshing-around.service
# sudo systemctl enable meshing-around

echo "Installing TC2 BBS..."
git clone https://github.com/TheCommsChannel/TC2-BBS-mesh.git /opt/TC2-BBS-mesh

echo "Installing the shell clients for meshtastic..."

# Curses client for meshtastic
git clone https://github.com/pdxlocations/curses-client-for-meshtastic.git /opt/curses-client-for-meshtastic

# Emesh client for meshtastic
https://github.com/thecookingsenpai/emesh.git /opt/emesh

# Install additional tools
sudo DEBIAN_FRONTEND=noninteractive apt install -y --option Dpkg::Options::="--force-confold" mosquitto mosquitto-clients
sudo DEBIAN_FRONTEND=noninteractive apt install -y --option Dpkg::Options::="--force-confold" gpsd gpsd-clients python-gps
sudo DEBIAN_FRONTEND=noninteractive apt install -y --option Dpkg::Options::="--force-confold" screen minicom
#sudo DEBIAN_FRONTEND=noninteractive apt install -y --option Dpkg::Options::="--force-confold" telnet
#sudo DEBIAN_FRONTEND=noninteractive apt install -y --option Dpkg::Options::="--force-confold" i2c-tools
#sudo DEBIAN_FRONTEND=noninteractive apt install -y --option Dpkg::Options::="--force-confold" RPi.GPIO gpio

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

mv /etc/update-motd.d/10-help-text /etc/update-motd.d/10-help-text.bak
mv /etc/update-motd.d/60-unminimize /etc/update-motd.d/60-unminimize.bak
Expand Down Expand Up @@ -105,7 +186,7 @@ echo 'femto:fox' | chpasswd
sudo usermod -a -G tty femto
sudo usermod -a -G dialout femto

apt clean && rm -rf /var/lib/apt/lists/* && rm -rf /tmp/* && rm -rf /var/tmp/* && find /var/log -type f -exec truncate -s 0 {} + && : > /root/.bash_history && history -c
sudo apt clean && rm -rf /var/lib/apt/lists/* && rm -rf /tmp/* && rm -rf /var/tmp/* && find /var/log -type f -exec truncate -s 0 {} + && : > /root/.bash_history && history -c
exit
EOF

Expand All @@ -120,5 +201,8 @@ echo "Building image..."
sudo ~/luckfox-pico/build.sh
cd ~/luckfox-pico/output/image && sudo ~/luckfox-pico/output/image/blkenvflash ~/luckfox-pico/foxbuntu.img
echo "foxbuntu.img build completed."


cd ~/luckfox-pico
ls -ls foxbuntu.img
echo "use dd, raspi-imager (apply no custom settings), balenaEtcher(ignore error), to burn the image to a microSD card"
# End of script
exit 0