커널 버전 6.1에 rust 지원되는거 기대할 필요는 무슨. 6.16이 넘어가도록 건드리지도 못했다. 책 신나게 사놓고 말이다. 병가 4주차를 맞이하여, 이제 회사 시간표에 준하는 활동을 하고 있다. 따라서 본격적으로 진도를 나가고 있다. 오늘 4주차 일정 처음인데… 좀 딸리긴 한다. 그래서 3번째 활동 블록(대충 2-3시간 텀 주고 휴식 넣어서 잘랐음)땐 허리보호대를 착용하고 있었다. 아 그리고 뜬금없이 귤이 생각나서 점심 때 사와서 오후 간식 시간에 먹었는데, 정신이 돌아옴. 비타민 부족인가보다. 왜? 그래도 영양소 더듬이(?)는 감도가 좋아진 것 같아서 나름 만족이다. 단어 안 떠올라서 지맘대로 쓰는건 지금도 마찬가지다.
공부는 그냥 책 따라가고 있다. Rust-for-Linux의 소스를 가져다가 커널을 빌드하고, 만들어낸 모듈도 그 소스를 이용해서 빌드. 테스트는 qemu vm 위에서 테스트해보는 식으로 실습을 진행하고 있다. 실습 git repo는 아래와 같다.
https://github.com/Xanthorrhizol/rust-kernel-study
문제는 2가지였다.
제일 먼저, vim에 연동된 rust-analyzer에서 지원하게 하고 싶었다. vim을 주 도구로 사용하긴 하지만 메모장 코딩은 나도 싫다. 그래서 또 vim 세팅이랑 싸웠다. 프로젝트 최상단에 rust-project.json 생성한 후 ~/.vim/coc-settings.json 에다가 rust language server에서 rootPatterns에 rust-project.json 도 지원하게 추가하면 되는거였는데, 또 여기서 난리를 침.
다음은 책 내용의 예제가 버전이 안맞아서 deprecated된 모듈들과 한바탕 싸움질을 해야 했다는 것이다. 첫 예제인 printk부터 말이다. 다음 예제는 module 매크로 내부의 params 파라미터를 사용해보는 것인데, 이것도 deprecated다. printk는 그래도 옵션 켜면 vprintk라는 대체 함수가 제공되었는데, params는 대체함수도 없고, ffi로 직접 구현해야 한다. 그 삽질을 하다가 printk만 커밋했음.
강하게 키우는가보다. 덤벼라.