Рекомендуємо, 2022

Вибір Редакції

Як Linux Bash Shell працює на Windows 10

З виходом ювілейного оновлення для Windows 10, Microsoft оголосила про підсистему Windows для Linux (WSL) - спосіб запуску реального, рідного Bash на Windows 10, який підтримує виконання рідних бінарних файлів Linux. Вона виконує це, використовуючи Ubuntu Linux у режимі користувача у верхній частині Windows.

Це означає, що ви можете запускати інструменти командного рядка Linux, такі як ls, grep, top і chmod . Оскільки під керуванням запущено справжню Ubuntu, запуск lsb-release -a дасть вам наступний висновок:

Ви можете використовувати apt-get і друзі для встановлення таких утиліт, як vim, git, screen, tmux або навіть грати в гру nethack:

Пам'ятайте, однак, що ця система є бета-версією і не призначена для завантаження серверів. Це лише інструмент для розробників (і ентузіастів) для перевірки своїх Linux-орієнтованих додатків на Windows без змін. Це також не є інструментом, призначеним для запуску програм GUI Linux або середовищ, таких як Gnome або KDE, хоча це можливо і з певними хаками. Очистивши це, давайте поглянемо, як Linux оболонка працює в Windows 10.

Підсистема Windows для Linux (WSL)

Згідно з офіційною документацією, “WSL - це набір компонентів, що дозволяють виконувати належні двійкові файли Linux ELF64 у Windows”. Це відбувається шляхом реалізації віртуалізованого інтерфейсу ядра Linux на ядрі Windows NT. Тобто, він не використовує жодного коду з реального ядра Linux - коли додаток робить системний виклик, специфічний для Linux (syscall), WSL переводить його у еквівалентний syscall для Windows, який потім виконує всі важкі операції.

Відмінності від віртуальних машин і Cygwin

Тепер давайте подивимося, як Linux Bash Shell на Windows 10 відрізняється від подібних віртуальних машин і Cygwin.

Віртуальні машини

Можливо, ви думаєте: “Ну чому це? Чому не просто використовувати Linux VM у Windows? ”

У порівнянні з віртуальною машиною WSL використовує менше ресурсів . Вона також дозволяє працювати з вашими файлами так само, як у Linux, надаючи повний доступ до базової файлової системи Windows, не покладаючись на спільні папки або мережні папки.

Cygwin

Іншим популярним методом запуску популярних у Linux / Unix інструментів у Windows є Cygwin. Найбільша різниця між цими двома підходами полягає в тому, що Cygwin не є способом запуску рідних бінарних файлів Linux на Windows. Він надає лише набір інструментів GNU та Open Source, які забезпечують функціональність, подібну до дистрибутива Linux у Windows.

З іншого боку, засоби WSL є рідними Linux ELF-64, скомпільованими бінарними файлами, що працюють у Windows. Наприклад, запустивши команду apt-get install emacs у WSL, ви зможете завантажити та встановити ті ж файли, що й на установці Ubuntu 14.04, з офіційних репозиторіїв Ubuntu.

Користувачі, дозволи та файлові системи в WSL

Ієрархія файлових систем

WSL встановлюється під директорію %LocalAppData%\lxss\rootfs . Це відоме як середовище WSL і виступає як Linux ( / root) каталог. Наприклад, якщо ваше ім'я користувача у Windows є beebom, кореневий каталог Linux буде розташований на C:\Users\beebom\AppData\Local\lxss\rootfs. Це означає, що кожен користувач Windows може мати власне середовище WSL і може вносити зміни, такі як apt-get install пакети програмного забезпечення, не впливаючи на інших користувачів Windows.

У WSL можна отримати доступ до базової файлової системи Windows. Всі диски монтуються під /mnt. Наприклад, C:\ монтується під /mnt/c, D:\ монтується під /mnt/d і т.д.

Користувачі та дозволи

Коли ви спочатку встановите WSL, він запропонує вам створити нового користувача за замовчуванням Linux. Цей користувач не повинен мати те ж ім'я, що й поточний користувач Windows, і в цілому розглядається як окремий об'єкт. Ви навіть можете створити декількох користувачів Linux, керованих одним користувачем Windows.

Можна отримати привілеї root за допомогою команди sudo . Майте на увазі, що саме root в WSL впливає лише на права користувача в середовищі Linux і на файлову систему - вони не впливають на надані привілеї Windows. Наприклад, сеанс WSL з правами адміністратора Windows може cd /mnt/c/Users/Administrator той час як сеанс Bash без привілеїв адміністратора бачить заборону на дозвіл. Введення sudo cd /mnt/c/Users/Administrator не надасть доступу до каталогу адміністратора, оскільки права доступу обмежені Windows.

Особливості файлової системи, специфічні для Linux

Linux - це чутлива до регістру система. Це означає, що Photo.png і Photo.png розглядаються як два різних файли. Незважаючи на те, що Windows за умовчанням не чутлива до регістру, вона все ще відома . Це означає, що в той час як Photo.png і Photo.png не розглядаються як два різні файли, він, звичайно, знає різницю у випадку.

WSL обробляє чутливість до регістру так само, як на Linux. Можливо навіть створити два файли, чиє ім'я відрізняється лише за межами середовища WSL. Пам'ятайте, однак, що багато додатків Windows не можуть обробляти такі ситуації і не можуть відкрити один або обидва файли.

Аналогічно, символічні посилання підтримуються, якщо ви використовуєте файлову систему NTFS. Однак символічні посилання будуть працювати тільки всередині WSL і не можуть бути вирішені іншими програмами Windows.

Linux також підтримує майже всі спеціальні символи в іменах файлів, тоді як Windows є більш обмежувальним. WSL, однак, дозволяє використовувати такі спеціальні символи, за умови, що вони обмежені середовищем системи Linux.

Чи готові запустити командний рядок Linux у Windows?

Отже, саме так Ubuntu Bash або Linux Bash Shell, також відомий як Windows Subsystem for Linux, працює на Windows 10 (з оновленням річниці). Поряд з його роботою, ми також дізналися, як він відрізняється і краще, ніж традиційні методи запуску Linux-специфічних команд на Windows. Отже, якщо ви завжди хотіли використовувати команди Linux, почніть і якщо у вас є запитання, коментарі або поради, не забудьте повідомити нас у розділі коментарів.

Top