# Milis Linux 2019-2020 Çalışma Raporu

## 2020/01/03

### Geliştirme Süreci

Linux Tabanlı Açık Kaynak Kodlu Milli Bir İşletim Sistemi Geliştirilmesi (MİLİS) adlı ülkemiz için çok önemli olan bu araştırma projesinde kurumsal ve finansal desteklerini sunan Akdeniz Üniversitesi BAP Birimine teşekkürlerimizi sunarız. Ayrıca projede emeği geçen proje ekibimize, katkı sunan öğrencilerimize ve ilgili arkadaşlarımıza da teşekkürü borç biliriz.

BAP biriminin sağladığı destek kapsamında Milis Linux projesi için bir adet güçlü sunucu alınmıştır. Bu sunucu proje geliştirme sürecinin ortalarında elimize geçmiş olmasına rağmen sunucu bilgisayarın sanallaştırıması ve yazılımsal kurulumları proje gereksinimlerine göre tamamlanmıştır. Sunucunun proje ile ilişkili kullanım detayları aşağıda listelenmiştir.

1. İnternet Sitesi: Sunucu üzerinde oluşturulan sanal makineye kurulan sunucu ile proje hakkında bilgi ve diğer işlemler için internet sitesi oluşturulmuştur. Site https://mls.akdeniz.edu.tr altında sunulmaktadır.
2. Git Depo Sunucusu: Proje ve ilişkili Git depolarının yönetilmesi için açık kaynak Gitea [6] yazılımı kullanılarak Git sunucusu kurulmuştur. Resmi ve gönüllü katkıları bu sunucu üzerinden işlenerek proje geliştirilmiştir. Bu Git sunucusu https://mls.akdeniz.edu.tr/git yolu üzerinden sunulmaktadır. Barındırılan depolar:
   - milis19 : Milis Linux resmi git deposu ve geliştirme kodları
   - mps : MPS paket yöneticisi kaynak kodları
   - imaj-ureticisi : Canlı imaj üretim uygulama kaynak kodları
   - milis-site-statik : Proje internet sayfası html kodları
3. Mesajlaşma Sunucusu: Projeye resmi ve gönüllü katkı sunmak isteyen kişiler için Mattermost [7] adlı açık kaynak mesajlaşma sunucusu kurulmuştur. Bu sunucu üzerinden proje gelişim süreçleri tartışılarak sunulan fikir ve görüşler projeye dahil edilmiştir. Bu mesajlaşma sunucusu https://mls.akdeniz.edu.tr/mm yolu üzerinden sunulmaktadır.
4. Paket Derleme Ortamı (Build Farm): Milis Linux’un sıfır kaynak koddan ve bütün paket derlemeleri oluşturulan güçlü sanal sunucu üzerinde yapılmıştır. Güçlü sunucu sayesinde uzun süren derleme işlemlerinde kolaylık sağlanmıştır.
5. Paket Deposu: Milis Linux paketlerinin tutulduğu arşiv depolama alanıdır. Bu alan https://mls.akdeniz.edu.tr/paketler yolu üzerinden hizmet vermektedir. Bu yol ile Milis Linux paket eklemeleri ve güncellemeleri yapılmakta olup ayrıca kullancılar bu yol ile paketleri indirmektedir.
6. İmaj Deposu: Milis Linux temel sistemi canlı imaj üretimlerine geçtikten sonra elde ettikten sonra elde edilen imajlar sanal alanda kullanıcılar için deneme imajı adlarıyla yayınlanmıştır. Bu alan https://mls.akdeniz.edu.tr/iso yolu üzerinden sunulmaktadır.
7. Büyük Veri Kümesi (cluster): Yüksek lisans büyük veri dersi kapsamında öğrenilen bilgiler ve dağıtık mimari teknolojileri için büyük veri kümesi kurulmuştur. Bu küme üzerinde ilgili büyük veri teknolojileri Milis ve diğer dağıtım tabanlı sistemlerle test edilmiştir.

Milis Linux projesi ile çalışabilen ve kurulan bir sistem elde edilmiştir. İlk başta elde edilen sistem sadece canlı ortamda çalışırken ayrıca geliştirilen kurulum uygulaması[8] ile Milis Linux’un konsol arayüz ile kullanıcı bilgisayarlara kalıcı kurulumları sağlanmıştır. Milis Linux temel olarak minimal sistem üretiminin üstüne ayrıca eklenen grafik sunucu ve masaüstü paketlerini de hazırlamıştır. Canlı-kurulabilir imaj olarak minimal ve masaüstü imajları olmak üzere iki imaj hazırlanmıştır. Yapılan çalışmalar doğrultusunda Milis Linux çalışmalarına dönük tüm belgelendirme https://mls.akdeniz.edu.tr/belgeler adresi altından sunulmaktadır. Bu adreste sistemin kurulmasından paket yöneticisi kullanımına kadar tüm belgeler mevcuttur.

Milis Linux projesinde ön tanımlı masaüstü ortamı olarak XFCE4 kullanılmıştır. Ayrıca i3, Awesome, JWM gibi pencere yöneticileri desteklenmektedir. Bunun yanında internet erişimi için Firefox uygulaması, ofis işlemleri için LibreOffice uygulamaları depoya eklenmiştir. Ek olarak C, C++, Python, Java, Clojure, Rust, Zig, Ruby, Erlang, Elixir, NodeJS gibi çeşitli programlama dillerinin derleyici ve yorumlayıcı uygulamaları depoya eklenmiş bulunmaktadır. Daha birçok kategoride farklı uygulamaların talimatı hazırlanarak depoya alınmıştır. 2019 Aralık itibariyle 827 paket depoda mevcuttur. Halen sistemin günlük geliştirme ve ihtiyaçları doğrultusunda paketler eklenmektedir. Tüm paket listesi https://mls.akdeniz.edu.tr/paketler/paket.vt dosyasında kayıtlıdır.

Milis Linux projesi, projenin başlangıcı itibariyle tüm geliştirmelerini Git sunucusu ile entegre yürütmüştür. 2019 Aralık itibariyle 2400 değişiklik kaydı Milis19 deposunda, 335 değişlik kaydı da MPS paket yöneticisi deposunda yapılmıştır. Bu kayıtların teknik içeriğine Milis Linux Git deposu[15] sayfasından ulaşılabilir.

Milis Linux projesi, proje tanıtımı ve katkı sağlamak için Akdeniz Üniversitesi Bilgisayar Mühendisliği öğrencilerine farklı zamanlarda 3 adet seminer düzenlemiştir. Ayrıca Antalya Teknokent’de bir firmaya da proje tanıtım semineri düzenlenerek proje ve geliştirme süreci hakkında yazılım firmalarında farkındalık oluşturulmaya çalışılmıştır. Bu çalışmalar sonucu öğrencilerin yaz staj döneminde 1 adet öğrenci resmi, 1 adet öğrenci de gönüllü olmak üzere stajyer öğrencilerin Milis Linux projesi üzerinde çalışması sağlanmıştır.

Yüksek Lisans müfredatında işlenen büyük veri dersi kapsamında, büyük veri işleme üzerine gerekli teknolojilerin barındığı bir büyük veri platformunun kurulması konulu tez çalışması Milis Linux temel alınarak yapılmıştır. BAP projesi kapsamında alınan sunucu üzerinde kurulan büyük veri kümesi ile büyük veri işleme testleri yapılarak ön araştırmalar yapılmıştır. Bunun sonucu yapılan çalışma “Apache Hive Performance Improvement Techniques for Relational Data” başlıklı makaleye çevrilerek IDAP 2019 [9] konferansında sunulmuştur. Ayrıca makalemiz IEEE kayıtlarına geçmiştir [10].

Milis Linux açık kaynak bir işletim sistemi olduğu için sistemin, geleceğe dönük nasıl bir güvenilir donanımda çalıştırılması gerektiğine dönük ek araştırmalar da yapılmıştır. Bu araştırmalarımız da Milis Linux ile ilişkili olarak “Building An Open Source Linux Computing System On RISC” başlıklı makaleye (EK-1) dönüştürülmüş ve IEEE destekli UBYMK 2019 konferansında sunulmuştur [11]. Makale 2019 Aralık ayı sonu itibariyle IEEE arşivlerinde yer alacaktır. Ayrıca Türkiye bilişim Derneği tarafından düzenlenen 36. Bilişim Kurultayında Türkiye Açık Kaynak Platformu Çalıştayı’na katılanarak ülkemiz için işletim sistemi düzeyinde yapılması gerekenler aktarılmıştır ve Milis Linux projesi hakkında bilgi verilmiştir [14].

Ek olarak Milis Linux projesini yaygın hale getirmek için dergi yayın hazırlık çalışması da yapılmaktadır. Bu çalışmaların Türkiye Bilişim Vakfı Bilgisayar Bilimleri ve Mühendisliği Dergisi’nin [13] bir sonraki sayısına gönderilerek yayınlanması planlanmaktadır. Bütün bu çalışmalarımıza ek olarak Türkiye’nin farklı yerlerinden katkı sunan gönüllülerin desteği de sağlanmıştır. Katkı sunan arkadaşlar projenin topluluk tarafını oluşturmuş ve paket üretim ve sistem testleri gibi konularda Milis Linux projesine destek olmaktadırlar.

### TARTIŞMA VE SONUÇ

Milis Linux projesinin öneri aşamasındaki hedefleri ve ulaşılma durumları aşağıda ayrıntılı olarak incelenmiştir:

1. Geliştirme ve test için sunucunun temini ve kurulumu: BAP projesi kapsamında satın alınan sunucu Mayıs 2019 başlarında elimize geçmiştir. Hızlı bir şekilde gerekli sanallaştırma sistemi kurulup sanal sunucular oluşturmak suretiyle projeye intibakı sağlanmıştır.
2. Proje ana sayfasının oluşturulması ve ekip için kod kontrol ve paylaşım sisteminin kurulması: Milis Linux projesi için mls.akdeniz.edu.tr alan adı temin edilmiş ve sunucu üzerinde kuruan HTTPS sunucu ile proje internet sayfası hazırlanmıştır. Ayrıca projenin geliştirme süreçleri kurulan Git deposu üzerinden yürütülmüştür.
3. Seçilecek sunucu mimarisi için temel sistemin (Root File System) derlenmesi: x86_64 mimarisi için sıfır kaynak koddan derleme yöntemiyle temel sistem üretilmiştir.
4. Paket yöneticisinin geliştirilmesi ve derleme ortamının kurulması: Lua programlama dili ile temel paket yönetim işlemlerini yerine getiren paket yöneticisi kodlanmıştır. Paket yöneticisi ayrıca temel sistemi sıfır kaynak koddan derleyebilme yeteneğine sahiptir. Ayrıca izole derleme ortamında her türlü paketin bağımlılık tespiti yapılarak zincirleme üretilebilmiştir.
5. Sisteminin kurulabilir ve çalışabilir imajının elde edilmesi: Geliştirilen imaj-üretici uygulaması ile üretilen paketler kullanılarak her türlü özelleştirilebilir imaj üretilebilmiştir.
6. Bilgisayar laboratuvarlarında kurulup test edilebilmesi: Milis Linux imajları bilgisayar laboratuvarı bilgisayarlarına kurularak kullanım ve geliştirme testleri yapılmıştır ayrıca internet sayfasından yayınlanarak farklı bilgisayar kullanıcılarında ad test edilmişlerdir ve geri dönüşler sağlanmıştır.
7. Paket deposu için sunucuda gerekli kurulumun ve ayarların yapılması: talimat dosyalarından üretilen paketler kurulan paket deposu ile internet üzerinden yayınlanmışlardır. Sistemin bu yol ile uygulama kurulum ve güncellenmesi sağlanmıştır.
8. Gelişim sürecinin devamı için öğrenci topluluğu kurulması: Öğrenciler için gerekli seminerler verilmiş ayrıca BAUM bünyesinde Milis Linux çalışma ekibi kurularak ilgili arkadaşların dönemsel olarak projeye gönüllü intibakı sağlanmaktadır. İnternet sitemizden haberdar olarak bize katkı sunmak isteyen gönüllü arkadaşlar, proje için gerekli iş paketlerinde görevlendirilerek sistemin paket sayısı artırılmış ve Türkçe dili desteği eksik paketlere çeviri desteği sunulmuştur.

Sonuç olarak bir sene boyunca yürütttüğümüz proje ile Linux çekirdeği üzerine kendi geliştirdiğimiz paket yöneticisi uygulamasına sahip bir sistem çalışması yapılmıştır. Bu sistem minimal ve masaüstü beta sürümlerini yayınlamış durumdadır. Minimal sistem, özelleştirilebilir farklı sistem çalışmalarına temel alınabilir. Masaüstü sistemi ise günlük kullanım hedeflerine uygun doğrultuda hazırlnamıştır. Ayrıca şu an hazırlanan rapor Milis Linux üzerinde hazırlandığı gibi, yapılan bilgilendirme sunumları da yine Milis Linux üzerinden sunulmuştur. Elbetteki işletim sistemi projesi bir senede yapıp bitirilecek bir proje değildir. BAP projesi kapsamında yapılan çalışmalar üniversite bünyesinde bu projenin başlangıç alması ve yapılabilirliğinin kanıtlanmasıdır.

İleriye dönük Milis Linux projesi geliştirilmeye devam edilecektir. Öncelikli bireysel kullanım olmak üzere üniversite kurumumuzda ve ders kapsamlarında öğretilmesi ve kullanımı teşvik edilecektir. Az olan proje ekibimizle her ne kadar bu sistemin temelleri atılsa da, işletim sistemi geliştirme sürecinin devam ettirilmesi gerekmektedir. Bu doğrultuda üniversitemizin Bilgisayar Mühendisliği öğrencilerine gerekli sunumlar periyodik olarak yapılacak ve projeye katılımları sağlanacaktır. BAUM bünyesinde kısmi zamanlı çalışma ekibi kurularak çekirdek ekip için geliştirici insan kaynağı sağlanacaktır. Ayrıca internet üzerinden oluşturulan gönüllü topluluk yapısıyla gönüllü katkı sunan kişilerin projeye dahili sağlanmıştır ve daha da artırılacaktır. Akademik bağlamda ise yapılacak lisans, y.lisans ve doktora çalışmalarıyla Milis Linux projesinin akademik birikime katkısı artırılacaktır.

### KAYNAKÇA

- [1] http://linuxfromscratch.org/
- [2] https://www.lua.org/
- [3] https://www.gnu.org/software/bash/
- [4] https://en.wikipedia.org/wiki/INI_file
- [5] https://mls.akdeniz.edu.tr/git/milislinux/imaj-uretici
- [6] https://gitea.io
- [7] https://mattermost.com
- [8] https://mls.akdeniz.edu.tr/git/milislinux/milis19/bin/milis-kur
- [9] http://idap.inonu.edu.tr/frontend/pages/accepted-papers.xhtml
- [10] https://ieeexplore.ieee.org/document/8875898/
- [11] https://ubymk.tbdakademi.org.tr/program
- [12] https://mls.akdeniz.edu.tr/git/milislinux/milis19
- [13] https://dergipark.org.tr/tr/pub/tbbmd
- [14] https://www.bilisim.org.tr/bilisim2019
- [15] https://mls.akdeniz.edu.tr/git/milislinux