Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: emagi в Feb 24, 2007, 19:52



Титла: Компилиране на ядро!
Публикувано от: emagi в Feb 24, 2007, 19:52
Със Slackware 11 съм,ядро 2.4.33.3!Искам да си солжа ядро 2.6.20.1,но днес трябва поне 4 пъти да съм преинсталирал Linux-a!Ползвам тази статия http://www.slackersbible.org/?q=node/42 и то стъпка по стъпка,и след рестарт пак черен екран!
Ползвам това ядро:linux-2.6.20.1.tar.gz

Смъкнах го от тук:
http://www.kernel.org/pub/linux/kernel/v2.6/

ПОчти нищо не съм променял чрез make menuconfig ,само някои натройки за PPP,който ми трябваха!

Има ли нещо специално,което трябва да направя?КОмпа е стар,COMPAQ на 500MHz,Pentium III





Титла: Компилиране на ядро!
Публикувано от: ivo1204 в Feb 25, 2007, 18:20
Нямам Slackware,та малко наизуст..
1.Не е нужно да преинсталираш Линукса,не е като Уиндовса.Ако не тръгне с новото ядро ,няма никакъв проблем да тръгне със старото.
Старото ядро не е изтрито.И ако все пак имаш съмнение ,направи си
копие на ядрото и на image файла под други имена.Те са в директория "/boot".Обикновенно се използва символна връзка
"vmlinuz " ,сочеща ядрото и "initrd.img" ,сочеща image файла.
Когато правиш "make install" на ядрото ,тези връзки се променят,"vmlinuz " сочи новото ядро ,но "initrd.img" / или "initrd.gz"/
си сочи старият "image " файл.

2.Копие на ядрото и "image " файла /преди да инсталираш новото ядро/.
Команди ,които изпьлни от терминал:
cd /boot                                           /отиваш в директория /boot  /
ls -l vm*                                            /да покаже връзките/
cp vmlinuz-xxxxxx   vm                  /копираме ядрото като vm /
cp initrd.img-xxxxxx     i.img          /копираме "image " файл като"i.img"/

3.Почти сигурно си с boot loader "GRUB".Процедурата за "GRUB":
Вариант А. Добави в /boot/grub/menu.lst следните редове:

title      My Old Kernel
root      (hd0,2)
kernel/boot/vm  root=/dev/hda3 ...параметри ,копирай от оргинала
initrd      /boot/i.img   /или /boot/initrd.img ,няма значение/
savedefault
boot

title      My New Kernel
root      (hd0,2)
kernel/boot/vm  root=/dev/hda3  
savedefault
boot

/Това е за дял 3 от диска ,разгледай "/etc/fstab",линията
/dev/hda3      /               ext3    defaults,errors=remount-ro 0       1
значи ,че  дяла  "/dev/hda2 " се монтира като "роот",дяла ,кьдето сме
инсталирали Линукса.
Обьрни внимание ,че   в menu.lst ->  root (hd0,2) ,е с 1 по-малко, "GRUB" брои от "0" дяловете.

Вариант В.Направо като рестартораш ,с  "е" редактирай командните
редове ,изчисти линията :
initrd      /boot/initrd.img-xxxx
и всичко от рода "lang=us ..vga=791 ..",след "kernel /boot/vmlinuz"
Клавишите са:
"e" ->edit , "b"->boot   , "d" -> del.

Проблема за черният екран може да е в параметъра "vga=791" ,и зареждането на старият "initrd.img" ,в които са драйверите за старото ядро , затова за да видиш какво става ,махни "vga=791" пьрво.
Ако си с "lilo" файла ,който трябва да редактираш е /etc/lilo.conf
и след това да изпълниш :
#lilo





Титла: Компилиране на ядро!
Публикувано от: PERMANENT в Feb 25, 2007, 20:18
Вместо make install прави
make dep bzImage modules modules_install
после копираш новото ядро kernel-sourse/arch/i386/boot/bzImage
в /boot едитваш си лилото като добавяш в /etc/lilo.conf

image = /boot/bzImage
  root = /dev/hda2 #там които ти е дяла
  label = Slackware[2.6] #това ти е етикета
  read-only

после пишеш в конзолата
lilo
или ако lilo-то ти е в mbr
lilo -M /dev/hda

нормално е като направиш make menuconfig ядрото ти да не тръгва
просто защото не е конфигулирано
виж link


Титла: Компилиране на ядро!
Публикувано от: ivo1204 в Feb 25, 2007, 20:58
"ПОчти нищо не съм променял чрез make menuconfig...."
Ами поне микропроцесора посочи като пентиум 3...
Ще вдигне скороста!


Титла: Компилиране на ядро!
Публикувано от: emagi в Feb 25, 2007, 23:40
Всичко стана,БЛАГОДАРЯ НА ВСИЧКИ,И ТО МНОГО
Обаче сега нямам пинг!Само към 127.0.0.1 има!Да съм забравил нещо да компилирам?


Титла: Компилиране на ядро!
Публикувано от: emagi в Feb 26, 2007, 00:13
Примерно,ако имам работещо ядро 2.4.33.3,и искам да сложа ново 2.6.20.1 примерно,обаче да ползвам натсройките на старото 2.4.33.3,как точно става чрез make oldconfig
1.Разархивирам новото в папка /usr/src
2.създавам символичен линк ln -sfT linux-2.6.20.2 linux
Ами сега?
КАк точно се прави,да надградя старото,тоест да компилирам само новите неща?


Титла: Компилиране на ядро!
Публикувано от: smelkomar в Feb 26, 2007, 02:03
Начинът да обновиш Slackware се нарича SWARET! Потърси в Google...

http://swaret.sourceforge.net/
http://users.piuha.net/martti/comp/slackware/slackware.html

 ;)  ;)  ;)





Титла: Компилиране на ядро!
Публикувано от: ray в Feb 26, 2007, 05:59
Цитат (emagi @ Фев. 26 2007,01:13)
Примерно,ако имам работещо ядро 2.4.33.3,и искам да сложа ново 2.6.20.1 примерно,обаче да ползвам натсройките на старото 2.4.33.3,как точно става чрез make oldconfig
1.Разархивирам новото в папка /usr/src
2.създавам символичен линк ln -sfT linux-2.6.20.2 linux
Ами сега?
КАк точно се прави,да надградя старото,тоест да компилирам само новите неща?

Здравейте,

Първо, не можеш да 'надградиш' само някои (новите) неща.
Ползваш или старото (2.4.Х) ядро с модулите му или компилираш и ползваш новото (2.6.20.Х) с неговите модули.
Не е задължително да имаш модули, но почти всички 'default' конфигурации на ядра/дистрибуции ги ползват.
Конфигурацията на ядрото е в файла ".config", който обикновено се намира в /usr/src/linux - линк към реално разпакетирания код (/usr/src/linux-2.6.20.1 или нещо подобно).
За да се ползва старата конфигурация просто се копира файла ".config" от старата в новата директория и евентуално се сменя линка "linux" да сочи към директорията с новото ядро.
В този (специфичен) случай обаче не препоръчвам да се ползва наготово конфигурация на 2.4-ядро за компилиране на 2.6-ядро.
Има голяма вероятност или да даде грешка при компилация или след това да не работи (или да има някои трудно откриваеми бъгове).
По-добре си запиши някаде конфигурацията на старото и конфигурирай новото по подобен начин.
Успех. Румен


Титла: Компилиране на ядро!
Публикувано от: Hapkoc в Feb 26, 2007, 08:30
ray, мисля че културния начин да си ползваш конфигурацията от старото ядро е след копирането на .config да пуснеш make oldconfig:

Цитат

# make help | grep oldconfig
  oldconfig       - Update current config utilising a provided .config as base


Титла: Компилиране на ядро!
Публикувано от: ray в Feb 26, 2007, 10:11
Здравейте,

По принцип си прав, разбира се (#маке oldconfig), въпреки че и make menuconfig|xconfig също ще свършат работа.
За мен по-важното бе да препоръчам да не ползва наготово конфигурацията от ядро 2.4 за ядро 2.6.
Имал съм проблеми при такав подход, пък и доста често (ML и др.) се препоръчва ядрото 2.4 -> 2.6 да се настрои наново (евентуално с същите параметри).
Много време мина откак минах от 2.4 на 2.6 ;)
Поздрави. Румен


Титла: Компилиране на ядро!
Публикувано от: Gruntz в Feb 26, 2007, 11:01
Здравейте.

Притежавам стар компютър. Има ли смисъл да си обновявам ядрото? Дали едно прекомпилиране на по-ново ядро ще повиши производителноста на компютъра ми. Нямам Serial ATA, нито RADI контролери, абе изобщо целият ми хардуер датира от далечната 1998 година :)

Компютърът ми е нещо подобно:
Процесор: PII MMX ~266MHz
Памет: 3x64MB RAM
Видео: geForce MX440 64MB RAM ( на дъното имам AGP 3x )
Хард диск: 20GB Seagate ( на дънто има IDE 33MHz )
Зеукова карта: ESS AudioDrive ES1869 ( на EISA слот )
Дънната платка ще ви излъжа каква е, май беше на някаква фирма ATC, но несъм сигурен... Имам три USB слотчета на една платка за PCI слот ( VIA USB 2.0 - който USB-та и без това не работят, компютъра ги открива, и линукса също, но немога да монттирам flash-чето си ).

Е какво мислите. Използвам Slackware 11, сега съм си сложил ядро 2.6.18, но не компилирано от мен.


Титла: Компилиране на ядро!
Публикувано от: gat3way в Feb 26, 2007, 11:31
Ами най-вероятно няма, ако ползваш същият .config. Предполагам че може да си билд-неш нещо по-леко и така да спестиш някой друг процент производителност, но това няма връзка с новото ядро. От 2.6.18 нататък няма някакви фундаментални новости, които да позволяват по-добра производителност, а и обикновено като ги има трябва и userspace частта да се възползва от тях.


Титла: Компилиране на ядро!
Публикувано от: ray в Feb 26, 2007, 12:00
Здравейте,

Не че чак толкова го препоръчвам, но едно поорязано ядро ще има по-голям ефект на слаб компютър отколкото на мощен такъв ;)
При мен ядрото винаги е било компилирано - Gentoo ;) така че не мога да съдя от опит.
Просто като факт в момента ядрото ми е ~ 3MB, модулите са ~12 общо около 300 КБ (gcc-4.1.1).
Във ядрата по-подразбиране има доста излишни модули, с цел поддръжка на по-разнообразен хардуер.
Другата програма която има сериозно влияние върху производителността е glibc - при мен е версия 2.5 и е компилирана с опциите: ... nptl nptlonly (нямам threads).
Разбира се не могат да се очакват чудеса.
Успех. Румен


Титла: Компилиране на ядро!
Публикувано от: gat3way в Feb 26, 2007, 12:59
Ммм, аз съм на дебилиан, но винаги си слагам мои си компилирани ядра. Следвам редхадските прийоми и почти всички модули, които някога може да ми се наложи да ползвам с оглед и на смяна и на купуване на нов хардуер, ги компилирам. Има си udev, който решава доста неща вместо мен, хех.  Самият kernel image го орязвам максимално много и рядко надхвърля 2 МБ (тук ми е 1.7 МБ). За жалост, понякога се налага да правя initrd (пак тук, за да може да ползва за root fs един LVM2 logical volume) - цели 4 мегабайта..

Забелязал съм че най-голямо отражение върху производителността оказват разни debugging mode глупости или пък странни features, watchdogs, etc.

// оффтопик:

Performance tunning-a си е забавна тема, може много да се говори, просто има много частни случай и много зависи за какво ползваш системата. Много повече отколкото това колко "дебело" ядро си си билд-нал. Изтискването на максималното  е някаква краста, няма отърване ебаси :) . Напоследък съм се зарибил да се занимавам с разни embedded глупости и ARM архитектури, оказва се че много неща, които съм имал за даденост, придобиват доста различни измерения :) Това си е много забавна тема, установих че съм МНООООООООГО бос в тези неща и че са доста по-сложни отколкото съм мислел. Много ще се радвам ако някой, който се занимава, има желание да обменим малко информация. Засега съм стигнал дотам да си подкарвам и ръчкам разни images, които qemu е така добър да ми емулира все едно native вървят на такъв хардуер. За жалост се подържа само някакъв идиотски "integrator" хардуер, но скоро ще си купя или някаква джаджа от сорта на онези интелски IOP глупости, или ще разфасовам един linksys WRTG и ще го мод-на малко да си играя с него. Мисля, че ембедед нещата са една много забавна и важна част от линукс-света и трябва да има един раздел във форума за подобни неща. Знам също, че има и немалко хора в БГ, които се занимават с това. Много бих искал да се занимавам с такива  джаджи (за жалост имам огромен проблем - скаран съм с хардуера и трябва да си търся разни generic решения).

Та ако тук има хора, които се занимават, в което не се съмнявам, защо не направим и един подфорум с такива теми?  Може да обменяме опит - аз имам доста наблюдения от x86 света, но в тази област съм много бос и ще се радвам някой компетентен да може да обяснява разни неща. Може да правим бартер за идеи, хехе :)

Съжалявам, не му е тук мястото, ще пусна нова тема в "предложения"





Титла: Компилиране на ядро!
Публикувано от: emagi в Feb 26, 2007, 13:49
Аз сега хубаво компилирах новото ядро,но няма пинг между двата ми компютъра!Ако ползвам старото ядро 2.4.33.3 има пинг,но с новото ??? !Къде точно в конфигурацията трябва да обърна особено внимание относно тези модули за лан картите,или изобщо за нета!А и като напиша lsmod не ми покзва нито един модул?Защо?


Титла: Компилиране на ядро!
Публикувано от: gat3way в Feb 26, 2007, 13:59
А, между 2.4 ядрата и 2.6 ядрата има балкан разлика, ще усетиш разлика в производителността, определено, особено за неща дето бълват threads/fork()-ват, или пък за неща дето ядат много РАМ и влизаш в суоп-а.

Що се отнася до пинг-а, вероятно нямаш подръжка за картата си. Или ако е на модул, не си компилирал и инсталирал модула. udev инсталирал ли си? modprobe <драйвера> не помага ли?

Всъщност udev не виждам да има нещо общо с мрежовата карта май. Ама все пак..





Титла: Компилиране на ядро!
Публикувано от: emagi в Feb 26, 2007, 14:17
Драйвера на картата трябва да го търся в /etc/modules.conf нали?


Титла: Компилиране на ядро!
Публикувано от: gat3way в Feb 26, 2007, 14:33
Ооооо, защо не прочетеш малко все пак?

В /lib/modules/`uname -r` се намират иначе.





Титла: Компилиране на ядро!
Публикувано от: Gaara в Feb 26, 2007, 14:37
emagi, време е да научиш основни неща за линукс.
man lspci
man locate
man updatedb
man lsmod
man modprobe
man rmmod





Титла: Компилиране на ядро!
Публикувано от: emagi в Feb 26, 2007, 15:15
Добре,това го прочетох!Само питам:
при командата ifconfig -a
ми изкарва и двете лан карти,всичко си както трябва да бъде,само дето няма ping


Титла: Компилиране на ядро!
Публикувано от: emagi в Feb 26, 2007, 20:02
Копирам .config от папката linux-2.4.33.3 в папка linux-2.6.20.1 (вече имам направен символичен линк към новото ядро linux-2.6.20.1 -->linux и като напиша make oldconfig набързо се изброяват,и 'навъртат' редове( незнам дали ме разбирате) без да ме пита за никаква настройка,и така,доката стигане до празен ред : root@moon:~#
Къде греша,защо отговаря автоматично на въпросите вместо мен?
P.S Като гледам на повечето въпроси автоматично е отговорено с no!





Титла: Компилиране на ядро!
Публикувано от: Hapkoc в Feb 26, 2007, 20:42
make oldconfig "мигрира" конфигурацията от старото ядро към новото. След oldconfig все пак е добре да пуснеш make menuconfig за да си конфигурираш ядрото.


Титла: Компилиране на ядро!
Публикувано от: emagi в Feb 26, 2007, 21:02
Да,това е ясно!Но не трябва ли аз да отговоря на въпросите при конфигурирането,а не операционната система сама да го прави вместо мен!В моя случай това става!


Титла: Компилиране на ядро!
Публикувано от: Hapkoc в Feb 27, 2007, 01:13
Е в make menuconfig не правиш ли точно това бе пиле?


Титла: Компилиране на ядро!
Публикувано от: ivo1204 в Feb 27, 2007, 02:17
Първо ,трябва да знаеш какво има в компютъра ти.
Както виждам ,са ти посочили командата "lspci" ...
Пример за лан картите.Командата:
#lspci  | grep Ethernet
дава при мен:
02:03.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
Номера отпред е ВАЖЕН. Показва къде е включена.Нищо че при мен е интегрирана в дъното , има си място ,като истинска PCI карта.

#lspci -v ти дава  всички ,разширено.
В моя случей е написало и името и модела ,ама като тръгна да конфигурирам ядрото , има два различни драйвера за RLT8139 и за RTL8139C+  /8139cp и 8139too/.Отделно има и 4 опции за 8139too...
Давам командата:
#lspci -n | grep 02:03.0 /При теб това е номера от твоята карта/
02:03.0 0200: 10ec:8139 (rev 10)         или по-просто : #lspci -n
Номера на края "10ec:8139 " е производител:модел  два номера ,и то шестнайтични.
Номера на производителя е 0x10ec.
Номера на модела е :0x8139.От сайта:
http://www.pcidatabase.com/
намираш производителя /Vendor Id/:
ttp://www.pcidatabase.com/vendors.php?sort=id
0x10EC  -> Realtek Semiconductor
От "Devices for this vendor" търсим по втория номер   /0x8139/:
..........
0x8139   Chip Number:   RTL8139
..........Chip Description:  10/100 Mbps Fast Ethernet NIC
...................................................
Разбира се ,в моя случей името бе дадено още от lspci, това го правим ако дава "непознат девайс" ,има проблеми  или не работи.
Сега ,може да търсиш с "Google",да звъниш на производителя /има телефон ,емейл и т.н ,аз обаче не знам тайвански .../ ,да отидеш на неговия сайт и да търсиш информация или по линукските сайтове ,варианти много , ама английски.
Друго ,във файла /var/log/messages е записано какво е ставало по време на стартирането ,какво е открито ,кой драйвер ит,н.
Обаче много по лесно ми се вижда да си стартираш с старото ядро ,
да си дадеш коландата:
"lsmod " и да си запишеш драйверите или да видиш предполагам файла "/etc/modules" ,на Дебиан съм ,нямам Слак ...
Е ,сега може да отвориш конзола и:
cd /usr/src/linux-xxxx
#make oldconfig   е добре.
#make config
Ще има яко питане ,нали за това се оплакваш?
Конфигуратора ,като на linux-2.4.хх
#make menuconfig
е много по удобен.
Има и още по-удобните:
#make gconfig
или
#make xconfig <----Този ти препоръчвам!
http://linuxdevices.com/articles/AT3855888078.html