Docker 참조를 통한 pintos 환경 세팅 간(단히) 살(펴보기)

모기·2025년 5월 9일

서두를 어떻게 꺼내야할지 모르겠다.
할 말이 없어서가 아니고,
할 말이 너무 많기 때문이다.

개요부터 얘기하자면
pintos 폴더를 우분투 18.04 컨테이너가 참조하도록 만드는 과정이다.


실패했다는 말이 이렇게 감격스럽긴 또 처음이다.

사건의 발단은 이렇다.
vscode 1.86버전부터 glibc 2.28 이상의 버전만 지원한다고 한다.
우분투 18.04는 glibc 버전이 2.27이라고 한다.
그래서 충돌이 생긴다나 뭐라나

근데 트러블 슈팅이 끝나고 보니, 내가 트러블 슈팅한 내용은 좀 별개인 것 같다.

정글에서 준 파일의 저장소가 공식적으로 서명되지 않는다고 한다.
GPG 키 확인에 실패했다고 한다.

아무튼
여정이 시작되었다.

조금 귀찮을 뿐이지 어떻게든 컨테이너로 파일 넘겨가면서 쓸 수 있다는 걸 안다.
아마 모두가 알 것이다.
안 귀찮으려고 그 먼 길을 떠났다는게 지금 생각하면 어이없게 웃기기도 하고
개발자라는 족속이 어떤 모순을 가진 집단인지에 대해서 다시금 느끼게 되었다.

생각했던 방법은 세 가지인데

  1. 그냥 인텔리제이를 쓴다.
    이건 어떤 걸 트러블 슈팅을 해야하는 지에 대해서 정확하게 인지하지 못해서 했던 고민이다.

  2. 컨테이너의 포트와 내 컴퓨터의 포트를 연결시키고 sftp로 파일을 자동 전송시켜 동기화를 유지한다.

  3. 컨테이너가 내 파일을 참조하게 한다.

3번은 우리반 겸디가 아이디어를 다 내줬다. 이 귀염둥이도 상당한 똑띠다.
통신을 할 필요가 없다는 얘기를 듣고 그 이후로는 스스로 도전해봤다.


나는 맥북 유저이므로 맥북 기준으로 썼다. 윈도우는 어떻게 작동할 지 모르겠다.


우선 도커가 설치가 되어 있어야 한다.

도커 설정 변경하기

사실 순서상 얘가 마지막 단추이긴 했다.
마지막에 얘를 바꾸고 성공했기 때문이다.

여기서 Use Rosetta를 체크해제 해야한다.
우리는 qemu를 사용해야하기 때문이다.

Image 다운

쉘에 다음 내용을 입력
docker pull --platform=linux/amd64 ubuntu:18.04

그럼 이미지가 다운받아질 것이다.

Container 소환

위 이미지를 바탕으로 하는 container를 소환할 것인데
두 가지가 필요하다.

먼저, 내 pintos 폴더의 경로는 어디인가
이건 해당 폴더에서 터미널을 실행시켜 pwd를 입력하면 쉽게 얻을 수 있다.

그 다음으로, 나는 이 폴더를 컨테이너의 어디에 등장시킬 것인가
루트 디렉토리에 연결하고 싶었는데, 아쉽게도 보안상의 문제로 그건 어렵다고 한다.
그래서 /data 폴더에 넣기로 했다.

명령어는 다음과 같다.

docker run --platform linux/amd64 -itd -v (pwd로 얻은 경로):/data --name pintos ubuntu:18.04

참조 경로로 설정할 때 -v가 핵심이다.

Container 환경 변수 설정

이제 거의 다 됐다.
Container로 들어가보자.

만약 컨테이너가 실행되지 않았다면
docker start pintos 를 입력하고

컨테이너가 실행된 상태라면
docker attach pintos를 입력하자.

알아볼 수 있을 것이다.

apt-get update
apt-get install sudo
를 먼저 입력하고

sudo apt-get update && \
    sudo apt-get install -y \
    locales tzdata \
    build-essential \
    gcc \
    gdb \
    vim \
    git \
    sudo \
    qemu-system-x86 \
    python3 && \
    sudo locale-gen ko_KR.UTF-8 && \
    sudo update-locale LANG=ko_KR.UTF-8

복붙하자. 중간에 나라 설정도 나오는데
6 - 69 입력하면 된다.

apt install binutils perl qemu -y

복붙하자.

Test

ls, cd를 통해서 내가 설정한 경로를 찾아가자.
위 설정대로 했다면
cd data를 입력하고
ls로 내가 만든 폴더 한 번 더 확인해서
cd pintos-kaist로 들어가자.

source ./activate
cd threads
make check

끗

여담으로 1년 전의 나로서는 도저히 도전해볼 수 없었을 것이다.
나는 도커, 컨테이너라는 것 자체도 이해못했고, CLI로 컴퓨터를 다루는 것도 많이 망설였을 것이다.

source ./activate 자동화

pintos를 실행시키기 위해서는 항상 이 친구를 입력해야한다.
하지만
/.bashrc에 등록하면 자동으로 실행시킬 수 있다.
우선 컨테이너 내부의 pintos 폴더로 이동해서 pwd를 입력하자

그럼 이렇게 절대 경로가 나올 것이다. 이 경로를 복사해두고 cd를 입력해서 루트 폴더로 가자.

현재 ls를 입력하면 아무것도 안보이지만, 사실 .bashrc 폴더는 숨겨져있다.
이는 ls -a를 입력하면 알 수 있다.

그럼 이제 이 .bashrc를 수정해보자.
먼저 vi ~/.bashrc를 입력한다.

그럼 아래 사진과 같이 주르륵 나올 것이다.

죽죽 내려서 마지막까지 내려가고 i를 눌러서 insert mode로 변경하자.
그럼 입력할 수 있게 변한다.

여기에 source, 아까 확인했던 절대경로랑 /activate를 입력하자.
즉 source 절대경로/activate를 입력하면 된다.
나의 경우는 다음과 같다.

이후 esc를 눌러 insert mode에서 나가고, :wq를 입력해서 변경한 파일을 저장하자.

다시 루트 폴더로 왔으면 source ~/.bashrc를 입력하자.

원래 pintos가 있던 폴더로 이동해서 pintos -h를 입력했을 때 잘 나온다면

성공이다.

profile
안녕

3개의 댓글

comment-user-thumbnail
2025년 5월 9일

모 기 대 모 험

답글 달기
comment-user-thumbnail
2025년 5월 10일

대 모 기 모 험

답글 달기
comment-user-thumbnail
2025년 5월 10일

모 모 모 모 험

답글 달기