« Tüm yayınlar

SoLo: Statik Linux İkili Dosyaları glibc GPU Sürücülerini Yükleyebiliyor

SoLo, statik musl Linux ikili dosyalarının host'un glibc tabanlı GPU sürücülerini konteyner olmadan yüklemesini sağlayan açık kaynak bir ELF köprüsü.

SoLo, musl ile statik olarak derlenmiş tek dosyalık Linux ikili dosyalarının, çalışma zamanında sistemde zaten kurulu olan glibc tabanlı GPU sürücülerini (Vulkan/OpenGL) yükleyebilmesini sağlayan açık kaynaklı bir proje. Normalde tam statik bir musl ikili dosyası glibc ile derlenmiş paylaşımlı nesneleri dlopen() edemez; SoLo bu sınırı kendi ELF yükleyicisi (x86-64 ve aarch64) ve musl üzerine inşa edilmiş bir glibc ABI köprüsüyle aşıyor.

Proje, tam statik bir yürütülebilir dosyanın host'un değiştirilmeden kurulu Vulkan sürücüsünü yükleyip bir compute shader çalıştırarak sonucu PNG olarak yazdığı uçtan uca bir kanıt içeriyor. Bu demo AMD (radv, radeonsi), Intel, NVIDIA GPU'larda Linux üzerinde ve Apple M1'de Asahi Linux altında test edilmiş. Her commit'te CI, en çok kurulan 1.000 Debian paketinin (2.100'den fazla host nesnesi) paylaşımlı kütüphanelerini SoLo üzerinden hem x86-64 hem aarch64'te yüklüyor.

SoLo yüzeysel bir dlsym sarmalayıcısından çok daha fazlasını sunuyor: C++ istisnaları statik ve dinamik dünyalar arasında düzgün şekilde çözülüyor, dört TLS modelinin tümü sarmalayıcı veya kod yaması olmadan destekleniyor, ve ld.so'nun global kapsam interpozisyonu, RTLD_DEEPBIND ve sembol versiyonlama gibi bağlama semantikleri yaklaşık değil tam olarak uygulanıyor. Bu, mühendisler için konteyner veya AppImage kullanmadan, GPU erişimini kaybetmeden gerçek tek-dosyalık dağıtım anlamına geliyor.