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 ?
./.config ile . aynı şeyi yapar.
Eski dosya ile derleyeceksen, doğrudan .config olarak kaydet ve normal derleme yap. Tam olarak amacın ne?
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 verildiAlı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ış
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.
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 ?
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.
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
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fwww.imagenic.net%2Fimages%2F80ukm80lw23qizm3xjw.png&hash=132d488d16a0e243599ae2946fbd6e57368b8d89)
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
Ş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.
Ş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
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fwww.imagenic.net%2Fimages%2Fv5a810xql9rxxjd6gf.png&hash=f3c522d221a9329a82faf073edfda6c54ceabc38)
sonrasında(burdan sonra normalde diğer kernellerde açılıyor)
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fwww.imagenic.net%2Fimages%2F4n9xmx26qclrbefm4hux.png&hash=37ac708702d8383981033bbfb4e34a0a59e9bf10)
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
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fwww.imagenic.net%2Fimages%2Flpakcr5j05ng5n6zamv1.png&hash=c52efa66367bade0e8c3ca372528b8406aa53891)
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
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.
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
İşte, es geçince olmaz bazı şeyler. İhtiyacına göre ayarlaman lazım.
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 :)
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.