리눅스를 윈도우로 바꿉시다
(philipbohun.com)"리눅스 배포판을 윈도우처럼 만들어야 합니다."
- 이 글은 기존 리눅스의 이식성과 배포 방식의 문제를 해결하기 위해 기본적으로 Wine을 통해 윈도우 실행 파일을 구동할 수 있는 리눅스 배포판을 만들자는 제안임
- 이를 통해 윈도우 사용자들이 거의 훈련 없이 리눅스로 쉽게 전환할 수 있으며, 리눅스의 오랜 호환성 문제도 함께 해결 가능함
리눅스 환경의 불안정성
- 윈도우에서는 20년 된
.exe
파일도 실행이 가능한 반면, 리눅스에서는 1년 전 바이너리도 실행되지 않을 수 있음 - 이는 리눅스의 라이브러리 버전 차이와 업데이트로 인해 동일한 실행 파일이 다양한 배포판에서 동작하지 않게 되는 문제 때문임
- 리눅스의 시스템 콜은 안정적이지만, 그 위에 얹힌 C 라이브러리(
libc
)는 불안정하며 사용자 영역 대부분이 이에 의존함
리눅스에서의 바이너리 배포 문제
- 리눅스에서는 실행 파일을 배포하는 주요 방법이 무려 네 가지나 존재하며 각각 문제를 안고 있음
- 생 바이너리: 대부분의 환경에서 동작하지 않음
- AppImage: 모든 의존성을 포함하지만, 완벽한 보존성은 미지수
- Flatpak: 앱마다 샌드박스를 제공함
- Snap: 또 다른 샌드박스 기반 패키지 관리자
- 이들 모두 설치, 업데이트, 삭제 방식이 서로 다르고 동시에 공존 가능함
- 장기적인 앱 보존 및 재실행에는 대부분 적합하지 않으며, 20년 후 실행 가능성은 거의 없음
Win32가 해결책인 이유
- 윈도우의
Win32 API
는 리눅스에서 유일하게 안정적인 ABI(Application Binary Interface)라고 평가됨 - 윈도우는 직접 시스템 콜을 하지 않고 동적 라이브러리를 통해 호출함으로써 API의 안정성을 유지함
- 이 구조 덕분에 마이크로소프트는 내부적으로 커널을 변경하면서도 사용자에겐 동일한 인터페이스를 제공 가능함
- 반면 리눅스는 시스템 콜을 직접 호출하고, 라이브러리가 불안정하여 호환성 문제가 지속됨
- Wine은 이러한 Win32 구조를 구현하여 1990년대 윈도우 95 시절의 앱까지 실행 가능하게 함
- 특히 Win32 기반 앱만을 사용하면 Wine과 윈도우 간의 호환성 차이는 거의 없음
새로운 리눅스 배포판 구상
- 윈도우와 유사한 데스크탑 환경을 가진 리눅스 배포판을 만들자는 제안
- 이 배포판은 기본적으로 Wine이 설치되어 있으며, 작은 커널 패치를 통해 윈도우 실행 파일을 자동 인식 및 실행 가능하게 함
- 사용자당 Wine 환경(prefix)을 설정하고, 윈도우 스타일의 파일 시스템 및 GUI를 제공함
- 기존의 리눅스 환경도 백그라운드에 유지되며 고급 사용자가 접근 가능함
진정한 멀티플랫폼 지원
- Wine은 리눅스뿐만 아니라 FreeBSD, macOS, Android 등 다양한 OS에서 실행 가능함
- 모든 앱을 Win32 앱으로만 배포하면 별도 포팅 없이 여러 플랫폼에서 실행 가능함
- 하나의 앱으로 여러 운영체제 호환성을 확보할 수 있는 구조임
미래의 위협
- macOS와 Windows는 점점 더 폐쇄적인 방향으로 발전 중이며, 사용자의 통제권을 박탈하고 있음
- Windows는 자동 스크린샷과 AI 분석 기능을 추가 중
- macOS는 Gatekeeper를 통해 승인된 앱만 실행 가능하도록 제한
- 두 OS 모두 사용자의 활동을 감시하고 불법 파일 탐색 및 신고 기능까지 준비 중
- Microsoft는 온라인 계정 없이 Windows 사용을 점점 더 어렵게 만들고 있음
- 이로 인해 계정 정지 시 컴퓨터 자체를 사용할 수 없는 상황이 올 수 있음
이러한 흐름은 악의적이라기보다는 경제적, 정치적 압력에 의해 발생하는 문제로 해석함
리눅스를 윈도우로 포장하는 이유
- 새로운 리눅스 배포판은 이식성 문제를 해결하고, 윈도우 사용자에게 친숙한 전환 환경을 제공함
- Windows 11 업그레이드가 강제되는 시점에서, 쉽게 전환 가능한 대안을 제공할 수 있음
- 지금이야말로 사용자의 주권을 회복할 수 있는 리눅스 배포판을 구상할 적기라는 주장임
비판적으로 보고 싶은건 아닌데 여러 운영체제를 사용해본 사람로서 공감이 잘 안되네요. 지금 웬만한 GUI도구는 웹으로 가능하고 좋은 데스크탑이 필요하면 UI가 아름다운 윈도우에서 하는게 나을 것이고 드라이버 지원도 윈도우즈가 훨씬 좋은데
Hacker News 의견
-
Linux 배포판에서 기본적으로 Windows 바이너리를 실행하는 Wine을 사용하는 배포판을 만들자는 의견이 있음
- Debian에서는
sudo apt install wine-binfmt
명령어로 쉽게 설치 가능함 - 다른 방법으로도 설정 파일을 수정하여 사용할 수 있음
- Debian에서는
-
Windows에서는 20년 된 exe 파일도 여전히 실행 가능하지만, Linux에서는 1년 된 바이너리도 업데이트로 인해 실행이 불가능할 수 있음
- Windows는 앱 설치 시 모든 동적 의존성을 함께 패키징하는 반면, Linux는 앱 간에 동적 의존성을 공유함
- 의존성을 변경하면 앱이 작동하지 않을 수 있음
- 이를 해결하기 위해 Windows처럼 배포하거나 정적으로 링크하는 방법이 있음
-
새로운 배포판이 필요하다고 생각하지 않음
- 대부분의 Windows 앱은 Wine을 통해 작동 가능하지만, 한 앱을 작동시키기 위한 해킹이 다른 앱을 망가뜨릴 수 있음
- 각 사용자가 개별적으로 설정을 조정해야 하며, 한 사람의 컴퓨터에서 작동하는 것이 다른 사람의 컴퓨터에서는 작동하지 않을 수 있음
- 가장 간단한 해결책은 Wine이 포함된 컨테이너를 배포하여 모든 사용자가 동일한 아티팩트를 받고 항상 작동하도록 하는 것임
- 공간 비효율적이지만, 컨테이너 사용을 위해 Wine을 슬림화하는 방법이 필요함
- 라이선스와 소프트웨어 안티 패턴이 이 시스템의 유일한 장벽임
-
Zorin OS는 .exe 파일에 대한 Wine 지원을 거의 기본적으로 제공하며, Steam OS/Proton은 새로운 게임의 Linux 포트를 만들지 말고 Proton에 최적화하라는 공식 지침이 있음
-
Linux 배포판은 일반적으로 실행 파일을 동적으로 링크하고 이전 버전의 라이브러리를 유지하지 않음
- Windows는 패키지 관리자가 없기 때문에 이전 버전의 실행 파일을 유지함
- Windows Store와 최근 CLI 도구가 있지만, 전통적으로 Windows 애플리케이션 설치는 수동 다운로드와 설치를 통해 이루어짐
- Linux에서도 동일한 방식으로 할 수 있지만, Linux 배포판의 패키지 관리자가 일반적으로 매우 우수함
-
Linux 시스템 호출은 매우 안정적이지만, 그 위의 C 라이브러리는 그렇지 않음
- Windows도 동일한 문제가 있으며, Visual C++ 런타임의 일부로 libc를 배포함
- Windows는 Visual Studio의 새로운 버전을 출시할 때까지 libc의 하위 호환성을 유지함
-
Lindows/Linspire를 원하는 사람처럼 들림
-
Windows ABI가 매우 안정적이라면, 왜 Win95나 NT를 사용하는 컴퓨터가 특정 소프트웨어가 작동을 멈출까봐 아무도 건드리지 않는지 궁금함
- 산업 환경, 공공 도서관, 기업 데이터베이스 등에서 이러한 컴퓨터를 많이 볼 수 있음
-
exe 파일 실행을 위한 커널 패치가 필요하지 않으며, binfmt_misc가 이를 처리할 수 있음
- wine-binfmt는 PE 파일을 자동으로 Wine을 통해 실행함