Rasberry Pi’ın Firmware’ini Elle Güncellemek

Raspberry Pi’ın sistem çipi olan SoC (örn., BCM28xx), Broadcom firması tarafından üretilmiştir ve içerisinde genel olarak CPU, GPU, GPU, GPIO port ve arabirimlerini barındırır. Raspberry Pi’a enerji verildiğinde GPU içinde bootloader adı verilen ufak bir program parçası çalışarak bu donanım bileşenlerini gerektiği şekilde etkinleştir ve açılışın devam etmesini sağlar. Bootloader’ın yani açılış ön yükleyicisinin ilk parçası sistem çipinin (GPU) içindedir ve açılış sürecini daha büyük ve yetenekli ikinci aşama program olan firmware adındaki diğer Bootloader yazılıma devreder. Raspberry Pi’ın açılış süreciyle ilgili detaylı bilgiyi kitabın “Raspberry Pi 3’ün Açılış (Boot) Süreci” başlığında bulabilirsiniz.

Broadcom firması zaman zaman sistem çipi ile ilgili yaptığı firmware düzeltmelerini ve iyileştirmelerini yayınlar ve Raspberry Pi Vakfı da bunu mevcut dağıtımına entegre eder. Raspberry Pi’ın omurgası olan SoC çipini üreten Broadcom firması bootloader’ının kodlarını açmamaktadır. Kaynak kodlar paylaşılmadığından, açılış sürecinin ilk 2 aşması kapalı olarak yürür. Güncel bir firmware’e sahip olmak başarım açısından önemlidir. Zira firmware Linux çekirdeğini başlatır ve gerektiğinde donanım işlevlerini en etkin şekilde kullanması için bir arayüz yaratır. Güncel bir firmware’e sahip olmanın diğer avantajlarını kitabın “Raspberry Pi’ın EEPROM’unu güncelleştirmek” başlıklı konusundan okuyabilirsiniz.

Bootloader’ın ya da firmware’in güncellenmesi Raspberry Pi 4’den itibaren değişmiştir. Bu nedenle buradan sonra iki farklı başlık altında ele alınacaktır.

Not: Firmware’den kaynaklı açılış sorunlarını yorumlamak için kitabın “Açılış Sorunları ve Aktivite LED’inin söyledikleri” başlığına göz gezdirebilirsiniz.

Raspberry Pi 3 ve öncesini güncellemek

Bu başlıkta tarif edilen güncelleme işlemi sadece Raspberry Pi 3 ve daha eski modeller içindir. Raspberry Pi 3 ve öncesi bilgisayarların firmware yazılımı, boot (disk bölümü) bölümünde yer alan bootcode.bin adlı dosyada saklanmaktadır. Firmware normal şartlarda kullanmakta olduğunuz dağıtımı güncellediğiniz sırada (dist-upgrade) zaten güncellenir. Bazen dağıtımınızı üst bir dağıtıma yükseltmek gerektiğinde (örn., Raspberry Pi OS Stretch’i Buster’a yükseltmek gibi) veya Raspberry Pi’ın açılışını engelleyen firmware kaynaklı sorunları çözmek gerektiğinde elle (manual) güncelleme (firmware) gerekli olabilir.

Burada anlatılacak olan elle güncelleme yöntemi hâlihazırda kullanmakta olduğunuz dağıtımın ana deposundan değil, henüz geliştirmesi devam eden ve sadece Raspberry Pi OS geliştiricilerinin kullanımına hizmet eden ayrı bir depodan çekilir. Güncellemeyi gerçekleştiren rpi-update aracı Raspberry Pi OS geliştiricilerinin kullanmakta olduğu özel bir araçtır (script) ve sistemi açılmaz duruma getirebileceğinden yukarıda bahsedilen özel durumlar haricinde kullanılmaması önerilir. Firmware zaten dağıtımı güncellediğiniz de güncellenmektedir.

Broadcom firmasının sunmuş olduğu firmware’i ve Linux çekirdeğini güncelleyecek araç olan rpi-update, Raspbian’ın standart bir aracı değildir ve haricen yüklenmesi gerekebilir (eski Raspberry Pi OS sürümlerde varsayılan olarak yüklü değildir):

rpi-update aracı güvenlik için veriyi kendi özel deposundan SSL (güvenli bağlantı) kullanarak çeker; bu nedenle Raspberry Pi ‘ınızın sertifikalarının da güncel ve geçerli olması gerekir. Bu araç CA sertifikalarınızı doğrulayamaz ise aşağıdaki komutlar sertifikaları yükleyebilir ve ardından güncellenmesini sağlayabilirsiniz[1].

GPU firmware’ini güncellemeden önce mevcut firmware sürümünü görmek için şu komutu verin:

vcgencmd (VideoCore General Command) aracı sistem çipinin (SoC) içinde yüklü bellenim (firmware) programı ile iletişim kurarak sistem çipinin seçeneklerini görüntülemek ve değiştirmek için kullanılan bir araçtır. Aracın yukarıdaki çıktısında, mevcut sistem çipi yazılımının 15 Mart 2018 tarihli olduğu ve sürüm numarası gözüküyor.

GPU firmware’ini güncellemek için ise şu komutu verebilirsiniz:

rpi-update aracı firmware’i ve Linux çekirdeğini güncelledikten sonra değişikliğin geçerli olması için yeniden başlatmanızı önerecek. Raspberry Pi bilgisayarını şu komutla yeniden başlatabilirsiniz:

İyi haber: Kitabı yazdığım sıralarda Broadcom firması Raspberry Pi’ın üçüncü sürümünden itibaren kullanılan BCM2837 sistem çipi yazılımının kodlarını açtığını duyurmuştu.

Raspberry Pi 4 ve sonrasını güncellemek

Raspberry Pi 4’ün firmware’ini güncellemek model 3 ve öncesinin aksine uygulanması tavsiye edilen bir işlemdir; çünkü Raspberry Pi’ın başarımını arttırarak yeni özellikler kazandırır[2]. Model 3’de firmware /boot/bootcode.bin dosyasında saklanmakta ve SoC tarafından buradan okunarak başlatılmaktaydı. Model 4’de bu durum değişti ve bu dosyanın içeriği SoC’a SPI arabiriminden bağlı 512KB’lık bir EEPROM’a yerleştirildi. Yeterince büyük olan bu EEPROM’un içinde hem bootloader hem de USB kontrolörünün programı yer alır.

EEPROM’u güncellemek için kullanılacak araçlar Raspberry Pi OS deposunda rpi-eeprom adlı pakette toplanmıştır. Kullanmakta olduğunuz dağıtımda bu paket kurulu ise arka planda güncelleştirmeleri otomatik takip eden ve yükleyen bir SystemD servisinin de hâlihazırda etkin olması gerekir. Servisin varlığını aşağıdaki gibi kontrol edebilirsiniz.

Eğer servis mevcut değilse aşağıdaki komutları uygulayarak yüklemeniz tavsiye edilir.

Servisin etkin olup olmadığını kontrol ettikten sonra normal şartlarda başka bir işlem yapmanıza gerek yoktur. Servis düzenli olarak Raspberry Pi OS deposunu kontrol edecek ve güncelleme varsa otomatik olarak yükleyecektir. Eğer güncellemeyi istediğiniz bir anda elle başlatmak isterseniz rpi-eeprom-update komutunu vererek başlatabilirsiniz.

rpi-eeprom-update komutu, yüklü bootloader’ın ve VL805 firmware’inin sürüm numaralarını ve güncelleme gerekip gerekmediğini ekrana basar, güncelleme gerekiyorsa güncellemenin tamamlanması için yeniden başlatmayı önerir.

Esasında güncelleştirme işlemi bir sonraki açılış sırasında gerçekleştirilmek üzere hazırlanır. Güncelleme mekanizması şöyle çalışır;

  1. Gerekli recovery.bin ve firmware dosyaları (pieeprom.upd  ile vl805.bin) internetten indirilir ve boot bölümüne kaydedilir. recovery.bin dosyası güncelleme işlemini yapacak ve SoC tarafından açılışta çalıştırılacak olan program dosyasıdır. pieeprom.upd ise ikinci aşama açılış ön yükleyicisinin, vl805.bin ise VIA VL805 USB 3.0 kontrolörünün firmware’ini barındırır[3]. İndirilen bu dosyaların içeriklerini doğrulamak için içerisinde SHA256 hash kodları yer alan  pieeprom.sig ve vl805.sig dosyaları da indirilir. Hash dosyaları EEPROM’un bozulmuş bir firmware ile programlanmasını önlemek için bir önlemdir.
  2. Raspberry Pi yeniden başladığında SoC içindeki ROM’da gömülü birinci aşama açılış ön yükleyicisi recovery.bin’i çalıştırır ve güncelleme işlemini başlatır. Eğer güncelleme başarılı olursa dosya ismini recovery.000 olarak değiştirir ve sistemi yeniden başlatır. Böylece sonraki yeniden başlatmalarda recovery.bin’in tekrar çalışması engellenmiş olur.

[1] Firmware’in güncellenmesi – http://goo.gl/7yklYN

[2] Rpi-update ve EEPROM firmware sürüm notları – http://tiny.cc/rpi-update

[3] Via Labs VL805 USB 3.0 Controller Datasheet – http://tiny.cc/vl805

Yazar: Özgür Koca

Yazar - Tankado.com

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.