In questa sezione descriverò come installare Entware su un
dispositivo NAS (Synology DS412+).
Innanzitutto dobbiamo accedere al NAS tramite SSH o Telnet. Creiamo una nuova
cartella sul "volume1"
del primo disco (dove è installato il DSM di Synology), rimuoviamo la vecchia
cartella "/opt" (nel seguente esempio la cartella "/opt" non
esiste), e colleghiamo la cartella "/opt" alla nuova cartella appena
creata :
root@DS412:~# mkdir -p /volume1/@entware/opt root@DS412:~# rm -rf /opt rm: cannot remove ‘/opt’: Device or resource busy root@DS412:~# mkdir -p /opt root@DS412:~# mount -o bind /volume1/@entware/opt /opt
Adesso dobbiamo sapere l'esatta piattaforma Entware da usare, a seconda del dispositivo NAS che abbiamo. Innanzitutto dobbiamo conoscere tutte le informazioni basilari del NAS :
root@DS412:~# uname -a Linux DS412 3.10.35 #5967 SMP Fri Nov 3 17:20:59 CST 2017 x86_64 GNU/Linux synology_cedarview_412+
Nella seguente tabella possiamo sapere tutto il formato del risultato - per i dispositivi di Synology possiamo ottenere informazioni aggiuntive su questo sito web :
Risultato | Significato |
---|---|
Linux | Nome del Sistema Operativo |
DS412 | Nome del dispositivo |
3.10.35 | Rilascio del Sistema Operativo |
#5967 SMP Fri Nov 3 17:20:59 CST 2017 | Versione del Sistema Operativo |
x86_64 | Tipo di macchina (hardware) |
GNU/Linux | Sistema Operativo |
synology_cedarview_412+ | Architettura Hardware di Synology |
Brevemente possiamo conoscere l'attuale Tipo di Hardware tramite il seguente comando :
root@DS412:~# uname -m x86_64
Brevemente possiamo conoscere l'attuale Versione del Kernel tramite il seguente comando :
root@DS412:~# uname -r 3.10.35
Quindi apriamo un browser, andiamo su questo sito web e troveremo alcune sottocartelle, dobbiamo scegliere una di queste sottocartelle allo scopo di installare Entware. Ciò che segue è l'elenco delle più importanti sottocartelle che possiamo trovare, state attenti a scegliere la sottocartella appropriata a seconda del suddetto risultato per Tipo di Hardware e Versione del Kernel :
Sottocartella | Tipo di Hardware + Versione del Kernel | Arch pacchetto di Synology |
---|---|---|
aarch64-k3.10 | armv8 - kernel 3.10 e successivo | rtd1296 |
armv5sf-k3.2 | armv5 - kernel 3.2 e successivo | 88f628x |
armv7sf-k2.6 | armv7 - kernel 2.6.36 e successivo | |
armv7sf-k3.2 | armv7 - kernel 3.2 e successivo | Armada*, Alpine*, Comcerto* |
mipselsf-k3.4 | mipsel - kernel 3.4 e successivo | |
mipssf-k3.4 | mips - kernel 3.4 e successivo | |
x64-k3.2 | x86_64 - kernel 3.2 e successivo | Tutti i modelli di CPU di Intel tranne X86 |
Per il dispositivo Synology DS412+ dobbiamo scegliere la sottocartella "x64-k3.2", quindi eseguiamo il seguente comando per installare Entware (invece dovete sostituire "x64-k3.2" con la vostra sottocartella) :
root@DS412:~# wget -O - http://bin.entware.net/x64-k3.2/installer/generic.sh | /bin/sh --2018-06-06 10:56:50-- http://bin.entware.net/x64-k3.2/installer/generic.sh Resolving bin.entware.net... 81.4.123.217 Connecting to bin.entware.net|81.4.123.217|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 2208 (2.2K) [application/octet-stream] Saving to: 'STDOUT' Info: Checking for prerequisites and creating folders... Warning: Folder /opt exists! 2018-06-06 10:56:50 (125 KB/s) - written to stdout [2208/2208] Info: Opkg package manager deployment... --2018-06-06 10:56:50-- http://bin.entware.net/x64-k3.2/installer/opkg Resolving bin.entware.net... 81.4.123.217 Connecting to bin.entware.net|81.4.123.217|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 158016 (154K) [application/octet-stream] Saving to: '/opt/bin/opkg' 2018-06-06 10:56:51 (796 KB/s) - '/opt/bin/opkg' saved [158016/158016] --2018-06-06 10:56:51-- http://bin.entware.net/x64-k3.2/installer/opkg.conf Resolving bin.entware.net... 81.4.123.217 Connecting to bin.entware.net|81.4.123.217|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 182 [application/octet-stream] Saving to: '/opt/etc/opkg.conf' 2018-06-06 10:56:51 (9.48 KB/s) - '/opt/etc/opkg.conf' saved [182/182] --2018-06-06 10:56:51-- http://bin.entware.net/x64-k3.2/installer/ld-2.27.so Resolving bin.entware.net... 81.4.123.217 Connecting to bin.entware.net|81.4.123.217|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 157488 (154K) [application/octet-stream] Saving to: '/opt/lib/ld-2.27.so' 2018-06-06 10:56:51 (662 KB/s) - '/opt/lib/ld-2.27.so' saved [157488/157488] --2018-06-06 10:56:51-- http://bin.entware.net/x64-k3.2/installer/libc-2.27.so Resolving bin.entware.net... 81.4.123.217 Connecting to bin.entware.net|81.4.123.217|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 1759664 (1.7M) [application/octet-stream] Saving to: '/opt/lib/libc-2.27.so' 2018-06-06 10:56:52 (1.65 MB/s) - '/opt/lib/libc-2.27.so' saved [1759664/1759664] --2018-06-06 10:56:52-- http://bin.entware.net/x64-k3.2/installer/libgcc_s.so.1 Resolving bin.entware.net... 81.4.123.217 Connecting to bin.entware.net|81.4.123.217|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 92560 (90K) [application/octet-stream] Saving to: '/opt/lib/libgcc_s.so.1' --2018-06-06 10:56:53-- http://bin.entware.net/x64-k3.2/installer/libpthread-2.27.so Resolving bin.entware.net... 81.4.123.217 Connecting to bin.entware.net|81.4.123.217|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 106152 (104K) [application/octet-stream] Saving to: '/opt/lib/libpthread-2.27.so' 2018-06-06 10:56:53 (734 KB/s) - '/opt/lib/libpthread-2.27.so' saved [106152/106152] Info: Basic packages installation... Downloading http://bin.entware.net/x64-k3.2/Packages.gz Updated list of available packages in /opt/var/opkg-lists/entware Installing entware-opt (227000-3) to root... Downloading http://bin.entware.net/x64-k3.2/entware-opt_227000-3_all.ipk Installing libc (2.27-8) to root... Downloading http://bin.entware.net/x64-k3.2/libc_2.27-8_x64-3.2.ipk Installing libgcc (7.3.0-8) to root... Downloading http://bin.entware.net/x64-k3.2/libgcc_7.3.0-8_x64-3.2.ipk Installing libssp (7.3.0-8) to root... Downloading http://bin.entware.net/x64-k3.2/libssp_7.3.0-8_x64-3.2.ipk Installing librt (2.27-8) to root... Downloading http://bin.entware.net/x64-k3.2/librt_2.27-8_x64-3.2.ipk Installing libpthread (2.27-8) to root... Downloading http://bin.entware.net/x64-k3.2/libpthread_2.27-8_x64-3.2.ipk Installing libstdcpp (7.3.0-8) to root... Downloading http://bin.entware.net/x64-k3.2/libstdcpp_7.3.0-8_x64-3.2.ipk Installing entware-release (1.0-2) to root... Downloading http://bin.entware.net/x64-k3.2/entware-release_1.0-2_all.ipk Installing zoneinfo-asia (2018e-1) to root... Downloading http://bin.entware.net/x64-k3.2/zoneinfo-asia_2018e-1_x64-3.2.ipk Installing zoneinfo-europe (2018e-1) to root... Downloading http://bin.entware.net/x64-k3.2/zoneinfo-europe_2018e-1_x64-3.2.ipk Installing findutils (4.6.0-1) to root... Downloading http://bin.entware.net/x64-k3.2/findutils_4.6.0-1_x64-3.2.ipk Installing terminfo (6.1-1) to root... Downloading http://bin.entware.net/x64-k3.2/terminfo_6.1-1_x64-3.2.ipk Installing locales (2.27-8) to root... Downloading http://bin.entware.net/x64-k3.2/locales_2.27-8_x64-3.2.ipk Installing grep (2.26-1) to root... Downloading http://bin.entware.net/x64-k3.2/grep_2.26-1_x64-3.2.ipk Installing libpcre (8.41-2) to root... Downloading http://bin.entware.net/x64-k3.2/libpcre_8.41-2_x64-3.2.ipk Installing opkg (2011-04-08-9c97d5ec-17b) to root... Downloading http://bin.entware.net/x64-k3.2/opkg_2011-04-08-9c97d5ec-17b_x64-3.2.ipk Installing entware-upgrade (1.0-1) to root... Downloading http://bin.entware.net/x64-k3.2/entware-upgrade_1.0-1_all.ipk Configuring libgcc. Configuring libc. Configuring libssp. Configuring libpthread. Configuring librt. Configuring terminfo. Configuring libpcre. Configuring grep. Configuring locales. Entware uses separate locale-archive file independent from main system Creating locale archive - /opt/usr/lib/locale/locale-archive Adding en_EN.UTF-8 Adding ru_RU.UTF-8 You can download locale sources from http://pkg.entware.net/sources/i18n_glib227.tar.gz You can add new locales to Entware using /opt/bin/localedef.new Configuring entware-upgrade. Upgrade operations are not required Configuring opkg. Configuring zoneinfo-europe. Configuring zoneinfo-asia. Configuring libstdcpp. Configuring entware-release. Configuring findutils. Configuring entware-opt. Info: Congratulations! Info: If there are no errors above then Entware was successfully initialized. Info: Add /opt/bin & /opt/sbin to your PATH variable Info: Add '/opt/etc/init.d/rc.unslung start' to startup script for Entware services to start Info: Found a Bug? Please report at https://github.com/Entware/Entware/issues
Ora dobbiamo creare uno script che il nostro NAS deve
eseguire ogni qualvolta esso viene riavviato.
Innanzitutto dobbiamo creare il seguente file "/etc/rc.entware" :
#! /bin/sh if test -z "${REAL_OPT_DIR}"; then REAL_OPT_DIR=/volume1/@entware/opt fi case "$1" in start) echo "Starting Entware." if test -n "${REAL_OPT_DIR}"; then if ! grep ' /opt ' /proc/mounts >/dev/null 2>&1 ; then mkdir -p /opt mount -o bind ${REAL_OPT_DIR} /opt /opt/etc/init.d/rc.unslung start fi fi ;; reconfig) true ;; stop) echo "Shutting down Entware." true ;; *) echo "Usage: $0 {start|stop|reconfig}" exit 1 esac exit 0
Nel suddetto file, la linea "/opt/etc/init.d/rc.unslung
start" è richiesta per avviare automaticamente i servizi di Entware. Se non
volete avviare automaticamente i servizi di Entware, potete rimuovere quella
linea.
Eventualmente al posto di quella linea, potete inserire manualmente i servizi
che devono essere eseguiti durante l'avvio del NAS.
In seguito aggiungiamo la seguente linea al file "/etc/rc.local" - se
questo file non esiste, allora lo creiamo :
#!/bin/sh [ -x /etc/rc.entware ] && /etc/rc.entware start exit 0
Adesso dobbiamo aggiungere le cartelle "/opt/bin" e "/opt/sbin" alla fine della variabile di ambiente PATH, usando uno dei file "/root/.profile" o "/etc/profile" ("/etc/profile" per il DSM6), ciò che segue è un esempio di linea PATH :
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin:/opt/bin:/opt/sbin export PATH
Cortesemente non aggiungete le suddette cartelle all'inizio
della linea PATH per evitare problemi al dispositivo NAS. Ricordatevi che Entware
è soltanto un ambiente aggiuntivo per il NAS, pertanto è meglio lasciare che il
NAS possa trovare i suoi stessi file all'interno delle cartelle PATH
prima delle cartelle di Entware.
Cortesemente riavviate il dispositivo NAS al fine di provare le modifiche
effettuate.
Dopo il riavvio del dispositivo NAS, possiamo installare tutti i pacchetti di
cui abbiamo bisogno, ad esempio se vogliamo installare l'editor "Nano",
possiamo usare il comando "opkg install nano".
root@DS412:~# opkg install nano Installing nano (2.9.6-1) to root... Downloading http://bin.entware.net/x64-k3.2/nano_2.9.6-1_x64-3.2.ipk Installing libncursesw (6.1-1) to root... Downloading http://bin.entware.net/x64-k3.2/libncursesw_6.1-1_x64-3.2.ipk Installing zlib (1.2.11-2) to root... Downloading http://bin.entware.net/x64-k3.2/zlib_1.2.11-2_x64-3.2.ipk Installing file (5.25-2) to root... Downloading http://bin.entware.net/x64-k3.2/file_5.25-2_x64-3.2.ipk Installing libmagic (5.25-2) to root... Downloading http://bin.entware.net/x64-k3.2/libmagic_5.25-2_x64-3.2.ipk Configuring libncursesw. Configuring zlib. Configuring libmagic. Configuring file. Configuring nano.
Per aggiornare tutti i pacchetti useremo i due comandi "opkg update" e
"opkg upgrade" (il primo comando aggiorna la sorgente Internet
dei pacchetti, il secondo aggiorna solo i pacchetti aggiornati).
Dobbiamo fare attenzione ad aggiornare i pacchetti, poiché mi è capitato in
passato che alcuni file di configurazione (da me modificati) siano stati
sovrascritti dai file di configurazione predefiniti. Il mio suggerimento è di
effettuare una copia di riserva di tutta la cartella "/opt"
prima di aggiornare i pacchetti (ma anche periodicamente allo scopo di avere una
copia di riserva dell'installazione Entware ogni qualvolta abbiamo
bisogno di ripristinare alcuni file).
Un altro mio suggerimento è quello di usare il parametro "--noaction"
con il comando "opkg upgrade", in questa maniera possiamo vedere una
simulazione (verifica) della procedura di aggiornamento, proprio per sapere in
anticipo quali pacchetti verranno aggiornati, quali file verranno sovrascritti e
se c'è qualcosa che possiamo fare in anticipo allo scopo di avere un ambiente Entware
completamente funzionante dopo aver aggiornato i pacchetti.
Ciò che segue è un esempio di risultato del comando "opkg update":
root@DS412:~# opkg update Downloading http://bin.entware.net/x64-k3.2/Packages.gz Updated list of available packages in /opt/var/opkg-lists/entware
Ciò che segue è un esempio di risultato del comando "opkg --help":
root@RT-AC56U:/tmp# opkg --help usage: opkg [options...] sub-command [arguments...] where sub-command is one of: Package Manipulation: update Update list of available packages upgrade Upgrade installed packages install <pkgs> Install package(s) configure <pkgs> Configure unpacked package(s) remove <pkgs|regexp> Remove package(s) flag <flag> <pkgs> Flag package(s) <flag>=hold|noprune|user|ok|installed|unpacked (one per invocation) Informational Commands: list List available packages list-installed List installed packages list-upgradable List installed and upgradable packages list-changed-conffiles List user modified configuration files files <pkg> List files belonging to <pkg> search <file|regexp> List package providing <file> find <regexp> List packages whose name or description matches <regexp> info [pkg|regexp] Display all info for <pkg> status [pkg|regexp] Display all status for <pkg> download <pkg> Download <pkg> to current directory compare-versions <v1> <op> <v2> compare versions using <= < > >= = << >> print-architecture List installable package architectures depends [-A] [pkgname|pat]+ whatdepends [-A] [pkgname|pat]+ whatdependsrec [-A] [pkgname|pat]+ whatrecommends[-A] [pkgname|pat]+ whatsuggests[-A] [pkgname|pat]+ whatprovides [-A] [pkgname|pat]+ whatconflicts [-A] [pkgname|pat]+ whatreplaces [-A] [pkgname|pat]+ Options: -A Query all packages not just those installed -V[<level>] Set verbosity level to <level>. --verbosity[=<level>] Verbosity levels: 0 errors only 1 normal messages (default) 2 informative messages 3 debug 4 debug level 2 -f <conf_file> Use <conf_file> as the opkg configuration file --conf <conf_file> --cache <directory> Use a package cache -d <dest_name> Use <dest_name> as the the root directory for --dest <dest_name> package installation, removal, upgrading. <dest_name> should be a defined dest name from the configuration file, (but can also be a directory name in a pinch). -o <dir> Use <dir> as the root directory for --offline-root <dir> offline installation of packages. --add-arch <arch>:<prio> Register architecture with given priority --add-dest <name>:<path> Register destination with given path Force Options: --force-depends Install/remove despite failed dependencies --force-maintainer Overwrite preexisting config files --force-reinstall Reinstall package(s) --force-overwrite Overwrite files from other package(s) --force-downgrade Allow opkg to downgrade packages --force-space Disable free space checks --force-postinstall Run postinstall scripts even in offline mode --force-remove Remove package even if prerm script fails --force-checksum Don't fail on checksum mismatches --noaction No action -- test only --download-only No action -- download only --nodeps Do not follow dependencies --nocase Perform case insensitive pattern matching --size Print package size when listing available packages --force-removal-of-dependent-packages Remove package and all dependencies --autoremove Remove packages that were installed automatically to satisfy dependencies -t Specify tmp-dir. --tmp-dir Specify tmp-dir. -l Specify lists-dir. --lists-dir Specify lists-dir. regexp could be something like 'pkgname*' '*file*' or similar e.g. opkg info 'libstd*' or opkg search '*libop*' or opkg remove 'libncur*'