2026년 8월 23일 일요일

Roland SC-D70을 Windows 11에서 다시 살려 보다 (2) — 2007년 드라이버를 2026년에 다시 서명하다

Windows 11 시대에 다시 살아난 롤랜드 사운드캔버스 SC-D70. ChatGPT와 함께 몇 시간 동안 시행착오를 거친 끝에 얻은 결과다.

앞 글에서는 2007년에 배포된 Roland SC-D70용 Windows Vista x64 드라이버가 Windows 11에서도 실제로 동작한다는 것을 확인하였다. Windows의 Driver Signature Enforcement를 일시적으로 해제하고 부팅하면 SC-D70이 정상적으로 인식되었고, MIDI PART A와 PART B는 물론 USB Audio 입출력까지 모두 사용할 수 있었다. 처음에는 Memory Integrity도 꺼야 하는 것으로 생각했으나, 다시 켜고 시험해 보니 그것 역시 문제가 되지 않았다. 결국 드라이버의 기능이나 Windows 11과의 실질적인 호환성보다는 오래된 드라이버의 서명이 현재 Windows의 요구 조건을 충족하지 못하는 것이 문제의 핵심인 것으로 보였다.

그렇다면 다음 실험은 자연스럽게 정해진다. 이 오래된 드라이버를 현대적인 방법으로 다시 서명하면 어떻게 될까? 물론 Roland의 소스 코드를 가지고 있는 것도 아니고 새로운 Windows 11용 드라이버를 작성할 생각도 없다. 여기서 말하는 '새 드라이버'란 기존의 2007년 드라이버 바이너리를 그대로 사용하되, 현재의 Windows Driver Kit(WDK)를 이용하여 새로운 catalog를 만들고 자체적인 테스트 인증서로 다시 서명한 드라이버 패키지를 뜻한다. 이것이 성공한다면 적어도 Windows가 제공하는 test-signing 환경에서는 매번 Driver Signature Enforcement를 일시적으로 해제하지 않고도 SC-D70을 사용할 수 있을 것이다.

19년 된 드라이버를 최신 WDK에 넣어 보다

먼저 Microsoft의 Windows SDK와 WDK를 설치하였다. 이번에 사용한 도구의 버전은 10.0.28000.0이었다. 원본 SC-D70 Vista x64 드라이버는 별도의 작업 디렉터리로 복사하였다. 여기에는 RDIF1012.INF, RDWM1012.SYS, RDID1012.CAT를 비롯하여 제어판과 오디오 기능에 필요한 DLL과 DAT 파일들이 들어 있다. 당연히 원본 파일은 별도로 보존하였다.

가장 먼저 해 본 것은 현재 WDK의 Inf2Cat이 2007년에 만들어진 이 드라이버 패키지를 받아들이는지 확인하는 일이었다. 기존 RDID1012.CAT 파일의 이름을 바꾸어 보관한 뒤 다음과 같이 새로운 catalog를 생성하였다.

& "C:\Program Files (x86)\Windows Kits\10\bin\10.0.28000.0\x86\Inf2Cat.exe" `
  /driver:"C:\projects\SC-D70_Win11-TestSigned" `
  /os:10_X64

결과는 의외로 깨끗했다.

Signability test complete.

Errors:
None

Warnings:
None

Catalog generation complete.

2007년의 INF 파일을 특별히 수정하지 않았는데도 현재의 Inf2Cat이 오류나 경고 하나 없이 catalog를 만들어 주었다. 이것만으로 Windows 11에서 정상적으로 사용할 수 있다는 뜻은 아니지만, 적어도 드라이버 패키지의 기본 구조가 현대 WDK에서 거부될 정도로 낡은 것은 아니었다.

테스트 인증서를 만들고 드라이버에 서명하다

다음으로 PowerShell의 New-SelfSignedCertificate를 이용하여 코드 서명용 자체 인증서를 만들었다. 인증서 이름은 단순하게 'SC-D70 Win11 Test Driver'라고 하였다. SHA-256을 사용하였으며, 만들어진 인증서는 Local Machine의 인증서 저장소에 넣고 Trusted Root Certification Authorities와 Trusted Publishers에도 등록하였다. 이것은 어디까지나 개인적인 실험을 위한 test certificate이며 Microsoft나 Roland가 인증한 서명이 아니다.

$cert = New-SelfSignedCertificate `
  -Type CodeSigningCert `
  -Subject "CN=SC-D70 Win11 Test Driver" `
  -CertStoreLocation "Cert:\LocalMachine\My" `
  -HashAlgorithm SHA256

여기에서 한 가지 흥미로운 사실을 확인하였다. SignTool로 RDWM1012.SYS를 조사해 보니 이 파일 자체에는 embedded signature가 없었다. 원래의 드라이버 패키지는 catalog의 서명에 의존했던 것으로 보인다. 이번 실험에서는 Memory Integrity를 켠 상태에서도 사용할 수 있는지 확인하고 싶었으므로 SYS 파일 자체에도 테스트 서명을 추가하기로 하였다.

$SignTool = "C:\Program Files (x86)\Windows Kits\10\bin\10.0.28000.0\x64\signtool.exe"

& $SignTool sign /v /fd SHA256 `
  /s My /sm `
  /sha1 $cert.Thumbprint `
  .\RDWM1012.SYS

여기에서는 작업 순서가 중요하다. SYS에 embedded signature를 추가하면 파일 자체가 달라지므로 그 전에 만들어 놓은 catalog에 기록된 해시도 더 이상 맞지 않는다. 따라서 SYS를 먼저 서명하고, 그 상태에서 Inf2Cat을 다시 실행하여 RDID1012.CAT를 새로 만들었다. 마지막으로 이 catalog에도 같은 테스트 인증서로 SHA-256 서명을 하였다.

& $SignTool sign /v /fd SHA256 `
  /s My /sm `
  /sha1 $cert.Thumbprint `
  .\RDID1012.CAT

SignTool의 /pa 옵션으로 SYS와 CAT를 각각 검증한 결과 두 파일 모두 오류 없이 검증되었다. 이로써 원본 드라이버의 코드는 그대로 두면서 2026년에 만든 SHA-256 test signature를 가진 새로운 SC-D70 드라이버 패키지가 만들어졌다. 엄밀히 말하면 새로운 드라이버를 개발한 것은 아니다. 2007년의 드라이버를 현재의 Windows 개발 환경에 맞추어 다시 패키징하고 test-signing한 것이다.

Windows 11을 Test Mode로 부팅하다

이제 실제로 Windows가 이 패키지를 받아들이는지 확인할 차례였다. 여기에는 중요한 대가가 하나 있다. Microsoft가 정식으로 서명한 production driver가 아니므로 Windows의 Test Signing 기능을 사용해야 하고, 이를 위해 이 컴퓨터에서는 UEFI의 Secure Boot를 꺼야 했다. BitLocker가 활성화되어 있다면 UEFI 설정을 변경하기 전에 복구 키 등의 문제를 먼저 확인해야 한다. 내가 실험한 PC의 C: 드라이브에는 BitLocker가 설정되어 있지 않았다.

Secure Boot를 끈 뒤 Windows에서 다음 명령으로 상태가 False임을 확인하였다.

Confirm-SecureBootUEFI

그 다음 관리자 권한의 PowerShell에서 Test Signing을 활성화하였다.

bcdedit /set testsigning on

평범하게 재부팅하자 Windows 11 바탕화면 오른쪽 아래에 Test Mode라는 표시가 나타났다. 이것은 오류 메시지가 아니다. 현재 Windows가 Microsoft의 production signing 정책을 충족하지 않는 테스트 서명 드라이버를 개발 및 시험 목적으로 받아들이도록 설정되어 있음을 나타내는 표시이다. 이 실험에서는 Memory Integrity는 계속 켜 두었다.



마지막까지 순조롭게 진행되지는 않았다

처음에는 이렇게 만든 RDIF1012.INF를 곧바로 pnputil로 설치하였다. 그런데 Windows는 새 드라이버를 설치하지 않았다. 이미 Driver Store에 들어 있던 기존 Roland 패키지와 INF가 사실상 동일하기 때문에 기존 oem76.inf가 이미 설치되어 있고 최신 상태라는 판단을 내린 것이다. 장치 상태를 확인해 보니 여전히 Code 52, 즉 서명 문제를 나타내고 있었고 signer도 여전히 Roland Corporation으로 표시되었다.

해결 방법은 간단했다. SC-D70을 USB에서 분리하고 기존 Roland 패키지를 Driver Store에서 제거한 다음, 우리가 새로 만든 test-signed 패키지를 다시 넣었다. 내 컴퓨터에서는 기존 패키지의 게시 이름이 oem76.inf였으므로 다음과 같이 하였다. 이 oem 번호는 컴퓨터마다 다를 수 있으므로 그대로 따라 쓰면 안 된다.

pnputil /delete-driver oem76.inf /uninstall /force

cd C:\projects\SC-D70_Win11-TestSigned
pnputil /add-driver .\RDIF1012.INF

이번에는 드라이버 패키지가 실제로 새로 추가되었다. 재미있게도 삭제하면서 비어 있던 번호가 다시 사용되어 새 패키지 역시 내 컴퓨터에서는 oem76.inf가 되었다. 따라서 oem 번호 자체가 중요한 것은 아니다. 중요한 것은 Driver Store에 있던 기존 Roland 패키지를 제거하고 새로 test-signing한 패키지가 들어갔다는 점이다.

SC-D70을 다시 연결하고 장치를 검색하였다. 결과는 이번에는 달랐다.

Status  Class          FriendlyName
------  -----          ------------
OK      AudioEndpoint  IN(Roland SC-D70)
OK      MEDIA          Roland SC-D70
OK      AudioEndpoint  OUT(Roland SC-D70)

실제 프로그램에서도 확인하였다. Roland SC-D70 PART A와 PART B가 모두 나타났고 양쪽 포트로 MIDI 데이터를 보내 정상적으로 연주할 수 있었다. MIDI IN/OUT도 사용할 수 있었으며 Windows의 오디오 장치로 SC-D70을 선택했을 때 USB Audio도 정상적으로 재생되었다. 앞 글에서 Driver Signature Enforcement를 일시적으로 해제했을 때 확인했던 기능들이 이번에도 그대로 살아났다.

그냥 재부팅해 보았다

마지막 시험은 단순했다. 아무런 고급 시작 옵션도 선택하지 않고 Windows를 평범하게 재부팅하였다. 앞 글에서 사용했던 Driver Signature Enforcement의 일시적인 해제도 하지 않았다. Windows 11이 다시 올라온 뒤 SC-D70을 확인하였다. 장치는 정상적으로 인식되었고 PART A와 PART B가 모두 보였다. USB Audio도 정상적으로 작동하였다.

결국 성공하였다. 2007년의 RDWM1012.SYS 코드를 수정하거나 새 드라이버를 작성하지 않았다. 원본 SYS에 현대적인 SHA-256 test signature를 추가하고, 그 상태에서 catalog를 다시 만들어 같은 인증서로 서명했을 뿐이다. 그런데 그것으로 2026년의 Windows 11에서 정상적인 재부팅을 거친 뒤에도 SC-D70의 USB MIDI와 USB Audio 기능을 지속적으로 사용할 수 있게 되었다.

물론 이것을 'Windows 11용 정식 SC-D70 드라이버'라고 부를 수는 없다. 현재 PC는 Secure Boot가 꺼져 있고 Windows의 Test Signing이 활성화되어 있다. 바탕화면에도 Test Mode라는 표시가 나온다. Memory Integrity는 켜 놓은 상태로 정상 동작했지만, Secure Boot를 포기하고 테스트 서명 커널 드라이버를 허용하는 것은 일상적인 Windows의 정상 보안 상태와 같지 않다. 따라서 이 설정을 일반 사용자에게 상시 사용하라고 권하기는 어렵다. SC-D70을 가끔 사용하는 경우라면 Secure Boot와 정상적인 서명 정책을 유지하고, 필요할 때만 Driver Signature Enforcement를 한 번의 부팅에 한하여 일시적으로 해제하는 방법이 보안 측면에서는 더 나을 수도 있다.

그래도 이번 실험에서 확인한 사실은 꽤 분명하다. SC-D70이 Windows 11에서 작동하지 않는 이유는 적어도 내가 시험한 범위에서는 드라이버의 기능이 낡아서가 아니었다. 2007년에 만들어진 Vista x64 드라이버는 19년 뒤의 Windows 11에서도 USB Audio와 두 개의 MIDI PART를 제대로 다룰 수 있었다. 최신 WDK의 Inf2Cat도 이 패키지를 오류나 경고 없이 처리하였다. 문제는 오래된 하드웨어나 오래된 코드 자체라기보다는 그 코드를 신뢰할 것인가를 결정하는 현대 Windows의 서명 체계에 있었다.

이제 남은 질문은 기술적인 것이라기보다 제도적인 것에 가깝다. Secure Boot를 다시 켜고 Test Mode도 사용하지 않으면서 이 드라이버를 정상적으로 로드하려면 Microsoft가 신뢰하는 production 수준의 서명이 필요하다. 그러나 이 드라이버는 Roland가 만든 것이므로, 개인적으로 다시 서명하여 시험하는 것과 정식 서명을 받아 공개적으로 배포하는 것은 전혀 다른 문제이다. 실제로 그 단계까지 가려면 Roland의 동의와 Microsoft의 현재 드라이버 서명 절차를 검토해야 할 것이다.

원본 드라이버의 날짜는 2007년 1월 22일이고 버전은 1.0.0.0이다. 2027년이면 이 64비트 드라이버도 20주년을 맞는다. 여기까지 왔으니 20주년을 맞아 정식으로 다시 서명된 SC-D70 드라이버를 볼 수 있다면 재미있겠다는 생각도 든다. 그것이 실제로 가능한지는 아직 모르겠다.

일단 이번 실험의 결론은 이것으로 충분하다. 2007년의 드라이버는 아직 작동한다. 2000년에 출시된 SC-D70도 아직 작동한다. 새로 만들어야 했던 것은 드라이버 자체가 아니라, 2026년의 Windows가 그것을 다시 믿어 볼 수 있도록 해 주는 서명이었다.

으아! ASIO 드라이버도 살아났다. 다음은 Tracktion Waveform Free의 Settings 화면이다. 테스트 버튼을 눌렀을 때 반가운 '삐~' 소리가 남을 확인하였다.

단순히 오래된 커널 드라이버가 간신히 로드된 게 아니라 당시 드라이버 패키지가 제공하던 MIDI + WDM Audio + ASIO라는 상당히 완전한 기능 스택이 Windows 11에서도 살아났다!

앞으로 무엇을 할 것인가

연속하여 작성한 두 편의 글은 내가 실제로 Windows PowerShell에 입력한 명령어와 화면 출력을 충실히 반영하여 만든 step-by-step 가이드는 아니다. 따라서 이 일에 관심을 갖고 재현해 보려는 독자를 위해 보다 친절한 문서를 만들 필요가 있다. GitHub에 나의 여섯번째 리포지토리인 Roland SC-D70 on Windows 11(sc-d70-win11-driver)를 만들고 상세한 설명과 함께 ps1 스크립트를 마련하여 업로드하기 시작하였다.


Reviving the Roland SC-D70 on Windows 11, Part 2: Re-signing a 2007 Driver in 2026

The original 64-bit Windows Vista driver for the Roland SC-D70, released in 2007, remains functionally compatible with Windows 11, but its legacy signing no longer satisfies current Windows driver-signing requirements. In this experiment, the original driver binary was left unchanged at the source-code level and given a new SHA-256 test signature using current Windows SDK/WDK tools. A new catalog was generated with Inf2Cat and signed with the same self-signed test certificate. With Secure Boot disabled, Windows Test Signing enabled, and Memory Integrity left enabled, the repackaged driver loaded successfully after an ordinary Windows 11 reboot. Both MIDI PART A and PART B, as well as USB audio input and output, operated normally. This is not a production-signed Windows 11 driver, but the experiment shows that the principal obstacle to using the SC-D70 on current Windows is the modern driver trust and signing policy rather than a fundamental incompatibility of the original 2007 driver code.

댓글 없음: