OpenWrt bellenimi uçbirim kullanarak yükseltme

:!: Sadece deneyimli kullanıcılar için!

Bu klavuz varolan bir OpenWrt bellenimini yeni bir versiyona SSH komut satırından yükseltir.
Bu wiki sayfasındaki pek çok bilgi generic OpenWrt OS upgrade procedure içeriğinin tıpkısıdır.
Deneyimli olmayan kullanıcılara bunun yerine OpenWrt bellenimi LuCI kullanarak yükseltmeleri şiddetle önerilir.
Eğer ilk açılışta bazı yapılandırma seçeneklerine, örneğin çakmadan sonra Wi-Fi'ın çalışır olmasına ihtiyacınız varsa, şu klavuzu takip edin: İlk başlangıçta çalışır Wi-Fi'li OpenWrt çakma

Takip edin: backup_restore

Varolan yapılandırma dosyalarını saklamak istemiyorsanız bu kısmı atlayabilirsiniz.

Komut satırı yükseltmeleri için sadece “-sysupgrade.bin” ile biten OpenWrt bellenim imajlarını indirin ve kullanın.
x86 sistemler için “sysupgrade” imajı yoktur, sadece yeni bellenim imajının aynı doyasistemi ailesine sahip olduğundan emin olun.

:!: Not: sysupgrade işlemi, yükseltme süreci sırasında flaş deposunu indirdiğinden yükseltme dosyası /tmp içine yerleştirilmeli. Yükseltme dosyası /tmp içinde değilse sysupgrade herhangi bir yükseltme gerçekleştirmez sadece sistemi yeniden başlatır.

Arzu edilen yükseltme dosyasıni OpenWrt'nin /tmp dizinine indirin ve Bellenim doğrulama-toplamını doğrulayın. /tmp dizini cihazın RAM'inde konumlandırlır:

  1. Boş hafızanın hazır bulunurluğunun kontrolü: free komutu. Eğer serbest hafıza bellenim dosyası boyutu + biraz fazla hafıza kadarsa (bellenim dosyanızın iki katı mükemmeldir), devam.
  2. Devam eden değişkenleri, OpenWrt bellenim dosyanızın indirme adresine ayarlayın (URL'i özelleştirmelisiniz!). Yönlendiricinizin mimarisi için İndrme sayfasının ilave dosyalar kısmında, İmaj Dosyaları kısmının aşağısında “sha256sums” dosyasına bir bağlantı bulacaksınız:
  3. DOWNLOAD_LINK="http://BELLENIMBINURLİ"; SHA256SUMS="http://SHA256URLİ"
  4. Bellenim doğrulama toplamını indirip şununla doğrulayın:
    cd /tmp;wget $DOWNLOAD_LINK;wget $SHA256SUMS;sha256sum -c sha256sums 2>/dev/null|grep OK
  5. Ekran çıktısında, doğru doğrulama-toplamı onayını arayın:
    DOSYA_ADI: OK
  6. Doğrulama-toplamı onayı uyuşmuyorsa devam etmeyin

Sorun giderme:

  • Eğer 'wget' kullanamıyorsanız (örneğin: bellenimi OpenWrt'ye PC'nizden aktarmak istiyorsanız)
    • scp kullanabilirsiniz: scp openwrt-ar71xx-tl-wr1043nd-v1-squashfs-sysupgrade.bin root@192.168.1.1:/tmp (Doğru-düzgün scp kullanmak için cihazınızın root hesabı için boş olmayan bir parola ayarlamış olduğunuzdan emin olurn.)
    • ssh kullanabilirsiniz: ssh root@192.168.1.1 “cat > /tmp/openwrt-ar71xx-tl-wr1043nd-v1-squashfs-sysupgrade.bin” < openwrt-ar71xx-tl-wr1043nd-v1-squashfs-sysupgrade.bin (Ayrıca cihazınız root hesabı için boş olmayan bir parola belirlediğinizden emin olun.)
    • ayrıca nc/netcat kullanabilirsiniz:
      1. Gnu/Linux bilgisayarınızda şunu çalıştırın: cat [belirtilmiş bellenim].bin | pv -b | nc -l -p 3333
      2. OpenWrt cihazınızda şunu çalıştırın (Gnu/Linux bilgisayarınızın IP adresınin 192.168.1.111 olduğu varsayılarak): nc 192.168.1.111 3333 > /tmp/[belirtilen bellenim].bin
  • Eğer doğrulama-toplamı uyuşmuyorsa: Bellenim indirmeyi tekrar yapın, eğer uyuşma süruyorsa yardım isteyin"Installing and Using OpenWrt" Forum
  • Eğer RAM az ise görülecek: CLI - Yetersiz Ram Çözümleri.

OpenWrt bellinim yükseltme muamelesi için sysupgrade tesisatını sağlar.

Bellenim imajı kontrol-özetini doğrula Yönlendiricinin yeterli serbest RAM'i olduğunu doğrula. Yerel kişisel-bilgisayardan bellenimi upload et. Bellenimi çak.

# Serbest RAM kontrolü
free
 
# Bellenim upload
scp bellenim_imgesi.bin root@openwrt.lan:/tmp
 
# Bellenimi çak
sysupgrade -v /tmp/bellenim_imgesi.bin

Eğer sysupgrade mevcut değil ise.

# Bellenimi çak
mtd -r write /tmp/bellenim_imgesi.bin bellenim
  • sysupgrade verbose seçeneği şuna benzer bir çıktı vermeli. Kurtarılan yapılandırma dosyaları listesi ne paketler yüklendiğine ve hangi dosyaların kurtarılmak üzere yapılandırıldığına göre değişir.
Saving config files...
etc/config/dhcp
etc/config/dropbear
etc/config/firewall
etc/config/luci
etc/config/network
etc/config/snmpd
etc/config/system
etc/config/ubootenv
etc/config/ucitrack
etc/config/uhttpd
etc/config/wireless
etc/dropbear/authorized_keys
etc/dropbear/dropbear_dss_host_key
etc/dropbear/dropbear_rsa_host_key
etc/firewall.user
etc/group
etc/hosts
etc/inittab
etc/passwd
etc/profile
etc/rc.local
etc/shadow
etc/shells
etc/sudoers
etc/sudoers.d/custom
etc/sysctl.conf
etc/sysupgrade.conf
killall: watchdog: no process killed
Sending TERM to remaining processes ... ubusd askfirst logd logread netifd odhcpd snmpd uhttpd ntpd dnsmasq
Sending KILL to remaining processes ... askfirst
Switching to ramdisk...
Performing system upgrade...
Unlocking firmware ...

Writing from <stdin> to firmware ...  [w]
Appending jffs2 data from /tmp/sysupgrade.tgz to firmware...TRX header not found
Error fixing up TRX header
Upgrade completed
Rebooting system...

Not: “TRX header not found” ve “Error fixing up TRX header” hataları OpenWrt geliştiricisi jow'un https://dev.openwrt.org/ticket/8623 bildirisine göre sorun değiller.

  • Yönlendirici yeniden hatta dönene kadar bekle.
  • Kendiliğinden yeniden başlatma sonrası, sistem önceki aynı yapılandırma ayarlarıyla kendisine gelmeli: aynı IP adresi, aynı SSH parolası, vesaire.
  • Aşağıdaki “OpenWrt yükseltme sonrası ek yapılandırma” kısmına devam et.

Sorun giderme

Eğer yararı olmazsa, cold reset (= cihazın electirik akımı beslemesini kes, birkaç saniye bekle ve yeniden bağla). /etc/opkg.conf ile ilgili here açıklandığı üzere hassas ol. Bilinmeyen nedenlerden sysupgrade sonrası cold reset gerekliliği sıklıkla bildirilmiştir. Eğer bunu uzaktan icra ettiyseniz bu çok çok kötü.

  1. Bellenim dosyası şimdi /tmp içinde, öyleyse çakma sürecine başlayabilirsiniz
  2. Eğer uzaktan yükseltiyorsanız, tercihen cihazın konumunda bir yardımcı bulundurun (bazı cihazlar yükseltmeden sonra fiziksel sıfırlama gerektirdiğinden)
  3. Yükseltme için şu komutu icra edin:
    sysupgrade -v /tmp/*.bin
  4. Eski yapılandırma dosyalarını saklamak istemiyor ve cihazı temiz durumdan yapıandırmak istiyorsanız `-n` seçimini ekleyebilirsiniz (network/system ayarları da yitirilecekler)
  5. Yeni bellenim çakılırken, şuna benzer bir çıktı gösterilecek:
    Saving config files...
    etc/config/dhcp
    ...
    etc/config/wireless
    etc/dropbear/authorized_keys
    ...
    etc/sysupgrade.conf
    killall: watchdog: no process killed
    Sending TERM to remaining processes ... ubusd askfirst logd logread netifd odhcpd snmpd uhttpd ntpd dnsmasq
    Sending KILL to remaining processes ... askfirst
    Switching to ramdisk...
    Performing system upgrade...
    Unlocking firmware ...
    Writing from <stdin> to firmware ...  [w]
    Appending jffs2 data from /tmp/sysupgrade.tgz to firmware...TRX header not found
    Error fixing up TRX header
    Upgrade completed
    Rebooting system...
  6. “TRX header not found” ve “Error fixing up TRX header” hatalarını yoksayın. bu hatalar https://dev.openwrt.org/ticket/8623'a göre alâkasızlar
  7. Router çevrimiçine dönene kadar bekleyin. Sistem aynı yapılandırma ayarlarıyla (aynı ağ IP adresi, aynı SSH parolasi, vs.) başlamalı

Sorun giderme:

  • kendiliğinden yeniden başlamıyor veya tepkisiz kalıyor: 5 dakika bekleyin, sonra fiziksel sıfırlama yapın: Kapatın, 2-3 saniye bekleyin ve açın (veya fişini çekip takın).
    :!: Bunu cihaz güncellerken yapmak cihazı yazılımsal takoz edebilir ve kurtarmak için seri veya hatta jtag bağlantısı gerektirebilirdi. Böyle bir soğuk yeniden başlatmanın uçbirimden sysupgrade sonrasi gerekliliği bildirilmiştir.
  • OPKG meseleleri: eğer çakma sonrası paket yükleme meseleleriniz veya opkg.conf'un geçersiz verisi varsa, okuyun: https://dev.openwrt.org/ticket/13309
  • 'sysupgrade' kullanılabilir değil OpenWrt cihazınizda, bellenimi çakmak için yerine 'mtd' kullanabilirsiniz: mtd -r write /tmp/openwrt-ar71xx-generic-wzr-hp-ag300h-squashfs-sysupgrade.bin firmware
  • Yeni işletim sistemi versiyonunu onaylayın: Bellenimin hakikaten yükseltildiğini görmenin daha basit yolu. SSH'ta giriş manşeti, versiyon gibi sürüm bilgilerini belirtir.
  • eğer extroot kullandıysanız, onu restore etmek için this howto'e bakın
  • Yükseltilebilir paketler için kontrol yapın Opkg Package Manager. Bellenim yükseltmesinden sonra, temel işletim sistemi bellenim imajı derlendikten sonra daha güncel paketlerin sürülmüşlüğünü kontrol etmek iyidir.
  • Kullanıcı-yüklemesi paketleri yeniden kurmak. Başarılı bir yükseltme sonrası, notlarınıza göre önceki yüklü paketlerin tümünü yeniden yüklemeye ihtiyacınız olacak. Paket yapılandırma dosyaları yukarıdaki adımlara göre muhafaza edilmiş olmalılar, ama paketlerin kendileri değil. Eğer forumdaki betikleri kullandıysanız bu adım gerekli olmayabilir.

Paketleri körleme yükseltmek (el veya betik ile) sizi her türlü belaya sürükleyebilir.

Bir paketin sadece yükseltilmiş bir sürümü var diye onun yüklenmesi gerektiği veya uygun işleyeceği anlamına gelmez. Herhangi bir yükseltme yapmadan önce yükseltmenin güvenli olup olmadığını tespit etmek için kendinizi bilgilendirin.Avoid upgrading core packages.


OpenWrt'de paketleri yönetmenin/yüklemenin iki yolu var: LuCI web arayüzü Yazılım menüsü (Sistem > Yazılım), ve komut satırı arayüzü(KSA). İki yöntem de aynı KSA opkg çalıştırılabilir kodlarını çağırır, ve OpenWrt 19.07.0 itibarı ile, LuCI arayüzünün yükseltilebilir paketleri listeleyen bir 'Güncelleştirmeler' sekmesi vardır. LuCI Yükselt… düğmesi, bu sayfanın konusu olan aynı opkg upgrade komutunu icra eder. Paketleri yükseltmekte, LuCI ve KSA için aynı uyarılar geçerlidir.


Genel anlamda, opkg upgrade kullanımı asla önerilmez. Hemen her koşulda ondan sakınılmalıdır. Özel olarak, toptan yükseltmenin büyük sorunlara yol açması çok olasıdır, ama yine de tekil paketlerin yükseltilmesi de sorunlara neden olabilir. Aynı zamanda bunun OpenWrt sürümlerini (ana sürümler gibi bakım sürümleri de) yükseltmek için sysupgrade yolundan farklı olduğunu vurgulamak da önemlidir. opkg upgrade OpenWrt sürümünü yükseltmez. Sadece sysupgrade bunu yapabilir. Bu ikisi eşdeğer değildir.

Büyük Linux dağıtımlarında farklı olarak, OpenWrt sınırlı kaynaklı sistemlerde çalışması için en iyi duruma getirilmiştir. Bu dahili ABI (Application Binary Interface) uyumluluği ve çekirdek sürümü bağlılığı doğrulamaysı içermeyen opkg paket yöneticisini kapsar. Her ne kadar bazan hiç sorun olmasa da, garantisi yok ve yüseltme küçüğünden büyüğüne çeşitli uyumsuzluklarla sonuçlanabilir, ve sorun çözme çok zor olabilir. Ek olarak, opkg upgrade süreci çakarbellek boşluğu tüketir. Aslı (yerleşik ROM) üzerine yazmadığı (ve yazamayacağı) için, yükseltilmiş paketleri r/w katmanında depolaması gerekir.

Çoğu durumda, kayda değer önem/risk taşıyan güvenlik yamaları, sysupgrade sistemiyle kullanılmak üzere resmi kararlı bakım sürümünde, hızla yayınlanır. Güncelliği korumak için önerilen yöntem budur.

Son seviyede olmayı isteyenler enstantane sürümlerini kullanmayı değerlendirmeliler, ama kararlı ve enstantane sürümleri arasındaki farklılıkların bilincinde olmalılar. Veya, alternatif olarak, istenen güncellenmiş paketleri kapsayan özel bir imaj oluşturmalılar. Hâlâ opkg upgrade kullanmak isteyen kalan kullanıcılar bunu seçilmiş tekil paketler için yapmalılar (toptan güncelleme ve kör güncelleme!) ve çözmek için varsayılanlara tam sıfırlamayı zorunlu kılabilecek sorunların ortaya çıkabileceğinin farkında olmalılar.

Halihazırda sorunlarınız varsa veya yükseltilmiş paketleri geri çevirmek istiyorsanız: bir yedek oluşturun (seçmeli; sıfırlama tamamlandıktan sonra geri yüklenebilir) ve varsayılanlara sıfırlamayı icra edin (firstboot).

Eğer paketleri, özellikle de bir betik ile yükseltmeyi seçerseniz, uyarıldınız. Forumda çikayet etmeyin, ve sonuçlarla kendiniz başa çıkmaya, sorun giermeye, ve çözümlemeye hazır olun.

Yeni paket yüklemeleri yeni, varsayılan paket yapılandırma dosyaları yüklemiş olacaklar. Varolan yapılandırma dosyalarınız hali halihazırda yerlerinde olacaklarından, opkg bununla ilgili bir uyarı göstermiş ve yeni yapılandırmayı *-opkg dosya adlarıyla kaydetmiş olmalı.

Paketçe sağlanan yeni yapılandırma dosyaları önceki özelleştirilmiş olanlarla karşılaştırılıp olası yeni seçenek ve sözdizimi değişiklikleri birleştirilmeli. diff aleti buna yardımcı olur

El ile yapılandırma ''diff''i

# diffutils yükle
opkg install diffutils
 
# tüm -opkg dosyalarını bul
find /etc -name *-opkg
 
# güncel özelleştirilmiş /etc/config/snmpd karşı yeni /etc/config/snmpd-opkg
diff /etc/config/snmpd /etc/config/snmpd-opkg
 
# yeni değişiklikleri etkin yapı dosyasına el ile ekle / birleştir
vi /etc/config/snmpd
 
# VEYA bakıcı tarafından sağlanan yeni versiyornu kullanabilir ve eski yapı dosyasının üstüne yazabilirsin
mv /etc/config/snmpd-opkg /etc/config/snmpd
 
# yapılandırma dosyası bakıcı sürümünü kaldır
rm /etc/config/snmpd-opkg
 
# Bazı kullanıcı-yüklemesi paketlerin entinleştirilmeye ve başlatılmaya ihtiyaçları var, örneğin snmpd başlatmak:
/etc/init.d/snmpd enable && /etc/init.d/snmpd start
 
# isteğe bağlı: El ile yeniden başlatma beklenen tüm işlevselliğin önceki gibi çalıştığından emin olmak için iyi bir fikir
reboot

Opkg/UCI ekleri diff

:!: Takip eden özellikleri kullanabilmek için Opkg ekleri ve UCI ekleri kur.

# Paketleri yükle
opkg update
opkg install diffutils
 
# Yeni yapılandırmaları bul
opkg newconf
 
# UCI yapılandırmalarını karşılaştır
uci diff snmpd
 
# Gerekli değişiklikleri güncel sürüme birleştir
vi /etc/config/snmpd
rm /etc/config/snmpd-opkg
 
# Veya güncel sürümü yeni olanla değiştir
mv /etc/config/snmpd-opkg /etc/config/snmpd
 
# Yeni yapılandırmayı uygula
/etc/init.d/snmpd restart

Eğer cihazının /tmp dosyasistemi OpenWrt yükseltme imgesini barındırmak için yeterince geniş değil ise, bu kısım geçici olarak RAM serbestleştirmek için ipuçları sağlar.

İlkin hafıza kullanımını free veya top veya cat /proc/meminfo komutlarıyla kontrol et; eğer imge boyutu ve biraz ek MiB kadar serbest hafıza varsa devam et.

# free
             total         used         free       shared      buffers
Mem:         29540        18124        **11416**         0         1248
-/+ buffers:              16876        12664
Swap:            0            0            0

Bu örnekte tam olarak 11416 KiB kullanılmayan RAM var. Gerikalan tüm 32768 - 11416 = 21352 KiB bir şekilde kullanımda ve bunun bir kısmı kernel tarafından kullanılabilir kılınabilir ve gerekirse yapılır, buradaki sorun bunun tam olarak ne kadar olduğunu bilmiyor olmamız. yeterince kullanılabilir olduğundan emin ol. Aynı zamanda /tmp'deki boş alan serbest hafızadan sayılır. Bundan dolayı:

# free
Mem:         13388        12636          752            0         1292
Swap:            0            0            0
Total:       13388        12636          752
 
# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/root                 2304      2304         0 100% /rom
tmpfs                     6696        60      6636   1% /tmp
tmpfs                      512         0       512   0% /dev
/dev/mtdblock3             576       288       288  50% /overlay
mini_fo:/overlay          2304      2304         0 100% /

Birinin tam olarak 752+6636 KiB kullanılabilir serbest hafızası var.

  • Biraz RAM boşaltmanın en hızlı ve güvenli yolu, paket listelerini silmektir:
rm -r /tmp/opkg-lists/
  • cache'leri at:
sync && echo 3 > /proc/sys/vm/drop_caches
  • sonraki başlatmada kablosuz sürücülerinin yüklenmesini engeleeme ve yeniden başlatma:
rm /etc/modules.d/*80211*
rm /etc/modules.d/*ath9k*
rm /etc/modules.d/b43*
reboot

Kablosuz sürüculer genellikle bir miktar RAM tutar ve kablo ile bağlıysanız gerekli değillerdir. RAM boşaltmak için ilgili sembolik bağlantıları etc/modules.d'den silebilir ve yeniden başlatabilirsin.

Hala /tmp'de yer yok mu?

Sadece diğer yöntemlerle yeterli RAM serbestleştiremediysen netcat kullan. Süreç boyunca herhangi bir şebeke meselesi cihazını takoz edebilir.

ssh kullanarak çak

# Linux PC
cat firmware_image.bin | ssh root@openwrt.lan mtd write - firmware

netcat kullanarak çak

# Linux PC
nc -q 0 192.168.1.1 1234 < openwrt-ar71xx-tl-wr1043nd-v1-squashfs-sysupgrade.bin
 
# OpenWrt
nc -l -p 1234 | mtd write - firmware
This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2022/04/24 18:01
  • by sorcun