Как новый «Bash на Windows 10» действительно работает?

25

Я читал в Интернете, что Ubuntu и bash выходят на Windows 10. Я также читал, что это не эмулятор или виртуальная машина, работающая поверх Windows, а что-то еще. Так как именно все это объединяется? И действительно ли он будет таким же стабильным и удобным для пользователя, как bash в Ubuntu?

Maaverik
источник
Смотрите: Bash на Ubuntu для Windows
Cyrus,
Это действительно не дает отличную картину того, что на самом деле происходит под капотом.
Мааверик
@maaverik С тех пор мы выпустили серию постов в блогах и сопровождающих видео, объясняющих внутреннюю часть WSL. Смотрите мой ответ ниже для ссылок :)
Рич Тернер

Ответы:

21

Это не эмулятор так же, как WINE - не эмулятор. То есть они добавили интерфейс ядра Linux к своему ядру Windows. Когда приложение пытается использовать ядро ​​Linux, оно переводится в собственный системный вызов Windows, а любые ответы от ядра переводятся в собственный ответ Linux. Таким образом, приложение думает, что оно работает на ядре Linux и, следовательно, не нуждается в модификации.

Тем не менее, это чисто технология Windows, поэтому, если вы хотите получить больше информации, вы должны получить их из группы поддержки Windows или чего-то еще. Windows по-прежнему является проприетарной ОС, поэтому я ожидаю ограниченного количества деталей.

И действительно ли он будет таким же стабильным и удобным для пользователя, как bash в Ubuntu?

С точки зрения Ubuntu, мы просто работаем на примитивном ядре Linux, что сравнимо с работой современного рабочего стола на примитивном X-сервере. Если вы используете только функции, поддерживаемые поддельным ядром, оно будет стабильным и удобным для пользователя. Если вы используете неподдерживаемые функции, это будет нестабильно.

Это не будет где-либо рядом с полным опытом Ubuntu в ближайшее время.

Джо-Эрленд Шинстад
источник
2
«Не эмулятор», вероятно, принадлежит кавычкам; как вино это является эмулятор, только не на аппаратном уровне , а на уровне API. Оба приводят к снижению производительности в зависимости от того, что вы делаете (то есть, сколько системных вызовов вы делаете).
Томасруттер
2
@thomasrutter Извините, я не согласен. Ваше определение «эмулятор» слишком слабое. При такой интерпретации мы также должны вызывать эмуляторы прокси (но это не так). Эмулятор по определению эмулирует вещи. WSL (и прокси) не эмулируют вещи, они преобразуют и пересылают вещи и возвращают ответ.
Segfault
21

Для тех, кому интересно, как работает подсистема Windows для Linux (WSL) и как она работает с собственными двоичными файлами Linux ELF-64, мы опубликовали серию постов в блоге и сопровождающих их видео, объясняющих архитектуру WSL, процессы, системные вызовы и поддержку файловой системы. ,

Скотт Хансельман также сделал отличное видео о процессе установки и о том, как настроить Bash в Ubuntu для Windows:

НТН

Рич Тернер
источник
3
Первая ссылка не работает больше, я думаю , что он переехал сюда: blogs.msdn.microsoft.com/commandline/...
dpritch
Хороший улов - спасибо. Исправлена ​​ссылка, указывающая на нашу сокращенную ссылку.
Рич Тернер
2

Части bash очень хорошо работают в WSL.

Части ядра не там. Например, нет /sys/class/backlight/intel_backlight/brightnessдоступа к настройке яркости экрана. Есть команды Powershell, которые можно легко вызвать, если вы не возражаете против очень длинных имен полей в стиле COBOL. MS Powershell можно вызывать прямо изнутри bash. Таким образом, вы можете сказать, что мощные функции Windows теперь встроены в bash. По тому же признаку MS Powershell может назвать bash. Так что, если верно Powershell получает доступ к функциям , как grep, awk, head, tailи т.д.

Графический интерфейс для Ubuntu Desktop ( gedit, nautilusи т. Д.) Работает только после установки VcXsrvили чего-то подобного.

Обмен файлами между Linux и Windows WSL сложен в настройке. Когда при перемещении файлов между общей папкой WSL + Linux NTFS у меня возникали некоторые «странные» права доступа к файлам либо из-за моего невежества, либо из-за недостатков программного обеспечения.

Скорость в WSL намного ниже, чем в Ubuntu. На самом деле вы можете увидеть экран закрашивать символ за символом, когда вы запускаете calили toilet: Каковы различия между Windows Bash и Cygwin?

Я думаю, что WSL - хороший продукт, и мне нравится возиться с ним при двойной загрузке в Windows-World. Он никогда не станет отличным продуктом из-за отсутствия финансирования у MS, и они действительно не хотят иметь отличный дистрибутив Linux Free-Ware. Если бы у вас было достаточно оперативной памяти, вы, вероятно, были бы счастливы с виртуальной машиной. Сейчас, когда цены на оперативную память увеличатся всего на 8 ГБ, а в середине 2019 года она будет расти, я с радостью остановлюсь на WSL и пока не буду обновлять 32 ГБ ОЗУ.

Я посетил несколько форумов MS и должен сказать, что Рич Тернер и члены его команды WSL - одни из самых хороших профессионалов, которых я видел.

WinEunuuchs2Unix
источник