8 Aralık 2016 Perşembe

Coreboot ve Libreboot'u Derleyip Sanal Ortamda Test Etmek

   Önceki yazımda coreboot ve libreboot'un tanımını yapmıştım.  Şimdi ise bu yazılımları nasıl indireceğinizi, derleyeceğinizi ve test edeceğinizi anlatacağım. Bunun için bilgisayarımızda bir linux dağıtımının olması gerekmekte, ben Trisquel kullandım . Coreboot ile başlayalım...

İlk önce Coreboot için gerekli olan kütüphane ve araçları kuralım :

  
sudo apt-get install -y git libncurses5-dev m4 bison flex zlib1g-dev
 

Coreboot kaynak kodunu indirelim:

 
git clone http://review.coreboot.org/coreboot
 

İşlem bittikten sonra klasörümüze girelim:

cd coreboot
 

Coreboot araçlarını derleyelim:

Bu işlem uzun biraz uzun sürecek.
 
make crossgcc-i386 CPUS=$(nproc) 
 

Payload'ı derleyelim:

Payload coreboot açıldıktan sonra hangi yazılımı çalıştıracağıdır. 
Biz coreinfo adlı payloadı derleyeceğiz
 
make -C payloads/coreinfo olddefconfig
make -C payloads/coreinfo 

 Anakart ayarlarımızı yapalım:

 
make menuconfig 
Bu işlemden sonra grafik ortamına geçiş yapıyoruz ok tuşları yönlendirme enter tuşu ile seçim yapabilirsiniz.
 
   Mainboard'a girin
   Mainboard vendor olarak (Emulation) seçili olmalı 
   Mainboard model olarak QEMU x86 i440fx/piix4 seçili olmalı
   exit'ı seçin
   
   Payload'a girin
   Add a Payload'a girin
   An Elf executable payload'ı seçin
   Payload path and filename'a girin
   payloads/coreinfo/build/coreinfo.elf yazın
   2 kere exit'ı seçip yes diyin
 
Ayarlarımızı kontrol edelim
make savedefconfig
cat defconfig 
 
Aşağıdaki şekilde iki satır var ise doğru yoldasınız demektir:
 
CONFIG_PAYLOAD_ELF=y
CONFIG_PAYLOAD_FILE="payloads/coreinfo/build/coreinfo.elf"

 Artık Coreboot'u derleme vakti geldi:

make

derleme sonucunda Build emulation/qemu-i440fx (QEMU x86 i440fx/piix4) 
şeklinde bir sonuç karşınıza çıktıysa derlemeniz başarılı olmuş demektir.
 
Coreboot derlendi fakat bunu günlük hayatta nerede kullanacağız?

Bunun için qemu adlı emülatörü indiriyoruz:

 
sudo apt-get install -y qemu 
 

Emülatörümüz kurulduktan sonra sıra geldi denemeye:

 
qemu-system-x86_64 -bios build/coreboot.rom -serial stdio
 

Coreboot'u derledik ve denedik şimdi geçelim Libreboot'a

İlk önce libreboot'un son stable versiyonunu romanya aynası üzerinden indirelim. Tarihe göre 
versiyon değişikliliği gösterebilir https://libreboot.org/download/ adresinden hangi versiyonu
ve hangi aynadan indirmek istediğinize karar verebilirsiniz.
wget -r -nH --cut-dirs=3 -P libreboot ftp://ftp.linux.ro/libreboot/stable/20160902/ |mkdir libreboot

indirdiğimiz tar dosyasını açalım ve içine girelim:

 
tar -xf libreboot_r20160902_src.tar.xz
cd libreboot_r20160902_src

Derleme bağımlılıklarını yükleyelim:
sudo ./build dependencies trisquel7 (kullandığınız işletim sistemini yazın trisquel kullanmıyorsanız)
eğer işletim sisteminizi yazdığınızda kabul etmiyorsa genelde yanlış yazıldığı içindir
sudo ./build dependencies list yazarak doğru yazım şeklini bulabilirsiniz.
  

Libreboot için gerekli olan herşeyi derleyelim:

bu işlem en uzun süren işlem biraz sabırlı olmanız gerekmekte 
./build module all

eğer ki bazı modülleri derlemek istemiyorsanız veya hata aldıysanız herhangi bir modülde tek tekde derleyebilirsiniz.
./build module list komutu ile modülleri listeleyip ./build module modül_adı yazarak derleyebilirsiniz
 

Sıra geldi ROM derlemeye:

 
./build roms withgrub yazarsanız tüm romları derlersiniz ve uzun sürer biz sadece qemu ile 
sanal ortamda deneyeceğimiz bir rom istediğimiz için sadece 
./build roms withgrub qemu_i440fx_piix4 yazmamız yeterli 
şimdi sıra geldi oluşturduğumuz rom'u denemeye:
 qemu-system-x86_64 -bios bin/grub/qemu_i440fx_piix4_usqwerty_txtmode.rom -serial stdio
 
İlk açılış esnasında direkt olarak boot etmeye çalışıyor libreboot açılana kadar yukarı aşağı ok tuşuna basmalısınız
Libreboot derlenirken çok fazla hata verebiliyor şahsen ben libreboot dökümanlarına göre yapmama rağmen uzun uğraşlar sonucu derleyebildim. 
Eğer derlemeden libreboot u denemek isterseniz rom klasöründe hazır romları var onları da kullanabilirsiniz
 
cd rom/grub
tar -xf libreboot_r20160902_grub_qemu_i440fx_piix4.tar.xz
cd libreboot_r20160902_grub_qemu_i440fx_piix4
qemu-system-x86_64 -bios qemu_i440fx_piix4_usqwerty_txtmode.rom -serial stdio
 
Bu yazımda Libreboot ve Coreboot u nasıl derleyeceğinizi yazdım. Umarım faydalı olmuştur. 
Herhangi bir hata ile karşılaşırsanız yardımcı olabilirim.
 

BIOS ve Coreboot

    BIOS (Basic Input Output System/Temel Giriş Çıkış Birimi) bilgisayar açıldığı anda işlemciye tüm donanımları tanıtan, iletişimin nasıl ve hangi frekansta olacağını belirten ve hangi sürücüden işletim sisteminin açılacağına karar veren bir yazılımdır. Anakartın üzerinde bir ROM(Read Only Memory/Salt Okunur Bellek) da bulunur diye sıklıkla bahsedilsede günümüzde EPROM(Erasable Programable Read Only Memory) ve EEPROM (Electronically Erasable Programable Read Only Memory) üzerinde tutularak güncelleme ve bios yazılımını değiştirme imkanı sağlanmaktadır. Bios üzerinde kullanıcıların yaptığı değişiklikler CMOS devresinde tutulur. Cmos elektrik kesintilerinden etkilenir ve varsayılan değerlere geri döner. Bu yüzden her anakart üzerinde cmos için bir pil bulunur.

    Her ne kadar devrelerden, pillerden, donanımlardan bahsetsekte, bios en nihayetinde bir yazılımdır. Fakat üreticilerin bize sunduğu yazılımların tamamı kapalı kaynak kodlu yazılımlardır. Bir bilgisayar üzerinde yapılabilecek tüm işlemler için açık kaynak kodlu olduğu için bir arka kapının olmadığına emin olduğumuz bir program halihazırda var iken neden bios yazılımıda açık kaynak kodlu olmasın diyen özgür yazılımcı Ron Minnich bir bios yazılımı yazıyor ve ismini LINUXBIOS koyuyor. Daha sonra Coreboot ismini alan proje bugün 230 dan fazla anakart için destek vermekte. Coreboot'u tamamen özgürleştirmek isteyen Leah Rowe, Coreboot gibi içinde özgür olmayan paketlerin bulunmadığı bir coreboot sürümü yazarak adını Libreboot koyuyor.
   
    Bu yazımda bios ve Coreboot'un ne olduğu hakkında bahsettim umarım faydalı olmuştur. Bir sonraki yazımda Coreboot ve bunun bir türevi olan Libreboot'u nasıl indireceğinizi, derleyeceğinizi ve sanal ortamda deneyeceğinizi anlatacağım.