윈도우 시작 시 WSL bash 스크립트 자동 실행
Post

윈도우 시작 시 WSL bash 스크립트 자동 실행

윈도우가 시작되었을 때 WSL bash 스크립트의 자동 실행이 필요한 경우가 있다. 이 스크립트에 sshd, crond, apache, mysql or postgresql 등과 같은 데몬을 시작 시키는 일련의 명령들이 기술될 수 있다. 이를 위한 몇 가지 방법들을 찾아볼 수 있었다(1, 2). 하지만 wsl bash의 기본 사용자가 root가 아닐 경우, /etc/sudoers에 허용할 명령어들을 기술해 주어야 하는 불편함이 있다. 이는 bash의 기본 사용자를 root로 변경하는 방식으로 해결할 수 있다.

1. 기본 사용자 변경

기본 사용자 변경 명령을 수행하기 전에 어떤 WSL 이 기본으로 지정되어 있는지 확인이 필요하다.

1
wslconfig /list

본 시스템에서는 Ubuntu-18.04가 기본으로 설정되어 있다고 나온다. 따라서 기본 사용자 변경을 위한 명령어가 ubuntu1804.exe 가 된다.

1
ubuntu1804 config --default-user root

위 명령으로 기본 사용자를 변경할 수 있다.

img-01

2. VB Script 파일 생성

아래와 같은 내용의 vb script를 작성하여 파일로 저장한다(D:\app\bin\autostart_wsl.bash로 함).

1
2
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 데몬을 실행하는 내용을 작성하여 보았다. 중요한 점은 이 파일은 실행 권한이 설정되어 있어야 한다는 것이다.

1
chmod +x /usr/local/bin/autostart.sh

img-02

4. 작업 스케줄러 등록

마지막으로 작업 스케줄러에 앞서 작성한 vb script를 윈도우 시작 시 수행될 수 있도록 등록해 주면 된다.

  1. 작업 스케줄러에 새로운 작업 생성 시작 img-03

  2. 이름 입력과 실행 방법 선택 img-04

  3. 언제 작업을 수행할지 결정하는 트리거 탭으로 이동 img-05

  4. 윈도우가 시작할 때 트리깅 img-06

  5. 무엇을 할지를 결정하는 동작 탭으로 이동 img-07

  6. 앞서 생성한 vb script 파일(D:\app\bin\autostart_wsl.bash)을 시작시키도록 한다. img-08

  7. 작업 생성 결과 화면 img-09