Hacker News 의견들
  • 이 글을 읽으면서 너무 많은 오해 때문에 고통스러웠음
    cpio 아카이브는 파일시스템이 아님. 글쓴이는 initramfs를 사용하는데, 이는 tmpfs 기반임. Linux는 cpio를 tmpfs로 추출할 수 있음. 파일과 디렉토리의 아카이브는 그 자체로 프로그램이 아님
    어떤 것이 비슷하게 보인다고 해서 동일한 것은 아님. 바이너리 프로그램은 CPU에서 실행되며, 인터프리터가 있다면 그것은 하드웨어 환경에 숨어 있음. 이는 커널의 범위를 벗어남
    쉘 스크립트를 실행하려면 그 스크립트를 해석할 쉘이 필요함. 글쓴이는 이 부분을 생략하고 커널과 쉘 프로그램을 혼동함
    Linux는 initramfs나 ramdisk 없이도 컴파일 가능하며, 여전히 파일시스템의 유저랜드를 실행할 수 있음
    “Linux initrd interpreter”라는 표현은 정말 잘못된 설명임

    • ELF 파일도 그 자체로는 프로그램이 아닐 수 있음. 일부 ELF는 동적 라이브러리로 엔트리포인트가 없기 때문임. ELF 중 일부가 실행 가능하듯, CPIO 중 일부도 실행 가능하다고 볼 수 있음. 결국 ld.so가 ELF를 메모리에 풀고 엔트리포인트를 실행하는 것과, 커널이 initramfs를 풀고 엔트리포인트를 실행하는 것은 유사한 개념임
    • cpio 안의 init 파일이 실제로 해석되는 프로그램이며, 나머지 파일들은 그 프로그램이 사용할 메모리 역할을 함
    • 바이너리 프로그램은 CPU에서 실행되지만, 프로그램 파일 자체는 여러 섹션으로 구성된 아카이브 구조임. CPU는 프로그램 파일을 직접 이해하지 못함. Linux는 프로그램이 실행될 주소 공간을 설정하고, 그 후 프로그램 카운터가 가리키는 주소로 점프함. ELF의 메타데이터 섹션이 이 과정을 정의함
    • 적어도 AI가 쓴 글은 아니라는 점이 위안임
  • 모든 OS는 커널 권한으로 머신 코드 인터프리터 역할을 하는 것 아님?

    • 아니라고 생각함. OS는 각 명령어를 직접 해석하지 않고, CPU에 넘겨서 실행시킴
    • OS는 시스템 자원을 사용할 수 있게 하는 인터페이스임. CPU가 머신 코드를 해석하고, OS는 CPU가 무엇을 실행할지 지시할 수 있음
    • 이 경우에는 CPIO 파일을 위한 인터프리터라고 볼 수 있음
  • 이 글은 “Linux는 인터프리터다”라는 정신적 모델로 보면 괜찮지만, 문자 그대로 받아들이면 틀림
    CPU 명령어 수준에서의 해석이 아니라, 커널이 ELF, shebang 스크립트, initramfs 같은 실행 형식을 조율하는 역할로 보면 더 타당함. 혼란은 ‘인터프리터’의 두 가지 의미가 섞인 데서 비롯된 듯함

  • 핵심은 비유가 맞느냐가 아니라, ‘실행’이라는 개념이 얼마나 환경에 의존적인가를 보여준다는 점임

  • “모든 것은 인터프리터다?”

    • 그렇지만 컴파일러는 예외임
  • Turing의 Theta Combinator

    • 그게 이 글과 어떤 관련이 있는지 잘 모르겠음. 함수형 프로그래밍 개념에 익숙하지 않음
  • 시리즈의 이전 글에서, 글쓴이는 Contabo의 오브젝트 스토리지를 쓰기 싫어서 직접 VPS 이미지를 만들었다고 함
    월 1.50달러를 아끼려 50시간을 쓰는 것과, 25만 달러를 토큰에 쓰는 극단 사이에 균형점이 있다고 생각함.
    인프라 비용을 감당 못 한다면, 기술력보다 사회적 요인이 문제일 수도 있음. Doom을 curl로 돌리는 데 집착하는 건 생산적이지 않다고 느낌

    • 나도 예전에 그랬음. VPS 월 5유로가 너무 비싸서, 돈이 모일 때까지 인스턴스를 종료하고 루트 파일시스템을 엄마 노트북에 백업하곤 했음. 나중엔 Kindle에 Terminal IDE를 깔아 busybox와 gcc로 놀았음. Spartacus Rex에게 커리어의 시작을 만들어줘서 감사함
    • 글쓴이의 말은 농담이었음. 실제 이유는 바로 다음 문단에 있음 — “재미있는 트릭이라 생각했고, 블로그에 올리면 나도 배우고 독자도 배우고 인터넷 포인트도 얻는 win-win이라 생각했음”
    • 어떤 사람에게는 비생산적으로 보여도, 특별한 관심사를 즐기는 건 정신 건강에 중요함. ADHD인 나에게는 오히려 꼭 필요한 활동임
    • “1.50달러를 못 내면 프로가 아니다”라는 말은 이상함. 프로페셔널은 돈을 받느냐로 정의되는 것이지, 지출로 정의되는 게 아님
  • man ld.so를 보면, ELF의 .interp 섹션에 저장된 동적 링커가 실행된다고 명시되어 있음. 섹션 이름 자체가 흥미로움

  • Linux는 프로그래머블 인터페이스로서 매우 유용함. Windows도 가능하지만, Linux가 더 적합하다고 느낌
    GUI는 Windows가 낫다고 생각하지만, GNOME이나 KDE도 불편함. 그래서 fluxbox, icewm, 때로는 xfce나 mate-desktop을 씀. 요즘은 단순하고 빠른 환경을 선호함. 대부분의 작업은 커맨드라인과 코드 편집으로 처리함

    • 빠르고 단순한 환경을 원한다면 Sway + foot 조합이 좋음. 키바인드로 워크스페이스를 구성하면 데스크탑 없이도 쾌적하게 쓸 수 있음
    • Windows GUI가 낫다는 건 동의 못함. GNOME, KDE도 별로지만 Windows는 Microsoft의 복잡한 WM에서 벗어날 수 없음. 개인적으로는 Xerox 계열보다 mpx/mux 계열 인터페이스(예: 9wm, cwm, dwm)가 훨씬 낫다고 생각함. Engelbart의 철학에 더 가깝고 전반적으로 더 깔끔함