윈도우가 시작되었을 때 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
위 명령으로 기본 사용자를 변경할 수 있다.
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
4. 작업 스케줄러 등록
마지막으로 작업 스케줄러에 앞서 작성한 vb script
를 윈도우 시작 시 수행될 수 있도록 등록해 주면 된다.
-
작업 스케줄러에 새로운 작업 생성 시작
-
이름 입력과 실행 방법 선택
-
언제 작업을 수행할지 결정하는
트리거
탭으로 이동 -
윈도우가 시작할 때 트리깅
-
무엇을 할지를 결정하는
동작
탭으로 이동 -
앞서 생성한 vb script 파일(D:\app\bin\autostart_wsl.bash)을 시작시키도록 한다.
-
작업 생성 결과 화면