문제 상황

테스트가 아무런 문제가 없고, 단지 single-alarm 관련 코드를 작성하지 않아 테스트가 진행되지 않는다고 판단했었다. 다만, single-alarm.erros 파일에서 다음 경로 문제가 발견되면서, 환경이 제대로 갖추어지지 않았다고 판단했다.

bash: /workspaces/pintos_22.04_lab_docker/pintos/activate: No such file or directory

터미널을 열면, pintos/activate 명령어가 실행되는데 찾지 못하는 문제가 발생하고 있다. 왜 이런 에러문구가 나오는지 파악해보면, 현재 테스트가 제대로 실행되지 않는 문제를 해결할 수 있지 않을까 싶다.

문서 기반 추론

이 문서는 Windows와 macOS 사용자가 Docker와 VSCode DevContainer 기능을 활용하여 Pintos OS 프로젝트를 빠르게 구축할 수 있도록 도와줍니다.

[주의]

ubunbu:22.04 버전은 충분한 테스트와 검증이 되지 않았습니다. 이 점을 주의해서 사용하시기 바랍니다.
[참고]

pintos 도커 환경은 64비트 기반 X86-64 기반의 ubuntu:22.04 버전을 사용합니다.
kaist-pintos는 오리지널 pintos와 달리 64비트 환경을 지원합니다.
이번 도커 환경은 ubuntu 22.04를 지원하여 vscode의 최신 버전에서 원격 연결이 안되는 문제를 해결하였습니다.
pintos 도커 환경은 kaist-pintos에서 추천하는 qemu 에뮬레이터를 설치하고 사용합니다.
pintos 도커 환경은 9주차부터 13주차까지 같은 환경을 사용합니다. 이 기간동안 별도의 개발 환경을 제공하지 않습니다.
기존 도커 환경과 달리 vscode와 통합된 디버깅 환경(F5로 시작하는)을 제공하지 않습니다. 디버깅이 필요한 경우 gdb를 사용하세요.
vscode에서 터미널을 오픈하면 자동으로 source /workspaces/pintos_22.04_lab_docker/pintos/activate를 실행합니다.

환경설정 문서를 보면, 터미널에서 자동으로 pintos_22.04_lab_docker/pintos/activate 를 실행한다고 되어있다. 그러나 현재는 파일 경로를 찾지 못하는걸로 보인다.

명령어가 하는 일

pintos_22.04_lab_docker/pintos/activate 명령어가 하는 일이 무엇인지 확인하고, 문제 해결 실마리를 발견해보려 시도했다.

#!/bin/bash
if [ "$BASH" != "" ]; then
	SOURCE="${BASH_SOURCE[0]}";
else
	SOURCE="$0";
fi;

while [ -h "$SOURCE" ]; do
  DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
  SOURCE="$(readlink "$SOURCE")"
  [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
done
DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"

PATH=$DIR/utils:$PATH

파일 내용은 잘은 모르겠지만, 결국 DIR 셸 변수를 만드는 내용이다. 이를 활용해 PATH에 경로를 추가하는 작업이라는걸 알 수 있었다.

관련된 문제

build 디렉토리에서 make check를 실행한 뒤, alarm-single.errors 파일에 나온 내용이다.

/bin/sh: 1: pintos: not found

내용에 bin 이라는 디렉토리가 등장한다. 보통 실행파일들이 저장되는 공간이고, sh는 셸 실행 파일이다. 그래서 bin 안에있는 sh 실행 파일이 pintos 라는걸 이용했다. 그러나 파일을 찾지 못한 상황임을 알 수 있다.

그렇다면 pintos라는 파일이 무엇인지 찾아볼 필요가 있다. 탐색 결과 찾을 수 있었다.

image.png

내용은 아직 모르겠지만, 테스트시에 이 파일을 실행시킨다는것이다.