Windows의 Linux


Windows의 Linux

❓ 요약
그다지 간단하지 않다. Devenv는 일련의 강좌이다. 우리의 목표는 양호하고 효율적이며 이식 가능한 개발 환경을 제공하여 리눅스와 윈도 사이에서 이 두 세계를 충분히 이용하는 것이다.
첫 번째 자습서인 "Windows의 Linux"에서 설치를 위한 기본 작업을 수행했습니다.
  • WSL2: 리눅스 버전을 컴퓨터에 설치하는 효율적인 시스템입니다. 따라서 Unix 셸에 접근할 수 있습니다.
  • Docker Desktop: 시스템 구성에 의존하지 않도록 로컬 개발 환경에 사용됩니다.
  • Windows 터미널: WSL, 여러 개의 프로필 및 셸과 잘 어울리는 효율적이고 설정 가능한 터미널이다.

  • 📝 개술
    이 자습서를 완성하려면 다음이 필요합니다.
  • Upgrade to Windows version 2004
  • Enable WSL 2
  • Install a Linux distribution
  • Install Docker Desktop
  • Install Windows Terminal

  • Windows 버전 2004로 업그레이드
    ⚠️ 이 단계는 시스템 및 연결에 따라 2시간 이상 걸릴 수 있습니다.만약 시간이 제한되어 있다면, 이렇게 하려고 시도하지 마라.
    Windows 버전 확인winver을 실행합니다.
    Windows 버전이 2004보다 낮으면 Settings > Update & Security 시스템 업데이트1로 이동하십시오.컴퓨터가 정확한 버전2으로 재부팅될 때까지 이 절차를 반복합니다.

    WSL2 사용
    다음Microsoft documentation 관리자가 PowerShell을 열고 실행하려면 Windows Linux 서브시스템(Step 1)을 사용해야 합니다.
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    
    그런 다음 가상 머신 기능(Step 3)을 활성화하고 다음을 실행해야 합니다.
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    
    컴퓨터를 재부팅하여 WSL 설치를 완료하고 WSL 2로 업데이트합니다.
    다운로드WSL2 Linux kernel update package for x64 machines.관리자로 실행(Step 4)3.
    WSL 2를 기본 버전(Step 5)으로 설정하려면 다음 명령을 실행합니다.
    wsl --set-default-version 2
    

    Linux 릴리스 설치
    WSL은 리눅스를 실행할 준비가 되어 있으며, 현재 당신이 가장 좋아하는 버전(Step 6)을 설치할 수 있습니다
    Microsoft 애플리케이션 스토어를 열고 원하는 Linux 릴리스를 검색하여 설치합니다.
    설치4가 끝나면 사용자를 만들고 암호를 설정하라는 메시지가 표시됩니다.
    현재, 이전에 설정한 사용자 5 를 사용하여 발행판에 연결해야 합니다.
    다음과 같이 설치된 릴리스와 해당 이름을 볼 수 있습니다.
    wsl -l -v
    
    기본 릴리스는 별표로 표시되며 다음 옵션을 사용하여 릴리스를 기본 릴리스로 설정할 수 있습니다.
    wsl --set-default <distro>
    
    기본 릴리스를 시작하려면 wsl 명령을 실행합니다.
    특정 릴리스를 시작하려면:
    wsl -d <distro>
    
    이전에 WSL 1(버전 1)을 사용한 릴리스를 설치한 경우 다음과 같이 업그레이드할 수 있습니다.
    wsl --set-version <distro> 2
    
    이 작업은 시간이 오래 걸릴 수 있습니다.
    6
    Docker 데스크톱 설치
    다음은 , 다운로드 및 설치Docker documentation
    Linux 릴리스에 Docker Desktop을 활성화해야 합니다. Windows 작업 표시줄 숨김 아이콘에서 Docker Desktop dashboard를 엽니다.
    릴리스의 WSL 통합을 활성화하려면 Settings > Resources > WSL integration로 이동하여 Apply & Restart를 클릭합니다.
    Docker Desktop
    Windows 터미널 설치
    Linux 릴리스 가 우리의 요구에 완전히 부합되도록 하기 위해서 더 좋은 터미널이 필요할 수도 있습니다.Windows terminal에서 응용 프로그램을 설치할 수 있습니다.
    설치 후 사용자 정의 설정을 사용할 수 있습니다. 이 Microsoft Store 를 사용하면 사용 가능한 모든 옵션을 볼 수 있습니다.설정 파일을 열려면 위쪽 열에서 아래쪽 화살표를 클릭하고 (Ctrl, +) 를 클릭합니다.
    기본 셸 프로필을 변경하려면 Settings에서 원하는 프로필의 guid 값을 기본값으로 설정합니다.개요 파일 GUID는 defaultProfile 섹션에서 확인할 수 있습니다.profiles배포 홈 디렉토리를 Windows 마운트 위치가 아닌 시작 경로로 설정하려면 배포 구성 파일"defaultProfile": "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx}", 항목에 ~을 추가합니다.
    "profiles": [
         #...
        "list": [
            #...
            {
                #...
                "name": "<distribution-name>",
                "source": "Windows.Terminal.Wsl",
                "commandline": "wsl.exe ~ -d <distribution-name>",
                #...
            }
            #...
        ]
        #...
    ]
    
    JSON schema
    터미널 설정과 케이스 덮어쓰기.
    ⚠️ Windows 터미널은 케이스와 상호작용하는 매개체이다.여기에 정의된 일부 설정은 셸 설정에 덮어쓸 수 있습니다.

    구성 예

    배색 방안
    기본 색상 체계를 덮어쓰고 이름을 설정합니다.
    "schemes": [
        #...
        {
            "name": "Gerbier",
            "background": "#111111",
            "foreground": "#C8C8C8",
            "black": "#C8C8C8",
            "blue": "#44637A",
            "brightBlack": "#7A7A7A",
            "brightBlue": "#6FA0C6",
            "brightCyan": "#76A394",
            "brightGreen": "#7CA661",
            "brightPurple": "#9090C0",
            "brightRed": "#B04646",
            "brightWhite": "#505050",
            "brightYellow": "#E8C273",
            "cyan": "#32464A",
            "green": "#425934",
            "purple": "#555573",
            "red": "#8A3737",
            "white": "#3C3C3C",
            "yellow": "#9C824D"
        }
        #...    
    ],
    
    colorScheme 속성과 이름을 연결하여 색상 체계를 참조합니다.
    "profiles": [
         #...
        "list": [
            #...
            {
                #...
                "colorScheme": "Gerbier",
                #...
            }
            #...
        ]
        #...
    ]
    

    사용자 정의 키 바인딩 예
     "actions":
        [
            // Application-level Keys
            { "command": "closeWindow", "keys": "alt+f4" },
            { "command": "toggleFullscreen", "keys": "alt+enter" },
            { "command": "toggleFullscreen", "keys": "f11" },
            { "command": "toggleFocusMode" },
            { "command": "toggleAlwaysOnTop" },
            { "command": "openNewTabDropdown", "keys": "ctrl+shift+space" },
            { "command": "openSettings", "keys": "ctrl+," },
            { "command": { "action": "openSettings", "target": "defaultsFile" }, "keys": "ctrl+alt+," },
            { "command": "find", "keys": "ctrl+f" },
            { "command": "toggleRetroEffect" },
            { "command": "openTabColorPicker" },
            { "command": "commandPalette", "keys":"ctrl+shift+p" },
    
            // Tab Management
            // "command": "closeTab" is unbound by default.
            //   The closeTab command closes a tab without confirmation, even if it has multiple panes.
            { "command": "closeOtherTabs" },
            { "command": "closeTabsAfter" },
            { "command": "newTab", "keys": "ctrl+t" },
            { "command": "duplicateTab", "keys": "ctrl+d" },
            { "command": "nextTab", "keys": "ctrl+tab" },
            { "command": "prevTab", "keys": "ctrl+shift+tab" },
    
            // Pane Management
            { "command": "closePane", "keys": "ctrl+w" },
            { "command": { "action": "splitPane", "split": "horizontal" }, "keys": "alt+shift+-" },
            { "command": { "action": "splitPane", "split": "vertical" }, "keys": "alt+shift+plus" },
            { "command": { "action": "resizePane", "direction": "down" }, "keys": "alt+shift+down" },
            { "command": { "action": "resizePane", "direction": "left" }, "keys": "alt+shift+left" },
            { "command": { "action": "resizePane", "direction": "right" }, "keys": "alt+shift+right" },
            { "command": { "action": "resizePane", "direction": "up" }, "keys": "alt+shift+up" },
            { "command": { "action": "moveFocus", "direction": "down" }, "keys": "alt+down" },
            { "command": { "action": "moveFocus", "direction": "left" }, "keys": "alt+left" },
            { "command": { "action": "moveFocus", "direction": "right" }, "keys": "alt+right" },
            { "command": { "action": "moveFocus", "direction": "up" }, "keys": "alt+up" },
    
            // Clipboard Integration
            { "command": { "action": "copy", "singleLine": false }, "keys": "ctrl+c" },
            { "command": { "action": "copy", "singleLine": false }, "keys": "ctrl+insert" },
            { "command": "paste", "keys": "ctrl+v" },
            { "command": "paste", "keys": "shift+insert" },
    
            // Scrollback
            { "command": "scrollDown", "keys": "ctrl+down" },
            { "command": "scrollDownPage", "keys": "ctrl+pgdn" },
            { "command": "scrollUp", "keys": "ctrl+up" },
            { "command": "scrollUpPage", "keys": "ctrl+pgup" },
    
            // Visual Adjustments
            { "command": { "action": "adjustFontSize", "delta": 1 }, "keys": "ctrl+=" },
            { "command": { "action": "adjustFontSize", "delta": -1 }, "keys": "ctrl+-" },
            { "command": "resetFontSize", "keys": "ctrl+0" },
    
            // Other commands
            {
                // Select color scheme...
                "name": { "key": "SetColorSchemeParentCommandName" },
                "commands": [
                    {
                        "iterateOn": "schemes",
                        "name": "${scheme.name}",
                        "command": { "action": "setColorScheme", "colorScheme": "${scheme.name}" }
                    }
                ]
            },
            {
                // New tab...
                "name": { "key": "NewTabParentCommandName" },
                "commands": [
                    {
                        "iterateOn": "profiles",
                        "icon": "${profile.icon}",
                        "name": "${profile.name}",
                        "command": { "action": "newTab", "profile": "${profile.name}" }
                    }
                ]
            },
            {
                // Split pane...
                "name": { "key": "SplitPaneParentCommandName" },
                "commands": [
                    {
                        "iterateOn": "profiles",
                        "icon": "${profile.icon}",
                        "name": "${profile.name}...",
                        "commands": [
                            {
                                "command": { "action": "splitPane", "profile": "${profile.name}", "split": "auto" }
                            },
                            {
                                "command": { "action": "splitPane", "profile": "${profile.name}", "split": "vertical" }
                            },
                            {
                                "command": { "action": "splitPane", "profile": "${profile.name}", "split": "horizontal" }
                            }
                        ]
                    }
                ]
            }
        ]
    

    다음 글
    다음 글은 셸을 어떻게 맞춤형으로 만드는지 중점적으로 소개할 것이다.

    공헌자

    사용된 참고 문헌
  • WSL Documentation
  • Docker Desktop for windows
  • Windows Terminal
  • Windows Terminal JSON Schema
  • Linux kernel WSL 2 update
  • Troubleshooting: error 0xc03a001a - 1
  • Windows 버전 2004 업데이트를 보려면 버튼commandlineTroubleshooting: error 0xc03a001a - 2 아래의 Check online for updates from Microsoft Updates를 클릭해야 합니다.
    컴퓨터에 docker desktop이 설치되어 있으면 HyperV 대신 WSL 2를 사용하라는 메시지가 표시됩니다.이것은 본 강좌의 뒷부분에서 토론할 것이다. 
    관리자로 실행할 수 없는 경우Check for updates 설치가 다음 오류로 끝날 수 있습니다.wsl_update_x64.msi이 문제를 해결하려면 관리자로 PowerShell을 열고 CLI를 통해 설치를 실행합니다. 
    설치 시간이 너무 길다고 생각되면 enter 키를 눌러야 할 수도 있습니다.설치는 보통 1분도 안 걸린다. 
    다음과 같은 오류가 발생할 수 있습니다.This update only applies to machines with the Windows Subsystem for Linux  
    이 오류를 수정하려면 Error: 0xc03a001a The requested operation could not be completed due to a virtual disk system limitation. Virtual hard disk files must be decompressed and unencrypted and must not be sparse.로 이동하여 릴리스 패키지(예: Canonical Group Limited. Ubuntu 20.04...)를 찾습니다.폴더 속성$USER\AppData\Local\Packages을 열고 선택을 취소합니다General > Advanced.
    발행판에 '루트' 로 연결하면 설치가 실패합니다. 더 간단한 방법은 마운트를 해제하고 다시 설치하는 것입니다.실행 Compress and Encrypt attributes Windows Application 스토어에서 릴리스를 다시 시작하여 설치를 다시 시작합니다. 

    좋은 웹페이지 즐겨찾기