[질문] 제가 고친 커널로 부팅시 에러가 나며 멈춰버립니다.

munin의 이미지

지금 진행하는 프로젝트가 있어 커널(와우리눅스 7.0 (2.2.17))을 약간 수정해서 컴파일 시켰습니다. 컴파일은 잘 되어 'lilo'를 수정하여 부팅시키는 과정에 서 다음과 같은 에러가 나며 뭠춰 버립니다. 고수님들의 도움 부탁드립니다.

INIT: Entering runlevel :3

Unable to handle kernel NULL pointer dereference at virtual address 0000001b
current->tss.cr3=1f7bc000 , %cr3 = 1f7bc000
*pde = 00000000
Oops : 0000
CPU : 0
EIP : 0010[<c011c9d6>]
EFLAGS : 00010286
eax : ffffffff  ebx : df798000  ecx : df798000  edx : bffffc78
esi : 00000003  edi : bffffc78  ebp : bffffc58 esp : df799fb4
ds : 0018  es : 0018  ss : 0018
process rc (pid : 10, process nr : 7, stackpage = df7999000)

stack : bffffc78  bffffc58  df798000 c0109f5c  00000007  00000000  00000003  
bffffc78  bffffc58  000000bf  0000002b  0000002b  000000bf  400fd98f  
00000023  00000246  bffffc3c  0000002b

call Trace : [<c0109f5c>]

code : 83 78 1c 00 75 0a b8 f7 ff ff ff e9 39 01 00 00 b9 a0 bb 25
INIT : ID "1" respawning too fast : disabled for 5 minutes
INIT : ID "2" respawning too fast : disabled for 5 minutes
INIT : ID "3" respawning too fast : disabled for 5 minutes
INIT : ID "4" respawning too fast : disabled for 5 minutes
INIT : ID "5" respawning too fast : disabled for 5 minutes
INIT : ID "6" respawning too fast : disabled for 5 minutes
INIT : no more processes left in this runlevel

손으로 일일이 다 치려니..정말 힘들군요..--;

꼭 부탁드립니다.

익명 사용자의 이미지

munin wrote:
지금 진행하는 프로젝트가 있어 커널(와우리눅스 7.0 (2.2.17))을 약간 수정해서 컴파일 시켰습니다. 컴파일은 잘 되어 'lilo'를 수정하여 부팅시키는 과정에 서 다음과 같은 에러가 나며 뭠춰 버립니다. 고수님들의 도움 부탁드립니다.

INIT: Entering runlevel :3

Unable to handle kernel NULL pointer dereference at virtual address 0000001b
current->tss.cr3=1f7bc000 , %cr3 = 1f7bc000
*pde = 00000000
Oops : 0000
CPU : 0
EIP : 0010[<c011c9d6>]
EFLAGS : 00010286
eax : ffffffff  ebx : df798000  ecx : df798000  edx : bffffc78
esi : 00000003  edi : bffffc78  ebp : bffffc58 esp : df799fb4
ds : 0018  es : 0018  ss : 0018
process rc (pid : 10, process nr : 7, stackpage = df7999000)

stack : bffffc78  bffffc58  df798000 c0109f5c  00000007  00000000  00000003  
bffffc78  bffffc58  000000bf  0000002b  0000002b  000000bf  400fd98f  
00000023  00000246  bffffc3c  0000002b

call Trace : [<c0109f5c>]

code : 83 78 1c 00 75 0a b8 f7 ff ff ff e9 39 01 00 00 b9 a0 bb 25
INIT : ID "1" respawning too fast : disabled for 5 minutes
INIT : ID "2" respawning too fast : disabled for 5 minutes
INIT : ID "3" respawning too fast : disabled for 5 minutes
INIT : ID "4" respawning too fast : disabled for 5 minutes
INIT : ID "5" respawning too fast : disabled for 5 minutes
INIT : ID "6" respawning too fast : disabled for 5 minutes
INIT : no more processes left in this runlevel

손으로 일일이 다 치려니..정말 힘들군요..--;

꼭 부탁드립니다.

일단 Oops 메세지 자체로는 정확한 판단은 어려울거 같습니다.
그러나 일단 제가 보기에는 어디서 (-1)을 리턴하고
그에대하여 처리가 안된듯 합니다.
짐작일뿐이지만 EAX = 0xffffffff 인것을 보고 이런 생각이 드는군요.

좀더 디버깅을 하려면 어디까지는 정상적으로 되었나를 확인해볼필요가
있을거 같구요. 그 이후 절차에서 (-1)을 리턴하는 경우를
확인해보시면 어떨지요?

merely_c의 이미지

EIP 값 적어 놓으시구요....
call trace 값이 더 많이 있을텐데 하나만 적어 놓으신건가요???
원래 커널로 부팅하시구요.........system.map 파일있죠..그걸로 call trace 값을 쳐서 대충 근처에 있는 주소로 함수찾아서 디버깅해보세여....칼같이 나옵니당...

정보공유는 자신감의 표현입니다

munin의 이미지

EIP 값 적어 놓으시구요...->위에 있습니다.. EIP :0010 [<c01109d6>]

call trace 값이 더 많이 있을텐데 하나만 적어 놓으신건가요??? -> 하나만 나왔습니다.

원래 커널로 부팅하시구요.........system.map 파일있죠..그걸로 call trace 값을 쳐서 대충 근처에 있는 주소로 함수찾아서 디버깅해보세여....칼같이 나옵니당...-->무슨 말씀을 하시는건지..제가 이해를 못하겠군요..^^;;

제가 워낙 실력이 딸려서..^^;
자세한 설명 다시 부탁 드리겠습니다.

修身齊家治國平天下

merely_c의 이미지

printing eip : c01f192b

call trace :
c011141e , c0180643 , c01166c0 , c0180a67 , c0107fca , c0108148
c01051a0 , c010a1a8

저는 이렇게 나왔습니다.

그럼 System.map 파일을 볼까요?

우선 제일 처음 나온 c011141e 를 찾아 보았습니다.

c0110ce0 T panic
c0110dd0 T print_tainted
c0110e30 T do_syslog
c0111130 T sys_syslog
c0111190 t __call_console_drivers
c01111f0 t _call_console_drivers
c0111260 t call_console_drivers
c0111350 t emit_log_char
c01113c0 T printk
c01114d0 T acquire_console_sem
c0111500 T release_console_sem
c0111590 T console_conditional_schedule
c01115c0 T console_print
c01115e0 T console_unblank
c0111610 T register_console
c0111790 T unregister_console
c0111810 T tty_write_message

중간만 짤라서 보여드립니다...대충 주소값 근처로 가닌깐...printk 이군요...

자 다음은 c0180643 를 찾아 보겠습니다.

c017fb40 t rtl8139_open
c017fc80 t rtl_check_media
c017fd20 t rtl8139_hw_start
c017fe20 t rtl8139_init_ring
c017fe70 t rtl8139_thread
c0180000 t rtl8139_tx_clear
c0180020 t rtl8139_tx_timeout
c01800f0 t rtl8139_start_xmit
c01801f0 t rtl8139_tx_interrupt
c01803a0 t rtl8139_rx_err
c0180490 t rtl8139_rx_interrupt
c0180880 t rtl8139_weird_interrupt
c01809e0 t rtl8139_interrupt
c0180ae0 t rtl8139_close

주소값을 보아하니 rtl8139_rx_interrupt 인것 같군요......

이런식으로 콜트레이스에 나온 함수를 순서대로 적습니다.
그럼 소스를 볼까요..

rtl8139_rx_interrupt 함수에서 printk 쓴부분을 집중적으로 봅니다.

		if (skb) {
			skb->dev = dev;
			skb_reserve (skb, 2);	/* 16 byte align the IP fields. */

			eth_copy_and_sum (skb, &rx_ring[ring_offset + 4], pkt_size, 0);
			skb_put (skb, pkt_size);

			skb->protocol = eth_type_trans (skb, dev);
		            printk("%s\n");

제가 __FUNCTION__ 을 안적어 줬군요...
이제 찾았습니다...
+++++++++++++++++++++++++++++++++++++++++++++++
물론 위의 상황을 제가 걍 만들어 서 보여 드린거구요...call trace 값이 하나 밖에 나오지 않았다면 우선 그거라도 System.map 파일을 보시구요...
계속 Try 해보는 수밖에 없을것 같군요...
도움이 안되어서 지송해여..^^
늦게 봤네여...lilo 를 수정하셨다구요...쩝..그럼 도움이 더 안될것 같군요..

정보공유는 자신감의 표현입니다

익명 사용자의 이미지

merely_c wrote:
생략

좋은 정보인거 같아서 여기서 끝나면 아까운거 같은 생각이 듭니다.

강좌로 써서 올려주시면 안될까요? 정말로 좋은 정보인거 같은데....

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.