Jump to content
Sign in to follow this  
mateczek

[Solved]Kompilacja Jądra

Recommended Posts

Geneza:

 

Po aktualizacji jądra nie działa karta wifi

Bus 001 Device 003: ID 148f:3070 Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter 
Ostatnie jądro na którym karta pracuje to 3.7.6-201.fc18.i686.PAE. Dodatkowo problem, który się pojawił wiąże się z tym, iż system się zamyka ale komputer pozostaje włączony.

 

 

Postanowiłem pobawić sie kompilacją jajka, aby sprawdzić jak daleko sięgają problemy i czy zostały poprawione w najnowszych jajkach.

 

 

Problem:

 

Po skompilowaniu jądra generuje mi wielki plik initramfs o rozmiarze 9MB Po wykonaniu standardowych komend

make make install make_modules install do gruba automatycznie dopisuje mnie się nowe jajko

 

menuentry 'Fedora (3.8.0)' --class fedora --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-e8de3a38-fd8f-4631-9a70-87e4f5806be2' {	load_video	set gfxpayload=keep	insmod gzio	insmod part_msdos	insmod ext2	set root='hd0,msdos1'	if [ x$feature_platform_search_hint = xy ]; then	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  e8de3a38-fd8f-4631-9a70-87e4f5806be2	else	  search --no-floppy --fs-uuid --set=root e8de3a38-fd8f-4631-9a70-87e4f5806be2	fi	echo 'Loading Fedora (3.8.0)'	linux	/boot/vmlinuz-3.8.0 root=UUID=e8de3a38-fd8f-4631-9a70-87e4f5806be2 ro rd.md=0 rd.lvm=0 rd.dm=0 rd.luks=0  rhgb quiet LANG=pl_PL.UTF-8	echo 'Loading initial ramdisk ...'	initrd /boot/initramfs-3.8.0.img}
Wszystko startuje i system się podnosi.

 

Problem zaczyna być gdy zachaszuje linijkę od initrd. Wówczas występuje błąd kernel panic  - nie można zamontować partycji root

 

Gdy system wystartuje z initrd i wykonam komendę lsmod to mam taki wynik: Nie widzę tu żadnego modułu związanego z dyskiem lub partycją rot (system plików ext4 wkompilowany na stałe)

 

Module                  Size  Used byipt_MASQUERADE         12760  1 nf_conntrack_netbios_ns    12585  0 nf_conntrack_broadcast    12487  1 nf_conntrack_netbios_nsip6table_mangle        12620  1 ip6t_REJECT            12826  2 nf_conntrack_ipv6      18318  23 nf_defrag_ipv6         17824  1 nf_conntrack_ipv6iptable_nat            12867  1 nf_nat_ipv4            13039  1 iptable_natnf_nat                 24669  3 ipt_MASQUERADE,nf_nat_ipv4,iptable_natiptable_mangle         12615  1 nf_conntrack_ipv4      14320  20 nf_defrag_ipv4         12601  1 nf_conntrack_ipv4xt_conntrack           12664  42 nf_conntrack           72168  9 nf_conntrack_netbios_ns,ipt_MASQUERADE,nf_nat,nf_nat_ipv4,xt_conntrack,nf_conntrack_broadcast,iptable_nat,nf_conntrack_ipv4,nf_conntrack_ipv6ebtable_filter         12715  0 ebtables               21316  1 ebtable_filterip6table_filter        12711  1 ip6_tables             17634  2 ip6table_filter,ip6table_manglearc4                   12543  2 nls_utf8               12493  1 ath5k                 171927  0 snd_via82xx            28422  2 ath                    18606  1 ath5ksnd_ac97_codec        104853  1 snd_via82xxac97_bus               12630  1 snd_ac97_codecsnd_mpu401_uart        13712  1 snd_via82xxmac80211              503727  1 ath5ksnd_seq                54699  0 cfg80211              429908  3 ath,ath5k,mac80211snd_pcm                85985  2 snd_via82xx,snd_ac97_codecsnd_page_alloc         13852  2 snd_via82xx,snd_pcmsnd_timer              23742  2 snd_pcm,snd_seqvia_rhine              27610  0 gameport               14586  1 snd_via82xxsnd_rawmidi            24537  1 snd_mpu401_uartsnd_seq_device         13824  2 snd_seq,snd_rawmidisnd                    62923  12 snd_via82xx,snd_ac97_codec,snd_timer,snd_pcm,snd_seq,snd_rawmidi,snd_mpu401_uart,snd_seq_devicerfkill                 20755  2 cfg80211mii                    13311  1 via_rhinei2c_viapro             13096  0 soundcore              14123  1 snd
Wie ktoś co trzeba wkompilować na stałe w jajko aby kernel się podniósł bez initrd??

 

 

dodam jeszcze wynik komendy lspci odnośnie ide

 

00:11.1 IDE interface [0101]: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE [1106:0571] (rev 06) (prog-if 8a [Master SecP PriP])	Subsystem: VIA Technologies, Inc. VT82C586/B/VT82C686/A/B/VT8233/A/C/VT8235 PIPC Bus Master IDE [1106:0571]	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-	Latency: 32	Interrupt: pin A routed to IRQ 16	Region 0: [virtual] Memory at 000001f0 (32-bit, non-prefetchable) [size=8]	Region 1: [virtual] Memory at 000003f0 (type 3, non-prefetchable)	Region 2: [virtual] Memory at 00000170 (32-bit, non-prefetchable) [size=8]	Region 3: [virtual] Memory at 00000370 (type 3, non-prefetchable)	Region 4: I/O ports at fc00 [size=16]	Capabilities: [c0] Power Management version 2		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-	Kernel driver in use: pata_via
Kernel driver in use: pata_via. Próbowałem na sterowniku IDE_via również wkompilowanym na stałe ale efekt ten sam (bez initrd również kernel Panic)

 

Po prostu pomysły mnie się skończyły :P

Share this post


Link to post
Share on other sites

Nie wiem jak inni ale ja się zgubiłem w tym co chcesz zrobić.

Na początku wydawało mi się, ze chcesz dodać tylko jakiś moduł jądra, żeby mieć obsługę karty, potem piszesz, że niby działa, ale na koniec doszedłeś do absurdalnego dość pytania jak uruchomić kernel bez initrd :)

 

Druga sprawa, to czy zależy Ci koniecznie na nowym jadrze? Skoro na starym działało, to może po prostu daruj sobie kompilację jądra (do tego jeszcze 3.8 :)) i uruchamiaj ze starego.

 

W czym problem? O co chodzi?

Share this post


Link to post
Share on other sites

problemy mam dwa

 

1. komputer nie da się wyłączyć bez użycia twardego resetu

2 W sterowniku karty ralink rt2800usb jest błąd i już wiem, że ciągnie się aż do wersji jądra 3.8 bo właśnie je testuje.

 

[  114.251577] usb 1-1: new high-speed USB device number 6 using ehci-pci
[  129.388149] usb 1-1: device descriptor read/64, error -110
[  144.626699] usb 1-1: device descriptor read/64, error -110
[  144.829658] usb 1-1: new high-speed USB device number 7 using ehci-pci
[  159.965233] usb 1-1: device descriptor read/64, error -110
[  175.202784] usb 1-1: device descriptor read/64, error -110
[  175.405743] usb 1-1: new high-speed USB device number 8 using ehci-pci
[  185.831069] usb 1-1: device not accepting address 8, error -110
[  185.933055] usb 1-1: new high-speed USB device number 9 using ehci-pci
[  196.357377] usb 1-1: device not accepting address 9, error -110
[  196.357407] hub 1-0:1.0: unable to enumerate USB device on port 1
[  196.583341] usb 2-1: new full-speed USB device number 2 using uhci_hcd
[  196.715335] usb 2-1: not running at top speed; connect to a high speed hub
[  196.755328] usb 2-1: New USB device found, idVendor=148f, idProduct=3070
[  196.755335] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  196.755339] usb 2-1: Product: 802.11 n WLAN
[  196.755343] usb 2-1: Manufacturer: Ralink
[  196.755346] usb 2-1: SerialNumber: 1.0
[  197.056437] usb 2-1: reset full-speed USB device number 2 using uhci_hcd
[  197.327978] ieee80211 phy1: Selected rate control algorithm 'minstrel_ht'
[  197.332322] usbcore: registered new interface driver rt2800usb
[  248.361905] phy1 -> rt2x00usb_vendor_request: Error - Vendor Request 0x06 failed for offset 0x0404 with error -110.


 

kiedyś bardzo dawno kompilowałem jądro na genetto i tam nie trzeba było initramfs aby kernel wystartował. Tutaj widać jest to niezbędne choć nie znam powodu dlaczego?? Poza tym initramfs dostarczony oryginalnie z fedorą ma 2MB a ten co mi się stworzył  ma aż 9 MB. to mnie skusiło do pozbycia się tego pliku.

 

Aktualizacje fedory usuwają stare jajka więc nie mam już poprawnie działającego (na momim kompie) jądra. Myślałem, iż najnowsze skompilowane samodzielnie zadziała (chodziło mi również o sprawdzenie czy bug został usunięty.).

Share this post


Link to post
Share on other sites

Najprośćiej:

ściągnij kenel*.src.rpm w wersji która Ci działała, przebuduj paczkę (rpmbuild, → http://wiki.fedora.pl/wiki/Rpmbuild ) a potem zablokuj w /etc/yum.conf aktualizację jądra dopisując linię

exclude=kernel*
Jeśli korzystasz np. ze sterowników nvidia, to będziesz musiał je dopasować do wersji kernela, która skompilujesz i też zablokować aktualizację. Wtedy stosowna linia w yum.conf wygląda tak
exclude=kernel*,*nvidia*

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...