Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

πŸš€ Начало Ρ€Π°Π±ΠΎΡ‚Ρ‹

ParcelΒ β€” это ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‰ΠΈΠΊ для Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ. Он ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½ΡƒΡŽ Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ с использованиСм многоядСрной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ настройки.

Π‘Π½Π°Ρ‡Π°Π»Π° установитС Parcel с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Yarn ΠΈΠ»ΠΈ npm:

Yarn:

yarn global add parcel-bundler

npm:

npm install -g parcel-bundler

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» package.json Π² ΠΏΠ°ΠΏΠΊΠ΅ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ:

yarn init -y

ΠΈΠ»ΠΈ

npm init -y

Parcel ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ любой Ρ‚ΠΈΠΏ Ρ„Π°ΠΉΠ»Π° Π² качСствС Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π°, Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» HTML ΠΈΠ»ΠΈ JavaScript. Если Π²Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ свой основной JavaScript-Ρ„Π°ΠΉΠ» Π² HTML, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ, Parcel Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΅Π³ΠΎ для вас ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ ссылку URL-адрСсом Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ».

Π”Π°Π»Π΅Π΅ создайтС Ρ„Π°ΠΉΠ»Ρ‹ index.html ΠΈ index.js.

<html>
<body>
  <script src="./index.js"></script>
</body>
</html>
console.log('ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠœΠΈΡ€!')

Parcel ΠΈΠΌΠ΅Π΅Ρ‚ встроСнный сСрвСр Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΠΏΠ΅Ρ€Π΅ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π³ΠΎΡ€ΡΡ‡ΡƒΡŽ Π·Π°ΠΌΠ΅Π½Ρƒ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ для увСличСния скорости Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

ΠŸΡ€ΠΎΡΡ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

parcel index.html

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ http://localhost:1234/ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Если горячая замСня ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ваш Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΊΠΎΠ΄Π°. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎΡ€Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ†ΠΈΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° -p <port number>.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ сСрвСр Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ссли Ρƒ вас Π½Π΅Ρ‚ собствСнного сСрвСра ΠΈΠ»ΠΈ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ отрисовываСтся Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅. Если Ρƒ вас Π΅ΡΡ‚ΡŒ собствСнный сСрвСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Parcel Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ watch. Π­Ρ‚ΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΠΏΠ΅Ρ€Π΅ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π³ΠΎΡ€ΡΡ‡ΡƒΡŽ Π·Π°ΠΌΠ΅Π½Ρƒ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Π½ΠΎ Π½Π΅ запускаСт Π²Π΅Π±-сСрвСр.

parcel watch index.html

Π’Ρ‹ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ сСрвисом createapp.dev Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Parcel-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π’Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ React, Vue, Typescript ΠΈΠ»ΠΈ CSS, ΠΈ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ сгСнСрированный Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ шаблон ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот сСрвис Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° настройки Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Или Π΄Π°ΠΆΠ΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ZIP-Π°Ρ€Ρ…ΠΈΠ² с Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ шаблоном ΠΈ сразу Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

НСсколько Ρ‚ΠΎΡ‡Π΅ΠΊ Π²Ρ…ΠΎΠ΄Π°

Π’ случаС, Ссли Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ index.html ΠΈ about.html, Ρƒ вас Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° запуска Parcel:

Π£ΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΠΈ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ:

parcel index.html about.html

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ glob-ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ:

parcel *.html

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ случаС, Ссли Π² вашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ структура Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ:

- folder-1
-- index.html
- folder-2
-- index.html

Π’ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ http://localhost:1234/folder-1/ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. ВмСсто этого Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΊ html-Ρ„Π°ΠΉΠ»Ρƒ: http://localhost:1234/folder-1/index.html.

Π‘Π±ΠΎΡ€ΠΊΠ° для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π°

Когда Π²Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-сборки, ΠΊΠΎΠΌΠ°Π½Π΄Π° Parcel

build Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСнСния Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ просто собСрСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ подробности Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π Π°Π±ΠΎΡ‚Π° Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Parcel Π² ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

Π‘Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Parcel глобально Π½Π΅Ρ‚ возмоТности — Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Ρƒ вас Π½Π΅Ρ‚ root-доступа ΠΊ систСмС ΠΈΠ»ΠΈ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ CI для автоматичСской сборки вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Parcel ΠΊΠ°ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Yarn:

yarn add parcel-bundler --dev

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ NPM:

npm install parcel-bundler --save-dev

Π”Π°Π»Π΅Π΅, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ скрипты Π² package.json вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

{
  "scripts": {
    "dev": "parcel <your entry file>",
    "build": "parcel build <your entry file>"
  }
}

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈΡ… ΠΈΠ· консоли:

# Для запуска Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ
yarn dev
# or
npm run dev
# Для запуска ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-сборки
yarn build
# or
npm run build

ΠŸΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ Π½Π°ΠΌ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ

Если Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ отсутствуСт ΠΈΠ»ΠΈ Π½Π΅ совсСм понятно, поТалуйста ΠΎΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ сайта ΠΈΠ»ΠΈ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ эту страницу.

Вопросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ ΠΎ подсистСма Windows для Linux

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ

Twitter LinkedIn Facebook АдрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹

  • Вопросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ подсистСма Windows для Linux (WSL)?

ΠŸΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠ° Windows для Linux (WSL) β€” это функция ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Windows, которая позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму Linux, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Linux ΠΈ прилоТСния графичСского ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса нСпосрСдствСнно Π² Windows, наряду с Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ классичСскими прилоТСниями ΠΈ прилоТСниями Windows.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ со страницСй свСдСний.

Для ΠΊΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° WSL?

Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ это срСдство для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², особСнно Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π½Π°Π΄ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈΠ»ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π² сСрвСрных срСдах Linux. WSL ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π»ΡŽΠ±ΠΈΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Bash, распространСнныС инструмСнты Linux (sed, awkΠΈ Ρ‚. Π΄.) ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Linux (Ruby, Python ΠΈ Ρ‚. Π΄.), Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ инструмСнтами для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Windows

Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ WSL?

WSL позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Linux Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ Bash с Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΌ дистрибутивом (Ubuntu, Debian, OpenSUSE, Kali, Alpine ΠΈ Ρ‚. Π΄.). Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Bash ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈ прилоТСния Linux. НапримСр, Π²Π²Π΅Π΄ΠΈΡ‚Π΅

lsb_release -a ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Π’Π’ΠžΠ”. Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ свСдСния ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΌ дистрибутивС Linux.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС локального ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈΠ· ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Bash Для Linux Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ диски Π² ΠΏΠ°ΠΏΠΊΠ΅ /mnt . НапримСр, диск C: ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² /mnt/c.

ΠžΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ с использованиСм WSL

ΠŸΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠ° WSL Π½Π°Ρ†Π΅Π»Π΅Π½Π° Π½Π° Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для использования Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π‘Π΅ΠΌΠ΅Π½ создаСт ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ CI/CD (НСпрСрывная ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ & НСпрСрывная поставка) ΠΈ Ρ…ΠΎΡ‡Π΅Ρ‚ сначала ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π° локальном ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ (Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠ΅) ΠΏΠ΅Ρ€Π΅Π΄ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ Π² ΠΎΠ±Π»Π°ΠΊΠ΅. Π‘Π΅ΠΌΠ΅Π½ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ WSL (& WSLΒ 2, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ), Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π»ΠΈΠ½Π½Ρ‹ΠΉ экзСмпляр Linux Ubuntu Π½Π° локальном ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ (Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠ΅) с Π»ΡŽΠ±Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ Bash ΠΈ инструмСнтами ΠΏΠΎ своСму Π²Ρ‹Π±ΠΎΡ€Ρƒ. ПослС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² локальной срСдС Π‘Π΅ΠΌΠ΅Π½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ этот ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ CI/CD Π² ΠΎΠ±Π»Π°ΠΊΠΎ (Ρ‚.Β Π΅. Π² Azure), сдСлав Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ Docker ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ² Π² ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹ΠΉ экзСмпляр, Π³Π΄Π΅ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС Ubuntu.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Bash?

Bash β€” это популярная тСкстовая ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° ΠΈ язык ΠΊΠΎΠΌΠ°Π½Π΄. Π­Ρ‚ΠΎ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ Π² Ubuntu ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ дистрибутивы Linux. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ для выполнСния сцСнариСв ΠΈ (ΠΈΠ»ΠΈ) ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ инструмСнтов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ мноТСство Π·Π°Π΄Π°Ρ‡.

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚?

ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ Π² Π±Π»ΠΎΠ³Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Windows: ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ WSL позволяСт Windows ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ Linux , Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описана базовая тСхнология.

Π—Π°Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ WSL вмСсто Linux Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС?

WSL Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ мСньшС рСсурсов (ЦП, памяти ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°), Ρ‡Π΅ΠΌ полноцСнная Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина. WSL Ρ‚Π°ΠΊΠΆΠ΅ позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈ прилоТСния Linux вмСстС с прилоТСниями ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, классичСскими прилоТСниями ΠΈ прилоТСниями Store для Windows, Π° Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ Windows Π² Linux. Π­Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прилоТСния для Windows ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Linux для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Π½Π°Π±ΠΎΡ€Π° Ρ„Π°ΠΉΠ»ΠΎΠ², Ссли трСбуСтся.

Π—Π°Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ruby Π² Linux, Π° Π½Π΅ Ruby Π² Windows?

НСкоторыС кроссплатформСнныС инструмСнты Π±Ρ‹Π»ΠΈ созданы, исходя ΠΈΠ· прСдполоТСния, Ρ‡Ρ‚ΠΎ срСда, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ Linux.

НапримСр, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ инструмСнты ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ доступ ΠΊ ΠΎΡ‡Π΅Π½ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌ путям ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΏΠ°ΠΏΠΊΠΈ. Π­Ρ‚ΠΎ часто Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² срСдС Windows, которая Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ Π²Π΅Π΄Π΅Ρ‚ сСбя ΠΈΠ½Π°Ρ‡Π΅, Ρ‡Π΅ΠΌ Π² Linux.

МногиС языки, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ruby ΠΈ Node.js, часто пСрСносятся Π² Windows ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π½Π΅ всС Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Ruby Gem ΠΈΠ»ΠΈ node/NPM пСрСносят свои Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Windows, ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… ΠΈΠΌΠ΅ΡŽΡ‚ зависимости, относящиСся ΠΊ Linux. Π­Ρ‚ΠΎ часто ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ систСмы, созданныС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΊΠΈΡ… инструмСнтов ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, становятся ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ ошибкам Π²ΠΎ врСмя сборки, Π° ΠΈΠ½ΠΎΠ³Π΄Π° β€” Π²ΠΎ врСмя выполнСния, Π»ΠΈΠ±ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² Windows Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Π­Ρ‚ΠΎ лишь Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ просят ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΡŽ ΠœΠ°ΠΉΠΊΡ€ΠΎΡΠΎΡ„Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Windows, Π° ΠΌΡ‹ стали ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€Π°ΠΌΠΈ с Canonical, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ собствСнных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Linux ΠΈ Bash Π² Windows.

Π§Ρ‚ΠΎ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ для PowerShell?

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ OSS сущСствуСт мноТСство сцСнариСв, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Bash ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки PowerShell. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Bash дополняСт ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ возмоТности ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Π² Windows, позволяя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PowerShell, Π° сообщСству PowerShell β€” ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ популярныС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² Π±Π»ΠΎΠ³Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² PowerShell: Bash for Windows: Why it’s awesome and what it means for PowerShell (Bash для Windows: ΠΏΠΎΡ‡Π΅ΠΌΡƒ это Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ ΠΈ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ для PowerShell)

КакиС процСссоры ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ WSL?

WSL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ процСссоры x64 ΠΈ Arm.

Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΌΠΎΠ΅ΠΌΡƒ диску C?

Π’ΠΎΡ‡ΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ для ТСстких дисков Π½Π° локальном ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ автоматичСски ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ простой доступ ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС Windows.

/mnt/<drive letter>/

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования β€” ΠΊΠΎΠΌΠ°Π½Π΄Π° cd /mnt/c для доступа ΠΊ диску C:\

Как Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ диспСтчСр ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Git? (Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Windows Git Π² WSL?)

ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с руководством ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ с Git Π½Π° подсистСма Windows для Linux, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТится Ρ€Π°Π·Π΄Π΅Π» ΠΎ настройкС диспСтчСра ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Git ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠΈ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ подлинности Π² диспСтчСрС ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Windows.

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Windows Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Linux?

Одним ΠΈΠ· прСимущСств WSL являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ доступа ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ инструмСнтов Windows ΠΈ Linux.

WSL ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½Π΅ΡΡŠΠ΅ΠΌΠ½Ρ‹Π΅ диски вашСго ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ /mnt/<drive> Π² Π²Π°ΡˆΠΈΡ… дистрибутивах Linux. НапримСр, диск C: ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² /mnt/c/.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ диски, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² C:\dev\myproj\ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Visual Studio ΠΈΠ»ΠΈ VS Code, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ сборку ΠΈΠ»ΠΈ тСстированиС этого ΠΊΠΎΠ΄Π° Π² Linux, воспользовавшись этими ΠΆΠ΅ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² /mnt/c/dev/myproj.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой Windows ΠΈ Linux .

ΠžΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π»ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ Π½Π° дискС Linux ΠΎΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΌ дискС Windows?

  1. Π€Π°ΠΉΠ»Ρ‹ Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Linux (Ρ‚. Π΅. /) ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ WSL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ соотвСтствуСт повСдСнию Linux, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ, ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

    • Ρ„Π°ΠΉΠ»Ρ‹, содСрТащиС Π² ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° нСдопустимыС Π·Π½Π°ΠΊΠΈ для Windows;
    • символичСскиС ссылки, созданныС для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π±Π΅Π· ΠΏΡ€Π°Π² администратора;
    • ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Ρ„Π°ΠΉΠ»Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ chmod ΠΈ chown;
    • ΡƒΡ‡Π΅Ρ‚ рСгистра Π² ΠΈΠΌΠ΅Π½Π°Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΠ°ΠΏΠΎΠΊ.
  2. Π€Π°ΠΉΠ»Ρ‹ Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… дисках ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Windows ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ характСристики:

    • ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΡƒΡ‡Π΅Ρ‚ рСгистра;
    • всС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Π½Ρ‹ для Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ отраТСния Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Windows.

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ дистрибутив WSL?

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ дистрибутив ΠΈΠ· WSL ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС Π΄Π°Π½Π½Ρ‹Π΅, связанныС с этим дистрибутивом Linux, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ wsl --unregister <distroName> , Π³Π΄Π΅ <distroName> β€” это имя дистрибутива Linux, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΠ· списка Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ wsl -l .

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ дистрибутива Linux Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… wsl см. Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для WSL.

Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сСрвСр OpenSSH?

OpenSSH поставляСтся с Windows Π² качСствС Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘ΠΌ. Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ установкС OpenSSH . Для запуска OpenSSH Π² WSL Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²Π° администратора Π² Windows. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сСрвСр OpenSSH, запуститС дистрибутив WSL (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ubuntu) ΠΈΠ»ΠΈ Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π» Windows ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ администратора. БущСствуСт нСсколько рСсурсов, посвящСнных сцСнариям SSH с WSL. ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ со ΡΡ‚Π°Ρ‚ΡŒΡΠΌΠΈ Π² Π±Π»ΠΎΠ³Π΅ Π‘ΠΊΠΎΡ‚Ρ‚Π° Π₯ансСльмана: How to SSH into a Windows 10 machine from Linux OR Windows OR anywhere, How to SSH into WSL2 on Windows 10 from a external machine, THE EASY WAY how to SSH in Bash and WSL2 on Windows 10 from an external machine, and How to use Windows 10 ВстроСнный OpenSSH для автоматичСского ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ SSH ΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ Linux.

Как ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ язык интСрфСйса WSL?

Установщик WSL попытаСтся автоматичСски ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ языковой стандарт Ubuntu Π² соотвСтствии с языковым стандартом установки Windows. Если это Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ языковой стандарт Ubuntu послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ установки. Π§Ρ‚ΠΎΠ±Ρ‹ это ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²ΠΎΠΉΠ»ΠΎ Π² силу, потрСбуСтся ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ дистрибутив WSL.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ языковой стандарт измСняСтся Π½Π° EN-US.

sudo update-locale LANG=en_US.UTF8

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρƒ мСня Π½Π΅Ρ‚ доступа ΠΊ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Ρƒ ΠΈΠ· WSL?

НСкоторыС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ сообщили ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ прилоТСниями брандмауэра, Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΠΈ доступ ΠΊ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Ρƒ Π² WSL. Π‘ΠΎΠΎΠ±Ρ‰ΠΈΠ»ΠΈ ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… брандмауэрах:

  1. Kaspersky;
  2. AVG;
  3. Avast.
  4. Symantec Endpoint Protection
  5. F-Secure

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ брандмауэра обСспСчиваСт доступ. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях доступ блокируСтся просто ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ установлСнного брандмауэра.

Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΏΠΎΡ€Ρ‚Ρƒ ΠΈΠ· WSL Π² Windows?

WSL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ IP-адрСс Windows, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Windows. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ ΠΏΠΎΡ€Ρ‚Π°ΠΌ Π½Π° localhost. НапримСр, Ссли Π²Ρ‹ прСдоставляСтС Π²Π΅Π±-содСрТимоС Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΡ€Ρ‚ 1234, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ адрСс https://localhost:1234 Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ для Windows. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Доступ ΠΊ сСтСвым прилоТСниям.

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию дистрибутивов WSL ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΈΡ… с ΠΎΠ΄Π½ΠΎΠ³ΠΎ диска Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ?

Π›ΡƒΡ‡ΡˆΠΈΠΉ способ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования ΠΈΠ»ΠΈ пСрСмСщСния дистрибутивов β€” с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄ экспорта ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, доступных Π² Windows вСрсии 1809 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ… вСрсий. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вСсь дистрибутив Π² Π°Ρ€Ρ…ΠΈΠ² tarball с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ wsl --export. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот дистрибутив ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² WSL с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ wsl --import ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ , которая ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Π·Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ располоТСниС диска для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, Ρ‡Ρ‚ΠΎ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹Π΅ ΠΊΠΎΠΏΠΈΠΈ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ состояния (ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ) дистрибутивы WSL.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ слуТбы Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΏΠ°ΠΏΠΊΠ°Ρ… AppData (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π°Ρ€Ρ…ΠΈΠ²Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…), Π½Π΅ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π°ΡŽΡ‚ Ρ„Π°ΠΉΠ»Ρ‹ Linux.

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ WSL для Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… сцСнариСв?

WSL Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΈ создан для использования с Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌΠΈ процСссами Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π°. Π’ WSL Π΅ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ проСктирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ для этой Ρ†Π΅Π»ΠΈ, Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ слоТным для Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… сцСнариСв ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°ΠΌΠΈ. Наша Ρ†Π΅Π»ΡŒ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Π΅ΠΌ WSL отличаСтся ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ срСды Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, соотвСтствуСт Π»ΠΈ ΠΎΠ½Π° вашим бизнСс-потрСбностям.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ различия ΠΌΠ΅ΠΆΠ΄Ρƒ WSL ΠΈ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ срСдой:

  • WSL ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΡƒΡŽ ΡΠ»ΡƒΠΆΠ΅Π±Π½ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ, которая автоматичСски запускаСт, останавливаСт рСсурсы ΠΈ управляСт ΠΈΠΌΠΈ.
  • Если Ρƒ вас Π½Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… дСскрипторов Ρ„Π°ΠΉΠ»ΠΎΠ² для процСссов Windows, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина WSL Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π°. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π΅Π³ΠΎ Π² качСствС Π²Π΅Π±-сСрвСра, Π² Π½Π΅Π³ΠΎ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ SSH для запуска сСрвСра, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Ρ…ΠΎΠ΄Π°, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅, ΠΈ очистит Π΅Π΅ рСсурсы.
  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ WSL ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ доступ ΠΊ своим экзСмплярам Linux. ВрСмя сущСствования Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, зарСгистрированныС дистрибутивы WSL ΠΈ Ρ‚. Π΄. доступны ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.
  • WSL автоматичСски прСдоставляСт доступ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ Windows.
  • ΠŸΡƒΡ‚ΠΈ Windows Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΊ ΠΏΡƒΡ‚ΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π½ΠΎΠΌΡƒ повСдСнию Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Linux ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ срСдой Linux.
  • WSL ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ Windows ΠΈΠ· Linux, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ срСдС, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΎΡ‚ срСды Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Linux.
  • Π―Π΄Ρ€ΠΎ Linux, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ WSL, обновляСтся автоматичСски.
  • Доступ ΠΊ GPU Π² WSL осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· /dev/dxg устройство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ направляСт Π²Ρ‹Π·ΠΎΠ²Ρ‹ GPU Π² GPU Windows. Π­Ρ‚Π° настройка отличаСтся ΠΎΡ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ настройки Linux.
  • Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ мСньшиС различия ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Linux Π±Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, ΠΈ, ΠΊΠ°ΠΊ оТидаСтся, Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ большС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹ΠΌ.

Как пСрСнСсти WSL-Ρ„Π°ΠΉΠ»Ρ‹ с ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ?

Π­Ρ‚Ρƒ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ нСсколькими способами.

  • Π‘Π°ΠΌΡ‹ΠΉ простой способ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ wsl --export --vhd ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для экспорта дистрибутива WSL Π² VHD-Ρ„Π°ΠΉΠ». Π—Π°Ρ‚Π΅ΠΌ этот Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ wsl --import --vhd. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ .
  • Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹ΡˆΠ΅ трСбуСтся ΠΌΠ½ΠΎΠ³ΠΎ мСста Π½Π° дискС. Если Ρƒ вас ΠΌΠ°Π»ΠΎ мСста Π½Π° дискС, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Linux для пСрСмСщСния Ρ„Π°ΠΉΠ»ΠΎΠ²:
    • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ tar -czf <tarballName> <directory> для создания tarball Ρ„Π°ΠΉΠ»ΠΎΠ². Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти Ρ„Π°ΠΉΠ»Ρ‹ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ tar -xzf <tarballName> , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΡ….
    • Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ список установлСнных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ apt ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ , dpkg --get-selections | grep -v deinstall | awk '{print $1}' > package_list.txt Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ sudo apt install -y $(cat package_list.txt) послС ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ„Π°ΠΉΠ»Π°.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π»ΠΈ подсистСма WSLΒ 2 Hyper-V? Π‘ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ ΠΎΠ½Π° доступна Π² Windows 10 Π”ΠΎΠΌΠ°ΡˆΠ½ΡΡ ΠΈ Windows 11 Π”ΠΎΠΌΠ°ΡˆΠ½ΡΡ?

WSL 2 доступСн Π½Π° всСх Π½ΠΎΠΌΠ΅Ρ€Π°Ρ… SKU классичСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π³Π΄Π΅ доступСн WSL, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Windows 10 Π”ΠΎΠΌΠ°ΡˆΠ½ΡΡ ΠΈ Windows 11 Π”ΠΎΠΌΠ°ΡˆΠ½ΡΡ.

ПослСдняя вСрсия WSL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Hyper-V для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π­Ρ‚Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π±ΡƒΠ΄Π΅Ρ‚ доступна Π² качСствС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Virtual Machine Platform (ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹). Π­Ρ‚ΠΎΡ‚ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ доступСн Π²ΠΎ всСх Π½ΠΎΠΌΠ΅Ρ€Π°Ρ… SKU. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± этом интСрфСйсС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±Π»ΠΈΠΆΠ΅ ΠΊ выпуску WSLΒ 2.

Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ с подсистСмой WSLΒ 1? Π‘ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½Π° Π΅Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°?

Π’ настоящСС врСмя Π½Π΅ планируСтся ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ подсистСму WSLΒ 1 Π½Π΅Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΠΎΠΉ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ дистрибутивы WSLΒ 1 ΠΈ WSLΒ 2 ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΈΡ… ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΡŽΡŽ Π²Π΅Ρ€ΡΠΈΡŽ дистрибутива Π² любоС врСмя. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ WSLΒ 2 Π² качСствС Π½ΠΎΠ²ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ для ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ WSL прСдставляСт собой Π»ΡƒΡ‡ΡˆΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ, которая прСдоставляСт ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ возмоТности для запуска срСды Linux Π² Windows.

Π‘ΠΌΠΎΠ³Ρƒ Π»ΠΈ я Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ WSLΒ 2 с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ сторонними инструмСнтами Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ VMware ΠΈΠ»ΠΈ VirtualBox?

Если Hyper-V ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сторонниС прилоТСния Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. БоотвСтствСнно, ΠΎΠ½ΠΈ Π½Π΅ смогут Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΌ WSLΒ 2, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ VMware ΠΈ VirtualBox. Но Π½Π΅Π΄Π°Π²Π½ΠΎ Π²Ρ‹ΡˆΠ»ΠΈ Π½ΠΎΠ²Ρ‹Π΅ выпуски VirtualBox ΠΈ VMware, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Hyper-V ΠΈ WSL2. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎΠ± измСнСниях VirtualBox см. здСсь, Π° ΠΎΠ± измСнСниях VMware см. здСсь. БвСдСния ΠΎΠ± устранСнии Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² обсуТдСниях ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с VirtualBox Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ WSL Π½Π° GitHub.

ΠœΡ‹ постоянно Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π½Π°Π΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Hyper-V ΠΎΡ‚ сторонних ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ. НапримСр, ΠΌΡ‹ прСдоставляСм Π½Π°Π±ΠΎΡ€ API-интСрфСйсов (ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π°), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сторонниС поставщики Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для обСспСчСния совмСстимости своСго ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния с Hyper-V. Π­Ρ‚ΠΎ позволяСт прилоТСниям ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Hyper-V для своих эмуляций, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Google Android Emulator, Π° Ρ‚Π°ΠΊΠΆΠ΅ VirtualBoxΒ 6 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ вСрсии, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ совмСстимы с Hyper-V.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… WSL 2 с VirtualBox 6.1 см. Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ WSL.

*Если Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ Windows, скачиваСмыС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ VMWare, Hyper-V, VirtualBox ΠΈ Parallels ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π² Π¦Π΅Π½Ρ‚Ρ€Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для Windows.

ΠœΠΎΠ³Ρƒ Π»ΠΈ я ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ GPU Π² WSLΒ 2? ΠŸΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ Π»ΠΈ ΡƒΡΠΈΠ»ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ оборудования?

ΠœΡ‹ выпустили ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ доступа ΠΊ GPU Π² дистрибутивах WSL 2. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ WSL для сцСнариСв с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ машинного обучСния, искусствСнного ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ…, Ссли задСйствованы большиС Π½Π°Π±ΠΎΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с руководством ΠΏΠΎ Π½Π°Ρ‡Π°Π»Ρƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ GPU. БСйчас WSLΒ 2 Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ USB-устройств. ΠœΡ‹ опрСдСляСм ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ способ добавлСния этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Однако ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° USB Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ доступна Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ USBIPD-WIN. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ ΠΏΠΎ настройкС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ USB-устройств см. Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ USB-устройств .

ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ WSL 2 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сСтСвыС прилоТСния?

Π”Π°, Π² Ρ†Π΅Π»ΠΎΠΌ сСтСвыС прилоТСния Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈ быстрСС с WSL 2, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΏΠΎΠ»Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². Однако Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ WSL 2 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сСтСвыС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ WSL 2 Π±ΡƒΠ΄Π΅Ρ‚ вСсти сСбя Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина. Дистрибутивы WSL 2 Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ IP-адрСс, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΡ‚ IP-адрСса хост-ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° (ОБ Windows). Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Доступ ΠΊ сСтСвым прилоТСниям с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ WSL.

МоТно Π»ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ WSLΒ 2 Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС?

Π”Π°! НСобходимо ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° влоТСнная виртуализация. Π•Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ ΡƒΠ·Π»Π΅ Hyper-V, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² ΠΎΠΊΠ½Π΅ PowerShell с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора:

Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true

НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ <VMName> ΠΈΠΌΠ΅Π½Π΅ΠΌ своСй Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ wsl.conf Π² WSLΒ 2?

WSLΒ 2 ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ„Π°ΠΉΠ» wsl.conf, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ WSLΒ 1. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Π² дистрибутивС WSLΒ 1, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ дисков Windows, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ взаимодСйствия, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ диски Windows, ΠΈ Ρ‚.Β Π΄. Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² WSLΒ 2. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π² WSL см. Π½Π° страницС Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ распространитСлями . Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ дисков, дисков, устройств ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ТСстких дисков (VHD) см. Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ диска Linux Π² WSL 2 .

ΠšΡƒΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΡ‚Π·Ρ‹Π²?

Ѐункция ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² WSL позволяСт:

  • Π’Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ поиск свСдСний ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с возникшСй ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² строкС поиска ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ is:open, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ поиска ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ Ρ€Π΅ΡˆΠ΅Π½Ρ‹. РассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ коммСнтирования ΠΈΠ»ΠΈ одобрСния Π»ΡŽΠ±Ρ‹Ρ… ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ свою Π·Π°ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Π² ΠΈΡ… ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ Π² качСствС ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹Ρ….
  • Π Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свСдСния ΠΎ Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ…. Если Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с WSL, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅Ρ‚ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π·Π΅Π»Π΅Π½ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ New issue (Новая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°), Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ элСмСнт WSL — Bug Report (WSLΒ β€” ΠΎΡ‚Ρ‡Π΅Ρ‚ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…). Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π½ΠΎΠΌΠ΅Ρ€ сборки Windows (Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ cmd.exe /c ver, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ сборки), нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ WSLΒ 1 ΠΈΠ»ΠΈ WSLΒ 2, Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ядра Linux (Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ wsl.exe --status ΠΈΠ»ΠΈ cat /proc/version), Π½ΠΎΠΌΠ΅Ρ€ вСрсии дистрибутива (Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ lsb_release -r), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ вСрсии ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, свСдСния ΠΎ дСйствиях для воспроизвСдСния, ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ, фактичСском ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΆΡƒΡ€Π½Π°Π»Ρ‹ диагностики, Ссли ΠΎΠ½ΠΈ доступны ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅, посвящСнном Π²ΠΊΠ»Π°Π΄Ρƒ Π² WSL.
  • ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ запрос Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π½Π°ΠΆΠ°Π² Π·Π΅Π»Π΅Π½ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ New issue (Новая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°) ΠΈ Π²Ρ‹Π±Ρ€Π°Π² Feature request (Запрос Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ). Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° нСсколько вопросов, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΡ… ваш запрос.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  • Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свСдСния ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² WSL. Π§Ρ‚ΠΎΠ±Ρ‹ внСсти измСнСния Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ WSL, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с руководством для участников Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΡ€Ρ‚Π°Π»Π° «Π”окумСнтация» ΠœΠ°ΠΉΠΊΡ€ΠΎΡΠΎΡ„Ρ‚.
  • Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свСдСния ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ с Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠΌ Windows, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° Windows, Ссли ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° связана с Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠΌ Windows, консолью Windows ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ интСрфСйсом ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Π² курсС послСдних новостСй WSL, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  • Π² наш Π±Π»ΠΎΠ³ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² для ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки;
  • Twitter. Π‘Π»Π΅Π΄ΠΈΡ‚Π΅ Π·Π° @craigaloewen Π² Twitter, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ новостях, обновлСниях ΠΈ Ρ‚. Π΄.

ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ связь

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС ΠΎΡ‚Π·Ρ‹Π²Ρ‹ ΠΏΠΎ страницС

Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ WebSocket с ‘ws://localhost:1234/tiptap’ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ: Ошибка ΠΏΡ€ΠΈ установлСнии соСдинСния: net::ERR_CONNECTION_REFUSED

marcoippolito

#1

Π― ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ сСрвСр Π²Π΅Π±-сокСтов.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ сСрвСр Π²Π΅Π±-сокСтов, я ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» WebSocketProvider Π² https://github.com/yjs/yjs-demos/blob/master/tiptap/src/Realtime.js ΠΊΠ°ΠΊ:

 //const provider = new WebsocketProvider('wss://demos.yjs.dev', 'tiptap', ydoc)
const provider = Π½ΠΎΠ²Ρ‹ΠΉ WebsocketProvider('ws://localhost:1234', 'tiptap', ydoc)
 

Но Π² консоли Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ это сообщСниС ΠΎΠ± ошибкС:

Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ WebSocket с β€˜ws://localhost:1234/tiptap’ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ: Ошибка ΠΏΡ€ΠΈ установлСнии соСдинСния: net::ERR_CONNECTION_REFUSED

Как Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ?
Π‘ Π½Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Π½ΠΈΠ΅ΠΌ ΠΆΠ΄Ρƒ вашСй ΠΏΠΎΠΌΠΎΡ‰ΠΈ.
ΠœΠ°Ρ€ΠΊΠΎ

ΠΊΠ°Π½Π°Π΄Π°Π΄ΡƒΠ°Π½

#2

Π’Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ сСрвСр y-websocket локально? Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€

 ПОРВ = 1234 npx y-websocket-сСрвСр
 

ΠΌΠ°Ρ€ΠΊΠΎΠΈΠΏΠΏΠΎΠ»ΠΈΡ‚ΠΎ

#3

@canadaduane Π­Ρ‚ΠΎ Π±Ρ‹Π»Π° моя ошибка!!! Π― Π½Π΅ запускал сСрвСр y-websocket Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎβ€¦)))

 (Π±Π°Π·Π°) marco@pc01:~/webMatters/vueMatters/yjs-demos/tiptap$ PORT=1234 npx y-websocket-server
 

Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΏΠΎΡ€Ρ‚Ρƒ 1234

Π£ мСня всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚!

Бпасибо. И проститС Π·Π° эту ΠΎΡˆΠΈΠ±ΠΊΡƒ

canadaduane

#4

Π Π°Π΄, Ρ‡Ρ‚ΠΎ всС Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ!

1 Нравится

ΠΌΠ°Ρ€ΠΊΠΎΠΈΠΏΠΏΠΎΠ»ΠΈΡ‚ΠΎ

#5

@canadaduane ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Дуэйн!
БСйчас я ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг.
Π”Π°ΠΆΠ΅ Ссли ΠΌΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΠΎ Π² ΠΎΠ±Π»Π°ΠΊΠ΅, Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ я Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽ Π΅Π³ΠΎ Π½Π° локальном ПК.
ΠŸΡ€ΠΎΡΡ‚ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, я попытался ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Realtime.js ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ, с
const provider = new WebsocketProvider(‘ws://localhost:1234’, ‘tiptap’, ydoc)

Π’ nginx конфигурация Π²Π΅Π±-сСрвСра Π― поставил эту Ρ‡Π°ΡΡ‚ΡŒ для Π²Π΅Π±-сокСта:

 map $http_upgrade $connection_upgrade {
  ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ;
  '' Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ;
}
восходящий Π²Π΅Π±-сокСт {
    сСрвСр ggc.world:1234;
}
сСрвСр {
    ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ 8443 ssl;
    имя_сСрвСра ggc.world;
    ssl_certificate /etc/letsencrypt/live/ggc.world-0002/fullchain.pem; # ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Certbot
    ssl_certificate_key /etc/letsencrypt/live/ggc.world-0002/privkey.pem; # ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Certbot
    ssl_trusted_certificate /etc/letsencrypt/live/ggc.world-0002/chain.pem;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Certbot
    располоТСниС / {
        прокси_пасс http://вСбсокСт;
        прокси_http_вСрсия 1. 1;
        proxy_set_header ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ $http_upgrade;
        proxy_set_header Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ $connection_upgrade;
        proxy_set_header Π₯ост $host;
    }
}
 

Π― Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽ y-websocket-server локально:

 (Π±Π°Π·Π°) marco@pc01:~/webMatters/vueMatters/GGC$ PORT=1234 npx y-websocket-server
Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΏΠΎΡ€Ρ‚Ρƒ 1234
 

ΠŸΡ€ΠΈ запускС прилоТСния я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ:

Ошибка ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ WebSocket ΠΊ ‘wss://localhost:1234/tiptap’: Ошибка ΠΏΡ€ΠΈ установлСнии соСдинСния: nett::ERR_SSL_PROTOCOL_ERROR

Π― пытался ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ nginx:

 восходящий Π²Π΅Π±-сокСт {
    #сСрвСр ggc.world:1234;
    сСрвСр 127.0.0.1:1234;
}
сСрвСр {
    ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ 8443 ssl;
    имя_сСрвСра ggc.world;
 

Но ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅:
Β«ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ WebSocket ΠΊ ‘wss://localhost: 1234/tiptap’failed: Ошибка ΠΏΡ€ΠΈ установлСнии соСдинСния: net::ERR_SSL_PROTOCOL_ERRORΒ»

Если nginx ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΡ€Ρ‚ 8443 для ssl, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ я ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊΡƒΠ΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π² Realtime.js ?
Как Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ это Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ?

ΠΊΠ°Π½Π°Π΄Π°Π΄ΡƒΠ°Π½

#6

Π’ΠΎΡ‚ моя конфигурация nginx. Π£ мСня Π΅ΡΡ‚ΡŒ собствСнный y-websocker-сСрвСр, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π½Π° ΠΏΠΎΡ€Ρ‚Ρƒ 1235 (см. ΠΊΠΎΠ΄):

 сСрвСр {
ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ 80 ;
# ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ [::]:80 ipv6only=on;
ΠΊΠΎΡ€Π΅Π½ΡŒ /var/www/html;
индСкс index.php index.html index.htm;
имя_сСрвСра y.relm.us;
располоТСниС / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Π₯ост $host;
прокси_ΠΏΠ°Ρ€ΠΎΠ»ΡŒ http://localhost:1235;
прокси_http_вСрсия 1.1;
proxy_set_header ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ $http_upgrade;
proxy_set_header БоСдинСниС "ОбновлСниС";
proxy_connect_timeout 7 Π΄Π½Π΅ΠΉ;
proxy_send_timeout 7 Π΄Π½Π΅ΠΉ;
proxy_read_timeout 7 Π΄Π½Π΅ΠΉ;
client_max_body_size 2ΠΌ;
}
error_page 413 @filetoobig;
страница_ошибки 404 /404.html;
error_page 500 502 503 504 /50x.html;
мСстополоТСниС = /50x.html {
ΠΊΠΎΡ€Π΅Π½ΡŒ /usr/share/nginx/html;
}
мСстополоТСниС @filetoobig {
add_header Access-Control-Allow-Origin * всСгда;
}
    ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ 443 ssl; # ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Certbot
    ssl_certificate /etc/letsencrypt/live/y. relm.us/fullchain.pem; # ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Certbot
    ssl_certificate_key /etc/letsencrypt/live/y.relm.us/privkey.pem; # ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Certbot
    Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ /etc/letsencrypt/options-ssl-nginx.conf; # ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Certbot
}
 

ИспользованиС GDB β€” докумСнтация QEMU

QEMU ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с gdb Ρ‡Π΅Ρ€Π΅Π· срСдство ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ gdb («gdbstub»). Π­Ρ‚ΠΎ позволяСт ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ гостСвой ΠΊΠΎΠ΄ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ срСдства ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ JTAG Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ состояниС, Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠ°ΠΊ рСгистры ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ останова ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ наблюдСния.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ gdb, запуститС QEMU с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ -s ΠΈ -S . ΠžΠΏΡ†ΠΈΡ -s заставит QEMU ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚ΡŒ входящиС соСдинСния. ΠΈΠ· gdb Π½Π° TCP-ΠΏΠΎΡ€Ρ‚ 1234, Π° -S заставит QEMU Π½Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ guest, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ скаТСтС ΠΎΠ± этом ΠΈΠ· gdb. (Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ TCP-ΠΏΠΎΡ€Ρ‚ для использования ΠΈΠ»ΠΈ для использования Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ TCP, для gdbstub соСдинСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -gdb dev вмСсто -s . Π’ΠΈΠ΄Π΅Ρ‚ΡŒ НапримСр, с использованиСм сокСтов unix.)

 qemu-system-x86_64 -s -S -kernel bzImage -hda rootdisk.img -append "root=/dev/hda" 

QEMU запустится, Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΎΠ»Ρ‡Π° ΠΆΠ΄Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ gdb.

Π—Π°Ρ‚Π΅ΠΌ запуститС gdb Π² исполняСмом Ρ„Π°ΠΉΠ»Π΅ vmlinux:

 > gdb vmlinux
 

Π’ gdb ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΊ QEMU:

 (gdb) Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ хост: 1234
 

ПослС этого Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ gdb. НапримСр, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Β«cΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ядро:

 (gdb) c
 

Π’ΠΎΡ‚ нСсколько ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… совСтов ΠΏΠΎ использованию gdb Π² систСмном ΠΊΠΎΠ΄Π΅:

  1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ info reg для отобраТСния всСх рСгистров процСссора.

  2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ x/10i $eip для отобраТСния ΠΊΠΎΠ΄Π° Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ПК.

  3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π½Π°Π±ΠΎΡ€ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ i8086 для создания Π΄Π°ΠΌΠΏΠ° 16-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π—Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ x/10i $cs*16+$eip для сброса ΠΊΠΎΠ΄Π° Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ПК.

ΠžΡ‚Π»Π°Π΄ΠΊΠ° многоядСрных машин

Абстракция GDB для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Ρ†Π΅Π»Π΅ΠΉ с нСсколькими Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ исполнСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄Π²ΡƒΡ…ΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌΠΈ: ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ нСсколько Β«Π½ΠΈΠ·ΡˆΠΈΡ…Β», ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько Β«ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Β». Когда QEMU машина ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ЦП, QEMU прСдставляСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ кластСр ЦП ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ «низший», Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ЦП Π² кластСрС являСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ «Π½ΠΈΡ‚ΡŒ». Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ‚ΠΈΠΏΠΎΠ² машин QEMU ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ЦП, поэтому ΠΎΠ΄ΠΈΠ½ кластСр, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΡΡ‚ΡŒ всС процСссоры. НСсколько Ρ‚ΠΈΠΏΠΎΠ² машин Π½Π΅ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹ ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ нСсколько кластСров: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, sifive_u машина ΠΈΠΌΠ΅Π΅Ρ‚ кластСр с ΠΎΠ΄Π½ΠΈΠΌ ядром E51 ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ кластСр с Ρ‡Π΅Ρ‚Ρ‹Ρ€ΡŒΠΌΡ ядра U54. Π—Π΄Π΅ΡΡŒ Π•51 СдинствСнная Ρ€Π΅Π·ΡŒΠ±Π° Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ низшСй, Π° ядра U54 — всС ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½ΠΎΠΌ.

Когда Π²Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚Π΅ gdb ΠΊ gdbstub, ΠΎΠ½ автоматичСски ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½ΠΎΠΌΡƒ; Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ процСссоры Π² этом кластСр с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ gdb info thread ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ управлСния ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ gdb.

Для многокластСрных машин, ΠΊ соТалСнию, gdb ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ нСсколько ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½Ρ‹Ρ…, поэтому Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ явно ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠΌ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», Π½Π΅ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ :

 (gdb) Ρ†Π΅Π»ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ хост: 1234
 

ПослС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ gdb Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½Ρ‹ΠΉ для ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ кластСр. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½Ρ‹Ρ… для Π΄Ρ€ΡƒΠ³ΠΈΡ… кластСры ΠΈ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ Π½ΠΈΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

 (gdb) add-inferior
Π”ΠΎΠ±Π°Π²Π»Π΅Π½ низший 2
(gdb) низший 2
[ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π½ΠΈΠΆΠ½ΠΈΠΉ 2 [] ()]
(gdb) ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ 2
ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΊ процСссу 2
ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: исполняСмый Ρ„Π°ΠΉΠ» Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½, ΠΈ Ρ†Π΅Π»ΡŒ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚
автоматичСскоС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ исполняСмого Ρ„Π°ΠΉΠ»Π°. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Β«Ρ„Π°ΠΉΠ»Β».
0x00000000 Π² ?? ()
 

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ это сдСлаСтС, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ процСссоры Π² всС кластСры, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ»ΠΈΡΡŒ:

 (gdb) ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ
  Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΊΠ°Π΄Ρ€Π°
  1. 1 Thread 1.1 (процСссор cortex-m33-arm-cpu [Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚]) 0x00000000 Π² ?? ()
* 2.1 Thread 2.2 (процСссор cortex-m33-arm-cpu [остановлСн]) 0x00000000 Π² ?? ()
 

ВСроятно, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ gdb Π² Ρ€Π΅ΠΆΠΈΠΌ schedule-multiple , Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ gdb continue , ΠΎΠ½ возобновляСт Ρ€Π°Π±ΠΎΡ‚Ρƒ всСх процСссоров, Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² кластСрС, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ сСйчас Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅:

 (gdb) ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ нСсколько расписаний Π²ΠΊΠ».
 

ИспользованиС сокСтов unix

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ gdb ΠΊ QEMU gdbstub являСтся использованиС сокСт unix (Ссли поддСрТиваСтся вашСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой). Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° запуск Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… тСстов ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ, ΠΈΠ»ΠΈ Ссли Ρƒ вас Π½Π΅Ρ‚ извСстного свободного TCP ΠΏΠΎΡ€Ρ‚ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ запускС автоматичСских тСстов).

Π‘Π½Π°Ρ‡Π°Π»Π° создайтС chardev с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, Π·Π°Ρ‚Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ gdbserver ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это устройство:

 qemu-system-x86_64 -chardev socket,path=/tmp/gdb-socket,server=on,wait=off,id=gdb0 -gdb chardev:gdb0 -S . .. 

ЗапуститС gdb, ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, Π½ΠΎ Π½Π° этот Ρ€Π°Π· ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡƒΡ‚ΡŒ ΠΊ сокСт:

 (gdb) Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ /tmp/gdb-socket
 

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ для использования сокСта unix для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²Π°ΠΌ потрСбуСтся gdb вСрсии 9.0 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° физичСской памяти

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° функция QEMU gdbstub β€” ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ памяти GDB. Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ GDB ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ процСсса с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ трансляция Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ адрСса.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ/ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΈΠ·ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ gdbstub Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с физичСской ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, Π° Π½Π΅ с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ.

Π Π΅ΠΆΠΈΠΌ памяти ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

ΠΏΠ°ΠΊΠ΅Ρ‚ обслуТивания qqemu.PhyMemMode

Π‘ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΎ Π»ΠΈΠ±ΠΎ 0, Π»ΠΈΠ±ΠΎ 1, 1 ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² Π Π΅ΠΆΠΈΠΌ физичСской памяти.

ΠΏΠ°ΠΊΠ΅Ρ‚ обслуТивания Qqemu.PhyMemMode:1

Π­Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ Ρ€Π΅ΠΆΠΈΠΌ памяти Π½Π° Ρ„ΠΈΠ·ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ.