Nowe posty

Autor Wątek: kernel panic  (Przeczytany 5456 razy)

Krzysiek1990

  • Gość
kernel panic
« dnia: 2009-12-30, 11:58:21 »
Witam! Znalazłem trochę wolnego czasu i znowu męczę się z jajkiem.

Otóż przy kompilacji z palca mam coś takiego bez względu na to jak skonfiguruję kernel.
VFS: Cannot open root device "sda2" or unknown-block(0,0)
Please append a correct "root=" boot option
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
Nie mam pojęcia co robię źle.

Zastanawiam się nad takim rozwiązaniem:
1)skompilować kernela za pomocą genkernela
2)zmieniać .config krojąc go i wywalając co zbędne

Tyle, że teraz initramfs-genkernel* zajmuje przecież ok 40 MB (nie pamiętam dokladnie ale chyba mniej) a moja partycja wystacza na jedno takie coś z tym initem.

Nie wiem już jak się do tego zabrać.
Proszę was o rady. Każda wskazówka będzie dla mnie cenna.

Pozdrawiam

arctgx

  • Gość
kernel panic
« Odpowiedź #1 dnia: 2009-12-30, 12:22:03 »
Chyba najlepiej podejrzeć, jakie moduły są załadowane w działającym systemie, a potem wkompilować je na stałe lub dostarczyć do initrd (tylko potrzebne, by jądro dostało się do gł. systemu plików). Pomoc w konfiguratorze jądra zazwyczaj mówi, jaki moduł dostarczany jest do danej konfiguracji (o ile dotyczy ona modułu, rzecz jasna). Dystrybucje typu live często ładują zbyt dużą liczbę modułów.

Najlepiej spojrzeć do dmesg. Jeśli dany moduł robi coś znaczącego poza informacją o załadowaniu, zazwyczaj zostawia o tym jakiś wpis. Dotyczy to też sterów wbudowanych w jądro.

Nie pracuję teraz na jądrze skompilowanym własnoręcznie, więc nie potwierdzę czy katalog /sys/module zawiera info również o sterach wbudowanych na stałe w jądro.

ra-v

  • Gość
kernel panic
« Odpowiedź #2 dnia: 2009-12-30, 20:10:47 »
w grub.conf masz moze coś w stylu
kernel /vmlinuz-2.6.30.9 ro root=UUID=42615eda-####urkyte##### rhgb
?
Jeśli tak to zmień np. na
kernel /vmlinuz-2.6.30.9 ro root=/dev/sda2
gdzie /dev/sda to główna partycja

Druga rzecz
(BTW do konfiguracji jądra używam polecenia "make xconfig", czylu qconf-a)
off - ATA/ATAPI/MFM/RLL support (IDE)
on - SCSI device support
on - Serial ATA (prod) and Parallel ATA (experimental) drivers (ATA)
  oraz zawarty w nim Generic ATA support (ATA_GENERIC) = on
we FileSystems mam włączone wszystkie Ext*, Quita, JFS, Inotify i FUSE

Wiem że miałem tez coś nagrzeban, jak miałem IDENTYCZNY błąd, ale nie pamiętam dokładnie co robiłem. Mniej więcej coś w wyżej opisanym stylu.

http://pliki.rh.cba.pl/config.html - moja konfiguracja jądra, może pomoże

darko

  • Gość
kernel panic
« Odpowiedź #3 dnia: 2009-12-30, 21:24:29 »
Bo to nie jest problem związany z jądrem tylko z bootloaderem.
Po prostu system informuje cię, że nie może znaleźć (prawidłowej) partycji root - to wina źle skonfigurowanego bootloader'a. Możliwe też, że nowe jądro nie "widzi" twojego dysku jako sda lecz hda.

Krzysiek1990

  • Gość
kernel panic
« Odpowiedź #4 dnia: 2009-12-30, 23:15:33 »
arctgx:
Czytalem ze jest skrypt ktory wyboiera opcje z dzialajacego kernela. Faktycznie sprobuje poszukac w dmesg.

ra-v:
Wpis jest wpozadku. Sam wpisywalem wlasnorecznie. A .config napewno sie przyda. Tylko jakbys mogl mi jeszcze powiedziec czy .config jest z laptopa czy z pc?

darko: no duzo jest w sieci o tym, ze to wina bootloadera ale zmienialem wszystko jak sie tylko da po kilka razy i nic to nie pomoglo.

Czy moglbym prosic jeszcze kogos kto pracuje na laptopie i sam budowal kernela o przeslanie mi .configa? Sugerujac sie wieksza iloscia takich .configow moglbym wiecej zdzialac.

PS. Podczas budowaja jajka za pomoca genkernela buduje on ten plik initrd. Czym on wlasciwie jest? Czytalem ze tworzy ... cos z bootwaniem bylo. Czy po takim genkernelu moge bez obaw zmieniac opcje w jajku i kompilowac je bez uzycia genkernela?

arctgx

  • Gość
kernel panic
« Odpowiedź #5 dnia: 2009-12-31, 00:42:26 »
Cytat: darko
Bo to nie jest problem związany z jądrem tylko z bootloaderem.
Po prostu system informuje cię, że nie może znaleźć (prawidłowej) partycji root - to wina źle skonfigurowanego bootloader'a. Możliwe też, że nowe jądro nie "widzi" twojego dysku jako sda lecz hda.
Dobrze skonfigurowany rozruch (w tym nazewnictwo dysków) na nic się nie zda, jeśli jądro nie ma wbudowanych (lub zaczerpniętych jako moduły z initrd) sterowników potrzebnych do obsługi głównego systemu plików przynajmniej do odczytu.

Napiszę trzeci raz w tym wątku: initrd to zasobnik sterowników, skryptów i innych plików potrzebnych do obsługi... (patrz akapit wyżej) ;) Jeśli jądro zdobędzie ten system, resztę bierze z niego. Initrd można nazwać prowiantem na czas rozruchu.

ra-v

  • Gość
kernel panic
« Odpowiedź #6 dnia: 2009-12-31, 22:00:56 »
Cytat: Krzysiek1990
Wpis jest wpozadku. Sam wpisywalem wlasnorecznie. A .config napewno sie przyda. Tylko jakbys mogl mi jeszcze powiedziec czy .config jest z laptopa czy z pc?
PC stacjonarny, Athlon XP, DDR1, nVidia, dysk Seagate Barracuda 7200.10 80GB działający jako /dev/sda, DVDRW jako /dev/sr*, /dev/sg*, bez kart sieciowej, z modemem, OS: Fedora 10

Krzysiek1990

  • Gość
kernel panic
« Odpowiedź #7 dnia: 2010-01-02, 23:16:53 »
ra-v dzięki.

No i się pokrzaczyło;/
make && make modules_install
scripts/kconfig/conf -s arch/x86/Kconfig
  CHK     include/linux/version.h
  UPD     include/linux/version.h
  CHK     include/linux/utsrelease.h
  UPD     include/linux/utsrelease.h
  SYMLINK include/asm -> include/asm-x86
  CC      kernel/bounds.s
kernel/bounds.c:1: error: code model ‘kernel’ not supported in the 32 bit mode
kernel/bounds.c:1: sorry, unimplemented: 64-bit mode not compiled in
make[1]: *** [kernel/bounds.s] Error 1
make: *** [prepare0] Error 2
 # gcc -v
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: /var/tmp/portage/sys-devel/gcc-4.1.2/work/gcc-4.1.2/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.1.2 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include/g++-v4 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --disable-libunwind-exceptions --disable-multilib --enable-libmudflap --disable-libssp --disable-libgcj --with-arch=i686 --enable-languages=c,c++,treelang,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
Thread model: posix
gcc version 4.1.2 (Gentoo 4.1.2 p1.0.2)
Sporo googlowałem ;/ ale nic nie znalazłem takiego co mogłoby mi pomóc :(.


..................EDIT...................

Rozwiazanie:
Na hdd byl os x86_64 i z niego chcialem kompilowac.

Genkernel daje bardzo duze mozliwosci, a nawet jest w stanie przyspieszyc kompilacje i instalacje bo kernela bo robi to automatycznie. Za pomoca genkernel --menuconfig all mozna wybrac uwszystko co jest potrzebne a po wyjsciu i zapisaniu wykonuja sie dalej make && make install && make modules_install. Po tym kompilacja z palca przynosi takie same efekty.
Polecam kazdemu :)
Pozdrawiam i dziekuje za pomoc:)