시스템 콜 추가할 때여...

blackbean의 이미지

KLDP 로 부터 많은 도움을 받고 있는 리눅스 초보자 입니다~

얼마 전에 시스템 콜 에 관한 글이 올라 와 있어서 그것보면서 차근차근 공부를

해 나가고 있었는데...ㅡㅡ;; 책을 찾아봐도 모르겠고, 몇 번 다시 설치해서 했는

데도 안되길래...주말 내내 삽질하다가 이렇게 질문을 올리게 됬어여~

먼저 올라온 글하고, 교학사 책, 박장수의 커널 분석이라는 책 보면서 했는데요..

커널 컴파일도 잘 되고, 사용자 파일 컴파일도 잘 되는데.. ㅡㅡ;;결과가 안나오

네요... dmesg했는데도...암것도 안떠요..

그래서 i=newsyscall() 호출하는 부분 앞뒤로 printf("before: %d,i) ,printf

("after: %d, i) 찍어서 해봤는데... 호출하기 전은 무지 큰 수가 나오고(이건 이

해가 가는데..), 호출 한 후는 -1 이 나오네요.....정상적인 종료일 때, 0으로 리

턴하게 했는데..

시스템 호출에 무슨 문제가 있는 것 같은데..도대체 그게 몬질 모르겠어요..

그래서 다른 시스템 호출(printk)이라도 시도해 볼라고 했는데...

이것을 똑같이 _syscall0(int, printk); ??인가여?? 아무래도 아닌 것 같아서

요... 안되기도 하고..ㅡㅡ;;

제가 지금까지 수정사항은 이렇습니다.

1. 우선 시스템콜 번호 등록할려고 usr/src/linux/include/asm-i386/unistd.h 하고 usr/include/asm/unistd.h 의 화일에
#define __NR_newsyscall 253번 추가하고

2. arch/i386/kernel/entry.S에서 253번째에 맞춰서
.long SYMBOL_NAME(sys_newsyscall)을 추가했습니다..
(혹시 마지막줄
.rept NR_syscall-(./sys_call_table)/4
.long SYMBOL_NAME(sys_newsyscall)
에 문제가 있나해서...NR_syscall-253으로도 고쳐봤습니다..
ㅡㅡ;;안되더군여...)

3. usr/src/linux/kernel/ 디렉토리에 아래와 같이 newfile.c 추가하고.. Makefile 에도 추가했습니다..
(근데 여기서 추가하는 부분이 export? 인가 하는 부분이랑...그 밑
에...y ? 인가 하는 부분이랑 두군데 있는것 같아 헷갈렸습니다...컴파일해서 실행해보니..별로 차이는 없는 것 같았는데..)

newfile.c 는 똑같이 만들었습니다.. 아래에 질문으로 나와있는 파일과...

그리고 make bzImage하고 나서...재 부팅하고...

/home 에 사용자응용파일 만들었습니다.

아래에 질문으로 나와있는 파일과 동일한 test_newsyscall.c...
다만 <errno.h>를 추가해서..

그래서 gcc test_newsyscall.c 하면 실행파일나오고...실행하고 나서..

dmesg치면...ㅡㅡ;;아무것도 안나옵니다..

다른 사람들은 마지막에 모두 나온다던데..

혹시 설치된 리눅스가 무언가 잘못 설정되 있나 싶어..

포맷하고 다시 깔았습니다...그래도 결과는 똑같습니다..

리눅스 7.1을 쓰고 있는데...ㅡㅡ;;이게 문제인가 싶어...

(하다보니..별 생각 다듭니다..) 리눅스를 7.3으로 바꿔볼까 하고 시디로 구워놓

기까지 했습니다..헌데..아무래도 이건 아닌 듯 싶어...ㅡㅡ;; 잠시 보류하고..

결국 KLDP를 찾게 됬습니다..

제발 도와주세요~ㅜㅠ 정말 막막합니다..해보는 데까지 다 해본 것 같은데..

그리고 newfile.c

realcns의 이미지

흠 기본적이긴 한건데... 혹시 커널 컴파일시에 이미지 제작한걸 부트 디렉토리에 카피 하고.. 릴로 설정을 해주셨는지요?

커널 이미지를 만들기만 하면 소용 없습니다.. :twisted:

모든 OS를 사용해보자~!!
-놀고먹는백수가 되고 싶은 사람-

oracle_warden의 이미지

컴파일이 잘 되는 거 보니 오류는 없는 것 같고요

그래픽 모드에서 하면 안되는 거 같더군요..

init 3을 터미널에서 실행시키시고 조금만 기다리시면

그래픽 모드가 닫히고 다시 로그인 화면 하는 게 나오거든요

하고 나서 ./a.out 실행 파일을 실행시키시면 아마 될 꺼에요..^^

다시 그래픽 모드로 가려면 init 5

blackbean의 이미지

^^ 어렵게 문제점을 알아냈어요...
이상하게 시스템 콜 번호를 240 번호로 하면 되는데...
ㅡㅡ;; 그 밖에는 안되더군여...왜그런건지..이유는 몰겠는데..
35번, 222번, 241번, 245번,253번,259번...정도를 돌려봤는데..
딱 240번이 되던군여...그러니까 리턴값이 0이 되던데...
그러니까 dmesg에서 정보도 나오고요...
이유는 몰겠습니다...ㅡㅡ;;

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.