TL;DR
- Guix 소스 트리에서 개발 중인 Linux 커널 모듈을 운영 중인 워크스테이션에 직접 설치하지 않고, QEMU 가상 머신에 실제 USB 오디오 장치를 연결해 시험함.
- 최소 운영체제 예제
bare-bones.tmpl의kernel-loadable-modules필드에snd-rane-sl3을 지정하고 패키지에alsa-utils를 추가함. guix system vm으로 가상 머신 실행 스크립트를 만들고, USB 버스·장치 권한을 변경해 실제 장치를 전달함.- 가상 머신에서 USB 장치와
snd_rane_sl3커널 모듈을 확인하고,aplay -l에서 Rane SL3 오디오 장치를 인식함. speaker-test -c 2로 스테레오 핑크 노이즈를 재생해 모듈을 시험했으며, 이후 풀 리퀘스트 승인과 운영체제 설정 반영을 기다리는 단계임.
최소 운영체제 설정으로 시험 환경 구성
- 커널 모듈 패키지를 시험하려면 운영체제 정의에 추가하고 시스템을 재구성한 뒤 재부팅하며, 버그를 수정해 이 과정을 반복해야 함. 하지만 백그라운드 작업을 수행 중인 워크스테이션을 소스 체크아웃 상태에서 재구성하고 되돌리거나, 이후
guix pull에--allow-downgrades옵션을 전달하는 방식은 피하고자 함. - 대신 Guix 소스 저장소에 포함된 최소 운영체제 예제
gnu/system/examples/bare-bones.tmpl을 수정함. - 모듈을 불러오는 부분에 오디오 및 리눅스 패키지 모듈을 포함함.
kernel-loadable-modules필드에snd-rane-sl3을 지정함.- 전역 패키지 목록에
alsa-utils를 추가함. - 커널 모듈 패키지 정의가 준비된 소스 체크아웃에서
./pre-inst-env guix system vm gnu/system/examples/bare-bones.tmpl을 실행해 가상 머신 이미지와 실행 스크립트 경로를 얻음. 이 방식으로 옵션을 전달하면서 가상 머신을 빌드하고 시작할 수 있음.
QEMU에서 실제 USB 장치 연결
- 실제 하드웨어를 가상 머신의 커널 모듈에 연결하려면
qemu가 USB 장치에 접근할 수 있도록 관련 버스·장치 쌍의 소유권을 변경해야 함.lsusb출력에서 확인한 장치 번호를 사용해/dev/bus/usb/003/002의 소유자를 현재 사용자로 변경함. - 여러 차례 시험한 뒤 USB 지원,
qemu-xhci컨트롤러, 호스트 USB 장치 전달, 비그래픽 모드를 지정해 가상 머신을 실행함. - 가상 머신은 GNU 시스템으로 부팅되며,
root계정으로 로그인할 수 있음.
모듈과 오디오 장치 확인
- 가상 머신에서
lsusb를 실행해Rane Corporation SL 3장치가 USB 버스 002의 장치 002로 연결된 것을 확인함. lsmod출력에서snd_rane_sl3과 관련snd_pcm,snd모듈을 확인함. USB 장치가 연결되고 커널이 해당 모듈을 올바르게 불러온 상태임.aplay -l에서 재생 장치Rane SL3을 확인해 ALSA 유틸리티가 오디오 장치를 인식함.- 스튜디오에 스피커 채널 두 개가 연결되어 있어, 사운드카드의 첫 번째 스테레오 출력 쌍을 오디오 시스템에 연결하고
speaker-test -c 2를 실행함. - 재생 스트림은 48,000Hz, S16_LE, 2채널로 설정되며 왼쪽·오른쪽 채널에서 핑크 노이즈가 출력됨.
- 스테레오 재생이면 커널 모듈 작동 여부를 시험하기에 충분하다고 판단함.
변경 사항 반영 대기
- 스피커에서 핑크 노이즈가 출력되는 것을 확인했으며, 이후 오디오 팀의 다른 구성원이 풀 리퀘스트를 승인하면 변경 사항을 푸시하고 가져올 예정임.
- 이어 운영체제 설정에 모듈을 추가하고 시스템을 재구성한 뒤 재부팅하면, 잡음이 적은 오디오를 이용할 수 있음.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요