From 0093c36ea750114bf7478464309843b7934ba7d9 Mon Sep 17 00:00:00 2001 From: iamromulan <50184035+iamromulan@users.noreply.github.com> Date: Sun, 4 Feb 2024 23:36:25 -0500 Subject: [PATCH] Update installentware.sh --- installentware.sh | 117 +++++++++++++++++++++++++++++++--------------- 1 file changed, 80 insertions(+), 37 deletions(-) diff --git a/installentware.sh b/installentware.sh index 40991e5..56d7a99 100644 --- a/installentware.sh +++ b/installentware.sh @@ -1,23 +1,81 @@ #!/bin/sh -# Entware installation script modified to use /usrdata/opt with a systemd mount unit - -ARCH=armv7sf-k3.2 +#TYPE='generic' TYPE='alternative' -# Remount root filesystem as read-write +#|---------|-----------------------|---------------|---------------|---------------------|-------------------|-------------------|----------------------|-------------------| +#| ARCH | aarch64-k3.10 | armv5sf-k3.2 | armv7sf-k2.6 | armv7sf-k3.2 | mipselsf-k3.4 | mipssf-k3.4 | x64-k3.2 | x86-k2.6 | +#| LOADER | ld-linux-aarch64.so.1 | ld-linux.so.3 | ld-linux.so.3 | ld-linux.so.3 | ld.so.1 | ld.so.1 | ld-linux-x86-64.so.2 | ld-linux.so.2 | +#| GLIBC | 2.27 | 2.27 | 2.23 | 2.27 | 2.27 | 2.27 | 2.27 | 2.23 | +#|---------|-----------------------|---------------|---------------|---------------------|-------------------|-------------------|----------------------|-------------------| + +unset LD_LIBRARY_PATH +unset LD_PRELOAD + +ARCH=armv7sf-k3.2 +LOADER=ld-linux.so.3 +GLIBC=2.27 + +# Remount filesystem as read-write mount -o remount,rw / echo 'Info: Checking for prerequisites and creating folders...' -if grep -qs '/opt ' /proc/mounts; then - echo 'Info: /opt is already mounted.' +if [ -d /opt ]; then + echo 'Warning: Folder /opt exists!' else - if [ ! -d /usrdata/opt ]; then - mkdir -p /usrdata/opt + mkdir /opt +fi +# no need to create many folders. entware-opt package creates most +for folder in bin etc lib/opkg tmp var/lock +do + if [ -d "/opt/$folder" ]; then + echo "Warning: Folder /opt/$folder exists!" + echo 'Warning: If something goes wrong please clean /opt folder and try again.' + else + mkdir -p /opt/$folder + fi +done + +echo 'Info: Opkg package manager deployment...' +URL=http://bin.entware.net/${ARCH}/installer +wget $URL/opkg -O /opt/bin/opkg +chmod 755 /opt/bin/opkg +wget $URL/opkg.conf -O /opt/etc/opkg.conf + +echo 'Info: Basic packages installation...' +/opt/bin/opkg update +if [ $TYPE = 'alternative' ]; then + /opt/bin/opkg install busybox +fi +/opt/bin/opkg install entware-opt + +# Fix for multiuser environment +chmod 777 /opt/tmp + +for file in passwd group shells shadow gshadow; do + if [ $TYPE = 'generic' ]; then + if [ -f /etc/$file ]; then + ln -sf /etc/$file /opt/etc/$file + else + [ -f /opt/etc/$file.1 ] && cp /opt/etc/$file.1 /opt/etc/$file fi - # Create systemd mount unit to bind /usrdata/opt to /opt - echo "Info: Creating systemd mount unit for /opt..." - cat < /etc/systemd/system/opt.mount + else + if [ -f /opt/etc/$file.1 ]; then + cp /opt/etc/$file.1 /opt/etc/$file + fi + fi +done + +[ -f /etc/localtime ] && ln -sf /etc/localtime /opt/etc/localtime + +# Move /opt to /usrdata/opt after installation +echo 'Info: Moving Entware to /usrdata/opt...' +mkdir -p /usrdata/opt +mv /opt/* /usrdata/opt/ + +# Bind /usrdata/opt to /opt +echo 'Info: Setting up /opt mount to /usrdata/opt...' +cat < /etc/systemd/system/opt.mount [Unit] Description=Bind /usrdata/opt to /opt @@ -30,34 +88,19 @@ Options=bind [Install] WantedBy=multi-user.target EOF - systemctl daemon-reload - ln -s /etc/systemd/system/opt.mount /etc/systemd/system/multi-user.target.wants/opt.mount - systemctl start opt.mount -fi -echo 'Info: Opkg package manager deployment...' -URL=http://bin.entware.net/${ARCH}/installer -wget $URL/opkg -O /opt/bin/opkg -chmod 755 /opt/bin/opkg -wget $URL/opkg.conf -O /opt/etc/opkg.conf +systemctl daemon-reload +ln -s /etc/systemd/system/opt.mount /etc/systemd/system/multi-user.target.wants/opt.mount +systemctl start opt.mount -echo 'Info: Basic packages installation...' -/opt/bin/opkg update -if [ "$TYPE" = 'alternative' ]; then - /opt/bin/opkg install busybox -fi -/opt/bin/opkg install entware-opt - -# Fix for multiuser environment -chmod 777 /opt/tmp - -# Append /opt/bin and /opt/sbin to the system-wide PATH in /etc/profile at the beginning +# Update /etc/profile for PATH +echo 'Info: Updating /etc/profile for PATH...' if ! grep -q 'PATH=.*opt/bin' /etc/profile; then sed -i 's|PATH="|PATH="/opt/bin:/opt/sbin:|' /etc/profile fi -# Create the rc.unslung start systemd service -echo "Info: Creating systemd service for Entware initialization..." +# Create and enable rc.unslung service +echo 'Info: Creating rc.unslung service...' cat < /etc/systemd/system/rc.unslung.service [Unit] Description=Start Entware services @@ -77,11 +120,11 @@ systemctl start rc.unslung.service echo 'Info: Congratulations!' echo 'Info: If there are no errors above then Entware was successfully initialized.' -echo 'Info: Remember to add /opt/bin & /opt/sbin to your PATH variable.' -echo 'Info: Entware services will start automatically on boot.' -if [ "$TYPE" = 'alternative' ]; then +echo 'Info: Add /opt/bin & /opt/sbin to $PATH variable' +echo 'Info: Add "/opt/etc/init.d/rc.unslung start" to startup script for Entware services to start' +if [ $TYPE = 'alternative' ]; then echo 'Info: Use ssh server from Entware for better compatibility.' fi echo 'Info: Found a Bug? Please report at https://github.com/Entware/Entware/issues' -# Remount root filesystem as read-only +# Remount filesystem as read-only mount -o remount,ro /