GN⁺: 구글 드라이브에서 리눅스 부팅
(ersei.net)Google Drive에서 Linux 부팅하기
하지만 어떻게?
- 보조 장치 없이 자체적으로 해결하고 싶었음
- FUSE를 사용하여 사용자 공간에서 파일 시스템 드라이버로 작동하도록 설정
- FUSE 프로그램을 Linux 커널 initramfs에 설치하고 네트워킹을 구성해야 했음
Linux 부팅 과정
- 펌웨어(BIOS/UEFI)가 부팅 로더를 시작하고 로드함
- 부팅 로더가 커널을 로드함
- 커널이 임시 파일 시스템을 RAM에 압축 해제하여 실제 파일 시스템을 마운트할 도구를 제공함
- 커널이 실제 파일 시스템을 마운트하고 프로세스를 새로운 파일 시스템에서 실행되는 init 시스템으로 전환함
개념 증명
- 네트워크 지원 및 적절한 FUSE 바이너리를 포함한 initramfs 필요
- Dracut을 사용하여 사용자 정의 initramfs를 쉽게 빌드할 수 있었음
- Arch Linux를 기반으로 빌드 결정
Google이 개입함
- google-drive-ocamlfuse 프로젝트를 사용하여 Google Drive를 FUSE로 마운트
- 여러 문제 발생: 심볼릭 링크, 하드 링크, 속도, 권한 문제 등
- 문제를 해결하기 위해 수동으로 심볼릭 링크 생성 및 기타 설정 조정
실제 하드웨어에서 실행하기
- 올바른 이더넷 드라이버 사용 및 네트워크 설정 변경
- USB 드라이브에 통합 EFI 파일을 빌드하여 실제 하드웨어에서 테스트
결론
- 이 프로젝트는 클라우드 네이티브 컴퓨팅의 가능성을 보여줌
- SSH 또는 Git 저장소에서 Linux를 부팅하는 등 다양한 응용 가능성 존재
GN⁺의 의견
- 이 프로젝트는 클라우드 네이티브 컴퓨팅의 가능성을 탐구하는 흥미로운 시도임
- FUSE를 사용하여 Google Drive에서 Linux를 부팅하는 과정에서 발생하는 다양한 문제를 해결하는 방법을 배울 수 있음
- 클라우드 기반 파일 시스템의 성능 및 안정성 문제를 고려해야 함
- 비슷한 기능을 제공하는 다른 프로젝트로는 gitfs 등이 있음
- 새로운 기술을 채택할 때는 성능, 안정성, 보안 등의 측면을 신중히 고려해야 함
Hacker News 의견
-
이 기술을 "부팅"이라고 부르기에는 커널이 이미 부팅된 상태임
- google-drive "마운팅" 지원이 grub에 추가되면 인정할 것임
- 이는 rootfs를 이상한 장소에 배치하는 것임
- 참고로, 내 프로젝트는 NixOS의 rootfs를 IPFS에 배치하는 것임
-
과거에는 Sun Solaris를 HTTP를 통해 부팅할 수 있었음
- 이를 wanboot라고 불렀음
- SPARC 머신의 OpenBoot PROM 펌웨어 옵션이었음
- 네트워크 부팅 설정 예시:
ok setenv network-boot-arguments dhcp,hostname=myclient,file=https://192.168.1.1/cgi-bin/wanboot-cgi ok boot net
- 이는 (인터)네트워크를 통해 initramfs와 커널을 로드함
- 관련 문서 링크:
-
Linux를 bittorrent로 부팅하는 것은 어떨까?
- nbdkit-torrent-plugin 예시
- 문제는 높은 지연 시간의 장치에서 Linux를 부팅할 때 커널이 I/O 요청을 너무 빨리 타임아웃함 (약 60초)
- 타임아웃 시간을 늘려야 함
-
로컬 initramfs에서 몇 메가바이트의 rootfs를 부팅할 때 원격에서 부팅한다고 할 수 있을까?
-
사람들이 정말 원하는 것은 특히 임베디드 시스템에서의 초단위 부팅임
- 이는 어려운 문제지만, 이를 해결하기 위한 CS 연구에 관심이 없는 것 같음
-
S3에서 부팅하는 것을 언급함
- Google Drive로 변경하면 지연 시간이 추가됨
- 그래도 잘한 것임
-
집에서 처음 케이블 모뎀을 설치했을 때, 부팅 플로피를 사용해 네트워크를 통해 BSD를 설치할 수 있었음
- 당시에는 놀라운 일이었음
- 오늘날에도 가능한지 확실하지 않음
- 아마도 파일이 FTP나 TFTP에 호스팅되었을 것임
- 오늘날에는 대부분 ISO 파일임
-
비슷한 일을 한 적이 있음: Tumbleweed 설치 DVD의 RPM 저장소에서 부팅함
- 초기 목표는 RPM 패키지를 마운팅하는 fuse 파일 시스템을 작성하는 것이었음
- 얼마나 멀리 갈 수 있는지 확인하고 싶었음
- 결과적으로 꽤 멀리 갈 수 있었음:
- 시스템이 작동하는 데스크탑으로 부팅되고, DVD에 있는 모든 패키지가 설치된 것처럼 보임
-
Windows에서는 Citrix를 사용해 이를 자주 함
- 이를 pvs라고 부름
- 작은 pxe 부팅을 하고 Windows 서버 이미지를 스트리밍함
-
"정신이 혼미해지고, 수천 년의 프로그래머 시간과 광기의 비명 속에서 나의 걸작을 찾음"
- 퓰리처상 후보감임