CDEmu

CDEmu, Linux işletim sisteminde optik sürücü ve diskleri emüle etmek için tasarlanmış bir yazılım paketidir. CDEmu aşağıdaki bileşenlerden oluşur:
  • Sanal bir SCSI ana veri yolu bağdaştırıcısı gerçekleyen çekirdek modülü,
  • Optik disk imajlarını yorumlamak için bir yazılım kütüphanesi olan libmirage,
  • Bir SCSI optik sürücü ve diskin işlevselliğini emüle eden bir artalan süreci,
  • Emülatörü denetlemek için terminal tabanlı ve GTK ile yazılmış GKA istemcileri.
Yazılım, çekirdek modülü ve D-Bus iletişim sistemini kullanan istemciler hariç olmak üzere, Glib tarafından desteklenen diğer işletim sistemlerine de taşınabilir.

Daha çok ilerlemeden önce kafanızda "bir geridöngü cihazı (loopback device) üzerinden ISO9660 dosya sistemini bağlayabilirken CDemu çekirdek modülünü neden kullanayım ki (örneğin mount -o loop film.iso /mnt/film şeklinde)?" gibi bir soru oluştuysa bunu projenin SSS bölümünden yararlanarak cevaplamaya çalışalım: Bu yöntem sadece ISO imajları için çalışır. Başka bir deyişle, sadece bir veri izi için. Pek çok bin/cue imajı birden çok parça içerir ve bunlar sıklıkla ham biçimdedir (bu, imajda CD'den gelen hata düzeltme kodlarının da içerildiği anlamına gelir). Bu tür görüntüleri doğrudan bağlayamazsınız.

CDEmu ilk olarak Robert Penz ve Justus Schwartz isimli iki arkadaş tarafından MPlayer için CUE/BIN dosyalarının kullanılmasını sağlayan yama olarak tasarlanır. Yama tamamlandıktan sonra basitliği fark edilir ve çekirdek için bir modül yazılır. Robert Penz, CDEmu'nun doğuşunu şöyle anlatıyor:
Her şey şöyle başladı: Arkadaşlarımdan içinde bin/cue dosyaları biçiminde bazı filmler olan bir firewire disk aldım. Bana, bunları izleyebilmem için CD'ye yakmam veya Windows'ta Daemon Tools kullanmam gerektiğini söylediler. Bu benim için çok fazlaydı, sadece bir film izlemek için Windows'u açmak mı? Bu yüzden arkadaşım Justus Schwartz ve ben, favori video oynatıcımız MPlayer için bir yama yapmaya karar verdik. 
Bir geceden sonra olabilirliğini gördük; iki hafta sonraysa elimizde iyi bir yamamız vardı ve bunu gönderdik. Yama, MPlayer ekibi tarafından kabul edildi ve 0.9rc3 sürümünden başlayarak yamamız dahil edildi. Sözdizimi şöyledir: 
$ mplayer cue://<cue file>[:parça] [seçenekler] 
Bunu yaptıktan sonra, bunun o kadar da zor olmadığını düşündüm, bu yüzden Linux için Daemon Tools gibi bir şey yapmaya karar verdim. Ve böylece ilk çekirdek modülümü yazmaya başladım ve bir hafta sonra çalışır hale geldi; bazı hata düzeltmeleri sonrasında herkese açık ilk sürümü hazırdı.
İlk başta CDEmu, Virtual CD olarak isimlendirilir, ancak bu isim daha önce ticari marka haline getirildiği için ticari marka sahipleri başka bir isim kullanılmasını ister.

Haziran 2007 itibariyle CDEmu 0.8 ile ilgili geliştirmeler durdurulur ve bunun yerine bir yeniden yazım geliştirilir. Bu çalışmanın çoğu Rok Mandeljc tarafından yapılır. CDEmu'nun bu yeni sürümü, kullanıcı uzayında mümkün olduğunca çok şey yaparak emülasyona başka bir yaklaşım getirir.

2.0.0 sürümü itibarıyla CDEmu aşağıdaki imaj biçimlerini destekler:
  • .mds ve .mdx biçimi
  • .dmg ve .cdr biçimi
  • Blindwrite .b5t/.b6t biçimi
  • DiscJuggler'in .cdi biçimi
  • Easy CD Creator .cif biçimi
  • Roxio/WinOnCD .c2d biçimi
  • Error Code Modeller .ecm taşıyıcı biçimi
  • gBurner .gbi biçimi
  • .iso biçimi ve sıkıştırılmış formları .cso ve .isz
  • .nrg biçimi
  • PowerISO .daa biçimi
  • .udf biçimi
  • Ham imajlar (.img, .bin, .ccd, .cue, .sub ve .toc)
  • GZip ve Xz arşivleri
Emülatör, SCSI optik sürücüler için MMC-3 standardını mümkün olduğunca yakından takip ederek gerçekçi ve doğru bir emülasyon sağlar. CDEmu tarafından emüle edilen optik ortamlar Linux'a bağlanabilir.

CDEmu'nun CD-Text, ISRC, MCN ve ECC/EDC, DPM/RMPS gibi CD alt kanallar için desteği vardır. Sınırlı sayıda şifrelenmiş ve sıkıştırılmış imaj biçimi için de bir miktar destek sunar.

Geliştiriciler, olabildiğince çok sayıda önemli biçimi desteklemeye çalışıyor ve kullanıcıları bu amaçla yama göndermeye teşvik ediyorlar.

CDEmu'nun 3.2 sürümü 8 Temmuz 2018 tarihinde yayımlandı. cdemu-client, gCDEmu ve image-analyzer gibi Python tabanlı bileşenler resmi olarak Python 3'e aktarıldı. Ayrıca Blu-ray görüntüleri için geliştirilmiş destek ve Blu-ray diske kayıt emülasyonu için deneysel destek verilmeye başlandı.

Fedora RPM'leri için resmi COPR deposu ve Ubuntu paketleri için PPA, bu yeni sürüme göre güncellendi. Ayrıca, kod deposunun yansısı artık GitHub'da da bulunmaktadır.

VHBA modülü

VHBA modülü, kullanıcı uzayı artalan süreci ve Linux çekirdeği arasındaki bağlantı olan bir sanal (SCSI) HBA (veri yolu bağdaştırıcısı) sağlar.

Adın "kullanıcı uzayı" bölümünden dolayı bazılarının bekleyebileceğinin tersine, kullanıcı uzayı CDEmu hala orijinal CDEmu gibi bir çekirdek modülüne ihtiyaç duyar. Fark, kullanıcı uzayı CDEmu'nun tüm işlemleri (yani dosya okuma, sahte veri üretimi, vb.) kullanıcı uzayında yapmasıdır.

Çekirdek modülü, çekirdekte cihaz emülasyonunu ele alır; sanal aygıtları uygun sürücülerle kaydeder ve ilgili aygıt düğümlerini oluşturur. Ayrıca, kullanıcı uzayıyla iletişim için kullanılan özel bir karakter aygıtı oluşturur.

Sanal bir cihaza erişildiğinden, aslında SCSI komutları olan talepler, çekirdek tarafından üretilir. Bunlar, yukarıda bahsedilen karakter aygıtı aracılığıyla kullanıcı uzayı artalan sürecine geçirilir. İsteği işledikten sonra artalan süreci, karşılık gelen veriyi ve durumu çekirdeğe geri gönderir ve böylece isteği tamamlar.

Tüm süreç, gerçek bir aygıta erişmeye çok benzer, ancak istekler, donanım yerine kullanıcı uzayı artalan sürecine aktarılır.

libMirage Kütüphanesi

libMirage, bir CD-ROM imajı erişim kütüphanesidir. C dilinde yazılmıştır ve GLib'e dayanmaktadır. Kütüphanenin amacı, çeşitli imaj biçimlerinde depolanan verilere aynı şekilde erişim sağlamaktır.

Yeni imaj biçimi ayrıştırıcılarının veya veri dosyası erişim parçalarının kolayca eklenmesini sağlayan eklenti tabanlı bir sistem kullanır. Hata ayıklama izlerinin ayrıntı seviyesi, özel hata ayıklama bağlam nesneleri kullanılarak anında ayarlanabilir. Bu sayede, uygulamanın yeniden başlatılmasına gerek kalmadan izlerin miktarı ayarlanabilir.

CDEmu Artalan Süreci

CDEmu artalan süreci, CDEmu paketinin kullanıcı uzayı artalan süreci parçasıdır. Çekirdek modülünden SCSI komutlarını alır ve bunları işler, istenen veriyi de çekirdeğe iletir.

Artalan süreci, asıl sanal cihazı gerçekler; Her cihaz için bir örnek çekirdek modülü tarafından kaydedilir. İmaj erişimi (ör. sektör okuması) için libMirage'ı kullanır.

C dilinde yazılmış ve GLib'e (ve dolayısıyla GObjects'e) dayalı olan artalan süreci, D-BUS aracılığıyla kontrol edilir ve farklı dillerde yazılmış farklı istemcilere izin verir.

Image Analyzer

Image Analyzer, libMirage tarafından oluşturulan disk imajının ağaç yapısını görüntüleyen basit bir Gtk+ uygulamasıdır.

LibMirage UPA'sının kullanımının bir gösterimi olarak tasarlanmıştır daha çok, ancak bir imajın libMirage tarafından doğru şekilde işlendiğini doğrulamak için de kullanılabilir.

CDEmu Komut Satırı İstemcisi

CDEmu client, CDEmu artalan sürecini kontrol etmek için basit bir komut satırı istemcisidir.

CDEmu artalan sürecini kontrol etmek, cihazların bağlanması ve çıkarılması, cihazların durumunun görüntülenmesi ve cihazların hata ayıklama maskelerinin alınması ve ayarlanması gibi önemli görevlerin yerine getirilmesini sağlar.

gCDEmu GTK İstemcisi

gCDEmu, CDEmu artalan sürecini kontrol etmek için bir GTK uygulamasıdır.

CDEmu artalan sürecini kontrol etmek, cihazı bağlama ve ayırma, aygıtların durumunu görüntüleme, aygıtların hata ayıklama maskelerini alma ve ayarlama gibi önemli görevlerin gerçekleştirilmesini sağlayan bir grafik arabirim sağlar.

Ayrıca uygulama, CDEmu artalan süreci tarafından yayılan sinyalleri dinler ve libnotify yoluyla bildirimler sağlar.

KDE CDEmu Manager

KDE CDEmu Manager, CDEmu için resmi olmayan basit bir önyüzdür.

Sanal sürücülere genel bir bakış sunan ve imajların bağlanmasını ve ayrılmasını sağlayan küçük bir yönetici penceresi sağlar.

Ayrıca, imajların doğrudan Dolphin'den bağlanması için bir servis menüsü de içerir. İmajlar, Dolphin veya Aygıt Bildiricisi aracılığıyla herhangi başka bir ortam gibi ayrılabilir.

Sonuç

İmaj dosyaları son kullanıcıların büyük çoğunluğu tarafından ve sıklıkla karşılaşılan dosyalar değil. Bununla birlikte nadir de olsa karşılaşılsa bir son kullanıcı terminale ihtiyaç duymadan ve bazen başarısızlıkla sonuçlanabilecek arşiv olarak açmaya uğraşmadan sistemine bağlayabilmeli bu imaj dosyalarını.

CDEmu, son kullanıcıya bu kolaylığı sağlayan çözümlerden biri ve benim bugünkü kısa araştırmam sonucunda görebildiğim kadarıyla en erişilebilir olanı.

Umarım CDEmu, şu ankinden de daha az uğraş gerektirecek şekilde tüm Linux kullanıcılarının elinin altında olur ileride.

Kaynaklar ve Ek Okumalar

Yorumlar

Bu blogdaki popüler yayınlar

Diğer Dillerde Hoşçakal

Mızıka Tabları Nasıl Okunur

conio.h