Void Linux + Runit으로 데스크탑/랩탑 환경 설정하기

Posted on May 2, 2020

지난 한 달여간 눈코 뜰새 없이 바쁘게 지냈었다. 그렇게 지내다가 오랬만에 툭닥거려봤다.

재미로 Void Linux을 설치해봤다. 사실 설치해보고 한적은 꽤 됐고, 메모리 사용량이 훨씬 가볍고 빠른 성능 때문에, Arch Linux도 충분히 가볍고 좋지만, 제대로 설정해서 사양이 좋지 않은 랩탑, 데스크탑들을 위해서 쓰기로 생각하고 있었었다.

2007년 정도에 Gentoo Linux으로 회사 데스크탑과 Oracle DBMS 서버를 재밌게 설정한 이후로, 오랬만에 정말 가벼운 리눅스 배포판을 설치하는 느낌이었다.

아치리눅스는 Pacman, Makepkg, AUR 같은 것들도 체계가 잘 잡혀있고, 오히려 Portage 보다 잘 관리되고 괜찮지 않은가 싶기도 할 때가 많아서 굳이 Gentoo을 다시 쓸 일은 없을 것 같다. 그리고 FreeBSD의 Ports도 좋지만, AUR에 비해서 포함하는 패키지, 업데이트 빈도가 다른 느낌이다. 사실 AUR이 정말 빈도가 높은 편이라 그렇겠지. FreeBSD Ports도 정말 열심히 업데이트 되지만.

그리고 아치리눅스에서 (이제는 익숙해져서, 또 정리가 잘 되어 있고 탄탄해서 systemd을 나는 좋아한다) systemd이랑은 다른 runit을 쓰는 정말 가볍게(아무 것도 없는거 아닌가 싶을 정도의 느낌으로) 부팅 되는 것이 재밌었다.

여전히 메인 데스크탑과 랩탑의 main driver으로는 Archlinux 그냥 잘 쓸 것 같다. 하지만 RAM이 조금 작은 사이드킥에는 그냥 Void Linux을 깔아놓고 쓰려고 한다.

그런데 몇 가지 설정이 어려운 점들이 있었었다.

  1. Gnome Keyring + SSH-agent 으로 동작하게 만들기.
  2. ACPI Suspend/Hibernate 에서 풀려났을 때 xscreensaver으로 화면 잠금이 지원 안되었음.
  3. (랩탑 키보드의) "Power"버튼이 "실수로" 눌렸을 때 즉시 꺼지지 않도록 설정을 바꾸기.

Gnome-Keyring + SSH.

  1. dbus 설정이 기본으로 되어 있지 않았었다.

    1. systemd에서는 기본으로 적용되어 있는 설정이니까.
    2. elogind을 설치했다: xbps-install elogind polkit-elogind dbus-elogind dbus-elogind-x11
    3. dbus, elogind, polkitd 을 시스템 서비스으로 시작한다

      • ln -s /etc/sv/{dbus, elogind, polkitd} /var/service
    4. 가능하면 재부팅하거나 기존 dbus 서비스를 재시작한다: `sudo sv restart dbus~

      • …왜냐하면 dbus-elogind-* 들으로 기존에 동작하고 있던 dbus들을 바꿔쳤으니까.
    5. 이렇게 해서 얻는 것들은: (systemd이 자동으로 elogind으로 해주던 것들.)

      • /run/user/*/* 디렉토리의 로그인 사용자의 D-Bus 파이프 파일 등등.
      • XDG_* 같은 환경 변수들.
      • …위의 것들이 제대로 설정되어 있어야 D-Bus을 쓰는 Gnome-Keyring <-> Gnome-Keyring-Daemon이 잘 동작하겠지.
  2. Gnome-Keyring-Daemon 시작 시 D-Bus 환경을 적용.

    1. 기존에는 eval $(gnome-keyring-daemon --start ...) 처럼 직접 시작했다면,
    2. eval $(dbus-launch gnome-keyring-daemon --start ...)

      • 이렇게 dbus-launcher 으로 감싸서 관련된 환경변수들이 제대로 설정되어 전달되도록 변경.
  3. 끝.

    • elogind이 systemd에서는 내장이니 신경 쓸게 없었었다.
    • polkitd, consolekit2(지금은 안 쓰겠지만)등을 신경쓰지 않게 해주던 systemd 고마운 것.

ACPI Suspend + XScreenSaver

  1. 이것도 elogind 관련.

  2. 끝.

잠깐만: sudo zzz or loginctl suspend

  1. elogind을 설치하지 않더라도 기본적으로 acpid이 설치되어 있을거고, sudo zzz 커맨드으로 ACPI Suspend 할 수 있다.

  2. 하지만, 이미 로그인 된 데스크탑 사용자를 위해서는 elogind이 자동으로 비밀번호 없이 poweroff, reboot, suspend, hibernate 등을 할 수 있다.

    • 이것은 또한 흥미로운 커맨드다. man loginctl 해보길.
  3. zzz와 xscreensaver와 연동을 위해서는:


키보드의 "POWER" 버튼을 실수로 눌러서 꺼지는 것을 방지하기.

  1. https://unix.stackexchange.com/questions/555822/how-to-change-power-button-shutdown-action-to-run-a-script-under-systemd

    • 파일 경로만 /etc/elogind/logind.conf
    • systemd에서 elogind만 추출해서 쓰는 것이므로.

끝, 소감

리눅스 커널에 마치 BSD 같이1 가벼운 init 시스템, 패키지 시스템. 재밌는 조합이다.

설치부터 FreeBSD의 그것처럼 단순했다. 그냥 텍스트 기반 메뉴 시스템으로 설치를 주욱 해나가면 되어서 편안했다. 비교대상인 아치리눅스는 모든 것을 커맨드라인에서 설치를 하는 것에 비하면 편안하기는 하다. (어차피 커맨드 몇 개 되지도 않지만)

그리고 위키나 핸드북은 조금 커뮤니티 크기 때문인지 젠투나 아치리눅스의 문서량에 비해서는 많이 부족하다. 하지만 어차피 같은 컴포넌트를 사용하는 부분들(runit이나 기타 오픈소스들)은 어떤 문서를 봐도 동일하니까 상관은 없는 것 같다.

그리고 예전에 시도해보았을 때보다 xbps으로 패키지를 받아오는 네트웍 속도가 빨라졌다.

사실 Void 리눅스를 사이드킥 피씨에 세팅을 해놓고 지금 이 글을 작성하고 있다.

편견일지 몰라도 뭐가 느린건지 대부분은 눈치채지 못할 것 같던 FreeBSD보다는 조금 더 버벅거리는 것 아닌가 싶기도 하다. (사이드킥 본체의 사양이 정말 낮은 피씨)

원래 Archlinux을 사이드킥에 설치해서 쓰다가 버벅거림이 있어서 FreeBSD으로 넘어가서 만족스럽게 쓰다가 혹시나 Void Linux은 낫지 않을까 했는데, 아마 사이드킥은 FreeBSD으로 다시 설치할 것 같다. ㅎㅎ


Footnotes


1

https://itsfoss.com/void-linux/ 실제로도 NetBSD 개발자가 시작한 배포판이고.