Descrizione del componente OPKG
Il gestore di pacchetti opkg è progettato per estendere le funzionalità dei dispositivi Keenetic installando pacchetti software aggiuntivi. Utilizzando opkg, gli utenti esperti possono installare e aggiornare moduli non inclusi nel firmware di base del dispositivo, consentendo loro di configurare in modo flessibile le funzionalità del router per attività specifiche.
Questo articolo descrive i principi di utilizzo di opkg in KeeneticOS, inclusa la procedura di installazione, i metodi per la connessione di dispositivi di archiviazione esterni e le raccomandazioni per l'utilizzo dei pacchetti dal repository.
Il componente Supporto pacchetti aperti deve essere installato sul dispositivo per utilizzare i pacchetti aperti.
Il componente:
aggiunge i comandi di configurazione di
opkg,monta un filesystem USB in
/opt,espande i file
*.ipke*.tar.gzdalla directory/opt/install,esegue gli script hook.
Configurazione
Il comando opkg disk viene utilizzato per specificare il filesystem /opt. Il filesystem può essere identificato tramite UUID o etichetta di volume. Ad esempio,
(config)>opkg disk OPT_LABEL:Opkg::Manager: Disk is set to: OPT_LABEL. (config)>system configuration save
Sono supportati i file system NTFS e EXT2/3. Una volta configurato il opkg disk e collegato l'archivio, il componente opkg:
Monta il filesystem
OPT_LABELin/opt.Se la directory
/opt/installesiste, espande tutti i file/opt/install/*.ipkin/opt. Questa decompressione dovrebbe essere completata in 120 secondi o verrà terminata per timeout.Esegue
/opt/etc/initrc.
Script hook
Gli script hook si trovano in:
/
opt/etc/initrc— script di avvio predefinito (può essere definito tramite il comandoopkg initrc),/opt/etc/ndm/*.d/— gestori di eventi.
Le directory degli script e le variabili d'ambiente sono descritte nelle sezioni specifiche di seguito.
Le variabili PATH e LD_LIBRARY_PATH sono predefinite per la selezione di eseguibili e librerie dinamiche da /opt:
PATH=/opt/bin:/opt/sbin:/opt/usr/bin:/opt/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin LD_LIBRARY_PATH=/opt/lib:/opt/usr/lib:/lib:/usr/lib
Il prefisso /opt è sempre implicito nello shebang dello script hook. Cioè, sia #!/bin/sh che #!/opt/bin/sh eseguiranno l'interprete /opt/bin/sh.
C'è un timeout di 24 secondi su ogni script da eseguire.
Tutti gli script hook vengono avviati in un'unica coda, ovvero mentre /opt/etc/ndm/wan.d/01-one.sh è ancora in esecuzione, nessun altro script verrà avviato né da /opt/etc/ndm/wan.d/ né da /opt/etc/ndm/netfilter.d/.
initrc
Lo script di inizializzazione /opt/etc/initrc viene eseguito dopo il montaggio di /opt. Può eseguire altri script di inizializzazione, come /opt/etc/init.d/* per avviare processi in background. Se /opt/etc/initrc è mancante, il componente OPKG eseguirà /opt/etc/init.d/* in ordine alfabetico.
Ad esempio, lo script di avvio di dropbear potrebbe essere:
#!/bin/sh
if [ ! -d /opt/etc/dropbear ]; then
mkdir /opt/etc/dropbear
fi
if [ ! -f /opt/etc/dropbear/dropbear_dss_host_key ]; then
dropbearkey -t dss -f /opt/etc/dropbear/dropbear_dss_host_key
fi
if [ ! -f /opt/etc/dropbear/dropbear_rsa_host_key ]; then
dropbearkey -t rsa -f /opt/etc/dropbear/dropbear_rsa_host_key
fi
dropbearPer renderlo compatibile con i sistemi di inizializzazione di tipo Sys-V, gli script /opt/etc/initrc e /opt/etc/init.d vengono chiamati con l'argomento della riga di comando start. Quando l'utente desidera espellere lo storage /opt, /opt/etc/initrc viene chiamato con l'argomento stop.
ndm/wan.d
Gli script di eventi /opt/etc/ndm/wan.d/ vengono eseguiti quando è disponibile una nuova connessione a Internet.
1° Parametro | Descrizione |
|---|---|
| Connessione Internet stabilita |
| Connessione Internet terminata |
Variabile | Descrizione |
|---|---|
| Interfaccia WAN, come |
| Indirizzo IP dell'interfaccia |
| Maschera di sottorete dell'interfaccia |
| Indirizzo IP del gateway WAN |
Quando la connessione a Internet non è attiva, gli script wan.d vengono eseguiti con tutte le variabili sopra non definite.
Se la connessione a Internet è stata stabilita prima di montare /opt, gli script wan.d vengono eseguiti subito dopo initrc.
ndm/user.d
Gli script /opt/etc/ndm/user.d vengono eseguiti quando /etc/passwd e /etc/group vengono aggiornati dal sistema principale. Aggiungere script a user.d se è necessario modificare /etc/passwd o /etc/group. In caso contrario, qualsiasi modifica a questi file verrà sovrascritta.
Variabile | Descrizione |
|---|---|
| Nome utente con accesso |
Quando un utente viene eliminato, gli script user.d vengono eseguiti con un $user non definito.
Ad esempio, è possibile creare directory home utilizzando l'hook user.d come segue:
#!/bin/sh
home=/opt/home
[ -z "$user" ] && exit 0 # $user is undefined
[ -d $home/$user ] && exit 0 # home already exists
if mkdir -p $home/$user; then
chmod 0755 $home
chmod 0700 $home/$user
chown $user $home/$user
findm/netfilter.d
Gli script /opt/etc/ndm/netfilter.d vengono eseguiti quando il sistema riscrive una tabella netfilter. Gli hook netfilter.d possono modificare la tabella usando iptables. Le variabili $table e $type devono essere controllate per evitare la duplicazione delle regole.
Variabile | Descrizione |
|---|---|
| protocollo netfilter, come |
| tabella netfilter, come |
Ad esempio, è possibile aggiungere alcune regole mangle come segue:
#!/bin/sh [ "$type" == "ip6tables" ] && exit 0 # check the protocol type in backward-compatible way [ "$table" != "mangle" ] && exit 0 # check the table name iptables -A PREROUTING -i br0 -t mangle -p tcp --dport 22 -j MARK --set-mark 1 iptables -A PREROUTING -i br0 -t mangle -p tcp --dport 23 -j MARK --set-mark 1
ndm/usb.d
Gli script /opt/etc/ndm/usb.d vengono eseguiti quando un dongle USB è collegato o scollegato.
1° Parametro | Descrizione |
|---|---|
| Dispositivo USB collegato |
| Dispositivo USB scollegato |
Le seguenti variabili d'ambiente sono definite per consentire di identificare il dongle.
Variabile | Descrizione | Esempio |
|---|---|---|
| Percorso del dispositivo |
|
| Nome del dispositivo in |
|
| Percorso in sysfs |
|
| ID modello USB |
|
| Numero porta USB |
|
| ID fornitore USB |
|
Qualsiasi dispositivo collegato prima dell'esecuzione dello script di inizializzazione opkg attiverà questi script di richiamo pianificati per essere eseguiti all'esecuzione dello script di inizializzazione OPKG.
ndm/fs.d
Gli script /opt/etc/ndm/fs.d vengono chiamati quando il filesystem viene montato o si prepara a essere smontato o espulso inaspettatamente.
1° Parametro | Descrizione |
|---|---|
| Il filesystem è montato |
| Il filesystem si sta preparando per essere smontato o espulso inaspettatamente |
Il tipo di filesystem può essere uno qualsiasi tra: VFAT, EXFAT, NTFS, EXT2, EXT3, EXT4 o HFSP.
Variabile | Descrizione | Esempio |
|---|---|---|
| Tipo di filesystem |
|
| ID del filesystem |
|
| Etichetta del filesystem / partizione |
|
| Directory di montaggio del filesystem (percorso assoluto) |
|
Qualsiasi filesystem montato prima dell'esecuzione dello script di inizializzazione OPKG attiverà questi script di richiamo, la cui esecuzione è pianificata all'esecuzione dello script di inizializzazione OPKG.
ndm/time.d
Gli script /opt/etc/ndm/time.d vengono chiamati quando l'ora di sistema viene modificata (sincronizzata tramite NTP).
ndm/button.d
Gli script /opt/etc/ndm/button.d vengono chiamati quando è stato premuto il pulsante FN e/o i pulsanti WPS.
Variabile | Descrizione | Esempio |
|---|---|---|
| Quale pulsante è stato premuto |
|
| Tipo di clic |
|
È necessario prima configurare alcuni dettagli dall'interfaccia web.
ndm/schedule.d
Gli script /opt/etc/ndm/schedule.d vengono chiamati con eventi pianificati (se le pianificazioni sono definite tramite CLI).
1° Parametro | Descrizione |
|---|---|
| Inizio dell'attività pianificata |
| Fine dell'attività pianificata |
Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.
Variabile | Descrizione |
|---|---|
| Nome della pianificazione |
| Tempo (in secondi) impiegato per l'azione |
ndm/neighbour.d
Gli script /opt/etc/ndm/neighbour.d vengono chiamati con determinati eventi dei dispositivi vicini della rete. Gli script vengono richiamati con il primo parametro ($1) == hook.
Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.
Variabile | Descrizione |
|---|---|
| ID univoco del dispositivo vicino dall'avvio |
| Azione del dispositivo vicino ( |
| Tipo di aggiornamento (se presente): |
| Famiglia di indirizzi - |
ndm/ifcreated.d
Gli script /opt/etc/ndm/ifcreated.d vengono chiamati quando viene creata un'interfaccia NDM. Gli script vengono richiamati con il primo parametro ($1) == hook.
Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.
Variabile | Descrizione |
|---|---|
| ID interfaccia NDM |
| Nome interfaccia specifico per Linux |
ndm/ifdestroyed.d
Gli script /opt/etc/ndm/ifdestroyed.d vengono chiamati quando un'interfaccia NDM viene rimossa. Gli script vengono richiamati con il primo parametro ($1) == hook.
Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.
Variabile | Descrizione |
|---|---|
| ID interfaccia NDM |
| Nome interfaccia specifico per Linux |
ndm/ifipchanged.d
Gli script /opt/etc/ndm/ifipchanged.d vengono chiamati quando l'indirizzo IPv4 o la sottorete di un'interfaccia NDM viene modificato. Gli script vengono richiamati con il primo parametro ($1) == hook.
Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.
Variabile | Descrizione |
|---|---|
| ID interfaccia NDM |
| Nome interfaccia specifico per Linux |
| Nuovo indirizzo IPv4 |
| Nuova maschera di rete IPv4 |
| Stato corrente del collegamento dell'interfaccia, può essere |
| Stato corrente della connessione dell'interfaccia, può essere |
| Stato corrente dell'interfaccia, può essere |
| Priorità globale corrente dell'interfaccia, può essere zero per le interfacce non globali e > 0 quando l'interfaccia è globale |
ndm/ifip6changed.d (dalla 4.0)
Gli script /opt/etc/ndm/ifip6changed.d vengono chiamati quando l'indirizzo IPv6 o la sottorete di un'interfaccia NDM viene modificato. Gli script vengono richiamati con il primo parametro ($1) == hook.
Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.
Variabile | Descrizione |
|---|---|
| ID interfaccia NDM |
| Nome interfaccia specifico per Linux |
| Indirizzo IPv6 |
| Maschera di rete IPv6 |
| Stato corrente del collegamento dell'interfaccia, può essere |
| Stato corrente della connessione dell'interfaccia, può essere |
| Stato corrente dell'interfaccia, può essere |
| Azione di modifica corrente, può essere |
| Priorità globale corrente dell'interfaccia, può essere zero per le interfacce non globali e > 0 quando l'interfaccia è globale |
ndm/ifstatechanged.d (obsoleto dalla 4.0, mantenuto solo per retrocompatibilità)
Gli script /opt/etc/ndm/ifstatechanged.d vengono chiamati quando lo stato di un'interfaccia NDM viene modificato. Gli script vengono richiamati con il primo parametro ($1) == hook.
Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.
Variabile | Descrizione |
|---|---|
| ID interfaccia NDM |
| Nome interfaccia specifico per Linux |
| Stato corrente del collegamento dell'interfaccia, può essere |
| Stato corrente della connessione dell'interfaccia, può essere |
| Stato corrente dell'interfaccia, può essere |
| Origine delle modifiche, può essere |
ndm/iflayerchanged.d (nuovo e primario dalla 4.0)
Gli script /opt/etc/ndm/iflayerchanged.d vengono chiamati quando lo stato di un livello dell'interfaccia NDM viene modificato. Gli script vengono richiamati con il primo parametro ($1) == hook.
Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.
Variabile | Descrizione |
|---|---|
| ID interfaccia NDM |
| Nome interfaccia specifico per Linux |
| Livello dell'interfaccia, può essere |
| Stato corrente del livello dell'interfaccia, può essere |
ndm/sms.d
Gli script /opt/etc/ndm/sms.d vengono chiamati quando si riceve un SMS sull'interfaccia UsbQmi. Gli script vengono richiamati con il primo parametro ($1) == hook.
Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.
Variabile | Descrizione |
|---|---|
| ID interfaccia NDM |
| ID SMS |
Il contenuto effettivo dell'SMS può essere recuperato tramite ci/rci (comandi ndmq / jq) utilizzando l'interfaccia e gli ID del messaggio forniti.
ndm/pptp_vpn_up.d
Gli script /opt/etc/ndm/pptp_vpn_up.d vengono chiamati quando un utente si connette al server VPN PPTP. Gli script vengono richiamati con il primo parametro ($1) == hook.
Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.
Variabile | Descrizione |
|---|---|
| Nome utente |
| Interfaccia di sistema (in genere vpn*) |
| Indirizzo IPv4 esterno del peer remoto |
| Indirizzo IPv4 del peer remoto all'interno del tunnel |
ndm/pptp_vpn_down.d
Gli script /opt/etc/ndm/pptp_vpn_down.d vengono chiamati quando un utente si disconnette dal server VPN PPTP. Gli script vengono richiamati con il primo parametro ($1) == hook.
Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.
Variabile | Descrizione |
|---|---|
| Nome utente |
| Interfaccia di sistema (tipicamente sstp*) |
| Indirizzo IPv4 esterno del peer remoto |
| Indirizzo IPv4 del peer remoto all'interno del tunnel |
ndm/l2tp_ipsec_vpn_up.d
Gli script /opt/etc/ndm/l2tp_ipsec_vpn_up.d vengono richiamati quando un utente si connette al server VPN L2TP/IPsec. Gli script vengono richiamati con il primo parametro($1) == hook.
Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.
Variabile | Descrizione |
|---|---|
$ndm_opkg_id | Nome utente |
$iface | Interfaccia di sistema (tipicamente l2tp*) |
$remote | Indirizzo IPv4 esterno del peer remoto |
$local | Indirizzo IPv4 del peer remoto all'interno del tunnel |
ndm/l2tp_ipsec_vpn_down.d
Gli script /opt/etc/ndm/l2tp_ipsec_vpn_down.d vengono richiamati quando un utente viene disconnesso dal server VPN L2TP/IPsec. Gli script vengono richiamati con il primo parametro($1) == hook.
Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.
Variabile | Descrizione |
|---|---|
| Nome utente |
| Interfaccia di sistema (tipicamente l2tp*) |
| Indirizzo IPv4 esterno del peer remoto |
| Indirizzo IPv4 del peer remoto all'interno del tunnel |
ndm/vip_vpn_up.d
Gli script /opt/etc/ndm/vip_vpn_up.d vengono richiamati quando un utente si connette al server VPN IP virtuale. Gli script vengono richiamati con il primo parametro($1) == hook.
Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.
Variabile | Descrizione |
|---|---|
| Nome utente |
| Indirizzo IPv4 esterno del peer remoto |
| Indirizzo IPv4 del peer remoto all'interno del tunnel |
ndm/vip_vpn_down.d
Gli script /opt/etc/ndm/vip_vpn_down.d vengono richiamati quando un utente viene disconnesso dal server VPN IP virtuale. Gli script vengono richiamati con il primo parametro($1) == hook.
Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.
Variabile | Descrizione |
|---|---|
| Nome utente |
| Indirizzo IPv4 esterno del peer remoto |
| Indirizzo IPv4 del peer remoto all'interno del tunnel |
ndm/openvpn-*.d
Gli script /opt/etc/ndm/openvpn-*.d/ vengono richiamati quando OpenVPN in NDMS esegue uno script hook (2.10+, solo quando ndm-mod-openvpn è installato e configurato).
Elenco di script:
/opt/etc/ndm/openvpn-up.d//opt/etc/ndm/openvpn-tls-verify.d//opt/etc/ndm/openvpn-ipchange.d//opt/etc/ndm/openvpn-client-connect.d//opt/etc/ndm/openvpn-route-up.d//opt/etc/ndm/openvpn-client-disconnect.d//opt/etc/ndm/openvpn-down.d//opt/etc/ndm/openvpn-learn-address.d/
I significati degli script devono essere verificati nella pagina man ufficiale di OpenVPN (sezione SCRIPTING AND ENVIRONMENTAL VARIABLES).
Tutte le variabili d'ambiente impostate da OpenVPN stesso (descritte qui) vengono conservate così come sono e passate agli script hook OPKG. Gli script vengono richiamati con il primo parametro($1) == hook. Tutti gli argomenti dell'esecuzione originale dell'hook vengono passati come variabili d'ambiente aggiuntive.
Variabile | Descrizione |
|---|---|
| ID NDMS dell'interfaccia, ad esempio, |
| Numero di argomenti nella chiamata dell'hook originale |
| Valore dell'argomento |