OPKG bileşen açıklaması
opkg paket yöneticisi, ek yazılım paketleri yükleyerek Keenetic cihazlarının yeteneklerini genişletmek için tasarlanmıştır. Gelişmiş kullanıcılar, opkg kullanarak cihazın temel yazılımına dahil olmayan modülleri yükleyebilir ve güncelleyebilir, bu da Router'ın işlevselliğini belirli görevler için esnek bir şekilde yapılandırmalarına olanak tanır.
Bu makalede, KeeneticOS cihazlarında opkg kullanımının ilkeleri, kurulum prosedürü, harici depolamayı bağlama yöntemleri ve depodan paket kullanma önerileri açıklanmaktadır.
Açık paketleri kullanmak için Açık Paket desteği bileşeninin cihaza yüklenmesi gerekir.
Bu bileşen şunları yapacaktır:
opkgyapılandırma komutları ekleme,bir USB dosya sistemini
/optdizinine bağlama,/opt/installdizininden*.ipkve*.tar.gzdosyalarını çıkarma,hook betiklerini çalıştırma.
Yapılandırma
opkg disk komutu, /opt dosya sistemini belirtmek için kullanılır. Dosya sistemi UUID veya bir birim etiketi ile tanımlanabilir. Örneğin,
(config)>opkg disk OPT_LABEL:Opkg::Manager: Disk is set to: OPT_LABEL. (config)>system configuration save
NTFS ve EXT2/3 dosya sistemleri desteklenir. opkg disk yapılandırıldıktan ve depolama birimi takıldıktan sonra, opkg bileşeni şunları yapacaktır:
OPT_LABELdosya sistemini/optdizinine bağlar./opt/installdizini mevcutsa, tüm/opt/install/*.ipkdosyalarını/optdizinine çıkarır. Bu çıkarma işlemi 120 saniye içinde bitmelidir, aksi takdirde zaman aşımı nedeniyle sonlandırılır./opt/etc/initrckomutunu çalıştırır.
Hook Betikleri
Hook betikleri şu konumlardadır:
/
opt/etc/initrc— varsayılan başlangıç betiği (opkg initrckomutu ile tanımlanabilir),/opt/etc/ndm/*.d/— olay işleyicileri.
Betik dizinleri ve ortam değişkenleri aşağıdaki belirli bölümlerde açıklanmıştır.
PATH ve LD_LIBRARY_PATH değişkenleri, çalıştırılabilir dosyaların ve dinamik kütüphanelerin /opt dizininden seçilmesi için önceden tanımlanmıştır:
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
/opt öneki, hook betiği shebang'inde her zaman zımnen bulunur. Yani, hem #!/bin/sh hem de #!/opt/bin/sh, /opt/bin/sh yorumlayıcısını çalıştıracaktır.
Çalıştırılacak her betik için 24 saniyelik bir zaman aşımı vardır.
Tüm hook betikleri tek bir kuyrukta başlatılır, yani /opt/etc/ndm/wan.d/01-one.sh hala çalışırken, ne /opt/etc/ndm/wan.d/ dizininden ne de /opt/etc/ndm/netfilter.d/ dizininden başka bir betik başlatılmayacaktır.
initrc
/opt/etc/initrc başlatma betiği, /opt bağlandıktan sonra çalıştırılır. Arka plan işlemlerini başlatmak için /opt/etc/init.d/* gibi başka başlatma betiklerini çalıştırabilir. /opt/etc/initrc eksikse, OPKG bileşeni /opt/etc/init.d/* betiğini alfabetik sırayla çalıştırır.
Örneğin, dropbear başlangıç betiği şöyle olabilir:
#!/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
dropbearSys-V benzeri başlatma sistemleriyle uyumlu hale getirmek için, /opt/etc/initrc ve /opt/etc/init.d betikleri start komut satırı argümanı ile çağrılır. Kullanıcı /opt depolama birimini çıkarmak istediğinde, /opt/etc/initrc stop argümanı ile çağrılır.
ndm/wan.d
/opt/etc/ndm/wan.d/ olay betikleri, yeni bir İnternet bağlantısı kurulduğunda çalıştırılır.
1. Parametre | Açıklama |
|---|---|
| İnternet bağlantısı kuruldu |
| İnternet bağlantısı sonlandırıldı |
Değişken | Açıklama |
|---|---|
| WAN arayüzü, örneğin |
| Arayüz IP adresi |
| Arayüz alt ağ maskesi |
| WAN ağ geçidi IP adresi |
İnternet bağlantısı kesildiğinde, wan.d betikleri yukarıdaki tüm değişkenler tanımsız olarak çalıştırılır.
/opt bağlanmadan önce internet bağlantısı kurulmuşsa, wan.d betikleri initrc'den hemen sonra çalıştırılır.
ndm/user.d
/opt/etc/ndm/user.d betikleri, çekirdek sistem tarafından /etc/passwd ve /etc/group yenilendiğinde çalıştırılır. /etc/passwd veya /etc/group dosyalarını değiştirmeniz gerekiyorsa user.d içine betikler ekleyin. Aksi takdirde, bu dosyalardaki tüm değişikliklerin üzerine yazılır.
Değişken | Açıklama |
|---|---|
| Çekirdek sistem üzerinden eklenirse |
Bir kullanıcı silindiğinde, user.d betikleri tanımsız bir $user ile çalıştırılır.
Örneğin, user.d hook'unu kullanarak ev dizinlerini aşağıdaki gibi oluşturabilirsiniz:
#!/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
/opt/etc/ndm/netfilter.d betikleri, sistem bir netfilter tablosunu yeniden yazdığında çalıştırılır. netfilter.d hook'ları iptables kullanarak tabloyu değiştirebilir. Kural tekrarını önlemek için $table ve $type değişkenleri kontrol edilmelidir.
Değişken | Açıklama |
|---|---|
| netfilter protokolü, örneğin IPv4 için |
| netfilter tablosu, örneğin |
Örneğin, aşağıdaki gibi bazı mangle kuralları ekleyebilirsiniz:
#!/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
/opt/etc/ndm/usb.d betikleri, bir USB cihazı takıldığında veya çıkarıldığında çalıştırılır.
1. Parametre | Açıklama |
|---|---|
| USB cihazı takıldı |
| USB cihazı çıkarıldı |
Aşağıdaki ortam değişkenleri, cihazı tanımlamanıza olanak sağlamak için tanımlanmıştır.
Değişken | Açıklama | Örnek |
|---|---|---|
|
|
|
| Cihazın |
|
| sysfs içindeki yol |
|
| USB model Kimliği |
|
| USB portu numarası |
|
| USB üretici Kimliği |
|
opkg başlatma betiği çalıştırılmadan önce bağlanan herhangi bir cihaz, OPKG başlatma betiği çalıştırıldığında çalıştırılmak üzere zamanlanmış bu geri arama betiklerini tetikleyecektir.
ndm/fs.d
/opt/etc/ndm/fs.d betikleri, dosya sistemi bağlandığında veya çıkarılmaya hazırlanırken ya da beklenmedik bir şekilde çıkarıldığında çağrılır.
1. Parametre | Açıklama |
|---|---|
| Dosya sistemi bağlandı |
| Dosya sistemi çıkarılmaya hazırlanıyor veya beklenmedik bir şekilde çıkarıldı |
Dosya sistemi türü şunlardan herhangi biri olabilir: VFAT, EXFAT, NTFS, EXT2, EXT3, EXT4 veya HFSP.
Değişken | Açıklama | Örnek |
|---|---|---|
| Dosya sistemi türü |
|
| Dosya sistemi Kimliği |
|
| Dosya sistemi / bölüm etiketi |
|
| Dosya sistemi bağlama dizini (mutlak yol) |
|
OPKG başlatma betiği çalıştırılmadan önce bağlanan herhangi bir dosya sistemi, OPKG başlatma betiği çalıştırıldığında çalıştırılmak üzere zamanlanmış bu geri arama betiklerini tetikleyecektir.
ndm/time.d
/opt/etc/ndm/time.d betikleri, sistem saati değiştirildiğinde (NTP ile senkronize edildiğinde) çağrılır.
ndm/button.d
/opt/etc/ndm/button.d betikleri, FN Düğmesine ve/veya WPS Düğmesine/Düğmelerine basıldığında çağrılır.
Değişken | Açıklama | Örnek |
|---|---|---|
| Hangi düğmeye basıldığı |
|
| Tıklama türü |
|
Öncelikle web arayüzünden bazı ayrıntıları yapılandırmanız gerekir.
ndm/schedule.d
/opt/etc/ndm/schedule.d betikleri, zamanlanmış olaylarla (zamanlamalar CLI aracılığıyla tanımlanmışsa) çağrılır.
1. Parametre | Açıklama |
|---|---|
| Zamanlanmış görevin başlangıcı |
| Zamanlanmış görevin sonu |
Görevin ayrıntılarını belirlemenizi sağlamak için aşağıdaki ortam değişkenleri tanımlanmıştır.
Değişken | Açıklama |
|---|---|
| Zamanlamanın adı |
| Eylem için geçen süre (saniye cinsinden) |
ndm/neighbour.d
/opt/etc/ndm/neighbour.d betikleri, belirli ağ komşusu olaylarında çağrılır. Betikler, birinci parametre ($1) == hook olacak şekilde çağrılır.
Görevin ayrıntılarını belirlemenizi sağlamak için aşağıdaki ortam değişkenleri tanımlanmıştır.
Değişken | Açıklama |
|---|---|
| Açılıştan bu yana komşunun benzersiz kimliği |
| Komşu eylemi( |
| Güncelleme türü (varsa): Komşu başına IPv6 adresleri listesini güncellemek için |
| Adres ailesi - |
ndm/ifcreated.d
/opt/etc/ndm/ifcreated.d betikleri, bir NDM arayüzü oluşturulduğunda çağrılır. Betikler, birinci parametre ($1) == hook olacak şekilde çağrılır.
Görevin ayrıntılarını belirlemenizi sağlamak için aşağıdaki ortam değişkenleri tanımlanmıştır.
Değişken | Açıklama |
|---|---|
| NDM arayüz Kimliği |
| Linux'e özgü arayüz adı |
ndm/ifdestroyed.d
/opt/etc/ndm/ifdestroyed.d betikleri, bir NDM arayüzü kaldırıldığında çağrılır. Betikler, birinci parametre ($1) == hook olacak şekilde çağrılır.
Görevin ayrıntılarını belirlemenizi sağlamak için aşağıdaki ortam değişkenleri tanımlanmıştır.
Değişken | Açıklama |
|---|---|
| NDM arayüz Kimliği |
| Linux'e özgü arayüz adı |
ndm/ifipchanged.d
/opt/etc/ndm/ifipchanged.d betikleri, bir NDM arayüzünün IPv4 adresi veya alt ağı değiştirildiğinde çağrılır. Betikler, birinci parametre ($1) == hook olacak şekilde çağrılır.
Görevin ayrıntılarını belirlemenizi sağlamak için aşağıdaki ortam değişkenleri tanımlanmıştır.
Değişken | Açıklama |
|---|---|
| NDM arayüz Kimliği |
| Linux'e özgü arayüz adı |
| Yeni IPv4 adresi |
| Yeni IPv4 ağ maskesi |
| Arayüzün mevcut bağlantı durumu, |
| Arayüzün mevcut bağlantı durumu, |
| Arayüzün mevcut durumu, |
| Arayüzün mevcut genel önceliği, genel olmayan arayüzler için sıfır ve arayüz genel olduğunda > 0 olabilir |
ndm/ifip6changed.d (4.0 sürümünden itibaren)
/opt/etc/ndm/ifip6changed.d betikleri, bir NDM arayüzünün IPv6 adresi veya alt ağı değiştirildiğinde çağrılır. Betikler, birinci parametre ($1) == hook olacak şekilde çağrılır.
Görevin ayrıntılarını belirlemenizi sağlamak için aşağıdaki ortam değişkenleri tanımlanmıştır.
Değişken | Açıklama |
|---|---|
| NDM arayüz Kimliği |
| Linux'e özgü arayüz adı |
| IPv6 adresi |
| IPv6 ağ maskesi |
| Arayüzün mevcut bağlantı durumu, |
| Arayüzün mevcut bağlantı durumu, |
| Arayüzün mevcut durumu, |
| Mevcut değişiklik eylemi, |
| Arayüzün mevcut genel önceliği, genel olmayan arayüzler için sıfır ve arayüz genel olduğunda > 0 olabilir |
ndm/ifstatechanged.d (4.0 sürümünden beri kullanımdan kaldırılmıştır, yalnızca geriye dönük uyumluluk için tutulur)
/opt/etc/ndm/ifstatechanged.d betikleri, bir NDM arayüzünün durumu değiştiğinde çağrılır. Betikler, birinci parametre ($1) == hook olacak şekilde çağrılır.
Görevin ayrıntılarını belirlemenizi sağlamak için aşağıdaki ortam değişkenleri tanımlanmıştır.
Değişken | Açıklama |
|---|---|
| NDM arayüz Kimliği |
| Linux'e özgü arayüz adı |
| Arayüzün mevcut bağlantı durumu, |
| Arayüzün mevcut bağlantı durumu, |
| Arayüzün mevcut durumu, |
| Değişikliklerin kaynağı, |
ndm/iflayerchanged.d (4.0 sürümünden itibaren yeni ve birincil)
/opt/etc/ndm/iflayerchanged.d betikleri, bir NDM arayüz katmanı durumunun durumu değiştiğinde çağrılır. Betikler, birinci parametre ($1) == hook olacak şekilde çağrılır.
Görevin ayrıntılarını belirlemenizi sağlamak için aşağıdaki ortam değişkenleri tanımlanmıştır.
Değişken | Açıklama |
|---|---|
| NDM arayüz Kimliği |
| Linux'e özgü arayüz adı |
| Arayüz katmanı, |
| Arayüz katmanı mevcut durumu, |
ndm/sms.d
/opt/etc/ndm/sms.d betikleri, UsbQmi arayüzünde SMS alındığında çağrılır. Betikler, birinci parametre ($1) == hook olacak şekilde çağrılır.
Görevin ayrıntılarını belirlemenizi sağlamak için aşağıdaki ortam değişkenleri tanımlanmıştır.
Değişken | Açıklama |
|---|---|
| NDM arayüz Kimliği |
| SMS Kimliği |
SMS'in gerçek içeriği, sağlanan arayüz ve mesaj kimlikleri kullanılarak ci/rci (ndmq / jq komutları) aracılığıyla alınabilir.
ndm/pptp_vpn_up.d
/opt/etc/ndm/pptp_vpn_up.d betikleri, bir kullanıcı PPTP VPN sunucusuna bağlandığında çağrılır. Betikler, birinci parametre ($1) == hook olacak şekilde çağrılır.
Görevin ayrıntılarını belirlemenizi sağlamak için aşağıdaki ortam değişkenleri tanımlanmıştır.
Değişken | Açıklama |
|---|---|
| Kullanıcı adı |
| Sistem arayüzü (genellikle vpn*) |
| Uzak eşin harici IPv4 adresi |
| Tünel içindeki uzak eşin IPv4 adresi |
ndm/pptp_vpn_down.d
/opt/etc/ndm/pptp_vpn_down.d betikleri, bir kullanıcının PPTP VPN sunucusuyla bağlantısı kesildiğinde çağrılır. Betikler, birinci parametre ($1) == hook olacak şekilde çağrılır.
Görevin ayrıntılarını belirlemenizi sağlamak için aşağıdaki ortam değişkenleri tanımlanmıştır.
Değişken | Açıklama |
|---|---|
| Kullanıcı adı |
| Sistem arayüzü (genellikle sstp*) |
| Uzak eşin harici IPv4 adresi |
| Tünel içindeki uzak eşin IPv4 adresi |
ndm/l2tp_ipsec_vpn_up.d
/opt/etc/ndm/l2tp_ipsec_vpn_up.d betikleri, bir kullanıcı L2TP/IPsec VPN sunucusuna bağlandığında çağrılır. Betikler, hook == olan ilk parametreyle ($1) çağrılır.
Aşağıdaki ortam değişkenleri, görev ayrıntılarını belirlemenizi sağlamak için tanımlanmıştır.
Değişken | Açıklama |
|---|---|
$ndm_opkg_id | Kullanıcı adı |
$iface | Sistem arayüzü (genellikle l2tp*) |
$remote | Uzak eşin harici IPv4 adresi |
$local | Tünel içindeki uzak eşin IPv4 adresi |
ndm/l2tp_ipsec_vpn_down.d
/opt/etc/ndm/l2tp_ipsec_vpn_down.d betikleri, bir kullanıcının L2TP/IPsec VPN sunucusundan bağlantısı kesildiğinde çağrılır. Betikler, hook == olan ilk parametreyle ($1) çağrılır.
Aşağıdaki ortam değişkenleri, görev ayrıntılarını belirlemenizi sağlamak için tanımlanmıştır.
Değişken | Açıklama |
|---|---|
| Kullanıcı adı |
| Sistem arayüzü (genellikle l2tp*) |
| Uzak eşin harici IPv4 adresi |
| Tünel içindeki uzak eşin IPv4 adresi |
ndm/vip_vpn_up.d
/opt/etc/ndm/vip_vpn_up.d betikleri, bir kullanıcı Sanal IP VPN sunucusuna bağlandığında çağrılır. Betikler, hook == olan ilk parametreyle ($1) çağrılır.
Aşağıdaki ortam değişkenleri, görev ayrıntılarını belirlemenizi sağlamak için tanımlanmıştır.
Değişken | Açıklama |
|---|---|
| Kullanıcı adı |
| Uzak eşin harici IPv4 adresi |
| Tünel içindeki uzak eşin IPv4 adresi |
ndm/vip_vpn_down.d
/opt/etc/ndm/vip_vpn_down.d betikleri, bir kullanıcının Sanal IP VPN sunucusundan bağlantısı kesildiğinde çağrılır. Betikler, hook == olan ilk parametreyle ($1) çağrılır.
Aşağıdaki ortam değişkenleri, görev ayrıntılarını belirlemenizi sağlamak için tanımlanmıştır.
Değişken | Açıklama |
|---|---|
| Kullanıcı adı |
| Uzak eşin harici IPv4 adresi |
| Tünel içindeki uzak eşin IPv4 adresi |
ndm/openvpn-*.d
/opt/etc/ndm/openvpn-*.d/ betikleri, NDMS'deki OpenVPN bir hook betiği çalıştırdığında çağrılır (2.10+, yalnızca ndm-mod-openvpn kurulu ve yapılandırılmış olduğunda).
Betik listesi:
/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/
Betiklerin anlamları resmi OpenVPN man sayfasında (SCRIPTING AND ENVIRONMENTAL VARIABLES bölümü) kontrol edilmelidir.
OpenVPN'in kendisi tarafından ayarlanan tüm ortam değişkenleri (burada açıklanmıştır) olduğu gibi korunur ve OPKG hook betiklerine aktarılır. Betikler, hook == olan ilk parametreyle ($1) çağrılır. Orijinal hook yürütmesindeki tüm argümanlar ek ortam değişkenleri olarak aktarılır.
Değişken | Açıklama |
|---|---|
| Arayüzün NDMS kimliği, örneğin, |
| Orijinal hook çağrısındaki argümanların sayısı |
|
|