본문 바로가기

Tech/linux

(22)
커널 패치 사전 점검 리스트 1. 이전에 다른사람이 같은 시도를 했는지 메일링 리스트를 꼭 확인해보기2. 커밋, 커버레터는 코드만큼이나 신경쓰기3. 패치 세트 전체가 각각 빌드 가능하도록 하기4. 체크 스크립트 꼭 돌려보기
Debian 12 한글 입력 Debian 12/Gnome Debian에서 한가지 이해가 안되는 것은 Keyboard 타입을 Korean(..?) 으로 설정하여도 한글을 입력 할 수가 없다. Keylayout을 보면 분명 Hangul이라는 키가 보이지만 실제로 눌러보면 아무런 반응이 없다. 일단 1. locale 설치. apt install locales-all apt install fonts-nanum ibus-hangul 설치 후 재부팅 필요!
Ubuntu에서 Debian으로 옮긴 이유 최근 ubuntu가 Snap을 기본으로 강제해두기 때문이다. 사실 일반 유저의 경우 ubuntu나 debian이나 별 차이가 없다. (거의 대부분 ubuntu가 더 편함) 그러나 최근 ubuntu에서는 snap을 강제하고 flatpak도 쉽게 설치 못하게 막아두었다. 사실 Canonical의 입장이 이해가 안가는 것은 아니다. ubuntu를 유지하고 좋은 유저 경험을 위해서는 많은 버그 fix, 유지보수, 리포팅, 등 많은 개발자의 노력이 들어간다. 한정된 자원속에서 좋은 유저경험 그리고 통일된 (쉬운) 인터페이스를 강제하는 것은 효율적이기는 하다. 하지만 오픈소스를 표방하고 많은 이점을 가져오는 회사에서의 결정은 조금 아쉽다. 반면 Debian은 정말 고지식할정도로 오픈소스에 충실한 편이다. ppa도 ..
linux media subsystem [5] multi streaming 에 대한 본격적인 조사. https://linuxtv.org/downloads/presentations/media_summit_2016_san_diego/v4l2-multistream.pdf 기본적인 아이디어는 media controller API를 통한 mux/demux sub-dev를 만들어서 하는 것. https://lwn.net/Articles/855757/ 요기를 따라가면 4개의 patch 시리즈가 있다. 실제로 적용된 패치는 https://lore.kernel.org/linux-media/20210507123558.146948-1-tomi.valkeinen@ideasonboard.com/T/#u -> 3개로 분리 https://lore.kernel.org/linux..
linux media subsystem [4] media controller API의 경우 pipe를구성하여 gstreamer, tensorflow처럼 데이터 input, output을 조작할 수 있다. (run-time) 몇가지 연습을 하면서 알게된 것은 $sudo modprobe vimc 1. 전체 파이프가 살아있어야 작동한다. 무슨말이냐면 살펴보면 raw capture0 을 실행하려면 sensor A 만 잘 설정되어도 작동이 될것 같지만, 다른 곳으로 연결되어있는 Debyer, Scaler도 파이프가 정상적이여야지 작동한다. 따라서, v4l2-ctl -z platform:vimc -d "Raw Capture 0" -v pixelformat=BA81 요 한줄로는 안되고 media-ctl -d platform:vimc -V '"Sensor A":0..
linux media subsystem [3] 실제 커널 코드에 대해서 쓰려고한다. 특히 vivid test driver를 예시로 씀. 코드는 vivid-core.c -> vivid-vid-cap.c 로 이루어져 있으며 function은 dev node 등록 -> qops 등록 -> kthread로 streaming data 생성 으로 연결된다.
linux media subsystem [2] V4l2의 capture 의 경우 다음과 같은 로직이다. 1. device cap을 보아서 capture와 streaming이 지원하는지 본다. 2. device를 열고 format을 설정한다. 3. streaming 방식을 설정한다. https://docs.kernel.org/userspace-api/media/v4l/capture.c.html 요 부분을 참고하면 좋다. 그리고 libv4l이라는 라이브러리가 있고 보통 v4l2_open, v4l2_close등의 기능을 제공하는데, 이를 이용하면 기존 단순 v4l2 API + convert까지 한번에 할 수 있는 효과가 있다. 예를 들어 기존 카메라는 MJPEG포맷만 지원하는데 RGB를 하려고하면 user가 MMAP으로 가져온 데이터를 userspace에..
linux media subsystem [1] media subsystem은 코덱, cec등이 여러 부분이 있고 내가 보려고하는 부분은 카메라에 대한 이야기다. 지난번 media subsystem에서 user space API를 보고 카메라는 2부분에서 영향이 있다. V4L2와 media controller API. https://docs.kernel.org/userspace-api/media/v4l/v4l2.html 그중 v4l2를 먼저 알아야한다. 처음 문서를 보았을때는 전혀 무슨말인지도 모르겠고 뭐가 뭔지도 몰랐다. 우선 커널에서 제공하는 카메라 test driver로 하나씩 보자. $ sudo modprobe vivid -> vivid라고하는 virtual camera 생성 이러면 /dev/video0 와 /dev/video1이 생성된것을 확..