Nasıl : mkinitcpio Yapılandırılması

From Lapis Wiki

Jump to: navigation, search
Bu makale NASIL bölümü serisinin bir parçasıdır
MasaÜstü Donanım Dağıtımlar
Tarayıcılar Programlama Linux ve Oyunlar

Konu başlıkları

Giriş

  • mkinitcpio yeni nesil initramfs oluşturma scriptidir.Eski mkinitrd ve mkinitramfs scriptlerine göre bir çok avantajlara sahiptir.
    • Çerkirdek geliştiricileri tarafından öncelikle kullanıcılar için daha küçük ve hafif temel adına geliştirilen klibc ve kinit kullanmaktadır
    • udev yardımı ile çalışma zamanında donanımınızı otomatik algılayabiliyor.Bu sayede bir sürü gereksiz moduldan kurtulabiyorsunuz.
    • Hook yapılandırmayı temel alan init scipti olduğu için kolayca geliştirilebilir ve düzenlenebilir.
    • Çoktandır lvm2, dm-crypt, raid, swsusp and suspend2 Usb depolama aygıtlarından önyükleme ve devam ettirmeyi desteklemektedir.
    • Görüntüyü tekrar oluşturmadan çekirdek komut satırından bir sürü özellik kontrol edilebilir.
    • mkinitcpio kernel içerisine görüntüyü dahil etmeyi mümkün kılıyor.Bu sayede çekirdek üzerinde taşınabilen görüntü oluşturmamız mümkün oluyor.

Not: Şuan için beta aşamsındadır.Kullanabilmek için kendiniz oluşturup önyükleyicinize eklemelisiniz.Her hangi bir sorunla karşılaştığınızda eskiye dönebilmek için mevcut initrd ve initramfs görüntülerinizi silmeyin.2.6.17 sürümü çekirdek paketlerine mkinitcpio desteği eklenmiştir.

Mkinitcpio Kurulumu

Depo Yardımıyla

mkinitcpio script'i current(kararlı) depolarına girmiştir.Pacman ile kurabilirsiniz.

 pacman -Sy mkinitcpio

SVN'den

Eğer en son deneysel sürümünü istiyorsanız bunu SVN depolarından kurabilirsiniz.

 svn co http://phraktured.net/initramfs


2.6.17 ve Üstü Çekirdekler İçin Aktif Hale Getirmek

Arch kernel'i her yükleme ve,veya güncellemenizde iki tane imaj oluşacaktır.

Dosya: kernel26
 
/boot/kernel26.img --> Otomatik algılama ile boyutu indirgenmiştir.
/boot/kernel26-fallback.img --> subsystems'in bütün modullarını içerir.
  

Dosya: kernel26beyond
 
 /boot/kernel26beyond.img --> Otomatik algılama ile boyutu indirgenmiştir.
 /boot/kernel26beyond-fallback.img --> subsystems'in bütün modullarını içerir.
  

Uyarı: Mevcut yapılandırma ile lvm2, raid and encrypt desteklenmez bunun için makale'yi dikkatli okuyup gerekli düzenlemeleri yapmalısınız.İhtiyacınız olan geçerli görüntü için önyüklemeyi düzenlemeyi unutmayın.

Yapılandırma Dosyalarını Düzenlemek

Asıl Görüntüyü Düzenlemek

Bunun için mkinitcpio.conf dosyamızı düzenlememiz yeterli

gedit /etc/mkinitcpio.conf

Mmkinitcpio varsayılan ayarlarında bu dosyayı kullanır.

Fallback Görüntüsünü Düzenlemek

Fallback görüntüsünün varsayılan tercihlerini düzenlemek :

Dosya: Fallback
 
 kernel26 --> /boot/mkinitcpio-kernel26.conf
 kernel26beyond --> /boot/mkinitcpio-kernel26beyond.conf
  

İpucu! Yapılandırmalarınız ütülenmemesi için pacman.conf içerisinde NoUpgrade bölümüne bu yapılandırma dosyalarını eklemelisiniz.

Hookları Düzenlemek

Bu mkinitcpio yapılandırılmasında en önemli kısımdır.HOOKS satırı görüntüye eklenecek ve çalışma zamanında devreye girecek hookları kapsar.

HOOKS="foo1 foo2 foo3 bar1 bar2"

Mevcut Hooklar

Hook Kurulum süreci Çalışma zamanı
base Açılış Sürecini düzenler ve temel klibc uygulama ve kütüphanerini yükler. Her zaman bu hook'u ekleyin.Tabi ne yaptığınızdan eminseniz göz ardı edebilirsiniz.
udev Görüntüye udev'i ekler Udev kök dizininizin tanınması ve gerekli bütün modulların yüklenmesini sağlar.Kullanmanız önerilir.
modload Başka bir otomatik algılama metodu.Bu hook'u kullanmanız önerilmez udev'i tercih etmelisiniz.
autodetect İhtiyacınız olan modulları otomatik algılama ile initramfs daha küçük boyuta indirger. Bütün gerekeli modulları eklemiş olduğunuzdan emin olmalısınız.Getirisinden yararlanabilmek için diğer hooklardan önce tanımlanmalıdır.Bu sayede bütün gerekli modullar yüklendiğinden boot süreci kısalacaktır.
ide Görüntünüze ide modullarını ekler. Eğer kök dizininiz bir pata diski ise bunu kullanmalısınız.Autodetect ile birlikte kullandığınızda görüntünün boyutunu en aza indirgersiniz. İde moudullarını yükler.Udev yada modload hookları ile birlikte kullanmalısınız.Eğer bu hookları kullanmak istemezseniz kendiniz gerekli moduları düzenleyebilirsiniz.MODULES Satırı.
sata Görüntüye serial ATA modullarını ekler. Eğer kök dizininiz SATA diski ise bunu kullanmalısınız.Autodetect ile birlikte kullandığınızda görüntünün boyutunu en aza indirgersiniz. SATA modullarını yükler. Udev yada modload hookları ile birlikte kullanmalısınız.Eğer bu hookları kullanmak istemezseniz kendiniz gerekli modulları düzenleyebilirsiniz.MODULES Satırı.
scsi Görüntüye SCSI modullarını ekler. Eğer kök dizininiz SCSI diski ise bunu kullanmalısınız. SCSI modullarını yükler. Udev yada modload hookları ile birlikte kullanmalısınız.Eğer bu hookları kullanmak istemezseniz kendiniz gerekli modulları düzenleyebilirsiniz.MODULES Satırı.
usb Görüntüye USB modullarını ekler. Eğer kök dizininiz USB depolama birimi üzenrinde ise bunu kullanmalısınız. USB modullarını yükler.Udev yada modload hookları ile birlikte kullanmalısınız.Eğer bu hookları kullanmak istemezseniz kendiniz gerekli modulları düzenleyebilirsiniz.MODULES Satırı.
usbinput Görüntüye USB HID modullarını ekler. Eğer bir USB klavye sahipsenizseniz bu hook'u eklemelisiniz.Bu sayede şifreli giriş veya güvenli modda sorun yaşmazsınız USB HID modullarını yükler. Udev yada modload hookları ile birlikte kullanmalısınız.Eğer bu hookları kullanmak istemezseniz kendiniz gerekli modulları düzenleyebilirsiniz.MODULES Satırı.
fw Görüntüye Firewire modullarını ekler. Eğer kök dizininiz FW depolama birimi üzenrinde ise bunu kullanmalısınız. FW modullarını yükler. Udev yada modload hookları ile birlikte kullanmalısınız.Eğer bu hookları kullanmak istemezseniz kendiniz gerekli modulları düzenleyebilirsiniz.MODULES Satırı.
net Network cihazları için gerekli modulları yükler. Eğer pcmcia net cihazına sahipseniz pcmcia hook'u da eklemelisiniz. Network modullarını yükler. Udev yada modload hookları ile birlikte kullanmalısınız.Eğer bu hookları kullanmak istemezseniz kendiniz gerekli modulları düzenleyebilirsiniz.MODULES Satırı. İlave yapılandırma için Kernel Komut Satırını Özelleştirmek bölümünü inceleyin.
pcmcia Pcmcia cihazlarıı için gerekli modulları yükler. Kullanabilmek için pcmciautils yüklenmiş olmalıdır. Udev yada modload hookları ile birlikte kullanmalısınız.Eğer bu hookları kullanmak istemezseniz kendiniz gerekli modulları düzenleyebilirsiniz.MODULES Satırı.
dsdt Boot sürecinde özel acpi dsdt dosyasını yükler.Dsdt dosyanızı /lib/initcpio/custom.dsdt içerisine ilave edebilirsiniz. Eğer initramfs içerisinde tanımlanmışsa özel dsdt dosyanız otmatik olarak çekirdek tarafından kullanılacaktır.
filesystems Gerekli dosya sistemi modullarına içerir. Boot sürecinin tamamlanması için gerekli hooklardan biridir. Dosya sisteminizi tanımar , gerekli moudulları yükler ve kinite onaylatır.NOT: reiserfs4 otomatik tanımlanmayacaktır bu yüzden kendiniz MODULES satırını el ile eklemelisiniz.MODULES Satırı.
lvm2 Device mapper çekirdek modulunu ve lvm aracını görüntüye ekler. Kullanabilmek için lvm2 yüklenmiş olmalıdır. Bütün lvm2 oylum gruplarını etkinleştirir. Eğer kök dizininiz lvm üzerinde ise bunu kullanmalısınız.
raid Modulları ve mdassamble(raid yapılandırma yapabileceğimiz bir uygulama) ekler. Kullanabilmek için mdadm yüklenmiş olmalıdır. Yazılımsal raid için gerekli modulları ve raid cihazlarını düzenler. İlave yapılandırma için Kernel Komut Satırını Özelleştirmek bölümünü inceleyin.
encrypt dm-crypt çekirdek modulunu ve cryptsetup araçlarını görüntüye ekler. Kullanabilmek için cryptsetup yüklenmiş olmalıdır. Şifreli kökü tanımlar ve açar. İlave yapılandırma için Kernel Komut Satırını Özelleştirmek bölümünü inceleyin.
resume "Askıya almak" durumundan devam etmeye çalışır. Swsusp ve suspend2. İlave yapılandırma için Kernel Komut Satırını Özelleştirmek bölümünü inceleyin.
firmware /lib/firmware dosyalarını ekler. firmware'yi yükler. Firmware yüklenmesi için udev hook'unu eklemelisiniz.
keymap Rc.conf da tanımlanmış olan keymap ve consolefonts ekler. Belirlenmiş klavye düzeni ve konsol fontlarını yükler.

Örnekler

Bu genel yapılandırma çoğu kullanıcı için çalışacaktır:

HOOKS="base udev autodetect ide scsi sata filesystems"

Eğer görüntüyü birden fazla makinada kullanacaksanız :

HOOKS="base udev ide scsi sata filesystems"

Lvm2 oylum grupları üzerinde şifrelenmiş oylumları kullanabilirsiniz :

HOOKS="base udev autodetect ide scsi sata lvm2 encrypt filesystems"

MODULES Satırı

İstediğiniz modulu önyükleme sürecinde yüklenmesini sağlayabilirsiniz.Eğer udev veya modload kullanmak istemiyosanız gereki modulları kendiniz ekleyerek açılış sürecini hızlandırabilirsiniz:

MODULES="sata_nv reiser4 ..."
HOOKS="base autodetect sata filesystems"


Not: Eğer reiser4 dosya sistemini kullanıyorsanız MODULES satırına eklemelisiniz.

BINARIES ve FILES Satırları

Bu seçenekler sizin görüntünüze istediğiniz dosyayı(Splash ekranı vb) eklemenize olanak sağlıyor.BINARIES ve FILES farkı; BINARIES bağımlılıklar için kütüpaneleri ve ikilikleri kontrol ederken FILES sadece dosyayı ekler.

Örneğin:

FILES="/etc/modprobe.conf"
BINARIES="/usr/bin/somefile"

Görüntü Oluşturmak

Görüntü oluşturmak için :

mkinitcpio -g /boot/kernel26.img

Çalışan kernel için görüntüyü /boot/kernel26.img olarak oluşturur.kernel26beyond kullancılı şu komutu kullamalıdır :

mkinitcpio -g /boot/kernel26beyond.img

Çalışan çekirdek dışında başka çekirdek için :

mkinitcpio -g /boot/kernel26.img -k 2.6.16-ARCH


kernel26 ve,veya kernel26beyond için görüntü oluşturduğunuzda fallback görüntüsüde otomatik oluşacaktır.Ama yeniden oluşturmak isterseniz:

Not: Bu bazen karışık gelebilir.Eğer çalışan kerneliniz haricinde ayrı bir kernel için fallback görüntüsü oluşturmak istiyorsanız gene -k parametresi ile adını belirmelisiniz.
mkinitcpio -c /boot/mkinitcpio-kernel26.conf -g /boot/kernel26.img

beyond için:

mkinitcpio -c /boot/mkinitcpio-kernel26beyond.conf -g /boot/kernel26beyond.img
İpucu! Daha fazla bilgi için mkinitcpio -h çıktısını inceleyebilirsiniz.

Not: Önyükleyicinizi gerektiği şekilde düzenlemeyi unutmayın.Eski initrd görüntüsünü saklamakta fayda vardır.Çünkü mkinitcpio hala beta aşamasındadır.Herhangi bir sorunla karşılaştığınızda eskiye dönmeniz bu sayede daha kolay olucaktır.

Çekirdek Komut Satırını Özelleştirmek

Tıpkı initramfs olmaksızın çekirdek seçeneklerini çekirdek komut satırı yardımıyla düzenleyebileceğiz.Bazı mkinitcpio hookları özel yapılandırma gerektirmektedir.

Failsafe Mode(Güvenli Mod)

Eğer bu seçeneği

break=y

çekirdek komut satırına eklerseniz , yüklenme tamamlandıktan sonra init süreci durur ve dash kabuğu gelir. Bu herşeyin normal çalıştığını kontrol etmemize yarar.Eğer oturumu kapatırsanız , normal boot süreci devam eder.

Hookları Devredışı Bırakmak

'Disablehooks seçeneği ile istemediğiniz hook'u çalışma sürecinde devre dışı bırakabilirsiniz. Örneğin :

disablehooks=resume

Modulları Devredışı Bırakmak

Disablemodules seçeneği istemediğiniz modulu devre dışı bırakabilirsiniz. Örneğin :

disablemodules=ata_piix

Not: Bu seçenek 0.5.1 ve üzeri MKINITCPIO için geçerlidir.

Raid

Uyarı: Raid hook'unu /etc/mkinitcpio.conf altında HOOKS satırına eklemiş olmalısınız.
Dosya: Kernel Parametreleri
 
Sahip olduğunuz md dizilerini '''md=''' parametresi ile belirtmelisiniz.(Boot edeceğiniz raid dizisini eklemeniz yeterli.)

Ve '''grub/menu.lst''' altındaki '''kernel''' satırını aşağıdaki gibi düzenlemelisiniz :
Örnek: md=0,/dev/sda3,/dev/sda4 md=1,/dev/hda1,/dev/hdb1
Çalışan örnek: kernel /vmlinuz26beyond root=/dev/md0 ro md=0,/dev/sda1,/dev/sdb1
  


Dosya: Yapılandırma
 
 -Eski raid dizileri için kalıcı olmayan superblocks:
    md=<md cihaz no.>,<raid seviyesi>,<chunk boyutu çarpanı>,<fault(hata) seviyesi>,dev0,dev1
 -Raid dizileri için kalıcı superblocks
    md=<md cihaz no.>,dev0,dev1,...,devn
 -Bağlananabilir dizileri için:
    md=d<md cihaz no.>,dev0,dev1,...,devn
  


Dosya: Parametreler
 
  - <md cihaz no.> = Md chazının numarası: 
    0=md0, 1=md1, ...
  - <raid seviyesi> = -1 ikizleme modu, 0 bölüştürme modu
    Diğer modlar sadece kalıcı super block ile desteklenmektedir. 
  - <chunk boyut çarpanı > = (Sadece raid-0 ve raid-1 için)
    Chunk boyutunu 4k << n olarak düzenleyin.
  - <fault seviyesi> = tamamen yoksayılmıştır.
  - <dev0-devn>: Örneğin: /dev/hda1,/dev/hdc1,/dev/sda1,/dev/sdb1
  

Net

Using net

Lvm

Uyarı: lmv2 hook'unu /etc/mkinitcpio.conf altında HOOKS satırına eklemiş olmalısınız.

Çekirdek komut satırı :

root=/dev/mapper/<Bölüm grup adı>-<Mantıksal oylum adı>  

Örneğin :

root=/dev/mapper/myvg-root

Encrypted Root(Şifreli kök)

Uyarı: Kök dizininiz şifreli ise encrypt hook'unu /etc/mkinitcpio.conf altında HOOKS satırına eklemiş olmalısınız.Sonrasında kök dizininizi çekirdek komut satırında belirtmelisiniz

Örneğin :

root=/dev/sda5

Şifreli sata yada scsi disk bölümü veya şifreli lvm oylumu için :

root=/dev/mapper/myvg-root

Kök cihazı otomatik olarak /dev/mapper/root şeklinde düzenlenecektir.

LUKS Bölümleri

LUKS yeni nesil hard disk şifreleme standartıdır.Eğer HOOKS altına encrypt eklendiğinde şifrelenme otamatik tanımlanacaktır.

Legacy Cryptsetup Bölümleri

Uyarı: Herhangi hata yaparsanız önyükleme süreci tamamlanmayacaktır.Bu yüzden LUKS kullanmanız önerilir

Eğer legacy cryptsetup oylumu kullanıyorsanız gerekli seçenekleri çekirdek komut satırına eklemelisiniz. Format:

crypto=hash:cipher:keysize:offset:skip

Loop-aes Bölümleri

loop-aes henüz desteklenmemektedir

Using Suspend to Disk

Uyarı: resume hook'unu /etc/mkinitcpio.conf altında HOOKS satırına eklemiş olmalısınız.

Swsusp

Mkinitcpio beta aşamasında olduğu için desteği geliştirilmektedir

µswsusp

µswsusp henüz desteklenmemektedir

Suspend2

suspend2 kullanmak için çekirdek komut satırı seçenekler de resume2'yi belirtmelisiniz. Örneğin :

resume2=swap:/dev/hda3

/dev/hda3 olarak geçen bölüm swap alınızı belirtmektedir.Eğer filewriter yani bir dosyaya yazmak istiyorsanız :

resume2=file:/dev/hda2:0x123456

/dev/hda2 suspend2 görüntüsünü yazacağınız sabit diskinizdeki herhangi bir bölümü belirtmektedir(Genellikle kök dizini kullanılır).0x123456 dosyamızın karşılığı bunu belirlemek için :

echo "/suspend2_file" > /proc/suspend2/filewriter_target
cat /proc/suspend2/resume2

/suspend2_file görüntü dosyasına bağı belirtmektedir.Bu tabiki lvm bölümleri ile birlikte kullanılabilir.Askıya alma dosyanızı şifreli bir bölme de yazabilirsiniz :

resume2=file:/dev/mapper/root:0x123456

0x123456 dosyamızın karşılığı. Şifreli bir bölümde askıya alma önerilez.

Örnek Önyükleyici Yapılandırmaları

Not: Beyond kernel kullanıyorsanız kernel26.img ve kernel26-fallback.img yerine kernel26beyond.img ve kernel26beyond-fallback.img şeklinde düzenlemelisiniz.

GRUB

Dosya: Özel bir boot bölümü varsa
 
 # (0) Arch Linux
 title Arch Linux
 root   (hd0,V)
 kernel /vmlinuz26 root=/dev/XdYZ vga=794 ro
 initrd /kernel26.img
 
 title Arch Linux Fallback
 root   (hd0,V)
 kernel /vmlinuz26 root=/dev/XdYZ vga=791 ro
 initrd /kernel26-fallback.img
  

Dosya: Özel bir boot bölümü yoksa
 
 # (0) Arch Linux
 title Arch Linux
 root   (hd0,V)
 kernel /boot/vmlinuz26 root=/dev/XdYZ vga=791 ro
 initrd /boot/kernel26.img
 
 title Arch Linux Fallback
 root   (hd0,V)
 kernel /boot/vmlinuz26 root=/dev/XdYZ vga=791 ro
 initrd /boot/kernel26-fallback.img
  

LILO

LILO kullanıyorsanız root=/dev/XYZ yerine append="root=/dev/XYZ" kullanmalısınız.Eğer genel append opsiyonunu etkinleştirdiyseniz addappend komut satırını kullanmalısınız.

Dosya: lilo.conf
 
 boot=/dev/hdX 
 default = <Label of default image>
 timeout=50 
 vga=791
 lba32
 prompt
 
 # Donanımı otomatik tanıyacak olan imaj 
 image=/boot/vmlinuz26
 label=ArchLinux
 append="root=/dev/hdXY"
 initrd=/boot/kernel26.img
 read-only
 
 # fallback imajı Herhangi bir sorunla karşılaştığınızda kullanacağınız imaj (Will most prob. never be used)
 image=/boot/vmlinuz26
 label=ArchLinuxFallBack
 append="root=/dev/hdXY"
 initrd=/boot/kernel26-fallback.img
 read-only
  

Bazı Sorunlara Çözümler

piix Ide Kontrolcülari ve Beyond Kernel

Sorun

Eğer "Can't find device dev(0,0)" gibi hatalar alıyorsanız bu demek oluyorki eksik yda çakışan bir durum var.Mesela beyond kernelde bir sürü libata yaması olduğundan ata_piix ve piix çakışabilmektedir.

Çözüm

Önyükleme sürecinin gerçekleşmesi için gereken ide veya sata veya scsi hangi hook ve modul gerekli ise bunu /etc/mkinitcpio.conf dosyasına ekleyerek çözüm getirebilirsiniz.

Konu ile ilgili fikirlerinizi paylaşmak için; Lapis Wiki Başlığı

Kaynak : Arch-wiki (Configuring mkinitcpio)