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