Nasıl : mkinitcpio Yapılandırılması
From Lapis Wiki
Bu makale NASIL bölümü serisinin bir parçasıdır
|
| MasaÜstü • Donanım • Ağ • Dağıtımlar |
| Tarayıcılar• Programlama • Linux ve Oyunlar |
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
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)

