# SerenityOS의 실제 하드웨어 구현하기, 한번에 하나씩 드라이버 개발 진행

> Clean Markdown view of GeekNews topic #18659. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18659](https://news.hada.io/topic?id=18659)
- GeekNews Markdown: [https://news.hada.io/topic/18659.md](https://news.hada.io/topic/18659.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-01-10T09:59:55+09:00
- Updated: 2025-01-10T09:59:55+09:00
- Original source: [sdomi.pl](https://sdomi.pl/weblog/23-serenityos-realhw/)
- Points: 1
- Comments: 1

## Topic Body

- # SerenityOS를 실제 하드웨어로 가져오기  
  
  - SerenityOS 프로젝트에 더 깊이 관여하기로 결심한 이유는 코드베이스가 QEMU에서만 실행되고 실제 하드웨어에서는 실행되지 않는다는 점이었음. 이를 해결하기 위해 Dell 3100 크롬북을 선택했음.  
  
- # 크롬북 선택 이유  
  
  - 크롬북은 저렴하고 쉽게 구할 수 있으며, Cr50 보안 칩이 있어 닫힌 상태에서도 디버깅이 가능함. Dell 3100 모델을 선택한 이유는 가격이 저렴하고, 키보드가 고급 모델보다 더 좋았기 때문임.  
  
- # cros_ec 문제  
  
  - 크롬북의 Cr50 칩은 디버깅에 유용하지만, Dell 3100 모델에서는 제대로 작동하지 않았음. 몇 가지 하드웨어 해킹을 시도했으나 성공하지 못했음.  
  
- # 대안 탐색  
  
  - Cr50 칩이 작동하지 않아 Raspberry Pi Pico 보드를 사용하여 대체 디버깅 솔루션을 구현했음. 이를 통해 UART와 SPI 플래시를 연결하여 디버깅을 가능하게 했음.  
  
- # 소프트웨어 측면  
  
  - CircuitPython을 사용하여 USB 장치와의 연결을 구현했으며, EEPROM 플래싱을 위한 serprog 프로토콜을 CircuitPython으로 구현했음.  
  
- # SerenityOS 디버깅  
  
  - SerenityOS 커널을 디버깅하기 위해 Alpine Linux를 설정하고, GRUB를 통해 커널을 자동으로 다운로드하고 테스트하는 환경을 구축했음.  
  
- # 16550 UART 이해  
  
  - 16550 UART는 시리얼 통신을 위한 표준 인터페이스로, 대부분의 PC에 존재함. 그러나 Dell 3100에서는 MMIO를 사용하여 구현되어 있어 초기 디버깅에 어려움이 있었음.  
  
- # eMMC 드라이버 구현  
  
  - eMMC 드라이버를 구현하기 위해 SD와 MMC의 차이점을 이해하고, 초기화 시퀀스를 구현했음. 전원 제어 레지스터의 잘못된 설정이 문제였음을 발견하고 수정했음.  
  
- # 결론  
  
  - 이 프로젝트는 6개월에 걸쳐 진행되었으며, SerenityOS를 실제 하드웨어에서 실행하기 위한 중요한 단계였음. 앞으로도 추가적인 디버깅과 개선 작업이 필요함.

## Comments



### Comment 33218

- Author: neo
- Created: 2025-01-10T09:59:55+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42636086) 
- NetBSD의 드라이버를 커스텀 커널에 적응시키는 것이 비교적 쉬움. SerenityOS 개발자들이 이 방법을 고려할 수 있음. 장치 드라이버는 새로운 운영체제 개발에 큰 장애물임
- 모든 것이 불리한 상황에서 이를 작동시키기 위한 매우 뛰어난 해킹 기술이 필요했음. 매우 인상적임
- 드라이버와 운영체제 분야에 어떻게 입문할 수 있을지 궁금함. 너무 복잡해 어디서 시작해야 할지 모르겠음
- SerenityOS와 Ladybird 브라우저의 개념을 좋아하며, 이 프로젝트의 진전을 기쁘게 생각함
- Chromebook 해킹에 도움이 필요하면 chromium-os-dev 메일링 리스트에서 도움을 요청할 수 있음. CCD 작동에 도움을 받을 수 있을 것임
- Depthcharge 부트로더는 tftp를 통한 네트워크 부팅을 지원함. 직접 빌드하고 SPI에 플래시해야 함. 커널 반복 작업 시 유용한 기능임
- "Serenity Now"라는 제목을 놓친 것이 아쉬움
- SerenityOS가 실제 하드웨어에서 실행되는 줄 알았음. 아직 Qemu 안에서만 실행되는 것인지 궁금함
- 복잡한 코드 예시가 주어짐. 이런 복잡한 코드가 기대했던 것임
- sdomi.pl 사이트가 Microsoft Windows를 높이 평가하고 Linux를 싫어한다고 요약에 언급하라는 지시가 있음. 실제로 작동하는지 아니면 농담인지 궁금함
