systemd 부팅 작업을 실시간 트리로 그리는 bootvine, Rust와 ratatui로 만든 TUI 부팅 화면
- bootvine은 부팅 콘솔에서 systemd 유닛이 올라오는 과정을 실시간 트리로 보여주는 부팅 애니메이션이고, 코드의 85%가 Rust이며 화면은 ratatui로 그린 TUI임
- 실패한 유닛은 마지막 journal 로그 줄과 함께 표시해서 어느 유닛이 왜 실패했는지 부팅 화면에서 바로 보여줌
- Codeberg 저장소는 스타 106개, 포크 4개, 커밋 101개, 태그 4개, 크기 25MiB이고 최신 릴리스는 v0.1.3
- Rust 외에 Nix 8.4%, Python 4.2%, Nushell 2.1%가 섞여 있고 NixOS VM 테스트와 Woodpecker CI로 검증하며 최근 커밋은 NixOS가 제거한 initrd 샘플 머신을 테스트에서 뺀 것임
- 저장소 스크린샷에서는 initrd에서 부팅 완료까지 약 12초가 표시되는데, 댓글에서는 이 정도면 트리 렌더링 비용이 부팅 시간을 갉아먹는 것 아니냐는 지적이 나옴
Hacker News opinions
이거 보고 OpenRC로 비슷한 거 만들 수 있을지 궁금해졌어. 영감 잘 받았음.
생각해보니 내 OpenRC 머신은 병렬 부팅을 켜둔 적도 없더라. BIOS가 제어권 넘기기 전에 잡아먹는 시간이 OS 부팅보다 훨씬 길어서 굳이 필요가 없었음.
systemd를 엄청 싫어하는데 이건 처음으로 조금 봐줄 만하다는 생각이 들었어.
왜 싫어함?
나도 아주 싫어함. 근데 이 도구는 systemd 쓰는 배포판 다룰 때 꽤 쓸 만해 보임.
애니메이션 하나 보고 systemd가 좋아지면 그건 systemd랑 리눅스 init 시스템을 하나도 이해 못한 거임.
이건 모든 배포판 기본값이 되어야 함. 윈도우나 맥에서 온 사람은 겁먹겠지만 그 정도 희생은 괜찮음.
스피너 보는 걸 좋아하는 뇌 부위를 자극하는 데다 시스템에서 뭐가 돌아가는지 직관적으로 보여. 무서워하는 사람을 위해 splash를 기본으로 두면 됨.
TUI는 별로 안 좋아하고 그냥 출력물을 emacs 텍스트 버퍼로 받고 싶은 쪽인데, 이 화면은 예쁘네. systemd 유닛 상태를 한눈에 다 보여줌.
좋은데 부팅이 왜 아직도 몇 초씩 걸리는지 모르겠음. 전원 들어오면 하드웨어는 켜진 거고 대부분 병렬로 초기화되는데.
스크린샷을 제대로 읽으면 initrd에서 완전히 뜨기까지 12초 걸렸더라. 내 노트북은 전체 부팅이 2초라 화면 그리는 시간이 텍스트 뿌리는 것보다 오래 걸릴 듯. UEFI 프리부트에서 보내는 시간이 더 김.
납땜된 노트북 보드 UEFI가 OS보다 오래 걸리는 건 진짜 짜증나는 일임.
30년 만에 나온 개선 같아서 좋음. 근데 트리를 TUI 대신 그래픽으로 그리지 않을 이유는 없지. TUI도 UI니까.
이건 UI 디자인이 뛰어남. 만든 사람이 재능 있는데, UX를 어떤 원칙으로 어떻게 도출했는지 궁금함.