[Çözüldü]Kernel derlerken config dosyası ?

Başlatan fenerista, 16 Ekim 2009 - 22:25:02

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

fenerista

Eski configi kullanmak için aşağıdaki komutu çalıştırdım(derleyeceğim
linux kernel dizisindeyken)

cp /boot/config-`uname -r` ./.config

bu komut şimdi bulunduğumuz dizine config dosyasını mı kopyalıyor ?
Baktığımda göremedim.
kodun "./.config" kısmının işlevi ney ?
Ayrıca bu komuttan sonra make oldconfig yaptığımda bir sürü soru sormaya başlıyor ?
Eski configi kullanmıyormu zaten ?

ayrıca komutun doğru bir şekilde çalıştırıldığını nasıl anlayabilirim ?

heartsmagic

./.config ile . aynı şeyi yapar.

Eski dosya ile derleyeceksen, doğrudan .config olarak kaydet ve normal derleme yap. Tam olarak amacın ne?
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

fenerista

#2
Alıntı yapılan: heartsmagic - 16 Ekim 2009 - 22:27:14
./.config ile . aynı şeyi yapar.

Eski dosya ile derleyeceksen, doğrudan .config olarak kaydet ve normal derleme yap. Tam olarak amacın ne?

Ben eski config dosyamı kullanarak yeni kernel yüklemek istiyorum. Bunu yapmaya çalışırken işte config dosyasını yukardaki gibi yeni kernel dizinime kopyalamaya çalıştım ama yeni kernel dizinde config dosyası falan göremedim. Sonra işte make oldconfig(bu komut kopyaladığım config dosyasını kullanıyor değilmi ?) yaptım. Ama bir sürü soru soruyor sonra ben soru  sormasını diye eski config dosyasını kullanmak istiyorum zaten make oldconfig den sonra gelen şeyler şunlar

root@baron-desktop:/usr/src/kernels/linux# make oldconfig
 HOSTCC  scripts/basic/fixdep
 HOSTCC  scripts/basic/docproc
 HOSTCC  scripts/basic/hash
 HOSTCC  scripts/kconfig/conf.o
scripts/kconfig/conf.c: In function 'conf_askvalue':
scripts/kconfig/conf.c:105: UYARI: 'fgets' dönüş değeri yoksayılıyor, warn_unused_result özniteliği ile bildirilmiş
scripts/kconfig/conf.c: In function 'conf_choice':
scripts/kconfig/conf.c:307: UYARI: 'fgets' dönüş değeri yoksayılıyor, warn_unused_result özniteliği ile bildirilmiş
 HOSTCC  scripts/kconfig/kxgettext.o
 SHIPPED scripts/kconfig/zconf.tab.c
 SHIPPED scripts/kconfig/lex.zconf.c
 SHIPPED scripts/kconfig/zconf.hash.c
 HOSTCC  scripts/kconfig/zconf.tab.o
 HOSTLD  scripts/kconfig/conf
scripts/kconfig/conf -o arch/x86/Kconfig
#
# using defaults found in /boot/config-2.6.28-11-generic
#
/boot/config-2.6.28-11-generic:945:warning: symbol value 'm' invalid for FB_VESA
/boot/config-2.6.28-11-generic:1027:warning: symbol value 'm' invalid for GFS2_FS_LOCKING_DLM
/boot/config-2.6.28-11-generic:1312:warning: symbol value 'm' invalid for INET_LRO
/boot/config-2.6.28-11-generic:1441:warning: symbol value 'm' invalid for IP_DCCP_CCID3
/boot/config-2.6.28-11-generic:1445:warning: symbol value 'm' invalid for IP_DCCP_TFRC_LIB
/boot/config-2.6.28-11-generic:2581:warning: symbol value 'm' invalid for RFKILL_INPUT
/boot/config-2.6.28-11-generic:3311:warning: symbol value 'm' invalid for THRUSTMASTER_FF
/boot/config-2.6.28-11-generic:3926:warning: symbol value 'm' invalid for ZEROPLUS_FF
*
* Restart config...
*
*
* General setup
*
Prompt for development and/or incomplete code/drivers (EXPERIMENTAL) [Y/n/?] y
Local version - append to kernel release (LOCALVERSION) []
Automatically append version information to the version string (LOCALVERSION_AUTO) [N/y/?] n
Kernel compression mode
> 1. Gzip (KERNEL_GZIP) (NEW)
 2. Bzip2 (KERNEL_BZIP2) (NEW)
 3. LZMA (KERNEL_LZMA) (NEW)


Eski configi kullanıyor mu acaba ? yukarda /boot/config-2.6.28-11-generic görmüş amaaltta restaring config de yazmış.

şimdi buradaki  compression mode u neden soruyor ?   # make bzImage vardı internette kendiğilinden mi yapıyor bunu yoksa başka bir şey mi bu ?

gerçi bilmiyorum sorması normal mi de neyse en kısayoldan kerneli derleyip kurup kullanmam lazım.


Tam olarak bi derleme komutlarını yazarsan iyi olur ayrıca :) kanser etti bu beni

make oldconfig dedikten sonra
make
make install demek yeterlimi
mesela okuldaki hocam şöyle yazmış make oldconfigden sonra

#make all#make modules_install//yan yana yazarken ikisinde biri mi demek isityor onu da anlamadım da
#make install


make all hangi işlemleri yapıyorki interntten okadar baktım make all u kimse derlerken kullanmamış
bazısı işte yukardaki gibi sadece make ve make install komutları yeterli demiş 2.6 sürümünden sonrakiler için.

İnternette çoğu yerde make menuconfig de kullanmış bunu ne diye kullanıyoruz onu da anlamıyorum ?

Yeni kerneli yüklemeye çalışırken anca  aşağıdakileri yapabildim :)

sudo su
[sudo] password for baron:
//sistemde yönetici olundu
cd /usr/src
//usr/src klasörüne gelindi
mkdir kernels
//kernels klasörü yapıldı
cd /usr/src/kernels
//kernels dizinine gelindi
tar -xvjf linux-2.6.31.3.tar.bz2
//yeni linux kerneli kernels klasörüne çıkarıldı.
usr/src/kernels# rm linux
//varsa linux dosyası silindi
ln -s linux-2* linux
//yeni kernelin klasörü için bağlantı oluşturuldu
cd linux
//kernels deki linux bağlantısıyla
//yeni kernel dizininin içine girildi
make mrproper
//eski derlemeden kalan artıklar temizlendi


Biyerde soruma şu cevaplar verildi
Alıntı Yap
> Eski configi kullanmak için aşağıdaki komutu çalıştırdım(derleyeceğim
> linux kernel dizisindeyken)

> cp /boot/config-`uname -r` ./.config

> bu komut şimdi bulunduğumuz dizine config dosyasını mı kopyalıyor ?

Eğer kullandığın dağıtım .config dosyasını  /boot/config-'uname -r'/ altında
tutuyorsa cevap evet. Ama bazı dağıtımlar farklı dizinlerde tutabiliyorlar.

> Baktığımda göremedim.
> kodun "./.config" kısmının işlevi ney ?

.config ise .config ismiyle kopyalanmasını sağlıyor yani eğer kernel dizini
içindeysen orada bulunan .config dosyanının üzerine yazmış oluyorsun.

> Ayrıca bu komuttan sonra make oldconfig yaptığımda bir sürü soru
> sormaya başlıyor ? Eski configi kullanmıyormu zaten ?

Eski configi kullanıyor ama yeni kernele eklenen yeni özelliklerle ilgili
bir kaç soruya cevap vermek gerekiyor sanırım.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 31 Aralık 1969 - 15:59:59

Bu arada .config dosyasını niye göremediğimi buldum, gizli dosyaymış yav :) düşünmüştüm bunu da sorma gereği duymadım neyse config dosyam kopyalanıyormuş devamında make oldconfig dedim ve bir sürü soru sormya başladı hepsini enterlayarak geçtim(kernel config yanlış olmuştur herhalde)

make all
make modules_install
make install deyip bırakacam

nette make modles komutunu da söylüuyordu ama okuldaki hocam sadece yukarıdakini yazmış

heartsmagic

Biraz karışık bir soru olmuş :) Özellikle kod etiketi içindeki yorumlar ve komutların kendisi karışmış. Sen sadece komutları kod etiketi içinde ver, yorum kısımlarını bizler yapalım :)

Şimdi, evet .config gizli dosyadır doğrudan göremezsin.
ls -a ile o dizindeyken görürsün.

Gelelim derleme işlemine. Kernel derleme adımlarını ben kabaca yazayım. (Dikkat kabaca)

1. Yapılandırma
make menuconfig
Bu aşama ile yapılandırma dosyasını oluşturursun. Ncurses arabirimi ile yaparsın. Alternatifleri:
make config
Bu en temel yöntemdir. Her şeyi sorularla sen cevaplarsın.
make xconfig
Bu daha farklı bir arayüz sunar ve yanlış hatırlamıyorsam qt kütüphaneleri ister.

Bu üçünden birini kullandığında elinde bir .config dosyan olur. Derlemeye geçilebilir

2.
make bzImage
Kernel "imajı" oluşur.
3.
make modules && make modules_install
Varsa modüller derlenir ve yüklenir. Ardından tutarsın kernel "imaj"ını ilgili dizine -yani /boot- kopyalar gerekli ayarlamalarını yaparsın.


Senin durumunda ise eski .config dosyası kullanılmak isteniyor. Evet oldconfig gerekebilir zira arada değişen şeyler olmuştur. Fakat kernel serisini atlamışsan bunu kullanma. Örneğin 2.4->2.6 geçişi yapıyorsan kullanma. Bana kalırsa hiç kullanma, her şeyi yeniden ayarla. Böylesi daha sağlıklı. Ancak deneyeceğim diyorsan, kernel derleyeceğin dizindeki -varsa- .config dosyasını sil ve kendi dosyanı kopyala. Ardından

make oldconfig yap, soruları doğru bir şekilde cevapla. Ardından 2. ve 3. adımdakileri uygulayarak kerneli derle.

Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

fenerista

#4
karışıklık için özür dilerim :)

oldconfig le kerneli derledim ve yükledim

make oldconfig
make all
make modules_install
make install


bu komutlardan sonra boot klasöründe yeni kernelin system.map-kernelrelease ve vmlinux-kernelrelease dosyalarını oluşturdu lib/modules/kernelrelease klasörü oluşturuldu.

yalnız

make bzImage komutunu yapmamıştım. Şimdi yaptım arch/x86/boot/bzImage dosyasını oluşturdu.(gerçi boot klasöründeki vmlinux... dosyası var zaten yeni kernel için)



Şimdi linux u yeni kernel ile açmak için lilo yu yükledim apt-get install ile ve aşağıdaki hataları aldım

WARNING: kernel & initrd not found in the root directory (/vmlinuz & /initrd.img)
WARNING: Do NOT reboot or LILO may fail to boot if your kernel+initrd is large.
WARNING: Please read /usr/share/doc/lilo/README.Debian

ve /etc klasöründe lilo.conf dosyası yok

eğer lilo için bir çözümün yoksa başka nasıl yeni kernelden açabilirim ubuntuyu ?

heartsmagic

Ne Lilo'su :) Sen Ubuntu kullanmıyor musun? Grub ile hallet işini. Açıklayayım bunu ancak önce arada kafanı karıştıran şeyleri anlatayım.

make bzImage yapmana gerek yok zaten sen make all ile halletmişsin işini. Ben kabaca derken aslında biraz elle derleme anlattım. Benim anlattığım şekilde arch/... altına kernel derlenip konur. Sen bunu elle taşırsın /boot dizini altına. Fakat sen fazladan make install demişsin ki bu kerneli zaten sürüm ismiyle /boot altına atar. Ben pek kullanmazdım zamanında, Ubuntu altındaysa hiç kernel derlemedim, bu nedenle kabaca ve elle anlatım yaptım.

Aldığın uyarılar initrd için. Normalde elle derlemelerde ihtiyaç olmaz buna. Tabii, kendin bunu düşünerek bir kernel derlediysen bilemem. Örneğin initrd kullanacak bir şey yapmışsındır da kernel yüklemesinden önce devreye sokmak istemişsindir. Bunun dışında ben yine initrd kullanmazdım. Sen de ihtiyaç duymuyorsan muhtemelen kullanmayacaksın.

Şimdi gelelim Grub kısmına. Yapacağın tek şey elle derlediğin kerneli menu.lst dosyana eklemek.

sudo gedit /boot/grub/menu.lst
ile dosyayı aç ve istediğin bir yere -örneğin kendi kernelin en üste gelecek şekilde- ekle. Kabaca şöyle bir şey olacak:

Alıntı Yaptitle           Ubuntu-Kendi Kernelim
root            (hdX,Y)
kernel          /boot/kernel_ismi root=/dev/hdaX ro quiet
savedefault
boot


Renkli kısımları değiştirmen gerektiğini söylememe sanırım gerek yok. Kendi disk bölümlerine ve kernel sürüm ismine göre değişiklik yapacaksın. O dosyadaki disk bölümlerini kullanabilirsin, zaten aynısı olacaktır.

Ancak bir şey söyleyeyim. Mesele aslında kerneli derlemek değildir. Derlemek kolaydır, mesele yapılandırma işlemidir. Donanımına göre veya istediğin sisteme göre doğru yapılandırmayı yapamamışsan zaten birçok şey eksik olur, hatta kernelle sistemi bile açamazsın.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

fenerista

Beklediğim gibi başlatamadım yeni kernelle  :D

bu arada sendeki hd(x,y) gibi bişey bulamadım
başlarken booting from(hd 0,0) ext3 yazıyordu.

title           Ubuntu-Kendi Kernelim
root            (hd0,0)
kernel          /boot/kernel_ismi root=/dev/hda0 ro quiet
savedefault
boot

root=/dev/hda1 de denedim olmadı aşağıdaki hatayı aldım



bu arada ubuntuyu vmware den kullanıyorum :)

title      Ubuntu 9.04, kernel 2.6.28-11-generic
uuid      23792036-6ca2-4727-a8c1-0cc044b2e959
kernel      /boot/vmlinuz-2.6.28-11-generic root=UUID=23792036-6ca2-4727-a8c1-0cc044b2e959 ro quiet splash
initrd      /boot/initrd.img-2.6.28-11-generic
quiet

title      Ubuntu 9.04, kernel 2.6.28-11-generic (recovery mode)
uuid      23792036-6ca2-4727-a8c1-0cc044b2e959
kernel      /boot/vmlinuz-2.6.28-11-generic root=UUID=23792036-6ca2-4727-a8c1-0cc044b2e959 ro  single
initrd      /boot/initrd.img-2.6.28-11-generic

title      Ubuntu 9.04, memtest86+
uuid      23792036-6ca2-4727-a8c1-0cc044b2e959
kernel      /boot/memtest86+.bin
quiet

heartsmagic

Şu şekilde dene o zaman:

Alıntı Yaptitle      Ubuntu kendi kernelim
uuid      23792036-6ca2-4727-a8c1-0cc044b2e959
kernel      /boot/kernel_ismi root=UUID=23792036-6ca2-4727-a8c1-0cc044b2e959 ro quiet splash
quiet

Gördüğün gibi değiştirecek sadece bir yer var. O da kendi derlediğin kernelinin ismi.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

fenerista

Şu ana kadar olan yardımların için çok teşekkür ederim.(şimdiye kadar bi forumdan hele bir kişiden aldığım en fazla yardım sanırım  ;)) Baya bi yardımcı oldum valla. Bundan sonrası için sıkıldıysan bu konudan boşver :)

1. hata



sonrasında(burdan sonra normalde diğer kernellerde açılıyor)



bu hata geldi.

initrd zorunluysa nasıl yapabilirim bunu mkinitrd diye komut görüyorum ama uçbirim tanımıyor sanırım

bu arada aşağıda biraz, detaylı bilgiler vereyim

boot


menu.lst

title      Ubuntu kendi kernelim
uuid      23792036-6ca2-4727-a8c1-0cc044b2e959
kernel      /boot/vmlinuz-2.6.31.3 root=UUID=23792036-6ca2-4727-a8c1-0cc044b2e959 ro quiet splash
quiet


title      Ubuntu 9.04, kernel 2.6.28-11-generic
uuid      23792036-6ca2-4727-a8c1-0cc044b2e959
kernel      /boot/vmlinuz-2.6.28-11-generic root=UUID=23792036-6ca2-4727-a8c1-0cc044b2e959 ro quiet splash
initrd      /boot/initrd.img-2.6.28-11-generic
quiet

title      Ubuntu 9.04, kernel 2.6.28-11-generic (recovery mode)
uuid      23792036-6ca2-4727-a8c1-0cc044b2e959
kernel      /boot/vmlinuz-2.6.28-11-generic root=UUID=23792036-6ca2-4727-a8c1-0cc044b2e959 ro  single
initrd      /boot/initrd.img-2.6.28-11-generic

title      Ubuntu 9.04, memtest86+
uuid      23792036-6ca2-4727-a8c1-0cc044b2e959
kernel      /boot/memtest86+.bin
quiet



heartsmagic

Dosya sistemini modül olarak mı ayarladın yoksa gömdün mü? Dediğim gibi kerneli derlemek sorun değil, yapılandırma ayarları çok daha önemli.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

fenerista

Alıntı yapılan: heartsmagic - 18 Ekim 2009 - 23:29:14
Dosya sistemini modül olarak mı ayarladın yoksa gömdün mü? Dediğim gibi kerneli derlemek sorun değil, yapılandırma ayarları çok daha önemli.

Ben yapılandırmayla hiç uğraşmadım(bilmiyorumda pek yapılandırmayı öyle es geçditm:) bundan dolayı olabilir sorun. Neyse artık bakacaz

Tekrar teşekkürler

heartsmagic

İşte, es geçince olmaz bazı şeyler. İhtiyacına göre ayarlaman lazım.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

fenerista

Sorun initrd dosyasıymış mkinitramfs -k -o /boot/initrd-2.6.31.3.img 2.6.31.3 komutuyla initrd dsoyası yapıldı. ve menu.lst aşağıdaki şekilde güncellendi.

Ubuntuyu yeni kernelden başlatmak için /boot/grub klasöründeki menu.lst dosyasına aşağıdaki satırlar eklendi

title      Ubuntu kendi kernelim
uuid      23792036-6ca2-4727-a8c1-0cc044b2e959
kernel      /boot/vmlinuz-2.6.31.3 root=UUID=23792036-6ca2-4727-
a8c1-0cc044b2e959 ro quiet splash
initrd /boot/initrd-2.6.31.3.img
quiet

Paylaşmak güzeldir :)

heartsmagic

Demek ki initrd'ye ihtiyaç duyan bir yapılandırma var kernelde. Örneğin dosya sisteminin doğrudan gömülmemesi gibi. Geri bildirim için teşekkürler, geçmiş olsun.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.