WSL2에서 systemctl 사용

5010 단어 WSL 2systemdrockytech
WSL2에 Rocky Linux가 구축되어 있으며systemctl 명령을 실행할 때 다음 오류가 표시됩니다.
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
WSL2에서 systemd를 시작하는 genie 도구를 사용합니다.
이것을 사용하면 WSL2 내 시스템d의 PID가 1 상태로 시작됩니다.
https://github.com/arkane-systems/genie

컨디션

  • WSL2에서 Rocky Linux
  • 부팅 가능

    절차.


    EPEL 활성화


    genie를 설치할 때는 EPEL을 사용해야 합니다.
    dnf install epel-release
    

    설치


  • rpm 가져오기.
    wget https://github.com/arkane-systems/genie/releases/download/v2.3/genie-2.3-1.fc34.x86_64.rpm
    

  • 지니를 설치하다.
    dnf install genie-2.3-1.fc34.x86_64.rpm
    
  • python3.6등.9로 업데이트합니다.


    이렇게 지니를 시작하면 오류가 발생합니다.
    # genie -s
    Traceback (most recent call last):
      File "/usr/lib64/python3.6/runpy.py", line 193, in _run_module_as_main
        "__main__", mod_spec)
      File "/usr/lib64/python3.6/runpy.py", line 85, in _run_code
        exec(code, run_globals)
      File "/usr/lib/genie/genie/__main__.py", line 904, in <module>
      File "/usr/lib/genie/genie/__main__.py", line 889, in entrypoint
      File "/usr/lib/genie/genie/__main__.py", line 692, in do_shell
      File "/usr/lib/genie/genie/__main__.py", line 399, in pre_systemd_action_checks
      File "/usr/lib/genie/genie/__main__.py", line 196, in get_systemd_state
      File "/usr/lib64/python3.6/subprocess.py", line 423, in run
        with Popen(*popenargs, **kwargs) as process:
    TypeError: __init__() got an unexpected keyword argument 'capture_output'
    
    genie를 설치하면python도 설치되지만 이 버전은 3.6으로 오류가 발생합니다.
    # python3 --version
    Python 3.6.8
    
    오류를 없애기 위해python을 3.7 이상으로 업그레이드해야 합니다.

  • Python3.설치하다
    dnf install python39
    

  • 기호 링크를 수정합니다.
    rm -rf /usr/bin/python3
    ln -s /usr/bin/python3.9 /usr/bin/python3
    rm -rf /usr/bin/pip3
    ln -s /usr/bin/pip3.9 /usr/bin/pip3
    rm -rf /usr/bin/pip-3
    ln -s /usr/bin/pip-3.9 /usr/bin/pip-3
    
  • psutil 설치


    Python을 업그레이드하면 오류가 계속 발생합니다.
    # genie -s
    Traceback (most recent call last):
      File "/usr/lib64/python3.9/runpy.py", line 197, in _run_module_as_main
        return _run_code(code, main_globals, None,
      File "/usr/lib64/python3.9/runpy.py", line 87, in _run_code
        exec(code, run_globals)
      File "/usr/lib/genie/genie/__main__.py", line 14, in <module>
    ModuleNotFoundError: No module named 'psutil'
    
    오류 알림에 따라 pstil을 설치합니다.

  • psutil을 설치합니다.
    python3 -m pip install psutil
    
  • 시작


    이것으로 끝내고 지니를 시작합니다.
    genie -s
    
    를 시작하면 시스템ctl을 실행하면 실행되었음을 알 수 있습니다.
    # systemctl status
    ● DESKTOP-ODH2FE5-wsl
        State: running
         Jobs: 0 queued
       Failed: 0 units
        Since: Tue 2022-04-05 17:17:26 JST; 5s ago
       CGroup: /
               ├─init.scope
               │ └─1 systemd
               └─system.slice
                 ├─systemd-journald.service
                 │ └─22 /usr/lib/systemd/systemd-journald
                 ├─systemd-machined.service
                 │ └─33 /usr/lib/systemd/systemd-machined
                 ├─system-container\x2dshell.slice
                 │ └─[email protected]
                 │   ├─34 /bin/bash -l
                 │   ├─35 (sd-pam)
                 │   ├─51 systemctl status
                 │   └─52 (pager)
                 └─dbus.service
                   └─27 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
    

    총결산


    나 이거 써도 돼.
    또한 시작할 때 매번 운행genie -s을 원하기 때문에 아래 사이트를 참고하여 시도할 수 없습니다.
    내 생각에는 OS가 다른 것 같지만, 아직까지는 해결할 수 없다.
    따라서 매번 실행해야 한다.
    https://qiita.com/amenoyoya/items/41a2334cbc1facb87864

    좋은 웹페이지 즐겨찾기