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채널로 설정되며 왼쪽·오른쪽 채널에서 핑크 노이즈가 출력됨.
  • 스테레오 재생이면 커널 모듈 작동 여부를 시험하기에 충분하다고 판단함.

변경 사항 반영 대기

  • 스피커에서 핑크 노이즈가 출력되는 것을 확인했으며, 이후 오디오 팀의 다른 구성원이 풀 리퀘스트를 승인하면 변경 사항을 푸시하고 가져올 예정임.
  • 이어 운영체제 설정에 모듈을 추가하고 시스템을 재구성한 뒤 재부팅하면, 잡음이 적은 오디오를 이용할 수 있음.