18.04 & vscode & 환경 세팅

박지성 ·2025년 4월 25일

pintos 준비하기

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

환경 세팅

AWS기준

우분투 환경을 만들고 내 컴퓨터에서 우분투 환경에 접속하는 과정이 필요합니다.
그때 SSH방식을 사용해 접속할 수 있습니다.

SSH (Secure Shell)
원격지의 셸(CMD)에 접속하기 위해 사용되는 네트워크 프로토콜

그럼 뭐가 문제야?

물론 SSH로 접속해서 작업을 수행할 수 있습니다.
하지만SSH는 쉘에 접속하는 것이기 때문에 불편합니다.

쉘 환경에서 vim,nano를 사용하여 코딩을 잘 할 수 있다면 문제가 없습니다

vs code server

하지만 편하게 개발을 하고 싶다면 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가지 방법이 있습니다 (더 있을 수도 있어요)

  1. vs code server이 실행될 때 glibc검사를 안하게 하기
  1. glibc를 업그레이드를 진행하는 방법
  1. 멀티스테이지라는 도커의 개념을 통해 20.04와 18.04를 동시에 세팅하고. 접속은 20.04를 통해 하고
    컴파일은 18.04에서 진행하는 방법
  1. 그냥 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같은 연결 방식이 필요 없습니다😌

정리!

  1. vscode server은 파일수정, CMD를 한번에 묶어서 수행할 수 있는 것!
  2. 18.04는 vs code server가 어렵기 때문에. 파일 수정 따로! CMD따로 수행하는 것!
  3. AWS는 외부 컴퓨터라 인터넷으로 연결하는 방식이 필요! (ssh, sftp방식!)
  4. 내 컴퓨터는 그냥 연결 방식 필요 없음!

근데 왜 자세하게 안 알려줌?

어떤 방식이 있는지는 알았으니까 직접 해봅시다😉

profile
개발 블로그 맞음.

0개의 댓글