WSL에서 sysstat서비스 키기 위한 삽질기록

3분 분량

리눅스 분투기

우분투가 싫지는 않지만, 귀찮다. 대부분의 컴퓨터를 전공하시는 분들은 리눅스와 친숙해 져야만한다. 보통 우분투를 깔아서 듀얼부팅을 하거나 vmware를 이용할 것이다. 조금 outdated된 지식으로는 cygwin이라는 리눅스맛 에뮬레이터도 쓰였고, 어쨌든 귀찮다는 것은 변함이 없다. 듀얼부팅이 제일 문제없는 선택지이긴 한데, 파티션을 재조정해야할뿐만 아니라 부팅시간에 부트로더가 OS선택하는 딜레이 생겨서 매 부팅때마다 기다린다는 건 사소하지만 눈에 거슬린다. 하지만 Windows 10으로 세대교체되면서 WSL이라는 모범답안이 생겼다. 초기에는 불안정하기도 했고 퍼미션도 가끔 꼬여서 리눅스 파일시스템이 날아가는 일도 잦았지만 지금은 비교적 안정적으로 리눅스 터미널을 윈도우에서 불러와서 검은화면 초록글씨 떠있는 창$sudo rm -rf를 칠 수 있다.

WSL

Windows Subsystem for Linux. 윈도우 시스템 위에 윈도우와 호환이 되는 리눅스 커널 비스무리한 것을 올려 리눅스 파일과 시스템이 네이티브로 동작한다. 예전엔 숨바꼭질 하듯 숨겨진 기능을 찾아 헤매야 했지만 지금은 설정 창에서 리눅스 서브시스템을 활성화하고, Windows 스토어에서 취향대로 배포판을 골라 설치하면 끝이다. 지금까지 ubuntu 배포판 패키지를 깔아 docker도 돌리고 vim을 예쁘게 꾸민 다음 시스템 프로그래밍 공부도 문제없이 했는데(vscode는 정말 최고다!), 오늘 느닷없이 명령어 하나에 막혔다.

삽질기

과제를 하다 iostat이 요구되는 문항이 있었다. 지금까지 순조롭게 과제를 빨리 끝내고 ITB를 하러갈 마음에 가득 찼었는데, command 'iostat' not found라는 에러 메시지가 가로막았다. 경량화된 리눅스라 이런 패키지를 빼놨나 싶어 루트로 apt-get install sysstat을 하고 다시 iostat을 호출하니 iostat cannot find data라는 메시지가 또 태클을 걸었다. 여러 검색을 해본 결과 sysstat이 시스템에 상주하며 조사한 정보가 없어 그렇다는 답변이 있었다. sysstat을 단순히 설치만 해서는 리눅스로는 당연하게 자동실행이 되지 않는다. /etc/default/sysstat라는 설정파일에 false로 되어있는 활성화 여부를 true로 바꿔주면 sysstat이 켜질꺼야! 하는 답변에 힘입어 그렇게 했다. 하지만 다시 iostat cannot find data만 나왔다. service --status-all 로 상주하는 서비스의 생사여부를 알 수 있다. sysstat이 리스트에는 있지만 죽어있는 상태였다. WSL전체를 재부팅하고, 컴퓨터 전체를 재부팅해도 이 sysstat이 살아나는 일은 없었다. WSL에 sysstat을 써본 사람이 없는 것인지, 아니면 나 빼고 전부 잘 되는 것인지 검색에는 더 이상 쓸모있는 정보가 없었다.
그렇게 반나절을 보냈다. 검색하다 지쳐서 WSL을 검색해보고 있는데, WSL2로 되면서 여러여러 요소가 고쳐지고 I/O가 빨라지고…. 하는 기사를 봤다. 업데이트도 꼬박꼬박 하고 있는데 설마 2가 아니겠어 ㅎㅎ 하면서 파워셀에 버전을 확인하는 명령어 wsl -l -v을 타이핑했다. 하지만 뜨는건 wsl 명령어의 도움말이었고, wsl -l은 동작했다. 하지만 버전정보가 뜨질 않았다! wsl의 버전이 1인 것을 직감했다.
wsl2를 설치하기 위해선 시스템 요구사항이 Windows 10 2004버전이 있었고, 귀찮음과 안정성을 핑계로 업데이트를 미뤄두고 1909로 쓰고 있었던 것이 화근이었다. 대략 한 시간 정도 Windows를 2004로 업데이트하고, wsl2 커널을 설치하고 나서야 파워셀에 wsl -l -v이 정상적으로 나왔다. wsl --set-version <distribution name> 2을 이용해 WSL의 판올림을 할 수 있다. WSL2로 전환된 우분투 터미널에서 혹시 몰라서 sudo apt-get updateapt-get upgrade를 하고 iostat을 치니 감격의 디스크 사용량 정보가 나왔다! 이런 사람이 더 있을까 싶어 이 기록을 과제하다 말고 적어놓고 있다.