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
Yedekleme
Takip edin: backup_restore
Varolan yapılandırma dosyalarını saklamak istemiyorsanız bu kısmı atlayabilirsiniz.
OpenWrt bellenim yükseltme imajını indirme ve doğrulama
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:
- 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. - 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:
DOWNLOAD_LINK="http://BELLENIMBINURLİ"; SHA256SUMS="http://SHA256URLİ"
- 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
- Ekran çıktısında, doğru doğrulama-toplamı onayını arayın:
DOSYA_ADI: OK
- 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:
- Gnu/Linux bilgisayarınızda şunu çalıştırın:
cat [belirtilmiş bellenim].bin | pv -b | nc -l -p 3333
- 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.
Komut-satırı yönergeleri
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ü.
OpenWrt bellenimi çak
- Bellenim dosyası şimdi /tmp içinde, öyleyse çakma sürecine başlayabilirsiniz
- 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)
- Yükseltme için şu komutu icra edin:
sysupgrade -v /tmp/*.bin
- 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)
- 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...
- “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
- 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
Yükseltme-sonrası adımlar
- 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.
Yeni paket yapı seçeneklerinin karşılaştırmak
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
Hafıza yetersizliği çözümleri: /tmp indirilen dosya için çok küçük
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