몇 달째 마이크로 리눅스 배포판을 직접 만들고 있음
사용자 모드는 단일 정적 바이너리 하나로 구성되어 있고, confidential microVM 컨테이너를 지원하기 위한 몇 개의 파일만 있음
특히 initramfs 구조가 흥미로움. 커널이 cpio 아카이브를 풀고 tmpfs로 진입해 /init을 실행하는 과정이 마치 마법 같음
여러 개의 cpio 아카이브를 이어 붙일 수도 있고, 각각 압축 가능하며 순서대로 오버레이됨
이 단순하면서도 우아한 설계 덕분에 직접 언팩 코드를 작성하면서 많은 걸 배움
최근에는 qemu가 주요 아키텍처에서 uftrace를 지원하기 시작했음
전문가들이 “이걸 어떻게 디버깅하지?”라고 물을 때 바로 그 답이 됨
관련 내용은 이 스레드에서 참고 가능함
나도 비슷한 프로젝트를 진행 중임 — azathos
직접 만든 toy init, shell, 그리고 몇 가지 유틸리티를 포함하고 있음
디버깅용으로 GNU coreutils를 넣었고, 지금은 프레임버퍼에 윈도우를 그리는 기능에 집중하고 있음
이 프로젝트 정말 멋짐. 98년에 플로피 기반 “배포판”을 만들어 Windows PC 이미징을 UDP 브로드캐스트로 하던 시절이 떠오름
“make bzimage”, init 스크립트 오류, 무한 재부팅… 추억이 많음
요즘 방식도 크게 다르지 않은 게 흥미로움. Raspberry Pi용으로 포팅하면 재미있고 교육적일 것 같음. 직접 시도해볼지도 모름
나도 98년에 Mandrake Linux를 NetBIOS와 ISDN으로 설치하려다 체크섬 오류 때문에 수십 번 다시 시작했던 기억이 있음
결국 친구가 sftp 내용을 CD로 구워줘서 해결했는데, 그때는 2배속으로만 쓸 수 있었음
이걸 클라우드 이미지로 (예: Vultr, DigitalOcean) 실행하거나 GUI를 띄워 Firefox를 돌리는 게 얼마나 어려울지 궁금함
클라우드 이미지로 돌리는 건 비교적 쉬움. 커널의 기본 드라이버만 있으면 되고, 이미지를 설치하면 됨
다른 배포판으로 부팅한 뒤 kexec로 자신의 커널을 실행해 메모리 상에서 설치하는 방식도 가능함
실제 구현 예시는 nixos-anywhere를 참고할 수 있음
네트워크와 스토리지를 위한 virtio 드라이버를 포함한 이미지를 만들고 qcow2로 변환해 DigitalOcean 등에 등록하면 됨
생각보다 간단한 작업임
이 프로젝트를 Raspberry Pi 대상으로 만든 버전이 있다면 정말 흥미로울 것 같음
왜 이런 걸 직접 만드는지 궁금했는데, 그냥 Gentoo로 리눅스를 탐구하는 건 안 되는지 생각해봄
Gentoo는 “소스에서 빌드”하지만, 패키지 매니저가 대부분의 일을 대신해줌
사용자 공간 커스터마이징은 가능하지만, 리눅스 자체를 배우기엔 적합하지 않음
stage3 tarball만 봐도 이미 “미니 배포판” 수준임
Hacker News 의견
몇 달째 마이크로 리눅스 배포판을 직접 만들고 있음
사용자 모드는 단일 정적 바이너리 하나로 구성되어 있고, confidential microVM 컨테이너를 지원하기 위한 몇 개의 파일만 있음
특히 initramfs 구조가 흥미로움. 커널이 cpio 아카이브를 풀고 tmpfs로 진입해 /init을 실행하는 과정이 마치 마법 같음
여러 개의 cpio 아카이브를 이어 붙일 수도 있고, 각각 압축 가능하며 순서대로 오버레이됨
이 단순하면서도 우아한 설계 덕분에 직접 언팩 코드를 작성하면서 많은 걸 배움
최근에는 qemu가 주요 아키텍처에서 uftrace를 지원하기 시작했음
전문가들이 “이걸 어떻게 디버깅하지?”라고 물을 때 바로 그 답이 됨
관련 내용은 이 스레드에서 참고 가능함
나도 비슷한 프로젝트를 진행 중임 — azathos
직접 만든 toy init, shell, 그리고 몇 가지 유틸리티를 포함하고 있음
디버깅용으로 GNU coreutils를 넣었고, 지금은 프레임버퍼에 윈도우를 그리는 기능에 집중하고 있음
이 프로젝트 정말 멋짐. 98년에 플로피 기반 “배포판”을 만들어 Windows PC 이미징을 UDP 브로드캐스트로 하던 시절이 떠오름
“make bzimage”, init 스크립트 오류, 무한 재부팅… 추억이 많음
요즘 방식도 크게 다르지 않은 게 흥미로움. Raspberry Pi용으로 포팅하면 재미있고 교육적일 것 같음. 직접 시도해볼지도 모름
결국 친구가 sftp 내용을 CD로 구워줘서 해결했는데, 그때는 2배속으로만 쓸 수 있었음
이걸 클라우드 이미지로 (예: Vultr, DigitalOcean) 실행하거나 GUI를 띄워 Firefox를 돌리는 게 얼마나 어려울지 궁금함
다른 배포판으로 부팅한 뒤 kexec로 자신의 커널을 실행해 메모리 상에서 설치하는 방식도 가능함
실제 구현 예시는 nixos-anywhere를 참고할 수 있음
생각보다 간단한 작업임
이 프로젝트를 Raspberry Pi 대상으로 만든 버전이 있다면 정말 흥미로울 것 같음
왜 이런 걸 직접 만드는지 궁금했는데, 그냥 Gentoo로 리눅스를 탐구하는 건 안 되는지 생각해봄
사용자 공간 커스터마이징은 가능하지만, 리눅스 자체를 배우기엔 적합하지 않음
stage3 tarball만 봐도 이미 “미니 배포판” 수준임
학습용으로는 정말 좋고, 빠르게 완성하려면 buildroot가 좋은 선택지임
이 글 덕분에 정말 많은 걸 배움. 정보량이 풍부한 포스트라 감사함