본문 바로가기

카테고리 없음

[xv6] 시작 메시지 변경

qemu를 사용해서 xv6를 구동함.

xv6시작메시지를 변경하라는 과제를 받았다.

xv6-public 폴더에 들어가서 make qemu를 통해서 xv6를 가동할 수 있다.

make qemu를 하면 터미널 창이 하나 더 생김. 터미널 창이 하나 더 생기는게 싫다면 같은 위치에서 make qemu-nox할 수 있다. 다만 nox를 붙여서 실행했을 때는 새창이 생기지 않는다. 그 상태에서 qemu를 나갈 때는 ctrl+a+x를 누르면 된다는데 나는 왜인지 모르겠지만 그게 동작하지 않아서 make qemu를 추천한다. (make qemu하면 x버튼을 눌러서 qemu나갈 수 있음.)

 

make qemu는 xv6-public 디렉토리에서만 동작한다. 그리고 xv6-public에서 ls해보면 여러 개의 .c파일이 나오는 것을 확인할 수 있는데 이게 실제로 xv6의 코드이다. 우리는 이것을 뜯어서 보고 수정할 것임.

 

쨋든 cscope라는 것을 이용하라고 힌트를 받았다. sudo apt-get install scope로 설치해야함.

그리고 내가 조사한 바에 따르면 (1)vim과 cscop를 연동해서 사용할 수 있고 (2)cscop만 사용할 수도 있다.

 

@

vim에서 cscope를 사용하는 방법. 다음과 같이 xv6-public에서 vim명령어를 치면 된다. 

과제를 하면서 느낀건데 나는 공유폴더에 xv6-public을 위치했다. 어쩌다 보니 그렇게 됨. 리눅스 cli가 불편할 때 윈도우로 파일 탐색, 복사 등등을 할 수 있어서 편했다. 

vim을 입력하면 다음과 같은 창이 나온다.

먼저 다음과 같이 명령을 입력해보자.(startomg sh가 부팅시 출력되는 문자열이기 때문에 이를 검색해서 수정하려고 starting sh를 검색함.)

:cs find t starting sh

나는 이렇게 하니까 에러가 떳다. 에러의 내용은 e567 no cscope connections [CSCOPE]임. https://m.blog.naver.com/chandong83/40181191603이 블로그를 참고해서 :cscope add cscope.out 명령을 다시 해봤지만 이 명령어도 에러 떳다... 이런 상황이 반복되면 내 길이 아닌가라는 생각이 든다.

쨋든 무수한 삽질 끝에 해결했다. 원리는 모름. 어떻게 하다보니 해결되었기 때문에 해결과정을 공유함.

지금까지는 vim과 연동해서 cscope를 사용하려했기 때문에 에러가 났다고 생각했다. cscope를 설치했기 때문에 vim없이 그냥 사용할 수는 없냐는 생각에서 xv6-public폴더에서 cscope를 입력해보았다!!(찍기신공..)

다음과 같이 cscope를 입력.

 

아래와 같은 창이 뜬다. 위에서 cs find t starting sh에서 t는 위에서 5번째 줄인 text를 의미한다고 한다. 그래서 find this text string에 들어갔다. 여기서 starting sh를 입력후 엔터.

 결과가 나온다. 아마 아래와 같이 나올 것. 엔터치면 자동으로 init.c로 이동한다. 이제는 init.c파일을 수정하면 과제 끝.

아래의 결과 창에서는 ctrl+d를 입력하면 나가졌다.vim

 

다음과 같이 ID, Name을 출력하면서 과제는 끝. cscope를 검색해도 친절한 글이 안나와서 고생많이했다. 찍기로 맞췄지만.. 도움이 되길 바람.

아래와 같이 코드가 나오는데 젤 밑의 printf()밑을 수정해서 ID, Name을 출력했다.