[OS] xv6 설치 및 간단한 쉘 프로그램 구현(#설계1)

Elmo·2022년 9월 24일
0

🔔OS 설계과제 1

  • xv6 설치
  • 간단한 쉘 프로그램 구현

xv6

xv6는 MIT PDOS lab에서 2006년에 자체 개발한 것으로, 멀티프로세서 x86 및 RISC-V 시스템을 위해 개발한 교육용 운영체제이다. xv6는 단순하면서도 UNIX 운영체제의 중요 개념과 구성을 포함하고 있어서, 운영체제를 배우면서 프로젝트를 수행하기에 매우 적합하다.

  • Cross Compile 이용
    xv6에는 텍스트 편집기 및 gcc 컴파일러가 없으므로 리눅스에서 xv6를 작성 및 컴파일하고, 생성된 실행 파일을 xv6 상에서 실행한다.

xv6 설치

우분투 터미널 창을 열고

git clone https://github.com/mit-pdos/xv6-public

xv6-public 이라는 디렉토리가 생기고 그 안에 xv6 파일들이 다운로드 된다.

cd xv6-public

이 디렉토리로 이동해서 xv6 실행하면 된다.

apt-get install qemu-kvm

QEMU 를 설치해준다. xv6 운영체제는 x86 하드웨어를 에뮬레이트 하는 QEMU x86 에뮬레이터에서 실행된다.
혹시 허가거부 권한 에러가 생기면 명령어 앞에 "sudo"를 붙여줄 것!

make qemu

make 컴파일을 해주면 긴 코드들이 좌르륵 뜬 다음 xv6가 실행된다


에뮬레이터 창이 뜬다. 바로 터미널에서 입력하고 싶으면 make qemu-nox

쉘 프로그램 구현

: 운영 체제 상에서 다양한 운영 체제 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램

쉽게 말해 사용자와 커널 사이를 연결하는 역할이다.

helloworld 쉘 프로그램 구현

(1) helloworld.c 작성

#include "types.h"
#include "stat.h"
#include "user.h"

int main(int argc, char **argv){
	printf(1,"Hello World XV6\n");
	exit();
}

(2) Makefile 수정

  • UPROGS 부분에 _helloworld\ 추가
  • EXTRA 부분에 helloworld.c\ 추가

(3) xv6 실행 후 helloworld 입력

따란 😊

여기까지는 매우 간단한 구현이었다.
이후 구현한 쉘 프로그램은 좀 더 복잡하다.

hcat, 로그인 쉘 프로그램 구현

  • hcat
    기존의 cat과 달리 hcat n "파일명"을 입력하면 해당 파일의 n행까지 출력한다.

  • 로그인

xv6-public 폴더에 init.c라는 xv6 부팅 파일이 존재한다.
ssu_login이라는 쉘 프로그램을 구현하고 이 쉘 프로그램이 init.c 에 추가해서 xv6가 부팅할 때 로그인 프로그램이 실행되도록 한다.

profile
엘모는 즐거워

0개의 댓글