Proxmox에서 서비스의 GPU HW 가속을 위해서, VM을 만드는거보다, LXC 컨테이너를 이용하는게 유리한 부분이 있는데,
VM을 만들어서 HW 인코딩을 이용하려면 VM에 Passthrough를 통해 전용 GPU를 달아줄 필요가 있는데, LXC 컨테이너를 이용하면,
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
요런 식으로, 컨테이너에서 host의 /dev/dri/renderD128을 사용할 수 있게 붙여주면 되는거 같다.
이러면, 파이어폭스에서 GPU 쓴다고, 크롬에서 못쓰지 않는것처럼, plex 컨테이너에서 HW인코딩 쓰고 있어도, 다른 컨테이너에서 GPU를 사용할 수 있다.
문제는 늘 그렇듯이, 따라해보면 안된다. ㅜㅜ
나같은 컴맹에겐 엄청난 고통 ㅜㅜ
하루를 꼬박 투자해서, 삽질을 하며 원인을 찾아봤는데,
/dev/dri/renderD128의 소유권이 root:render로 되어있는데,
proxmox host의 render 그룹의 gid와 컨테이너에 베이스로 사용한 아치리눅스의 render 그룹의 gid가 달라서 문제가 생기는 것 같다.
proxmox host에선 render 그룹의 gid가 103인데, 아치리눅스에선 gid가 989이다.
그래서 renderD128을 아치기반 컨테이너에 붙이니, 컨테이너 내부에선 renderD128의 그룹이 render가 아니라 103이라는 존재하지 않는 그룹으로 표시가 되어서 root가 아니면 이용할 수 없는 상태가 되버리고 만다.
아마 proxmox host에서 chmod를 777로 주거나, 아치리눅스 컨테이너 내에서 /etc/group을 수정해서 gid를 host와 똑같이 맞춰주면 될거 같은데. 후자를 해보니까 되긴 한다. 근데 배포판 기본 세팅을 바꾸는 이런 일이 나중에 또 무슨 문제를 일으킬지는 또 모르겠다.
리눅스는 배포판 파편화가 참 골치인거 같다.