Windows 7 Ultimate по сравнению с Cygwin: соответствие POSIX и целесообразно ли устанавливать систему GNU непосредственно на Win 7 Ultimate без Cygwin

989
John Sonderson

Каковы преимущества или недостатки использования утилит GNU / Linux в Windows 7 через Cygwin по сравнению с использованием поддержки Windows 7 Ultimate SUA (подсистема для приложений на основе UNIX) (ранее известной как Interix). По-видимому, реализация SUA в Windows 7 полностью совместима с POSIX.

Что я хотел бы знать, это:

  1. Насколько хорошо POSIX-совместимая среда и утилиты Unix предоставляются с Windows 7 Ultimate?

  2. Могу ли я запускать исполняемые файлы Unix / Linux (например, файлы ELF) в Windows 7 Ultimate, не перекомпилируя их для Windows 7?

  3. Я читал, что некоторые системы, такие как Debian, были портированы на такую ​​Windows 7 Ultimate SUA. Где я могу скачать такие дистрибутивы.

На моем ноутбуке в настоящее время я запускаю Windows внутри VirtualBox, часто через файлы конфигурации Vagrant, учитывая, что мне не нужно использовать свой ноутбук в качестве сервера, и учитывая, что некоторые приложения работают только на Windows, и загрузка Linux таким образом, кажется, это более удобно, чем установка Linux на отдельный раздел и двойная загрузка в эти дни. Однако, если бы я мог даже запустить весь дистрибутив Linux должным образом с собственной поддержкой ядра Windows, а не через поддержку пользовательского пространства, предоставляемую Cygwin, это было бы предпочтительнее (не нужно даже ждать загрузки Linux внутри VirtualBox ).

Благодарю.

1
Это не "основной" вопрос, но в нем не хватает некоторых исследований ... Вы можете увидеть, какие утилиты вы получите, установив Cygwin, по их веб-странице. Но Cygwin не является системой в определении ОС, это скорее среда разработки. Кроме этого, какая система у вас? Вы упоминаете, что у вас нет Windows 7, поэтому я предполагаю, что у вас есть система Linux, иначе это может привести к проблеме XY. Doktoro Reichard 10 лет назад 1
Вопрос SO http://stackoverflow.com/q/4746043/318716 может быть полезен. Joseph Quinsey 10 лет назад 1
Да, это полезно. В частности, если я правильно понимаю, оригинальный постер смог запустить оболочку без необходимости перекомпиляции, но сказал, что в его системе были проблемы с управлением памятью. John Sonderson 10 лет назад 0

1 ответ на вопрос

1
Doktoro Reichard

I still find your question confusing, but from the way the question is asked I can see you are trying to transition from a Linux system to Windows and want to retain Linux/UNIX-like functionality.

Well, here is what Cygwin is:

  • A collection of tools which provide a Linux look and feel environment for Windows.
  • A DLL (cygwin1.dll) which acts as a Linux API layer providing substantial Linux API functionality.

... and what is is not:

  • A way to run native Linux apps on Windows. You must rebuild your application from source if you want it to run on Windows.
  • A way to magically make native Windows apps aware of UNIX® functionality like signals, ptys, etc. Again, you need to build your apps from source if you want to take advantage of Cygwin functionality.

Advantages and disadvantages of using Cygwin are all dependent on what product or usage you are trying to compare to. From the description, as Cygwin is in essence a toolset, you gain the advantages of having the tools inbedded within Cygwin. The main disadvantage, if you could call it like that, is that the disk gets slightly more full, since you've installed a toolset.

Although I never used extensively Cygwin, as it doesn't uninstall anything, cmd and bash contained in Cygwin should operate separately. As such, you can use bash alongside cmd, although you should stick to a single command line.

It is near impossible (unless considering virtualization) to install an OS over another without rendering the first useless. As such, no GNU systems, in the sense of Operating Systems, have been made that work alongside another OS. This being said, Cygwin comes close, as it proves you in an Windows environment, most tools Unix has to offer.

(On a side note, I still think your question is confusing, particularly the POSIX part. Windows (not NTFS) and some versions of Linux aren't full POSIX compatible, and as you didn't refer what particular functions of POSIX you wanted to use, I'm stumped in this regard)

Благодарим Вас за разъяснения. Очевидно, что основное отличие состоит в том, что программное обеспечение, которое работает в Cygwin, должно быть перекомпилировано и построено на основе библиотек Cygwin, чтобы работать в Cygwin, тогда как в подсистеме Windows 7 Ultimate для приложений на базе Unix такие приложения запускаются из коробки без необходимости перекомпилируйте их. Насколько я понимаю, например, я могу просто смонтировать раздел Unix и запускать приложения из Windows. John Sonderson 10 лет назад 0
Когда я говорю о совместимости с POSIX, я имею в виду доступность функций API POSIX для языка программирования C и наличие реализаций таких инструментов POSIX, как vi, sed, awk и т. Д. И т. Д. Очевидно, что Windows 7 Ultimate совместима с POSIX (хотя некоторые люди могут не знать об этом), в противном случае, о чем эта статья в Википедии? http://en.wikipedia.org/wiki/Interix John Sonderson 10 лет назад 0
Если вы имеете в виду [это] (http://technet.microsoft.com/en-us/library/cc771470.aspx), то вы также столкнетесь с той же проблемой. Doktoro Reichard 10 лет назад 1
Извините, если я не следую, но на какую именно проблему вы ссылаетесь? Благодарю. John Sonderson 10 лет назад 0
Вам нужно (очевидно) перекомпилировать ваш код, чтобы он работал в Windows. Можете ли вы попробовать отредактировать свой вопрос? Мне кажется, что вы пытаетесь решить проблему, проверяя, работают ли ваши решения (то есть [проблема XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) ). Если вы можете указать свою конкретную проблему, то более квалифицированные люди могут помочь вам решить эту проблему. Лично у меня нет большого опыта в UNIX, так что опыт других людей пригодится. Doktoro Reichard 10 лет назад 1
Хорошо, я перефразировал мой вопрос. Надеюсь, теперь это стало понятнее. John Sonderson 10 лет назад 0
Теперь я понимаю ваш ответ. В обоих случаях, независимо от того, используется ли Cygwin или используется поддержка Windows 7 Ultimate в SUA, в любом случае для запуска приложения Unix / Linux, которого нет в системе, его необходимо скомпилировать для этой системы ( из исходного кода, если двоичный файл, разработанный для этой конкретной системы, не будет доступен по сети, как в случае с Cygwin через его программу установки). John Sonderson 10 лет назад 0
В любом случае, даже несмотря на то, что SUA совместима с исходным кодом с POSIX (но не двоично совместима с приложениями Unix (которые были скомпилированы для работы в системах Unix)), я считаю, что функция поддержки POSIX действительно может оказаться весьма полезной. John Sonderson 10 лет назад 0
Вот ссылка на проект переноса Debian в Windows. К сожалению, в настоящее время он не активен: http://www.debian-interix.net/ John Sonderson 10 лет назад 0