PintOS를 팀원들과 github로 공동작업을 하다보면 가끔 보이는 에러가 있다.
해결법을 찾았지만 인간은 언제나 답을 찾고 또 잊어먹기 때문에 아래에 기록해본다.
make: *** [tests/userprog/args-multiple.output] error 127
이건 간단한 에러다.
가장 상위디렉토리에서 'source ./activate'가 실행되지 않았을 때 나는 에러다.
Kaist gitbook의 아주 초기에 INTRODUCTION/Getting Started 카테고리에서 설정 해놓는 내용이 있는데, 이 때 자기 컴퓨터 디렉토리 설정에 따라 다르게 해놓기때문에 git pull시 디렉터리가 어긋나서 자동 실행이 안되는 걸로 파악된다.
Getting Started
Now you can get the source code for Pintos into a directory name 'pintos', by executing: git clone https://github.com/casys-kaist/pintos-kaist However, the source codes are likely to be changed before the project period, we recommend you to duplicate the repository. When we change the template code, you can easily synchronize your code with the template. Please NOT TO MAKE PUBLIC FORK. We will never change the source code during the project period, except for the critical bug lies on the template code. FYI. We have tested the pintos code and the solution on the Ubuntu 16.04.6 LTS with gcc (gcc (Ubuntu 7.4.0-1ubuntu1~16.04~ppa1) 7.4.0) and qemu-system-x86_64 (QEMU emulator version 2.5.0 (Debian 1:2.5+dfsg-5ubuntu10.43)), same as the given linux machine. Once you've retrived source code, you can set up your environment with below command in pintos root directory: $ source ./activate It is a good idea to add this line to the '.bashrc' in your home directory. Otherwise, you'll have to type it every time you log in.
To get started, you'll have to log into a machine that Pintos can be built on. You may use given Linux machines by the intructors or your own Solaris or Linux machines. However, we will test your code on given machines, and the instructions given here assume this environment. We cannot provide support for installing and working on Pintos on your own machine. Belows server environment will be given to each student.
cd ~ # home 디렉토리로 이동
code .bashrc
# 아래 디렉토리 설정 변경
# command for logging in
source ~/pintos-kaist/activate
또는 수동으로 핀토스의 제일 상위 디렉토리에서 source ./activate 코드를 입력해준다.
make: *** [tests/userprog/args-multiple.output] error 126
../../tests/make.tests:75: recipe for target 'tests/userprog/args-none.output'
터미널에 위와같은 에러를 띄우면서 shell이 종료되는 경우가 있는데, make를 통해 명령어가 실행은 되지만, 결과값인 .output 파일 생성에 문제가 있을 때 발생하는 에러로 파악된다.
해당 프로젝트 디렉토리에서 아래와 같은 단일 command를 실행시켜보면,
pintos -v -k -T 60 -m 20 --fs-disk=10 -p tests/userprog/args-none:args-none --swap-disk=4 -- -q -f run args-none
아래와 같은 안내코드를 받을 수 있는데, 말그대로 permission denied 된 것이다.
bash: /root/project3/utils/pintos: permission denied
리눅스를 사용하다보면 root계정이 아닐 때 볼 수 있는 에러인데 pintOS도 OS라고 이런 에러를 띄우는 건가 싶다.😕(쓸데없이 너무 잘 구현해놨자너..)
가장 상위디렉토리에서 아래와 같은 명령어를 치면 해결된다.
chmod -R 755 ./*
*ps: 이후에도 이미 한 터미널로 pintOS를 실행시키고 있는데 다른 터미널로 그 코드를 실행시키려고 하면 error126을 띄우는 경우도 봤다. 터미널 창을 확인하자.