Sürüm: 1.0.2
Son güncelleme: 12.03.2025
Özet
Bu doküman, tedarikçilerin gelecekteki projeler için fwupd'yi nasıl uygulayabileceğine dair bir açıklama niteliğindedir. Ayrıca, LVFS yöneticilerinden doğrudan alıntılanan analizler de yer alır. Fwupd, harici tedarikçi firmalarla iş ortaklığı yaparak donanım yazılımı güncellemelerini gerçekleştirme şeklimizi merkezileştirmeye yardımcı olabilecek açık kaynak bir donanım yazılımı güncelleme çerçevesidir.
İlk Adım: Bilgi Toplayın ve Rehberlik Sağlayın
Tedarikçi firmalar için ilk olarak şunları sorun:
Güncelleme yapılabilir bileşenlerle ilgili sorular
Güncelleme boyutu
Güncelleme zamanı
Mevcut güncelleme türü (A/B veya önyükleyici/çalışma zamanı modeli)
Güncelleme sırasında bileşenin işlevselliği ne olur?
Başarılı bir güncellemeyi kullanmaya başlamak için sistemde ne yapılması gerekir?
Birden fazla bileşenin belirli bir sırayla mı yüklenmesi gerekiyor?
LVFS/fwupd ile çalışma konusunda bilgi sahibi olma
Eklentinin uygulanmasına yardımcı olmak için mühendislik kaynağını taahhüt etme (daha fazla bilgi için aşağıya bakın)
Eklentiyi LGPLv2+ (bileşene donanım yazılımını yazan kod) olarak açık kaynak haline getirme ve donanım yazılımının LVFS tarafından yeniden dağıtılmasına izin verme taahhüdü
Tedarikçi firmalar için ilk yönergeler:
Güncelleme, çevresel veya dahili bileşen işlevinin etkilendiği süreyi en aza indirmelidir (ideal olarak birkaç saniye). Güncellemenin daha uzun süren kısmı, kullanıcıyı rahatsız etmeden arka planda sessizce gerçekleşmelidir.
- Bu çevre birimi, kullanıcı deneyimini belirgin bir şekilde etkiliyorsa (ör.ekran çalışmayı durdurursa) bu şart daha da katı hale gelir.
Bu tür sessiz güncellemeleri etkinleştirmek için A/B güncellemelerinin kullanılması önemle tavsiye edilir.
- Çevre birimi fişi çekildiğinde etkinleştirilebilen A/B güncellemeleri, kullanıcının kesintiye uğramasını en aza indirmek için idealdir.
Güncelleme kurtarılabilir olmalıdır. Cihazı veya çevre birimini kapatırsanız, prizden çıkarırsanız vb. güncelleme cihazı veya çevre birimini devre dışı bırakmamalıdır. Kullanıcı işlemi olmadan kurtarılabilecek kadar güçlü olmalıdır.
- İlk varsayım, güncellemenin tamamı boyunca kullanıcı işleminin olmadığıdır. Doğru komut dosyaları ve güncelleme aşamaları bağımsız olarak yürütülmelidir.
İkinci Adım: fwupd'yi kullanma
Bir tedarikçi fwupd'yi hiç kullanmadıysa
Chrome OS, fwupd aracılığıyla OEM'ye donanım yazılımı güncellemesi için gerekli bilgileri sağlar. OEM bu durumu doğrudan çip / bileşen tedarikçilerine bildirmelidir.
Bazı durumlarda ODM, OEM'nin çip tedarikçileriyle doğrudan iletişim kurmasına yardımcı olabilir. Bu şartları uygun şekilde iletme sorumluluğu OEM'ye aittir.
LGPLv2+ lisansıyla kaynak kod sağlanıyorsa bu koddan eklenti türetmenin genellikle mümkün olmadığını (çok fazla karmaşıklık olduğunu) lütfen unutmayın. Bu nedenle, bu senaryoda çip tedarikçisinin fwupd bakım ekibi ve Google mühendisleriyle çalışabilecek bir kişisi olması gerekir.
OEM proaktif davranarak çip tedarikçilerinden, bakım uzmanlarıyla yakın bir şekilde çalışacaklarına dair taahhütte bulunmalarını sağlayabilir. Tedarikçi tarafında mühendislik desteği isteğinde bulunmak için aşağıdaki koşullar geçerlidir:
Güncellenebilir donanım bileşeninin özelliklerini ve tasarım özelliklerini çok iyi biliyor olmalı, tercihen donanım yazılımını yazan ekipte yer almalıdır.
Yaygın açık kaynak lisansları (ör. LGPLv2 ve MIT) arasındaki farkları anlama
C dilinde uzman olmalı, GLib ve GObject'a dair temel bilgilere sahip olmalı ve özellikle GErrors'i anlamalısınız.
GitHub hesabınız olmalı, pull isteği nasıl açılacağını ve güncelleneceğini bilmeli, GitHub kod incelemeleri yapmalı ve fwupd'nin sunduğu tüm yardımcı programlarla (ör. parçalara ayırma, ekleme/çıkarma, cihaz yeniden denemeleri, HID vb.) nasıl yapılandırıldığını öğrenmelisiniz.
İsteğe bağlı: İngiltere'ye donanım örnekleri gönderme olanağı. Bu özellik, fwupd bakım ekiplerinin tedarikçi firmanın sorunlarını gidermesine ve kartı her sürümde çalıştırılan fwupd testlerine eklemesine yardımcı olur. İkincisi, geliştirme dalındaki gerilemelerin durdurulması için önemlidir.
OEM, buna paralel olarak fwupd posta listesi üzerinden veya doğrudan Richard Hughes (hughsient@gmail.com) ile iletişime geçebilir ve eklenti kodu yazılmadan önce planı gözden geçirebilir.
Küçük bir şirket, mühendislik kaynakları veya açık kaynak hakkında çok az bilgiye sahipse aşağıdaki öneriden yararlanabilirsiniz:
Bileşen tedarikçisi, açık kaynak çalışmalarına aşina danışmanlık şirketlerinden yararlanabilir (bu ek maliyete neden olmaz).
Bu öneri ölçeklendirmeye yardımcı olsa da tedarikçinin bunu şirket içinde yapmasının avantajı, mühendislerin sürece aşina olması ve gelecekte yeni donanım için VID/PID'yi kolayca ekleyebilmesidir. Donanımda hata ayıklamayla ilgili soruları / sorunları kapatmak da daha hızlıdır.
Üçüncü Adım: Son Adımlar
Sonunda kod, fwupd'deki tüm paylaşılan işlevler kullanılarak incelenebilir küçük commit'lere dönüştürülür.
Tamamlandığında eklenti yayına aktarılır.
Yukarı akışta kullanılan kod, ChromeOS'teki kodla aynıdır.
ChromeOS dışında kullanılan donanım yazılımı güncelleme ikilileri LVFS'ye dağıtılır.
Özellikle ChromeOS'te:
OEM'nin, donanım yazılımı ikilisini CPFE üzerinden sunucularımıza yüklemesi gerekir.
Donanım gerileme testlerinin çalışması için LVFS'de yeniden dağıtılabilir güncelleme kabini arşivlerinin bulunması gerekir.
Dördüncü Adım (İsteğe bağlı) - Yeni bileşenler ekleme
- fwupd çerçevesi zaten mevcutsa tek ek adım, güncellenebilir bileşen tedarikçisinin donanım varyantları için VID/PID'ler ve tuhaflıklar eklemek üzere pull isteklerinde çalışmasıdır.
Diğer Yönergeler - LVFS'de Çalışma
Yeni bir tedarikçi hesabı oluşturun (Kurulumu yaklaşık 2 dakika sürer)
Tedarikçi firmalar, kendi alanları için kullanıcı oluşturur veya kullanıcı hesaplarını LVFS ile senkronize etmek için Azure AD gibi bir çözüm kullanır. Çok az sayıda kontrolle donanım yazılımını gizli olarak yükleyebilir ve tedarikçi ambargosu uygulayabilir (bu nedenle genellikle mühendisler bunu baştan itibaren yapar).
Test veya kararlı sürüme göndermek için yasal departmanlarından, LVFS'nin donanım yazılımını yeniden dağıtabileceğini ve analiz edebileceğini açıkça belirten bir tür belge almaları gerekiyor. PDF kılavuzu Richard tarafından sağlanmıştır. ● Tedarikçi yalnızca bir silikon tedarikçisi veya ODM ise OEM'nin "satış ortağı" olabilir ve OEM'nin adı markalanmış donanım yazılımıyla ilgili olan her şeye tam erişimi olacak şekilde OEM adına donanım yazılımı yükleyebilir.
Ayarlanması gereken başka birçok şey vardır (ör. tedarikçi kimliği, bunları bir PCI veya USB kimliği grubuyla kısıtlar) ancak tedarikçi firmaların çoğunun zaten atanmış bir kimliği vardır ve bu kimliğin ayarlanması 20 saniye sürer.
Diğer Rehberlik - Chrome OS'a Özel Bilgiler
Bizim durumumuzda, donanım yazılımı güncelleme ikili dosyaları doğrudan LVFS'den çekilmiyor. Bunun yerine CAB dosyası yerel dosya sisteminde (rootfs) depolanır.
- Gelecekteki iş akışı: Uygun portage yer paylaşımında bir portage ebuild oluşturarak donanım yazılımı ikili dosyasını DLC'ye dahil edin
fwupd'nin doğru zamanda (CLI fwupdtool aracı aracılığıyla) çağrılması gerekir. Her güncellenebilir bileşen için fwuptool-update upstart etkinliği yayınlayan bir udev kuralı (veya eşdeğer komut dosyası) oluşturulmalıdır. Bu etkinlik, fwupdtool'u doğru bağımsız değişkenlerle ve uygun korumalı alanla (minijail) çalıştırmak için otomatik olarak işlenir.
Kullanıcı arayüzünün gerekli olup olmadığına karar veren başka bir bileşen de vardır. Bu karar yalnızca güncellenen bileşenin yapısına bağlı olarak belirli koşullarda verilir. PM ve mühendislik ekibi tarafından değerlendirilecek. İlk adımda belirtildiği gibi, daha üst düzey bir kılavuz olarak kullanıcı tarafındaki işlemi en aza indirmek
Tedarikçi firmalar için ek kaynaklar
Harici doküman referansı: https://lvfs.readthedocs.io/
Harici tedarikçi sözleşmeleri referansı: fwupd.org/lvfs/docs/agreement
Eklenti geliştirme eğitimi: https://fwupd.github.io/tutorial.html
Eklenti hata ayıklama eğitimi: https://lvfs.readthedocs.io/tr/latest/custom-plugin.html
Örnek anormallik dosyası: https://github.com/fwupd/fwupd/blob/master/plugins/wacom-usb/wacom-usb.quirk
Düzeltme Geçmişi
| Tarih | Sürüm | Notlar |
|---|---|---|
| 2025-03-12 | 1.0.2 | PDF'deki metni Markdown'a dönüştürme |
| 2024-01-31 | 1.0.1 | Yeni platformda yeniden yayınlama |
| 2023-10-12 | 1,0 | İlk yayın |