윈도우가 시작되었을 때 WSL bash 스크립트의 자동 실행이 필요한 경우가 있다. 이 스크립트에 sshd, crond, apache, mysql or postgresql 등과 같은 데몬을 시작시키는 일련의 명령들이 기술될 수 있다.
이를 위한 몇 가지 방법들을 찾아볼 수 있었다.(1, 2) 하지만 wsl bash 의 기본 사용자(default user) 가 root 가 아닐 경우, /etc/sudoers 에 허용할 명령어들을 기술해 주어야 하는 불편함이 있다. bash 의 기본 사용자를 root 로 변경하는 방식으로 해결할 수 있다.
1. 기본 사용자 변경
기본 사용자 변경 명령을 수행하기 전에 어떤 WSL 이 기본으로 지정되어 있는지 확인이 필요하다.
wslconfig /list
본 시스템에서는 Ubuntu-18.04가 기본으로 설정되어 있다고 나온다. 따라서 기본 사용자 변경을 위한 명령어가 ubuntu1804.exe 가 된다.
ubuntu1804 config --default-user root
위 와 같은 명령으로 기본 사용자를 변경할 수 있다.
2. VB Script 파일 생성
아래와 같은 내용의 vb script를 작성하여 파일로 저장한다. (D:\app\bin\autostart_wsl.bash로 함)
set ws=wscript.createobject("wscript.shell")
ws.run "C:\Windows\System32\bash.exe -c '/usr/local/bin/autostart.sh'",0
bash.exe 를 실행하면서 -c 옵션으로 /usr/local/bin/autostart.sh 파일이 주어진다. WSL 시스템 안에 /usr/local/bin/autostart.sh 파일이 존재해야 하며, 실행 가능한 파일이어야 한다.
3. bash script 파일 생성
이제 /usr/local/bin/autostart.sh 를 생성할 차례이다. 본 시스템에서는 아래와 같이 ssh 와 cron 데몬을 실행하는 내용을 작성하여 보았다.
잊지 말아야할 점은 이 파일은 실행 권한이 설정되어 있어야한다는 것이다.
chmod +x /usr/local/bin/autostart.sh
4. 작업 스케줄러 등록
마지막으로 작업 스케줄러에 앞서 작성한 vb script를 윈도우 시작시 수행될 수 있도록 등록해 주면 된다.
a. 작업 스케줄러에 새로운 작업 생성 시작
b. 이름 입력과 실행 방법 선택
c. 언제 작업을 수행할지 결정하는 '트리거' 탭으로 이동
c.1. 윈도우가 시작할 때 트리깅
d. 무엇을 할지를 결정하는 '동작' 탭으로 이동
d.1. 앞서 생성한 vb script 파일(D:\app\bin\autostart_wsl.bash) 을 시작시키도록 한다.
e. 작업 생성 결과 화면