pintos 프로젝트를 진행하기 위해서는 18.04의 우분투 환경 세팅이 필요합니다.
근데 분명 환경을 세팅하다 보면 vscode연결에 문제가 발생할 수 있습니다.
이를 해결하고 연결 방식에 대해 알아보겠습니다.

우분투 환경을 만들고 내 컴퓨터에서 우분투 환경에 접속하는 과정이 필요합니다.
그때 SSH방식을 사용해 접속할 수 있습니다.
SSH (Secure Shell)
원격지의 셸(CMD)에 접속하기 위해 사용되는 네트워크 프로토콜
물론 SSH로 접속해서 작업을 수행할 수 있습니다.
하지만SSH는 쉘에 접속하는 것이기 때문에 불편합니다.

쉘 환경에서 vim,nano를 사용하여 코딩을 잘 할 수 있다면 문제가 없습니다
하지만 편하게 개발을 하고 싶다면 vscode로 작업을 하는 것이 좋습니다. 일단 편하지 않습니까?
그럼 어떻게 vscode로 작업을 할 수 있을까요
vs code server을 이용하면 다른 컴퓨터를 vscode로 쉽게 연결해서 사용할 수 있습니다!!!

1. 내 컴퓨터에 있는 vscode는 화면 표시와 키보드 입력만 처리하고
2. 우분투 안에 있는 vscodeserver은 쉘(CMD), 파일 접근, 디버깅을 처리합니다
[로컬 VS Code] ⟷ [VS Code Server (원격)]
(UI / 키보드) (파일·터미널·디버깅)
그럼 연결은 어떻게 하면 될까요?
“Remote-SSH”나 “Remote-Containers”를 사용해서 연결을 진행할 수 있습니다!
하지만!!!!!!!!!
일반적인 환경에서는 그냥 쓰면 됩니다.
그러나.
우리는 18.04 버전의 우분투 입니다.

vs code server은 최소 조건(glibc2.28 버전)이 필요합니다!!!!
헉! 우리의 우분투는 glibc2.27인데요?
vs code server을 꼭꼭꼭 쓰고 싶다면
4가지 방법이 있습니다 (더 있을 수도 있어요)
- vs code server이 실행될 때 glibc검사를 안하게 하기
- glibc를 업그레이드를 진행하는 방법
- 멀티스테이지라는 도커의 개념을 통해 20.04와 18.04를 동시에 세팅하고. 접속은 20.04를 통해 하고
컴파일은 18.04에서 진행하는 방법
- 그냥 vs code server의 버전을 옛날 버전으로 설치하는 방법
1. 검사를 건너뛰어서 그냥 실행되게 하는 방법
컨테이너 시작 시점에 아래 파일만 만들어 두면, check-requirements-linux.sh 스크립트가 실행을 멈추지 않고 넘어갑니다.
# Dockerfile 예시
FROM ubuntu:18.04
#…(기본 설치)…
# VS Code Server 설치 전에 skip 파일 생성
RUN touch /tmp/vscode-skip-server-requirements-check
# 이후 devcontainer나 Remote-Containers 확장으로 열면 glibc 체크를 건너뜁니다.
2. glibc를 업그레이드
FROM ubuntu:18.04
# 1) 빌드 툴과 의존성 설치
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential wget curl ca-certificates patchelf \
&& rm -rf /var/lib/apt/lists/*
# 2) glibc 2.28 소스 다운로드 및 설치
RUN mkdir -p /opt/glibc-2.28 \
&& wget -O /tmp/glibc-2.28.tar.gz https://ftp.gnu.org/gnu/libc/glibc-2.28.tar.gz \
&& tar -C /opt/glibc-2.28 --strip-components=1 -xzf /tmp/glibc-2.28.tar.gz \
&& mkdir /opt/glibc-2.28/build \
&& cd /opt/glibc-2.28/build \
&& ../configure --prefix=/opt/glibc-2.28 \
&& make -j"$(nproc)" \
&& make install
# 3) 실행 시 새 링커 사용하도록 환경변수 지정
ENV LD_ASSUME_KERNEL=2.6.32 \
VSCODE_SERVER_CUSTOM_GLIBC_LINKER=/opt/glibc-2.28/lib/ld-2.28.so \
VSCODE_SERVER_CUSTOM_GLIBC_PATH=/opt/glibc-2.28/lib \
VSCODE_SERVER_PATCHELF_PATH=/usr/bin/patchelf
이 방법은 몹시 위험합니다
도전 정신이 있다면 추천드립니다.
3. 멀티스테이지 방법
# ─── 1. glibc 빌드 스테이지 ─────────────────────────────────────────────
FROM ubuntu:18.04 AS glibc-builder
# 빌드에 필요한 툴·의존성
RUN apt-get update && \
apt-get install -y --no-install-recommends \
build-essential wget curl ca-certificates patchelf \
&& rm -rf /var/lib/apt/lists/*
# 소스 다운로드 및 컴파일
ARG GLIBC_VERSION=2.28
RUN mkdir -p /opt/glibc-${GLIBC_VERSION} && \
wget -O /tmp/glibc.tar.gz \
https://ftp.gnu.org/gnu/libc/glibc-${GLIBC_VERSION}.tar.gz && \
tar -xf /tmp/glibc.tar.gz -C /opt/glibc-${GLIBC_VERSION} --strip-components=1 && \
mkdir /opt/glibc-${GLIBC_VERSION}/build && \
cd /opt/glibc-${GLIBC_VERSION}/build && \
../configure --prefix=/opt/glibc-${GLIBC_VERSION} && \
make -j"$(nproc)" && \
make install
# ─── 2. 최종 런타임 스테이지 ────────────────────────────────────────────
FROM ubuntu:18.04
# (필요하다면 여기에 기본 패키지 설치)
RUN apt-get update && \
apt-get install -y --no-install-recommends ca-certificates patchelf && \
rm -rf /var/lib/apt/lists/*
# 1단계에서 빌드한 glibc만 복사
COPY --from=glibc-builder /opt/glibc-2.28 /opt/glibc-2.28
# VS Code Server 등에서 새 glibc를 사용하도록 환경 변수 설정
ENV VSCODE_SERVER_CUSTOM_GLIBC_LINKER=/opt/glibc-2.28/lib/ld-2.28.so \
VSCODE_SERVER_CUSTOM_GLIBC_PATH=/opt/glibc-2.28/lib \
VSCODE_SERVER_PATCHELF_PATH=/usr/bin/patchelf
# (Optional) 스킵 파일도 생성해 두면 이중 보호
RUN touch /tmp/vscode-skip-server-requirements-check
WORKDIR /workspace
CMD ["bash"]
이 방법은 도커와 정말 친해지고 싶다면
추천드립니다
4. 구버전 vs code server설치
... 굳이 과거로..?
"파일질라"로 파일만 연결하고
SSH로 CMD에 접속해서 컴파일을 진행하자!!

오호호!!...........
근데 파일질라 불편한데...

짜잔!
vscode 익스텐션에 파일질라처럼 파일을 연결할 수 있는 방법이 있습니다!

그럼 편리하게 파일을 내 컴퓨터 vscode에서 수정할 수 있습니다!

그럼 요렇게
vscode는 파일만 가져와서 수정하고
ssh연결을 통해서 컴파일을 진행합니다!

그러면 방법은 똑같습니다
내 컴퓨터에 도커가 있는거니까
1. 그냥 vscode로 파일을 열어서 수정합니다~!
2. 도커에 들어가서 컴파일, 디버깅을 진행합니다~!
끗.
# 컨테이너 안으로 들어가서
docker exec -it dev-ctnr bash
# 내부에서 작업 디렉토리로 이동
cd /workspace
# 컴파일·빌드·테스트
make
./your_binary
즉!!!
AWS는 내 컴퓨터가 아니라 외부에 있기 때문에 네트워크로 연결을 해야합니다.
따라서 ssh와 sftp방식을 사용해서 접속을 하는 것!!!
근데 도커는 내 컴퓨터 안에 있습니다.
그럼 파일도 내 컴퓨터에 있습니다. sftp같은 방식으로 연결할 필요가 없습니다
그냥 파일을 직접 열어서 수정하면됩니다.
컴파일은 도커 안에 들어가서 직접 수행하면 되기 때문에 ssh같은 연결 방식이 필요 없습니다😌
어떤 방식이 있는지는 알았으니까 직접 해봅시다😉