Çözüldü OpenWrt düzenlenen Firmware nasıl kalıcı yapılır?

  • Konuyu başlatan Konuyu başlatan Majdev
  • Başlangıç Tarihi Başlangıç Tarihi
  • Mesaj Mesaj 3
  • Görüntüleme Görüntüleme 196
Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Majdev

Uzman
Katılım
26 Aralık 2023
Mesajlar
265
Makaleler
2
Çözümler
9
Beğeniler
205
Merhaba,

Huawei MA5671A SFP cihazı üzerinde mevcut firmware’e bazı düzenlemeler yaptım, dosya değişiklikleri gerçekleştirdim ve üzerinde oynama sağladım.
Güncel imajı sorunsuz şekilde aşağıdaki komutla alabiliyorum:
Kod:
cat /dev/mtd2 > /tmp/mtd2.bin

Ancak OpenWrt arayüzü üzerinden fabrika ayarlarına sıfırlama yaptığımda, cihaz /rom dizinindeki orijinal, düzenlenmemiş firmware sürümünü geri yüklüyor.
Ne yazık ki /rom dizini sadece okunabilir olduğundan, bu dizin üzerinde herhangi bir düzenleme yapamıyorum.
Linux konusunda deneyimli kişilerin bu konuda yardımcı olmasını rica ediyorum. Her türlü öneriye açığım.
Kod:
root@HUAWEI:~# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00040000 00010000 "uboot"
mtd1: 00080000 00010000 "uboot_env"
mtd2: 00740000 00010000 "image0"
mtd3: 00800000 00010000 "linux"
mtd4: 006d8077 00010000 "rootfs"
mtd5: 003f0000 00010000 "rootfs_data"
 
Çözüm
ROM'u mtd2'den oluşturuyorsa direk güncellemeyi dener misin?

Kod:
mtd write /tmp/mtd2.bin image0
Maalesef yine sıfırlayınca eski haline dönüyor.

Firmware İmaj Düzenleme ve Yeniden Paketleme Rehberi

Açıklama:
Bu rehber, cihazın firmware imajından squashfs dosya sistemini çıkartıp düzenleyerek yeniden imaj haline getirme işlemini adım adım açıklamaktadır.




1. Mevcut İmajın Alınması

Cihaz üzerinden mtd2 bölümünün imajını almak için aşağıdaki komut kullanılır:

Kod:
cat /dev/mtd2 > /tmp/mtd2.bin

Oluşan mtd2.bin dosyası harici bir Linux tabanlı işletim sistemine aktarılır.




2. İmaj İçeriğinin İncelenmesi

İmaj içerisindeki bölümleri kontrol etmek için aşağıdaki komut kullanılır:

Kod:
binwalk mtd2.bin

Örnek Çıktı:

Kod:
DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             uImage header (Linux kernel imajı)
64            0x40            LZMA sıkıştırmalı kernel verisi
1212297       0x127F89        Squashfs filesystem (xz sıkıştırmalı)
4259840       0x410000        JFFS2 filesystem




3. Squashfs Bölümünün Çıkartılması

Squashfs bölümünü çıkartmak için:

Kod:
dd if=mtd2.bin of=squashfs.img bs=1 skip=1212297 count=3001168




4. Squashfs Dosya Sisteminin Açılması ve Düzenlenmesi

Çıkartılan squashfs imajını açmak için:

Kod:
unsquashfs squashfs.img

Açılan squashfs-root/ klasörü içerisinde gerekli düzenlemeler yapılır.




5. Düzenlenen Dosya Sisteminin Yeniden Paketlenmesi

Düzenlenen squashfs-root klasörünü yeniden imaj haline getirmek için:

Kod:
mksquashfs squashfs-root/ new_squashfs.img -comp xz -noappend -b 262144

Not:
Eğer yeni oluşturulan squashfs imajının byte uzunluğu, orijinal squashfs imajı ile aynı değilse, dd komutu ile ekleme yapılması gereklidir.




6. Düzenlenen Squashfs İmajının mtd2.bin İçerisine Yazılması

Yeni squashfs imajını orijinal mtd2.bin dosyasına yazmak için:

Kod:
dd if=squashfs.img of=mtd2.bin bs=1 seek=1212297 conv=notrunc




7. Yeni İmajın Cihaza Yazılması

Düzenlenen imaj, OpenWRT arayüzü üzerinden cihaza yüklenir ve cihaz fabrika ayarlarına sıfırlanır.




8. Son Kontrol

Cihaz yeniden başladıktan sonra, yapılan değişikliklerin kalıcı olup olmadığını kontrol etmek için:

Kod:
cat /dev/mtd2 > /tmp/mtd2.bin

Alınan bu yeni imaj, düzenlenmiş ve kalıcı hale gelmiş doğru imaj olacaktır.


Merhaba,

Huawei MA5671A SFP cihazı üzerinde mevcut Firmware'e bazı düzenlemeler yaptım, dosya değişiklikleri gerçekleştirdim ve üzerinde oynama sağladım.
Güncel imajı sorunsuz şekilde aşağıdaki komutla alabiliyorum:
Kod:
cat /dev/mtd2 > /tmp/mtd2.bin

Ancak OpenWrt arayüzü üzerinden fabrika ayarlarına sıfırlama yaptığımda, cihaz /rom dizinindeki orijinal, düzenlenmemiş Firmware sürümünü geri yüklüyor.
Ne yazık ki /rom dizini sadece okunabilir olduğundan, bu dizin üzerinde herhangi bir düzenleme yapamıyorum.
Linux konusunda deneyimli kişilerin bu konuda yardımcı olmasını rica ediyorum. Her türlü öneriye açığım.
Kod:
root@HUAWEI:~# cat /proc/mtd
dev: size erasesize name
mtd0: 00040000 00010000 "uboot"
mtd1: 00080000 00010000 "uboot_env"
mtd2: 00740000 00010000 "image0"
mtd3: 00800000 00010000 "linux"
mtd4: 006d8077 00010000 "rootfs"
mtd5: 003f0000 00010000 "rootfs_data"

ROM'u mtd2'den oluşturuyorsa direk güncellemeyi dener misin?

Kod:
mtd write /tmp/mtd2.bin image0
 
ROM'u mtd2'den oluşturuyorsa direk güncellemeyi dener misin?

Kod:
mtd write /tmp/mtd2.bin image0
Maalesef yine sıfırlayınca eski haline dönüyor.

Firmware İmaj Düzenleme ve Yeniden Paketleme Rehberi

Açıklama:
Bu rehber, cihazın firmware imajından squashfs dosya sistemini çıkartıp düzenleyerek yeniden imaj haline getirme işlemini adım adım açıklamaktadır.




1. Mevcut İmajın Alınması

Cihaz üzerinden mtd2 bölümünün imajını almak için aşağıdaki komut kullanılır:

Kod:
cat /dev/mtd2 > /tmp/mtd2.bin

Oluşan mtd2.bin dosyası harici bir Linux tabanlı işletim sistemine aktarılır.




2. İmaj İçeriğinin İncelenmesi

İmaj içerisindeki bölümleri kontrol etmek için aşağıdaki komut kullanılır:

Kod:
binwalk mtd2.bin

Örnek Çıktı:

Kod:
DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             uImage header (Linux kernel imajı)
64            0x40            LZMA sıkıştırmalı kernel verisi
1212297       0x127F89        Squashfs filesystem (xz sıkıştırmalı)
4259840       0x410000        JFFS2 filesystem




3. Squashfs Bölümünün Çıkartılması

Squashfs bölümünü çıkartmak için:

Kod:
dd if=mtd2.bin of=squashfs.img bs=1 skip=1212297 count=3001168




4. Squashfs Dosya Sisteminin Açılması ve Düzenlenmesi

Çıkartılan squashfs imajını açmak için:

Kod:
unsquashfs squashfs.img

Açılan squashfs-root/ klasörü içerisinde gerekli düzenlemeler yapılır.




5. Düzenlenen Dosya Sisteminin Yeniden Paketlenmesi

Düzenlenen squashfs-root klasörünü yeniden imaj haline getirmek için:

Kod:
mksquashfs squashfs-root/ new_squashfs.img -comp xz -noappend -b 262144

Not:
Eğer yeni oluşturulan squashfs imajının byte uzunluğu, orijinal squashfs imajı ile aynı değilse, dd komutu ile ekleme yapılması gereklidir.




6. Düzenlenen Squashfs İmajının mtd2.bin İçerisine Yazılması

Yeni squashfs imajını orijinal mtd2.bin dosyasına yazmak için:

Kod:
dd if=squashfs.img of=mtd2.bin bs=1 seek=1212297 conv=notrunc




7. Yeni İmajın Cihaza Yazılması

Düzenlenen imaj, OpenWRT arayüzü üzerinden cihaza yüklenir ve cihaz fabrika ayarlarına sıfırlanır.




8. Son Kontrol

Cihaz yeniden başladıktan sonra, yapılan değişikliklerin kalıcı olup olmadığını kontrol etmek için:

Kod:
cat /dev/mtd2 > /tmp/mtd2.bin

Alınan bu yeni imaj, düzenlenmiş ve kalıcı hale gelmiş doğru imaj olacaktır.


 
Son düzenleyen: Moderatör:
Çözüm

Yeni konular

Geri
Yukarı Alt