xv6는 MIT PDOS lab에서 2006년에 자체 개발한 것으로, 멀티프로세서 x86 및 RISC-V 시스템을 위해 개발한 교육용 운영체제이다. xv6는 단순하면서도 UNIX 운영체제의 중요 개념과 구성을 포함하고 있어서, 운영체제를 배우면서 프로젝트를 수행하기에 매우 적합하다.
우분투 터미널 창을 열고
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
쉘 : 운영 체제 상에서 다양한 운영 체제 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램
쉽게 말해 사용자와 커널 사이를 연결하는 역할이다.
(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 수정
(3) xv6 실행 후 helloworld 입력
따란 😊
여기까지는 매우 간단한 구현이었다.
이후 구현한 쉘 프로그램은 좀 더 복잡하다.
hcat
기존의 cat과 달리 hcat n "파일명"을 입력하면 해당 파일의 n행까지 출력한다.
로그인
xv6-public 폴더에 init.c라는 xv6 부팅 파일이 존재한다.
ssu_login이라는 쉘 프로그램을 구현하고 이 쉘 프로그램이 init.c 에 추가해서 xv6가 부팅할 때 로그인 프로그램이 실행되도록 한다.