
빠르고 안전한 initramfs 생성기

Booster는 초기 부팅을 더 가볍고, 빠르고, 더 안정적으로 느껴지게 만듭니다. Linux 시스템을 펌웨어에서 실제 루트 파일시스템으로 최소한의 번거로움과 강력한 암호화 부팅 지원으로 이동시키는 컴팩트한 initramfs 이미지를 빌드합니다.
크고 범용적인 초기 사용자 공간을 채우는 대신, Booster는 여러분의 머신이 실제로 무엇을 필요로 하는지 파악하고 그에 맞춘 집중된 이미지를 빌드합니다. 그 결과는 호스트에 필요한 드라이버, 잠금 해제 도구, 파일시스템 지원, 복구 경로를 갖춘 슬림한 부팅 이미지이며, 매번 재부팅마다 온갖 것을 다 챙겨 넣지 않습니다.
Booster는 단순한 약속을 중심으로 만들어졌습니다: 초기 부팅은 빠르고, 명확하고, 안전하고, 운영하기 즐거워야 한다는 것입니다.
주요 특징:
systemd-cryptenroll TPM2 및 FIDO2 토큰을 지원하며, Booster의 플러그인 경로를 통한 네이티브 FIDO2 지원도 포함합니다.Booster는 암호화된 노트북, 개발자 워크스테이션, 원격 복구가 필요한 서버, 최소한의 Linux 시스템, 그리고 구성한 지 수년이 지나도 이해 가능한 상태로 유지되어야 하는 부팅 설정에 매우 적합합니다.
Booster는 전체 디스크 암호화를 부가 기능이 아닌 일급 워크플로로 취급합니다.
커널 매개변수, /etc/crypttab, GPT 자동 탐색, LUKS 컨테이너에 대한 직접 root= 참조, 키파일, 분리된 헤더, 하드웨어 기반 토큰에서 LUKS 장치를 잠금 해제할 수 있습니다.
지원되는 잠금 해제 방식은 다음과 같습니다:
systemd-cryptenroll TPM2 및 FIDO2 토큰.Booster의 토큰 오케스트레이션은 암호화된 부팅을 세련되게 느껴지도록 설계되었습니다. 비대화형 토큰은 백그라운드에서 경쟁할 수 있고, PIN 기반 토큰은 결정론적 순서로 프롬프트되며, 일반 패스프레이즈 프롬프트는 전체 부팅을 영원히 차단하는 대신 폴백으로 나타납니다.
최근 FIDO2 개선 사항은 경험을 더 매끄럽게 만듭니다:
enable_fido2: true로 활성화할 수 있습니다.fido2-device=가 있는 crypttab 항목은 Booster가 FIDO2 플러그인을 자동으로 번들링하게 할 수 있습니다.기본적으로 Booster는 호스트별 이미지를 빌드합니다. 현재 시스템을 살펴보고, 부팅에 필요한 모듈과 도구를 포함하며, 불필요한 부분은 제외합니다. 이렇게 하면 이미지가 감사하기 더 쉽고, 생성하기 더 빠르며, 부팅 중 실행 속도도 더 빠릅니다.
더 넓은 이미지가 필요할 때 --universal은 복구 시나리오, 휴대용 미디어, 또는 하드웨어가 변경될 수 있는 시스템을 위한 더 넓은 모듈 세트를 포함합니다.
Booster는 다음과 같은 실용적인 실제 부팅 레이아웃을 지원합니다:
UUID=, LABEL=, PARTUUID=, PARTLABEL=, HWPATH=, WWID=, 또는 /dev/...에 의한 장치 참조./etc/crypttab에서의 다중 암호화 매핑.문제가 발생했을 때, Booster는 무슨 일이 있었는지 확인할 수 있는 유용한 방법을 제공합니다.
자세한 부팅 로그를 위해 booster.log=debug,console을 사용하고, 비상 셸을 위해 busybox를 추가하거나, 부팅할 수 없는 머신에서 로그를 검색하기 위해 네트워크 지원을 활성화하세요.
Booster는 또한 재부팅 전에 무엇이 빌드되었는지 확인할 수 있는 이미지 검사 명령을 포함합니다:
booster ls /boot/booster-linux.img
booster cat /boot/booster-linux.img /init
booster unpack /boot/booster-linux.img /tmp/booster-image
공식 패키지를 설치하세요:
pacman -S booster
패키지는 /boot/에 Booster 이미지를 생성합니다:
$ ls -lh /boot/booster-*.img
-rwxr-xr-x 1 root root 3.9M Dec 10 20:51 /boot/booster-linux.img
다음으로 Booster를 설치하세요:
xbps-install -S booster
그런 다음 이미 설치된 커널에 대해 initramfs를 재생성하세요:
xbps-reconfigure -f linux
다음으로 Booster를 설치하세요:
apk add booster
그런 다음 설정별 부트로더 지침은 /usr/share/doc/booster/README.alpine을 읽어보세요.
Booster는 Fedora의 저장소에 없습니다. 체크아웃에서 RPM을 빌드하세요:
dnf install rpm-build golang gcc git-core libfido2-devel rubygem-ronn-ng systemd-rpm-macros
./packaging/fedora/createpkg.sh
dnf install ~/rpmbuild/RPMS/x86_64/booster-*.rpm
그런 다음 /etc/kernel/install.conf에서 Booster를 생성기로 선택하여 커널 업데이트 시 이미지가 재빌드되도록 하세요:
initrd_generator=booster
이미지를 직접 빌드할 수도 있습니다:
booster build /boot/booster-linux.img
더 넓은 하드웨어 세트를 가진 더 휴대성 있는 이미지를 원한다면:
booster build --universal /boot/booster-linux.img
이미지를 생성한 후, 부트로더가 이를 가리키도록 하세요. 전체 구성 세부 사항은 Booster manpage를 참조하세요.
호스트별 이미지 생성:
booster build booster.img
특정 커널용 이미지 생성:
booster build --kernel-version 6.8.9-arch1-1 /boot/booster-linux.img
생성된 이미지 검사:
booster ls /boot/booster-linux.img
/etc/booster.yaml 변경 후 패키지된 이미지 재생성:
/usr/lib/booster/regenerate_images
배포판이 systemd-ukify를 제공할 때 Unified Kernel Image 생성:
/usr/lib/booster/regenerate_uki build /boot/EFI/Linux
Booster는 의도적으로 구성하기 작게 만들어졌습니다. 간단한 암호화 노트북은 종종 큰 구성 파일이 전혀 필요하지 않습니다. 부팅 경로에 필요한 기능만 추가하세요:
compression: zstd
vconsole: true
enable_fido2: true
enable_lvm: true
enable_mdraid: true
SSH를 통한 원격 잠금 해제:
network:
dhcp: on
ssh_host_key: /etc/booster/ssh_host_ed25519_key
ssh_authorized_keys: /etc/booster/authorized_keys
ssh_listen: :22
여러 하드웨어 잠금 해제 방법이 등록되었을 때 더 매끄러운 토큰 순서를 위해:
serialize_tokens:
enabled: true
clevis_timeout: 45s
tpm2_timeout: 15s
fido2_timeout: 30s
Plymouth 스플래시 지원:
enable_plymouth: true
modules_force_load: amdgpu
커널 명령줄에 quiet splash를 사용하고, 그래픽 스플래시를 원할 때는 booster.log=console을 피하세요.
전체 사용자 문서는 Booster manpage에 있습니다. 다음을 다룹니다:
/etc/booster.yaml 옵션./etc/crypttab 통합.Booster는 mkinitcpio 및 dracut과 같은 문제 영역에 있습니다. 그 초점은 강력한 암호화 부팅 인체공학과 자동 호스트 탐색을 갖춘 빠르고 컴팩트한 Go 기반 initramfs 생성기입니다.
프로젝트는 세 가지 주요 부분으로 구성됩니다:
init - 부팅 중 실행되는 초기 사용자 공간 프로그램.generator - initramfs 이미지를 빌드하는 도구.tests - 생성된 이미지에 대한 QEMU 기반 통합 테스트.표준 Go 도구로 빌드:
go build ./...
단위 테스트 실행:
go test ./generator ./init
전체 테스트 스위트 실행:
go test ./...
./tests 패키지는 QEMU 통합 테스트를 포함하며 호스트에 필요한 부팅 및 가상화 도구가 설치되어 있어야 합니다. 여기에는 qemu-img가 포함되며, 일부 배포판에서는 에뮬레이터와 별도로 패키징됩니다.
테스트 자산을 빌드하고 필요한 도구를 나열:
go test ./tests -bootstrap -timeout=0
새 테스트는 가능한 경우 t.Parallel()을 호출하도록 요청됩니다. 일반 실행은 여전히
한 번에 하나의 테스트이지만, -parallel N은 여러 VM을 동시에 부팅하며, 참여할 수 없는 테스트는
실패하는 대신 조용히 시간을 소모하므로, 그 이유를 설명하는 메모가 누락된 호출보다 더 유용합니다.
실제로 동시에 실행되는 VM 수는 호스트가 제공할 수 있는 것에 의해 제한되며, 메모리와 코어에서 도출됩니다. -vm.smp, -vm.mem 및 -vm.max는 게스트 크기와 그 제한을 재정의합니다.
이 프로젝트에 대한 작업은 Twitter의 해커 위크 동안 시작되었습니다. 오픈 소스 개발을 지원해 준 Twitter에 큰 감사를 표하며, Ian Brown에게 특별한 감사를 전합니다.
Booster의 아키텍처는 Michael Stapelberg의 distri에서 영감을 받았으며, 초기 버전은 distri의 initramfs 생성기에서 많은 아이디어를 차용했습니다.
LICENSE를 참조하세요.