nmbl(No More Boot Loader): 부트로더 대신 커널을 사용
(pretalx.com)- Red Hat 부트로더 엔지니어링 팀은 GRUB 부트로더를 대체할 새로운 방안을 개발 중임
- nmbl (no more boot loader)이라는 빠르고 안전한 리눅스 기반 사용자 공간 솔루션을 제안
-
GRUB 부트로더의 문제점
- GRUB은 강력하고 유연한 부트로더로 여러 아키텍처에서 사용됨 (x86_64, aarch64, ppc64le OpenFirmware)
- 그러나 기능이 복잡하여 유지보수가 어렵고, 리눅스 커널과 중복되거나 뒤처지는 경우가 많음
- 또한 많은 보안 취약점을 야기함
-
리눅스 커널의 장점
- 리눅스 커널은 큰 개발자 기반을 가지고 있어 빠른 기능 개발과 취약점 대응이 가능함
- 전반적인 검토가 더 철저하게 이루어짐
-
새로운 솔루션: 커널을 부트로더로 사용
- EFI 스텁에 의해 UEFI에서 로드되고, 통합 커널 이미지(UKI)로 패키징됨
- 커널, initramfs, 커널 명령줄이 최종 부트 타겟에 도달하는 데 필요한 모든 것을 포함함
- 필요한 모든 드라이버, 파일 시스템 지원, 네트워킹이 이미 내장되어 있어 코드 중복이 방지됨
Hacker News 의견
-
10년 전부터 UEFI를 사용해왔음. 부팅 시간은 약간 단축되지만, 부트로더는 여러 이점이 있음
- Windows와의 듀얼 부팅을 쉽게 할 수 있음
- 커널 cmdline을 편집하여 부팅 문제를 해결할 수 있음
- 여러 커널과 initrd 이미지를 쉽게 선택할 수 있음
- UEFI 설정 메뉴에 쉽게 접근할 수 있음
- 다른 EFI 애플리케이션을 부팅할 수 있음
-
FreeBSD의 부트로더는 initramfs 없이 부팅할 수 있음. 더 스마트한 부트로더가 필요함
- ZFS를 이해하고 필요한 모듈을 미리 로드할 수 있음
- 모듈 의존성을 이해하고 필요한 모든 모듈을 미리 로드할 수 있음
-
UEFI 환경의 기능과 제약에 대한 오해가 많음. 프로젝트의 실제 목표를 잘못 이해하고 있음
- Lennart의 비판 글이 더 흥미로운 우려를 제기함
-
90년대 DEC Alpha 시스템에서 Linux를 부팅하던 MILO를 떠올리게 함
- 중간 부트로더가 필요하며, 안정성을 중시하는 릴리스 주기가 필요함
- 데이터 기반 메뉴/설정 레이어가 필요함
-
이전에 Chromebook에서 Linux+Coreboot를 사용했음. Tianocore UEFI BIOS의 드라이버 버그로 인해 Linux를 직접 사용했음
- Rust TUI를 작성하여 모든 파티션을 마운트하고 커널 이미지를 kexec함
- 모든 드라이버를 중복할 필요가 없다고 생각함
-
UEFI와 Linux의 기능을 더 많이 수용하는 것이 좋음. ZFSBootMenu는 4년 동안 EFI 애플리케이션을 제공해왔음
- 첫 번째 단계 커널 부팅이 1.5~2초 정도 걸림
-
kexec와의 호환성 문제에 대한 우려가 있음
- 예를 들어, NVidia 모듈은 kexec 전에 언로드해야 함
- ACPI 문제와 호환성 문제도 있음
- kexec 메커니즘이 다양한 커널 버전을 지원하도록 설계되었을 것이라고 추측함
-
EFI 스텁이 멀티 부팅, 커널 및 initrd를 설정한 후 점프하는 것은 간단함
- 중간 로더가 너무 크고 복잡해질 필요가 없음
- UEFI API와 다른 프로그래밍 환경을 피하기 위해 Linux 전체를 포함하는 것은 불필요함
-
제안된 솔루션이 멀티 OS 부팅을 처리할 수 있을지 궁금함
- grub은 Linux와 Windows, 그리고 세 번째 OS까지 부팅할 수 있음
- Red Hat의 솔루션이 상업적 용도로만 제한될까 우려됨
- 1년에 한두 번만 재부팅하는 시스템에 어떤 문제를 해결하는지 이해하기 어려움
-
plain EFISTUB보다 이 솔루션을 사용하는 이유를 모르겠음
- Arch에서 EFISTUB을 사용하고 있으며, Windows 부팅 시 BIOS 메뉴를 사용함
- Linux 기반 부트로더의 이점을 이해하지 못함