Microsoft подтвердила слухи об интеграции подсистемы Linux в Windows 10

    Microsoft жжет. Недавно мы писали о присутствии специальных системных файлов с названиями LXss.sys и LXCore.sys в новейшем билде Windows 10, который используется разработчиками программ и драйверов, а также тестировщиками в служебных целях. В драйверах содержался код разбора заголовков ELF-файлов, а также прочие системные функции, характерные для Linux и отсутствующие в Windows NT by design. Уже тогда стало очевидно, что Microsoft собирается всерьез заняться интеграцией подсистемы Linux в Windows 10.



    У компании уже имелся подобный опыт. Оригинальная концепция Windows NT (на которой основана Windows 10) подразумевала присутствие там трех подсистем: родной MS Win32, UNIX POSIX, а также IBM OS/2. Обе последние подсистемы отвалились где-то по дороге, которая вела к превращению Windows 2000 в Windows XP, а сама POSIX перекочевала в отдельный инструмент без возможности присутствия в дистрибутиве Windows по умолчанию. То же касается микропроцессорной архитектуры Alpha, от поддержки которой Microsoft также отказалась с выходом Windows 2000. Остается только гадать, сколько продержится в Windows подсистема Linux.

    Стоит отметить, что во-первых, архитектура ядра Windows 10, как и прочих версий Windows NT, подразумевает под собой интеграцию других ОС, хотя бы на уровне поддержки запуска там приложений с возможностью реализации соответствующих системных вызовов с правильной семантикой. Для этого был введен вспомогательный уровень подсистем, который в случае с Win32 называется NT layer (ntdll). Прочие библиотеки подсистем также имели доступ к ядру и могли воспроизводить то поведение системных вызовов, которое было нужно конкретной подсистеме (например, fork в POSIX, которая выполняла ветвление процессов).

    Во-вторых, концепции Windows NT и Linux во многом похожи: обе основаны на монолитном ядре, разбитом на подсистемы, обе используют схожие механизмы реализации объектов ядра и межпроцессного взаимодействия, а также обе берут свои истоки у концепции ядра оригинальной UNIX.

    Нам сложно сказать, что именно подвигло Microsoft на интеграцию в Windows 10 второй подсистемы, однако, как и в прочих случаях компания подошла к этому весьма основательно, не опираясь на какие-либо подходы псевдо-эмуляции или виртуальных машин. Все вышеперечисленные подсистемы разрабатывались исключительно как native и имели схожие с Win32 полномочия в реализации функций собственных подсистем.

    И так, по сути. Анонс новой подсистемы состоялся на известной конференции Microsoft под названием Build 2016, на которой анонсируются программные новинки компании. Было заявлено, что в будущей версии Windows 10 пользователи смогут пользоваться услугами командного интерпретатора Linux, известного как bash, что в свою очередь сразу указывает на присутствие в Windows загрузчика исполняемых ELF-файлов, а также среды (подсистемы) для их исполнения и стандартных инструментов типа ssh, grep, sed, и awk. В качестве эталона была выбрана Ubuntu Linux.


    Рис. Слайд презентации «Linux on Windows». На слайде указано, что речь идет именно о полноценной подсистеме Linux, а не о псевдо-эмуляции или виртуальных машинах. Да, Linux становится частью Windows 10 и так же как POSIX и OS/2 будет работать в пользовательском режиме с реализацией семантики системных вызовов на уровне ядра.


    Рис. Собственно архитектура или все то, что мы говорили выше, плюс специальная поддержка семантики системных вызовов Linux на уровне ядра, за что и отвечают два драйвера, указанных в самом начале.


    Рис. Так как Linux становится полноценной подсистемой и частью Windows, ее командный интерпретатор можно вызвать через оболочку Windows Shell или же командный интерпретатор, как и показано на слайде.


    Рис. 3. Демонстрация работы известной UNIX-команды ls для вывода списка содержимого директории.


    Рис. 4. Утилита readelf для анализа заголовка ELF-файла в действии.


    Рис. 5. Компилятор исполняемых файлов gcc.


    Рис. Есть над чем поработать. :)

    Полное видео демонстрации работы подсистемы Linux на Windows можно посмотреть здесь.
    ESET NOD32 124,55
    Компания
    Поделиться публикацией
    Комментарии 174
    • +2
      Интересно, а как там решается вопрос лицензии GNU, которая запрещает линковку с закрытыми продуктами? Microsoft перепишет Linux заново или обходит это как-то по другому?
      • +3
        Схожий вопрос про OSX — APPLE VIOLATING THE GPL WITH BASH ON "OS X"?

        Как и в Win там просто исполняемый файл, а не линковка.
        • 0
          Скорее всего откроют прослойку между libc и системными вызовами винды (LXSS)
          • +2
            Но зачем, Карл? В самом ядре английским по байтам написано: This copyright does not cover user programs that use kernel services by normal system calls — this is merely considered normal use of the kernel, and does not fall under the heading of "derived work".
            Так как у Microsoft'а драйвера есть свои, то им нужно было просто реализовать "kernel services" доступ к которым осуществляется через "normal system calls" — и всё.
          • 0
            Они не линкуют. Они написали транслятор. Запускаться будут уже собранные бинарники из состава Ubuntu (на первых порах).
            • +1
              Да, похоже что настал тот самый момент, встречайте: GNU/Windows.
            • 0
              В GPL есть оговорка, позволяющая программе линковаться с системными библиотеками, даже если они закрыты. Поскольку это теперь часть системы, то нарушения лицензии не происходит.
            • +2
              Круто. А когда это станет доступно?
              • +1
                Вроде как летом со следующим Annual Update для 10. Вроде так услышал на презентации.
                • –15
                  А для семерочки будет доступно?
                  • +31
                    Конечно! Надо только до 10 сначала обновить систему.
                    • 0
                      Ну я вообще-то вполне серьезно спрашивал) Или там такая сильная завязка на десятку, что оно просто не будет работать под ранними версиями Винды?
                      • 0
                        Думаю просто не будут тратить ресурсы, на поддержку старой версии. Да и ядро скорее всего менялось в 8, затем в 8.1, затем в 10. А так как там идет трансляция сисколов, то это еще уменьшает шансы.
                        • 0
                          Я не работаю в Microsoft, но скорее всего дела обстоят так:
                          1. для того чтобы новые функции появились в ОС, ее надо модифицировать. Т.е. выпустить новую версию ОС.
                          2. для того, чтобы эти же функции появились в старой ОС, надо внести в нее те же модификации. т.е. надо обновить ОС.

                          Т.е. обновление с 7 до 10 не шутка. Это вполне серьезный ответ. И заметьте, что пока еще это бесплатно. Как будет потом — не известно.
                          • 0
                            Т.е. 7 + все новые фичи это и есть 10.
                            Если вам нравится 7, но вы хотите получить новые фичи -> обновляйтесь до 10.
                          • +2
                            Думаю что всё проще: там нужны разные модификации в ядре, а учитывая политику Microsoft никто их для Windows 7-8 делать не собирается, вот и всё.
                            К примеру довольно большая часть вещей делается в Linux через фьютексы. В Windows8 они есть, а в Windows7 — их нет. Можно ли эту функцию "вынуть" из Windows8 и перенести в Windows7? Да, разумеется — но кто будет это делать?
                        • 0
                          Для семерочки будет доступно еще одно обновление с окошком «Get Windows 10».
                    • –2
                      При установке git под винду bash вроде давным давно ставится
                      • +13
                        Одно дело bash.exe портированный под windows, а другое дело оригинальный исполняемый файл с ELF заголовками.
                        • +2
                          В чём принципиальная разница для пользователя?
                          • +5
                            Можно ставить прямо из убунторепозиториев через apt-get.
                      • 0
                        Первое апреля вроде как завтра?
                        • 0
                          Вариация на тему известного анекдота…
                          "В своем резюме вы написали, что 10 лет проработали в отделе юмора Microsoft. Мы проверили — такого отдела не существует..."
                        • +2
                          Т.е. это не аналог coLinux и полноценного ядра тут нету? Следовательно, например, примонтировать ext4 не получится?
                          Да и, к.м.к., будут проблемы с совместимостью, т.к. не будут же они все системные вызовы реализовывать.
                          • +5
                            "So maybe something like a Linux emulator?" Now you're getting warmer! A team of sharp developers at Microsoft has been hard at work adapting some Microsoft research technology to basically perform real time translation of Linux syscalls into Windows OS syscalls.
                            Тынц
                            • +4
                              line? line is not emulator :D
                              Ничто не ново под луной в общем.
                              • +1
                                Ну ради вайна в ядро не тащили сисколы, только китайцы как-то выпендривались.
                            • 0
                              А что такого сложного в этих "системных вызовах"? Обычные функции, не?
                              • 0
                                Практически все функции с побочным эффектом, а внутри очень сложный конечный автомат.
                              • +1
                                Сдается мне, написать драйвер ext4 под NT проще, чем драйвер NTFS под Linux.
                              • +1
                                Интересно, а какие могут быть сценарии использования этого?
                                • +21
                                  image
                                  • 0
                                    Для заточенных под Linux приложений, например git.
                                    • 0
                                      Или Rails
                                      • 0
                                        git и так давно в win прекрасно поживает :)
                                        Найти что-то очень заточенное — реально сложно. Скорее всего будет удобно использовать разработчикам, которым нужно 2 среды.
                                      • 0
                                        TensorFlow/Theano/что там еще используют для машинного обучения.
                                        • 0
                                          Для меня это будет мега удобно. Я привык к bash. Но ставить дектопный linux я не хочу. Буду нативно запускать python, docker, вместо костылей типа cygwin
                                          • 0
                                            Собирать под виндой расширения Python, требующие всякие libastral-dev без возни с MinGW, например.
                                            • 0
                                              Может быть Microsoft чувствует, что теряет разработчиков прикладного софта? Многие переходят на мак или линукс. И таким образом они надеются сделать windows более привлекательным.
                                              • 0
                                                Скорее последнее. Собирать ffmpeg на ndk через Cygwin не слишком удобно.
                                            • –9
                                              А символические ссылки они сделали? без них никакого толку.
                                              • +5
                                                Симлинки там и так давно есть
                                                • +8
                                                  В смысле "сделали"? В ntfs cимлинки сто лет в обед.
                                                  • –9
                                                    Когда я последний раз пользовался cygwin там были текстовые файлы вместо настоящих симлинков. Вот я и спросил все ли хорошо сейчас с этим.
                                                    • +9
                                                      mklink, зачем там cygwin?
                                                      • +1
                                                        Я о том что если там всегда была хорошая совместимая поддержка символических ссылок, зачем тогда разработчикам cygwin пришлось изобретать велосипед и делать свою реализацию?
                                                        • 0
                                                          В NT-based системах — да, прекрасная поддержка. А в Win-9x/Me — только FAT, которая симлинков не имеет. Так что NTFS начала широко распространяться только после 2000 года (да и то сколько лет понадобилось, чтобы сначала 2000, а потом XP вытеснили 98SE) — когда cygwin уже давным-давно существовал. И до сих пор на флешках FAT используется.
                                                          • +2
                                                            Прекрасная поддержка, да? Так сделать можно?
                                                            /tmp$ ls -al src
                                                            ls: cannot access src: No such file or directory
                                                            /tmp$ ls -al target
                                                            ls: cannot access target: No such file or directory
                                                            /tmp$ ln -s target src
                                                            /tmp$ echo test > target
                                                            /tmp$ cat src
                                                            test
                                                            /tmp$ rm target
                                                            /tmp$ mkdir target
                                                            /tmp$ cd src
                                                            /tmp/src$
                                                            Как будет можно — заходите. CygWin поддерживает виндовые симлинки — но не создаёт. Вот именно поэтому: их нормально создать под Windows нельзя, собственно. А FAT на флешках — это фигня, это не самое страшное…
                                                            • –2
                                                              Это вообще как — создавать линк между несуществующими сущностями?
                                                              • 0
                                                                А вот так: A symbolic link provides no such assurance; in fact, the file named by the path1 argument need not exist when the link is created. A symbolic link can cross file system boundaries.
                                                                Вполне себе явное требование, прописанное в стандарте. Но проблема не в этом. Симлинк на "несуществующую сущность" в Windows создать можно — но нужно заранее знать: будет эта сущность файлом или подкаталогом!
                                                                • –1
                                                                  Это ограничение скорее всего вытекает из глобальной системы объектов.
                                                                  • +1
                                                                    Нет, это ограничение проистекает из того, что когда симлинки добавлялись в Windows, то считалось что "мир POSIX" побеждён раз и навсегда и на совместимость с ним "можно забить".
                                                                    • –1
                                                                      Это слишком частное ограничение для таких глобальных решений.
                                                                      • –1
                                                                        Дополню — я имею в виду, что symlink в NT — вещь более старая, чем те, о которых мы говорим. И файловый symlink ложится на систему объектов как частный случай (наверно).
                                                                        • 0
                                                                          Вы не путаете Reparse Pointы (доступные с незапамятных времён) и символьные ссылки (появившиеся в 2006м)?
                                                                          • 0
                                                                            А можно для чайников, в чем разница?
                                                                            • +1
                                                                              Отличие в том на каком уровне всё интерпретируется.
                                                                              Reparse Point — это ошмёток от идеи создания "модульной фаловой системы": теоретически можно заставить обрабатывать каталог в файловой системе как угодно с помощью инсталляции драйвера, практически — есть только один драйвер, установленный по умолчанию, который используется как замена символьным ссылкам. Как несложно догадаться из описания — всё это происходит на уровне NTFS, обрабытывается локально и до уровня CIFS не доходит (то есть если на сервере есть Reparse Pointы, то клиенты про это никак узнать не могут). Однако в силу построения всей конструкции на файлы Reparse Point указывать не могут (драйвер контролирует что "внутри" Reparse Point'а) и на другие машины в сети — тоже (драйвер находится "ниже" уровня CIFS).
                                                                              Symbolic Links — это специальные объекты файловой системы, никакой магии, просто строчка "сюда не ходи, ходи туда", обрабатываются в ядре — но уже на клиенте и, соответственно, могут быть на оном клиенте увидены, а также могут указывать на другие машины в сети. В связи с такой нелокальностью для их создания нужны специальные права, по умолчанию доступные только админу (что есть IMNSO, бред). Могут также указывать на файлы, не только на каталоги — но "чтоб жизнь мёдом не казалась" это нужно знать в момент создания символической ссылки (что есть IMNSHO ещё больший бред: если вы уже добавляете сущность из POSIX, то зачем ломать всем известную семантику?).
                                                                              Как-то примерно так.
                                                                              • –1
                                                                                но «чтоб жизнь мёдом не казалась» это нужно знать в момент создания символической ссылки (что есть IMNSHO ещё больший бред: если вы уже добавляете сущность из POSIX, то зачем ломать всем известную семантику?).

                                                                                Давайте попытаемся объективно прикинуть, почему это так. Для работы с файлами и каталогами будут использоваться разные API, значит для работы с сущностью нам надо знать, что это — директория или файл. Возможно, это связано и с разными методами синхронизации данных (размеры файлов и пр) в условиях сети и возможных отключений.
                                                                                • –1
                                                                                  Это, кстати, по поводу вашей проблемы с пакетным менеджером — вот создали мы симлинк на \abc\def, как ОС должна обрабатывать def — как файл? Или как директорию? А если на том конце def'а нет и мы это проверить не можем?
                                                                                  • 0
                                                                                    Симлинки сами по себе не обрабатываются. Никак. Вообще. Это просто строка.

                                                                                    Будет обращение — тогда и разберётесь.
                                                                                    • 0
                                                                                      Тяжело, да. Попробую еще раз:
                                                                                      При обращении. Да.
                                                                                      симлинк на \abc\def, как ОС должна обрабатывать def — как файл? Или как директорию? А если на том конце def'а нет и мы это проверить не можем?
                                                                                      • 0
                                                                                        Любой симлинк должен иметь возможность указывать в «пустоту» (на удалённый объект) и ОС должна корректно это обрабатывать.

                                                                                        А если на том конце def'а нет и мы это проверить не можем?
                                                                                        Вот с этого, пожалуй, стоит и начать.

                                                                                        Какую-такую операцию вы пытаетесь осуществить, для которой важно знать — должен быть объект «с того конца» файлом или каталогом, но при этом не важно — существует он или нет?
                                                                                  • –1
                                                                                    Мне совершенно наплевать на ваши «объектные менеджеры», «синхронизацию данных» и прочее. Симлинк — это просто синоним другого объекта, ни больше, ни меньше. Хотите заводить свои, особенные, структуры данных — заводите. Но зачем ломать известную сементику-то?

                                                                                    P.S. Напомнить за что в своё время Sun засудил Microsoft, нет? Вот и здесь — та же история. Только в это раз она «стреляет» в обратную сторону: пока в Windows не будет, в частности, нормальных симлинков — говорить о какой-либо совместимости с Linux нельзя. И есть у меня подозрением что подобным «гитик» там… есть. Для «вау какая фенечка» на выставке — годится, для работы — нет.
                                                                                    • 0
                                                                                      Мне совершенно наплевать на ваши «объектные менеджеры», «синхронизацию данных» и прочее

                                                                                      А мне — плевать на ваше видение «правильного» симлинка. Это просто предположение о том, почему оно так устроено.

                                                                                      Но зачем ломать известную сементику-то?

                                                                                      С какого-то перепугу вы решили, что все кругом, в том числе не в Linux системах должны реализовывать некоторую сущность 1 в 1 как в Linux.
                                                                              • –2
                                                                                Нет. Вы говорите о линках (каких бы то ни было) в файловой системе, а я о симлинках Object Manager'а. Ведь по идее файловая система — это объекты в пространстве OM, нет? И симлинки там были (например, DOSовский симлинк 'C:', который указывает на '\Devices\HardDiskVolume0' с очень старых времен. С NT4 как минимум.
                                                                                • –1
                                                                                  Файловая система — это файловая система. Существование Object Manager'а — это деталь реализации которая меня волновать не должна. Также как и запрет на использование всяких букв (ну там ":", "\") в именах файлов. Какой к бесу Object Manager если мы обсуждаем запуск Linux программ???

                                                                                  Впрочем с ограничениями на именование ядро NT вроде всегда сравлялось, это ограничение чисто Win32 API. А вот симлинки… интересно насколько глубоко у них это ограничение сидит…
                                                                                  • 0
                                                                                    Какой к бесу Object Manager если мы обсуждаем запуск Linux программ???

                                                                                    Обычный. Это предположение о том, почему есть ограничение. При чем тут Linux программы, если мы обсуждаем поведение симлинка в Windows? Это ограничение — указание типа «на том конце» — оно существует независимо от того, будем мы Linux программы запускать или нет.

                                                                                    это деталь реализации которая меня волновать не должна

                                                                                    Я и не говорю, будто должна. Я говорю, что там тоже есть симлинки, 100 лет как.

                                                                                    Файловая система — это файловая система.

                                                                                    Это замечательное наблюдение. Особенно если вспомнить про proc, например, да? Или про /dev/hd0?
                                                                                    Ах да, «все суть файлы». Ну, тут все суть объекты.
                                                                  • +1
                                                                    и поддерживает, и создаёт
                                                                    см. https://cygwin.com/cygwin-ug-net/using-cygwinenv.html
                                                                    /winsymlinks
                                                                    

                                                                    ещё про поддержку символьных ссылок в Cygwin — https://cygwin.com/cygwin-ug-net/using.html#pathnames-symlinks

                                                                    З.Ы. следите за обновлениями...
                                                                    • 0
                                                                      Вы пробовали пример выше исполнить с этой опцией? Попробуйте — а потом расскажите об ощущениях. Только не забудьте про разницу между winsymlinks:native и winsymlinks:nativestrict — а то полного "экспиенса" не получите...
                                                                      • +1
                                                                        вчитался в пример
                                                                        понял о чём Вы
                                                                        только не понял — а нахуа такое на практике? ))))) или Вы про полное соответствие стандарту?
                                                                        • +2
                                                                          Совсем такое — не очень нужно. А вот создавать симлинки "ведущие в никуда" приходится постоянно.
                                                                          Очень просто: ставите вы два пакета — и в одном из них идут симлинки на файлы из второго. Причём этот пакет с симлинками пресловутый apt-get легко может поставить до второго — тогда симлинки уже будут, а файлов или каталого, на которые они указывают — ещё не будет. Это человек может догадаться что симлинк живущий в /usr/bin, скорее всего, должен указывать на файл, а симлинк в /usr/lib/perl5 — будет указывать на файл, если он оканчивается на .pm и на каталог если расширения нет. А пакетному менеджеру что делать? Весь дизайн переделывать только из-за того, что кто-то когда-то в Microsoft решил что-то там "прооптимизировать"?
                                                                          P.S. Бонусные очки — за два пакета в каждом из которых есть симлинки на файлы из второго :-)
                                                                          • 0
                                                                            А зачем тогда делали систему зависимостей? Если пакет содержит симлинки на файлы другого пакета, то он от него зависит и это обязанность разработчика этого пакета задекларировать эту зависимость. Тогда и гадать не придется. А иначе непонятно, что делать в случае, если тот второй пакет так и не поставиться.
                                                                            В случае циклических зависимостей разбиваем каждый пакет на 2 — на зависимую часть от другого и на независимую. Сначала ставим независимые части, потом зависимые.
                                                                            • 0
                                                                              Если пакет содержит симлинки на файлы другого пакета, то он от него зависит

                                                                              Совершенно необязательно. Зависимость может быть и опциональной. Скажем есть у вас символьная ссылка с libsomething.so на libsomething.so.... Установите пакет — будет вам линковка с разделяемой библиотекой, не установите — не будет.
                                                                              А иначе непонятно, что делать в случае, если тот второй пакет так и не поставиться.
                                                                              А ничего не делать: в стандарте всё прописано. stat вернёт ENOENT, lstat вернёт информацию про саму ссылку (если мне это для чего-то нужно).
                                                                              Если же между пакетами циклическая зависимость — ну тогда пакетный менеджер должен разрулить всё и обеспечить транзакционность.
                                                                              В случае циклических зависимостей разбиваем каждый пакет на 2 — на зависимую часть от другого и на независимую. Сначала ставим независимые части, потом зависимые.
                                                                              Ну то есть как я предполагал: переделать дизайн всей системы. Спасибо, но… спасибо не надо. Мне лень этим заниматься — это у Microsoft'а должна болеть голова о том, как обеспечить поддержку стандарта, а не у меня — о том как поддержать это глючное поделие.
                                                                              Если Microsoft не решит эту (и кучу других подобных) проблем, то я боюсь разработчики будут относиться к этим багрепортам так же, как относятся к багрепортам с систем со всякими nVidia'вскими драйверами: просить проверить на нормальной системе — а потом уже жаловаться.
                                                                              Собственно так же, как они сейчас реагируют на жалобы на то, что что-то не работает под CygWin'ом или MinGW.
                                                                              • 0
                                                                                Мне все же кажется, что стандарт описывает нехитрую ситуация — что делать, если структура попортилась и символьная ссылка стала указывать в никуда. Завязываться на это — не очень хорошая идея, я бы сказал. Даже если она стабильна и десятки лет живет, иначе, как костыль это не воспринимается. Разве в этом стандарте сказано, что можно/нельзя создавать заведомо некорректные ссылки?


                                                                                Опциональные зависимости, завязанные на таких особенностях, это, конечно, остроумно, но вряд ли мудро. Что ни говори, а зависимость — это зависимость. И управляться она должна пакетным менеджером. Нужна зависимость одной библиотеки от другой библиотеки — ставим пакет, зависящий от обеих библиотек. Это вроде бы и есть Unix-way, разве нет?
                                                                                • 0
                                                                                  Разве в этом стандарте сказано, что можно/нельзя создавать заведомо некорректные ссылки?
                                                                                  Именно так и сказано. Английским по байтам: the file named by the path1 argument need not exist when the link is created.
                                                                                  Это вроде бы и есть Unix-way, разве нет?
                                                                                  Давайте не рассусоливать про Unix-way, а? Скажу только что пакетные менеджеры — это довольно-таки позднее изобретение в мире Unix и завязываться на их существование — не стоит.
                                                                                  • 0
                                                                                    если структура попортилась и символьная ссылка стала указывать в никуда

                                                                                    Не просто попортилась. Скажем, сетевой лаг, отключение.
                                                                                    • 0
                                                                                      Скажем, сетевой лаг, отключение.
                                                                                      И как, чёрт побери, знание того куда указывает симлинк (на файл или на каталог) мне поможет если сеть вдруг отключилась?
                                                                                      • 0
                                                                                        Возможно, кеширование метаданных, не знаю.
                                                                    • 0
                                                                      А что, на линуксовых машинах симлинки на FAT-флешках работают?
                                                                      • 0
                                                                        Нет. Хотите разрабатывать на флешке — отформатируйте в ext3.
                                                                        Но так как жалоб на это немного, то следует признать что эра флешек, в общем, прошла: для переноса информации их ещё используют иногда, но программы туда не ставят и разработку не ведут.
                                                                        • 0
                                                                          Вообще, я несколько прозрачно намекал на то, что аргумент "потому что на флешках используется FAT" в том, почему cygwin не использует родные средства винды для символических ссылок, выглядит натянутым. Есть родные средства — используй их по умолчанию, а не пытайся сделать костыльно, но чтобы у всех работало. Путь костыли включают те, кому надо, чтобы и на FAT работало.
                                                                          • 0
                                                                            С этим я согласен. Если бы родные средства были — вопросов бы не было. Но их нет. Вернее они есть — но не такие, какие нужны.
                                                                    • 0
                                                                      Потому что в качестве ФС может быть FAT. Если установить переменную $CYGWIN в winsymlinks:native, то будут создаваться windows-симлинки
                                                                      • 0
                                                                        К сожалению главная проблема — даже не в FAT'е. На FAT'е хардлинки, к примеру, тоже не работают — и для этого у CygWin'а нет никаких опций. И даже winsymlinks:native не всегда будет создавать нативные симлинки. Я выше говорил почему. Потому что симлинки в Windows ущербные, увы.
                                                                        • 0
                                                                          Это не ущербность. На POSIX свет клином не сошелся, чтобы несоответствие ему объявлять ущербностью.
                                                                          • 0
                                                                            В статье про интеграцию подсистемы Linux — это несомненная ущербность. В тех случаях когда POSIX делает одно, а Linux другое — ещё можно о чём-то говорить, если же они «сходятся во мнении», то вопрос исчерпан: либо ты делаешь по стандарту — либо «это глючное поделие мне и даром не нужно».

                                                                            Пока такое ощущение, что вся это подсистема выглядит как dog and pony show, уж извините.
                                                                            • 0
                                                                              А вы знаете, как оно будет работать в POSIX под Windows в рамках данного проекта? Я-то думал, мы существующее положение дел в NT/Win32 обсуждаем. Может, добавят какой костыль, может снимут это ограничение — чего шкуру неубитого медведя-то делить?
                                                                  • 0
                                                                • 0
                                                                  Так они уже в винде давно есть, MKLINK
                                                                  • 0
                                                                    Сделали ещё в Vista/2008.
                                                                    • +4
                                                                      Я их ещё с четвёртой NT помню.
                                                                      • +3
                                                                        В четвёртой NT были только хардлинки, симлинки появились начиная с Windows 2000 (NTFS 3.0)
                                                                        • 0
                                                                          В NT4.0 (NTFS4) были реализованы только Hard Links ( «жёсткие» ссылки, как в *nix ).
                                                                          В 2000-ом (NTFS5) добавили поддержку Junction Points (аналог символических ссылок, но только для папок).
                                                                          А вот уже в Vista (NTFS5) появились полноценные Symbolic Links.
                                                                        • 0
                                                                          это фича NTFS ещё с NTFS 3.0 (на каталоги), т.е. с Windows 2000
                                                                          с 3.1 — на любые объекты, т.е. с XP
                                                                      • +9
                                                                        Хм… А у файлов теперь будет executable bit или будет bash.exe? =)
                                                                        • +3
                                                                          Вы не поверите, но в Windows уже есть executable bit — причём давно. Особенно смешно наблюдать лицо человека пытающегося запустить файл на котором такого бита нет. Копируешь — запускается. Оригинал — ни в какую.
                                                                          • +1
                                                                            Ссылку на доки можно?
                                                                            • 0
                                                                              Какие нафиг "ссылки на доки"? Правой кнопкой щёлкните по любому файлу и посмотрите что у вас окошке с правами доступа написано. Или вы про Win 32 API? Тогда — FILE_EXECUTE, 6й бит, описан в WinNT.h ...
                                                                          • 0
                                                                            Он там давно есть. Смотрите в глубине вкладки безопасности атрибут «траверс папок / выполнение файлов». Если снять галочку, то ни .exe ни .bat файлы запускаться не будут. Файлов без расширений это скорее всего тоже касается. В прочем сомнительно, что NTFS сможет не лагать храня индивидуальные правила безопасности для каждого файла.
                                                                          • –18
                                                                            С 1 апреля
                                                                            • –17
                                                                              Недавно была новость про убийство одного из авторов Ubuntu кажется. Нет ли тут связи?
                                                                              • +2
                                                                                Debian. Нет.
                                                                                • +3
                                                                                  … и не выйграл, а проиграл.
                                                                                  • +8
                                                                                    Просто интересно, так как часто вижу. Я без претензий. Вы реально произносите слово как выЙграл?
                                                                                    • +1
                                                                                      Вы так говорите, будто произносите выИграл ;)
                                                                                      • +6
                                                                                        А как надо?
                                                                                        • +1
                                                                                          Ну, везде где я жил, люди как правило таки произносят через «и» краткое, ровно также как и молоко произносят через «а».

                                                                                          Так или иначе — сарказм был на тему того, что вопрос не очень корректный — не все читается как пишется.
                                                                                          • +2
                                                                                            У нас все говорят «выиграл». Хм, даже и не думал что где-то по другому.
                                                                                          • 0
                                                                                            Забавно, что все кого я знаю говорят выИграл. Но правильно — выЙграл, хотя первый вариант тоже допустим. Я сам только сейчас об этом узнал ))
                                                                                            http://new.gramota.ru/spravka/buro/search-answer?s=283580
                                                                                            • 0
                                                                                              Но правильно — выЙграл,

                                                                                              Такого по ссылке не указано. Сказано, что это произношение — предпочтительное.
                                                                                              • 0
                                                                                                Ну я лично исхожу что предпочтительно — это более правильно. А так то да, можно и в[ы]грать
                                                                                                • +1
                                                                                                  Не путайте написание и произношение.
                                                                                                  Пишем "выиграл", читаем (предпочтительное произношение) "выйграл".
                                                                                                  • 0
                                                                                                    Я говорил исключительно только про произношение, поэтому даже теоретически не мог ничего попутать
                                                                                              • +1
                                                                                                И с ударением на "й"?..
                                                                                                43 года живу на свете, вживую ни разу не слышал "выйграл", только в комментариях читаю.
                                                                                                • 0
                                                                                                  С ударением на первый слог.
                                                                                                  • 0
                                                                                                    Не разу такого не слышал.
                                                                                                    • +3
                                                                                                      Ну, я вот «Не разу» тоже ни разу не видел. Все случается когда-нибудь в первый раз. :)
                                                                                          • +1
                                                                                            Ого, даже не подозревал что тут такое обсуждение :) Ну лень было спеллчекер включать, простите. Да, если интересно, «выиграл» произношу как «выйграл».
                                                                                            • +1
                                                                                              Спасибо. Я просто эту ошибку постоянно вижу и мне жутко режет глаз, так как я и пишу и произношу выИграл. И все вокруг меня. Возможно региональные особенности. Я из Краснодара.
                                                                                              • 0
                                                                                                Понятно, я с северо-запада и вообще не в РФ сейчас :)
                                                                                                • 0
                                                                                                  Я с северо-запада и очень редко когда слышу выйграл.
                                                                                          • +2
                                                                                            Пройграл
                                                                                      • –10
                                                                                        Кто-нибудь объяснит, с чего тут кипятком писать? Вау, теперь grep на виндовсе можно использовать.
                                                                                      • +2
                                                                                        Возврат к практике трёх "Е"?
                                                                                        • +1
                                                                                          мне кажется, даже майкрософту не одолеть весь этот зоопарк систем
                                                                                        • 0
                                                                                          Про 1 апреля уже было?
                                                                                          • +1
                                                                                            Не было
                                                                                            Только от вас
                                                                                          • +4
                                                                                            уже есть где-нибудь комментарий Линуса по этому поводу?)
                                                                                            • +1
                                                                                              И каково теперь будет называть OS GNU/Linux просто линуксом в то время как сам линукс там физически отсутствует. Звучит дико уже в этой статье. Столман, привет.
                                                                                              • 0
                                                                                                GNU/LinuxOnWindows
                                                                                                • 0
                                                                                                  К слову, действительно, в топике Linuxом и не пахнет — в чистом виде GNU
                                                                                              • +11
                                                                                                Скоро на stackoverflow: "Как пропатчить KDE под Win10?"
                                                                                              • +6
                                                                                                Почему упорно называется "Windows subsystem for Linux", если это Linux subsystem for Windows?
                                                                                                lxss.sys — это не LinuX SubSystem ли?
                                                                                                • +1
                                                                                                  Наверное по той же логике, почему в директории WOW64 лежат 32-битные файлы.
                                                                                                  • 0
                                                                                                    Ну это-то как раз имеет смысл — system32 зарезервированное имя. А xyz subsystem for Windows, где xyz скажем OS/2 или что-то там еще, использовалось с самого основания системы. Тот же Win32 ss.
                                                                                                    • 0
                                                                                                      Никакого смысла в этом нет. Это полный бред.

                                                                                                      • Во-первых, доступ к системным директориям должен происходить не по абсолютному пути, а с помощью системного вызова.
                                                                                                      • Во-вторых, старые 32-битные приложения которые ничего не знают о 64 битах полезут в system32 и внезапно обнаружат там 64 битные файлы.
                                                                                                      • В-третьих, был шанс нормально разграничить старое и новое, когда 64 бита только появились на винде, но они это не сделали. Теперешняя каша никуда уже не денется.


                                                                                                      Неужели было сложно сделать как в *nix? /usr/lib32 (system32) для 32-битных, /usr/lib64 (system64) для 64.
                                                                                                      • 0
                                                                                                        Во-вторых, старые 32-битные приложения которые ничего не знают о 64 битах полезут в system32 и внезапно обнаружат там 64 битные файлы.
                                                                                                        Не обнаружат.

                                                                                                        Во-первых, доступ к системным директориям должен происходить не по абсолютному пути, а с помощью системного вызова.
                                                                                                        В идеальном мире — да. Но Windows живёт не в идеальном мире, а в реальном, с реальными программами. Отсюда и все эти редиректоры и LLP64 режим (aka IL32P64 — когда даже long'и в 64 битном режиме 32 битные) и прочее.

                                                                                                        Неужели было сложно сделать как в *nix? /usr/lib32 (system32) для 32-битных, /usr/lib64 (system64) для 64.
                                                                                                        А как потом заставить пользователей это покупать? Если у них программы не работают и/или падают после перекомпиляции? В мире *nix у людей не было выбора: на серверах им нужно было как-то работать с системами >4GiB, так что пришлось «жрать кактус», а Windows только-только перебралась на 64 бита! Чуть не половина пользователей до сих пор используют 32-битные системы!
                                                                                                • +14
                                                                                                  Историческое событие — вот так процент Ubuntu на десктопах стал больше чем у Windows! ;)
                                                                                                  • 0
                                                                                                    Не станет, т.к. Windows 10+Ubuntu долгое время будет меньше, чем Windows 10+8+7+Vista+XP+сколько-там старых серверных...)
                                                                                                  • +12
                                                                                                    Сначала над вами смеются, потом добавляют в качестве подсистемы,… Остается только гадать, сколько продержится Windows.
                                                                                                    • +1
                                                                                                      Так это может обратный эффект сделать — отсутствие необходимости ставить LINUX т.к. и в Windows все работает.
                                                                                                    • 0
                                                                                                      Ну почему именно ubuntu? мне не нужно большинство из десятков тысяч бинарных пакетов в архивах Ubuntu. Будет ли возможность организовать себе archlinux, gentoo, nixos и т.п?
                                                                                                      Лучше б организовали windows on windows. Такой чтобы можно было нативно запускать изолированные windows программы.
                                                                                                      • +3
                                                                                                        По некоторым оценкам Ubuntu самый популярный дистрибутив в мире и по подавляющем большинству входит в тройку лидеров (все "родственники" — Debian, Ubuntu, Mint), так что выбор разумный.
                                                                                                        И, насколько я понимаю, Ubuntu в Windows является лишь предустановленным юзерспейсом из Ubuntu над подсистемой LinuxOnWindows, совместимой по API с Linux kernel API и работающей поверх ядра Windows NT (так же как поверх него работает подсистема WinAPI и работали (?) подсистемы Posix и OS/2 ). И теоретически никто не мешает вам поставить свой юзерспейс из любого другого дистрибутива, только патчи ядра не сможете применять из него, довольствуясь примененными из Ubuntu. Ну и, возможно, реакции MS на баги LoW под другими юзерспейсами не будет вообще и уж точно приоритет будет меньше.
                                                                                                        Windows Server 2016 будет поддерживать три вида контейнеров: Windows Server Containers (шаринг ядра для WinAPI контейнеров), Hyper-V Containers (каждый со своим ядром) и Docker (тут, судя по всему, шаринг ядра для WinAPI и Linux kernel API контейнеров) — подробнее https://msdn.microsoft.com/en-us/virtualization/windowscontainers/containers_welcome. Что из этого будет (и будет ли) в десктопной винде из коробки и что можно будет прикрутить ручками (скорее всего с нарушением лицензии), если не будет, пока не ясно.
                                                                                                        • 0
                                                                                                          В Windows 10, так то Device Guard есть, но требует поддержку SLAT и VT-d от оборудования. Позволяет запускать отдельные приложения в песочнице.
                                                                                                          • 0
                                                                                                            никак не пойму почему везде при поиске пишут «Введение в Device Guard», «Обзор Device Guard», но нигде нет как его запустить?
                                                                                                            Скинте пример как с его помощью запустить например notepad.exe?