Утраченный потенциал подсистемы Windows для Linux (WSL)



    Если вы несколько лет вообще не следили за Windows 10 и не знаете, что происходит, то пропустили одну вещь — очень горячей темой для разработчиков стала подсистема Windows для Linux, она же WSL. Среди программистов очень часто её обсуждают. Действительно, потрясающе интересная штука.

    Наконец-то у нас появилась возможность запустить свой инструментарий Linux на Windows наравне с виндовыми программами. А это значит, что больше не нужно изучать странный PowerShell или пользоваться архаичной консолью CMD.EXE.

    К сожалению, не всё так радужно. WSL по-прежнему является неким инородным элементом, который отделён от родной среды Windows. В частности, не может взаимодействовать с «родными» инструментами Windows.

    А ведь изначально всё задумывалось совсем иначе, пишет Джулио Мерино (Julio Merino), автор блога для разработчиков jmmv.dev. Подсистема должна была стать совсем другой, но фактически вышел провал, в каком-то смысле.

    Чтобы понять причины этого провала, нужно сначала понять различия между WSL 1 и WSL 2 и как переход на WSL 2 закрыл некоторые интересные перспективы.

    Обзор архитектуры WSL 1


    Давайте сначала взглянем на WSL 1, и первым делом — на её странное название. Почему эта функция называется подсистемой Windows… для Linux? Разве не наоборот? Это же не подсистема в Linux, которая делает что-то связанное с Windows, а именно наоборот! То есть грамотно она должна называться «Подсистема с функциональностью Linux для Windows» или «Подсистема Linux для Windows» или LSW. Откуда путаница?

    Есть мнение, что Microsoft была вынуждена выбрать название «наоборот», чтобы избежать упоминания чужих торговых марок. Вот слова Рича Тёрнера (Rich Turner), проект-менеджера WSL:


    Что ж… с другой стороны, такое странное название технически можно считать корректным, если внимательно изучить архитектуру ядра Windows NT. На странице «Архитектура Windows NT» в Википедии мы находим следующее:



    «Пользовательский режим Windows NT состоит из подсистем, передающих запросы ввода-вывода соответствующему драйверу режима ядра посредством менеджера ввода-вывода. Есть две подсистемы на уровне пользователя: подсистемы окружения (запускают приложения, написанные для разных операционных систем) и интегрированные или внутренние подсистемы (управляет особыми системными функциями от имени подсистемы окружения). Режим ядра имеет полный доступ к аппаратной части и системным ресурсам компьютера».

    Windows NT разработана с нуля для поддержки процессов, запущенных из множества операционных систем, а Win32 был «просто» одной из этих подсистем окружения. На такой платформе WSL 1 предоставляет новую подсистему окружения, подсистему Linux, для запуска бинарников Linux поверх ядра Windows NT. У подсистем окружения Win32 и Linux должна быть одна общая интегральная подсистема.

    Что всё это на самом деле значит?

    Разные системы называют «фронтендами» — вот что это значит. Процесс пользовательского пространства — это набор двоичных команд, которые процессор выполняет непрерывно (оставим в стороне прерывания). Ядро операционной системы не знает о том, что делает процесс, пока процесс не выдаст системный вызов: в этот момент ядро восстанавливает контроль для выполнения операции от имени пользователя, которая может быть чем-то вроде чтения файла или паузы на несколько секунд.

    Способ, которым процесс выполняет системные вызовы, и семантика этих системных вызовов специфичны для операционной системы. Например, на старых х86 это выглядит так: открытие файла в системе Win32 — системный вызов 17h, который инициируется через прерывание INT 2EH, а при открытии файла в системе Linux — это системный вызов 5h, который инициируется через прерывание INT 80х.

    Но… концептуально открытие файла — это открытие файла, верно? Нам особенно не интересно, что номера системных вызовов или номера прерываний отличаются друг от друга. И в этом заключается ключевой аспект дизайна WSL 1: подсистема Linux в ядре NT — это, проще говоря, реализация уровня системных вызовов Linux перед ядром NT. Эти системные вызовы позже делегируются примитивам NT, а не вызовам Win32. Самое главное: нет никакого перевода с системных вызовов Linux на системные вызовы Win32.

    В каком-то смысле это подвиг архитектурной мысли и реальной программной разработки, учитывая в целом хорошую поддержку Linux-приложений под WSL 1 и помня о множестве реальных внутренних отличий NT от Unix, когда Windows вообще нативно не воспринимает стандартную юниксовую логику fork–exec.

    Истинная красота этой конструкции заключается в том, что на машине работает одно ядро, и это ядро имеет целостное представление обо всех процессах под ним. Ядро знает всё о процессах Win32 и Linux. И все эти процессы взаимодействуют с общими ресурсами, такими как единый сетевой стек, единый менеджер памяти и единый планировщик процессов.

    Причины для создания WSL 2


    Если WSL 1 так крут, то зачем нужен WSL 2? Здесь две причины:

    • WSL 1 должен, по сути, реализовать все двоичные интерфейсы приложений (ABI) ядра Linux, как говорится, «бит к биту». Если в интерфейсе есть ошибка, WSL 1 должен её воспроизвести. А если есть функция, которую трудно представить в ядре NT, то она либо не может быть реализована, либо нуждается в дополнительной логике ядра (и поэтому становится медленнее).


      Уровни и интерфейсы между ними: API и ABI. Высокоуровневое сравнение

    • Подсистема Linux в WSL 1 должна соблюдать любые «ограничения» и внутренние различия, существующие между ядром NT и традиционным дизайном Unix. Наиболее очевидным отличием является файловая система NTFS и её семантика, а также то, как эти различия вредят производительности бинарных файлов Linux. Низкая производительность файловой системы, видимо, была распространённой жалобой при использовании WSL 1.

    WSL 2 «выбрасывает» всю часть подсистемы Linux и заменяет её полноценной (но очень хорошо скрытой и быстрой) виртуальной машиной. Затем виртуальная машина внутри себя запускает обычное ядро Linux, правильную файловую систему Linux и стандартный сетевой стек Linux. Всё это работает внутри VM.

    Это означает, что красота дизайна WSL 1 исчезла: ядро Windows NT больше не видит ничего в мире Linux. Просто большой чёрный ящик, который делает что-то неизвестное внутри себя. Ядро Windows NT видит только точки подключения VMENTER и VMEXIT для виртуальной машины и запросы чтения/записи на уровне блоков на виртуальном диске. Это самое ядро NT теперь ничего не знает о процессах Linux и доступе к файлам. Точно так же работающее ядро Linux ничего не знает об NT.

    О некоторых других различиях можно прочитать в официальной документации.

    Потерянный потенциал


    С точки зрения пользователя, подсистема WSL 2 выглядит лучше: действительно, приложения Linux теперь работают намного быстрее, потому что не проходят через неудобную «эмуляцию» системных вызовов Linux в ядре NT. Если NTFS трудно использовать с семантикой Linux, то теперь такой проблемы нет, потому что теперь окружение Linux использует ext4 на своём виртуальном диске. И поддержка приложений Linux может быть гораздо более полной, потому что… ну, потому что WSL 2 — это и есть полноценный Linux.

    Но подумайте, за счёт чего достигнуто это удобство? Чего мы лишились?

    Какой должна была стать WSL, если бы всё работало так, как задумано:

    • Представьте, как здорово набрать ps или top в сеансе WSL и увидеть рядом процессы Linux и Windows, причём любой из них можно убить командой kill?
    • Представьте, как здорово манипулировать службами Windows из сеанса WSL?
    • Как здорово использовать ifconfig (аналог ipconfig из Windows, хотя есть ещё ip) в рамках сеанса WSL для проверки и изменения сетевых интерфейсов компьютера?


    • По сути, можете представить выполнение абсолютно всех задач системного администрирования в Windows из линуксовой консоли WSL? Это же сказка!

    Хотя такого никогда не существовало, такой мир вполне можно себе представить… и это могла обеспечить только архитектура WSL 1. И это вовсе не фантазии, потому что именно такую модель использует macOS (хотя это немного читерство, ведь macOS, по сути, является Unix).

    Вот что бесит сильнее всего, пишет Джулио Мерино: «Хотя я могу установить WSL на свою машину разработки для Azure, но никак не могу его использовать вообще ни для чего. По-прежнему приходится работать в CMD.EXE, поскольку здесь происходит взаимодействие с нативными процессами и ресурсами Windows, а инструменты, с которыми я имею дело, предназначены только для Windows».

    На странице вопросов и ответов написано, что WSL 1 не будет заброшен, то есть можно запускать дистрибутивы WSL 1 и WSL 2 вместе, проапгрейдить любой дистрибутив на WSL 2 в любое время или вернуться на WSL 1. И если посмотреть на строгую приверженность к обратной совместимости Microsoft, из-за которой мы до сих пор вынуждены пользоваться архаичными инструментами и протоколами, это может быть правдой. Но поддержка WSL 1 — колоссальное усилие, потому что придётся отслеживать и соответствовать всем изменениям Linux. Как бы то ни было, будем надеяться, что WSL 1 продолжит своё существование. И кто знает, вдруг когда-нибудь всё-таки воплотится в жизнь тот волшебный мир, который мы представляем?

    Уровень совместимости в BSD


    Интересно, что семейство операционных систем BSD ( FreeBSD, OpenBSD, NetBSD, MidnightBSD, GhostBSD, Darwin, DragonFly BSD) всегда отставали от Linux и других коммерческих операционных систем. Но у них очень давно была реализована эта совместимость на бинарном уровне, о которой мы говорим. Джулио Мерино говорит, что совместимость с Linux в ядре NetBSD была реализована ещё в 1995 году, то есть четверть века назад и за 21 год до рождения WSL 1.

    И самое замечательное, эта совместимость не ограничивается только Linux. На протяжении многих лет NetBSD поддерживала эмуляцию различных операционных систем. Поддержка SVR4 появилась в 1994 году, и в течение короткого периода времени NetBSD даже поддерживала… бинарные файлы PE/COFF — да, правильно, это бинарные файлы Win32! Таким образом, в некотором смысле NetBSD реализовала модель WSL 1 наоборот: она позволяла запускать бинарные файлы Win32 поверх ядра NetBSD ещё в 2002 году. Вот так вот.



    На правах рекламы


    VDSina предлагает VDS в аренду под любые задачи, огромный выбор операционных систем для автоматической установки, есть возможность установить любую ОС с собственного ISO, удобная панель управления собственной разработки и посуточная оплата тарифа, который вы можете создать индивидуально под свои задачи.

    VDSina.ru — хостинг серверов
    Серверы в Москве и Амстердаме

    Комментарии 262

      +7

      Может какое-то время и будет поддерживаться as is и с фиксами, но крупные нереализованные фичи вряд ли будут реализованы, увы (

        +8
        Имеется подозрение что тупо не осилили. Для доведения до ума такой возможности требуется команда талантливых и дорогих программистов, которые будут писать нифига не на C# или JS. А это дороговато за функцию которой будут пользоваться полтора землекопа. Кому нужен линукс те им пользуются, кто хочет изучить скорее поставит виртуалбокс с ним или второй системной. Так что по моему мнению WSL это обычное седло на корове. Можно поприкалываться и нацепить, но ездить на коровах будут только истинные ценители альтернативного подхода к решению задач.
          +27
          А сама Винда у них на Си-шарпе или ДжиЭсе разве? Я думаю, у них есть команда дорогих и талантливых «плюсовиков».
            –9
            Стандартные приложеньки переписывают на С#. А божественный скайп я не могу не пнуть.
              +10
              Стандартные приложеньки — это фигня на постном масле, не имеющая никакого отношения к ОС.
                0
                Ога, только из этой ситуации можно сделать косвенный вывод. Из состава продуктов выводится С++ и заменяется чем угодно. Т.к. чет не слышно про крутой новый проект на С++ то скорее всего плюсовики выходят за дверь. Ну какая нифиг WSL и интеграция линукс. Ребята 2 года уже пилят Windows Terminal на плюсах.
                  0
                  Лол, и правда на плюсах. Я думал, UWP только .Net дружит? Хотя, если они обертку визуальную сделали на .Net, а все обработчики и прочее на плюсах…
                0
                Вы, скорее всего, простой ноль в UWP и WinRT) Даже шарповское Universal Windows Platform приложение элементарно компилируется в натив с помощью .NET Native. Однако, скорее всего, их стандартные приложения были написаны на UWP + C++/WinRT
              +16
              Имеется подозрение что тупо не осилили

              Проблема не в квалификации, а в том, что некоторые вещи из Linux не могут быть реализованы в Windows принципиально. Ввиду полного отсутствия хоть чего-то похожего.
              Ломать винду ради линуха никто не будет. А лепить отдельные костыли под специфические вызовы… Рано или поздно приходит в голову "Да ну его… Давайте всё поставим на костыли, только одинаковые" — и появляется WSL2.
              Собственно автор так и пишет, только другими словами.
              PS. аналогично решено в macOS — все консольные приложения из brew/port вполне отлично работают после простой перекомпиляции; а для графических есть единый (тяжелый, но единый) костыль XQuarz.

                +3
                налогично решено в macOS — все консольные приложения из brew/port вполне отлично работают после простой перекомпиляции

                Разве что простые утилиты, которые в ядро не лезут. У макоси с линуксом общего только условный POSIX слой, который все равно имеет тонну несовместимости даже в простейших случаях. Утилиты так вообще совершенно разные порой. Взять какой-то нить htop — для макоси, как и для всех остальных ОС, свой слой совместимости, что неудивительно. POSIX дает доступ только к базовым функциям, а все внутренности ОС и устройств это mach прослойка и IOKit. Никакого proc же нет.
                  0
                  Заявление немного расходится с тем, что внутре у ней неонка, т.е FreeBSD, у которой с эмуляцией сис.вызовов Linux норм, даже акцентировано в статье
                    +4
                    То, что когда-то в бородатые годы они взяли несколько компонентов BSD, ничего не говорит. Чтобы на С сделать хоть что-то выходящее за пределы POSIX спеки, BSD сокетов и всяких libc нужно лезть в интерфейсы ядра, которые мало чего общего с юниксами имеют. Ядро у них свое, основные подсистемы это mach и IOKit. Достаточно открыть исходники какой-нить тулзы вроде бы стандартной юниксовой opensource.apple.com/source/top/top-129/libtop.c.auto.html От BSD там наверное только код для отображения CLI остался.

                    На уровне сисколов тоже расходятся
                    opensource.apple.com/source/xnu/xnu-6153.11.26/bsd/kern/syscalls.master.auto.html
                    github.com/freebsd/freebsd-src/blob/master/sys/sys/syscall.h
                    Да видно, что начинали с BSD, но дальше все полностью расходится. Даже базовые вещи вроде mmap не совпадают по номерам и, судя по всему, поведению. Все новые сисколы вообще разные. Плюс Apple как и MS не гарантируют совместимость на уровне сисколов, поэтому все приложения должны линковаться с libsystem_kernel.dylib и прочими.

                    А эмуляция у BSD сделана через реализацию сисколов линукса (и то, многие не реализованы), чего в макоси и в помине нет.
                      0
                      Заявление немного расходится с тем, что внутре у ней неонка, т.е FreeBSD, у которой с эмуляцией сис.вызовов Linux норм, даже акцентировано в статье


                      там ядро не Linux и не FreeBSD

                      от FreeBSD там только набор базовых утилит, тех, что в FreeBSD называются world
                  +19
                  Имеется подозрение, что подход себя не окупил. Чем гнать за линуксом, который с каждым релизом чего-то меняет постоянно, и пытаться натянуть его на архитектуру NT, на которую он натягивается плохо (что много раз обсуждалось). Особенно, если вспомнить главную цель WSL — дать разработчикам, для которых винда родной инструмент (а это, на минуточку, 50% по опросам stackoverflow), простой способ билдить свои сорцы под линукс. Для этого слой совместимости пустая трата ресурсов. WSL 2 с этой точки зрения работает намного лучше и намного дешевле в поддержке. Последнее плюс не только МС, а и всем тем, кто не может работать из-за очередной несовместимости WSL 1.

                  Полтора землекопа это как раз про автора статьи, который высосал из пальца какой-то потенциал администрирования винды тулзами линукса, для чего WSL никогда не позиционировался и никто не собирался двигать его в этом направлении.
                    +2
                    Особенно, если вспомнить главную цель WSL — дать разработчикам, для которых винда родной инструмент (а это, на минуточку, 50% по опросам stackoverflow), простой способ билдить свои сорцы под линукс.

                    Я слышал о другой цели: перетащить разработчиков под Windows, которым объективно всё равно или почти всё равно под какой ОС разрабатывать (скриптовые кроссплатформенные языки прежде всего), предоставив им субъективно привычный CLI/TUI инструментарий для разработки и деплоя в Azure, пускай и на Linux инстансы

                      +5
                      Поддерживаю! Предпочитаю винду, WSL всегда использовал для проектов которые под виндой не заводятся (или заводятся костыльно).
                      С одной стороны виртуалка под капотом WSL для меня ничего не меняет, с другой ощущение, что накололи.
                  +1

                  Для разработки удобнее, когда проект достаточно изолирован от основной системы, когда можно делать снэпшоты и если надо — переносить в контейнере на другой компьютер. Так что очень логично засунуть этого всё в ВМ, а не интегрировать напрямую в основную систему, нет?

                    +1

                    Ну возникает резонный вопрос, почему так сразу не сделали, тем более, что это (очевидно) и технически проще. Для меня до сих пор загадка, почему изначально был выбран тяжёлый путь глубокой интеграции.

                      0

                      Удобнее, когда уровень изоляции равен единице.
                      Если слоев изоляции много, и некоторые из них сильно зависимы от внешних факторов, то это уже не удобно.


                      Обычно один уровень изоляции есть уже в самом проекте в виде инструкций для сборки контейнера или виртуалки. Лишние только помешают.

                        0

                        Ну вот в теории WSL1 и должен был позволить собирать и запускать linux-контейнеры так же как и windows.

                      +5
                      По мне так это баш странный, а powershell как раз норм. Я много пишу на баше, знаю о чём говорю.
                        +1

                        Совсем не силен в powershell, поэтому стало интересно, как написать, например, простейшее:
                        cat file.txt | grep some-value >> file-to-append.txt
                        ?

                          0

                          https://antjanus.com/blog/web-development-tutorials/how-to-grep-in-powershell/


                          Но грепать в виндовс лучше все-таки в git bash или в FAR/TotalCommander. Я вот под мак осью пользуюсь консолью а в винде Тотал Командером.


                          Так уж вышло, что в отличии от линукс, виндовс обычно идёт вместе с UI даже если это сервер — соответственно, «ручное администрирование» заточено под UI. Ну и да, PS оперирует объектами а не потоком символов как баш — из-за этого сложные скрипты писать проще (PS почти как .NET, только синтаксис кривоват), а вот интерактивно грепать сложнее. Справедливости ради, линукс консоль тоже не очень очевидная и требует знаний типичных команд, а также их аргументов на память.

                            +1
                            Должен отметить, что в PowerShell аналоги grep'а ещё и работают довольно странно и не слишком эффективно, из-за чего при большом количестве маленьких файлов и при маленьком количестве больших надо использовать разные методы, иначе ужас-ужас. Видал как-то подробную инструкцию, что и как надо делать в разных ситуациях, и это было действительно страшно.

                            В то время как для grep ещё и существует великолепная замена в виде ripgrep, который в некоторых сценариях работает в разы быстрее grep (потому что мультипоточный, умеет в SSE и другие оптимизации).
                            +1
                            Get-Content file.txt | Select-String "some-value" | Out-File -Append file-to-append.txt;
                              0

                              Кто-то скажет, что еще не страшно. А потом начнется рекурсия, исключение файлов по маске… и точно станет куда страшнее юниксового аналога.

                                0
                                А потом начнется рекурсия, исключение файлов по маске… и точно станет куда страшнее юниксового аналога.


                                Или наоборот, когда речь зайдет об манипуляции уровня понятий/объектов в целом:

                                habr.com/ru/company/vdsina/blog/535214/#comment_22505466
                                PS оперирует объектами а не потоком символов как баш — из-за этого сложные скрипты писать проще
                            0

                            В статье вообще-то не про то что баш лучше или хуже, а про то что под WSL2 баш даже теоретически не видит объекты винды, а винда не видит объекты линукса (процессы, файлы, итп). А под WSL1 они друг друга видели, но поддерживать это оказалось сложно.

                            +1
                            пишу софт под линукс в visual studio которая компилирует всё в wsl сама — это удобно. думал на wsl2 перейти, но он требует hyper-v и у меня отрубается vmware тогда. в целом пользы от того, что я вижу в таск менеджере linux процессы — никакого. А если очень надо, всегда была возможность поставить unix-like тулсет для коммандной строки windows. у меня всегда часть комманд переделана синмлинками ls -> dir например. Ну и про производительность сильно не соглашусь, wsl1 на глаз даже работает значительно быстрее виртуалки и функции свои выполняет хорошо.
                              +2
                              vmware ж давно умеет использовать hyper-v для своих целей
                                0
                                да, но моя не умеет, а платить за апдейт только ради этого как-то глупо.
                                +4
                                В WSL1 низкая производительность ФС (далека от нативной). В WSL2 ситуация хитрая: в линуксовой ФС производительность близка к нативной, но в виндовой ещё ниже, чем в WSL1.
                                  0

                                  В смысле если монтировать виндовые разделы внуть виртуалки?

                                    0
                                    Ага. Все виндовые диски сразу доступны в /mnt/.
                                0
                                WSL 2 просто убил смысл своего существования. Зачем, если есть кросс-платформенный VirtualBox?
                                Он прекрасно работает и под 10 виндой, на рабочем ноуте, и на домашнем минте. Виртуалки просто можно копировать между системами.
                                  +17
                                  Затем, что это гемор ненужный. WSL2 отлично интегрируется с системой и полностью прозрачен. Факт его работы в виртуалке полностью спрятан. Это, собственно, и не простая виртулка. Он запускается за пару секунд, висит в фоне незаметно, не требует постоянно тонны ресурсов, видит всю память и проц системы. Удобно же, когда ты открываешь просто терминал, а там линукс консоль.
                                    +5
                                    и мало того — в этой консоли можно стартануть и win и linux приложение
                                      0
                                      напрашивается мем про троллейбус из буханки, конечно можно, но зачем?
                                      скрестить ужа с ежом все равно не выйдет.
                                        –1
                                        Может потому, что троллейбус удобен сразу всем в отличии от буханки? Так можно вообще и в допотопных технологиях остаться, раз «они никому не нужны», а «640 Кб должно быть достаточно для каждого»
                                      0

                                      У кого как насчёт потребления ресурсов.
                                      У меня и людей из Microsoft с этим невесело и требуется постоянно лечить с помощью
                                      echo 1 > /proc/sys/vm/drop_caches
                                      echo 1 > /proc/sys/vm/compact_memory


                                      Подробнее про жор памяти
                                      https://devblogs.microsoft.com/commandline/memory-reclaim-in-the-windows-subsystem-for-linux-2/

                                        0
                                        В крон и забыть. В большинстве случаев достаточно. Если в вашем недостаточно, увы, тут у меня нет совета.
                                        +1
                                        Он запускается за пару секунд, висит в фоне незаметно

                                        Я недавно в порядке экспериментов пробовал переползти с Linux на Винду, и обнаружил что при запуске любой WSL2 машины от памяти отъедается порядка 2 Гб. Даже если в ней единственный пустой баш запущен.


                                        не требует постоянно тонны ресурсов, видит всю память и проц системы

                                        По-моему так умела WSL1, а WSL2 — честная виртуалка со всеми плюсами и минусами, по сути то же что Virtualbox запущенный headless и с примонтированными в /mnt виндовыми дисками.

                                          +1
                                          WSL2 машины от памяти отъедается порядка 2 Гб

                                          У меня с автозапуском докер демона ест 1ГБ после запуска.

                                          WSL2 — честная виртуалка со всеми плюсами и минусами, по сути то же что Virtualbox запущенный headless и с примонтированными в /mnt виндовыми дисками.

                                          WSL2 работает несколько хитрее. Она видит весь проц. Она видит всю память, но от хоста она откусывается динамически. Диск тоже дефолтный динамический и размечен на весь хостовый диск. Думаю там и других отличий полно с учетом скорости запуска и интеграции. В общем, с точки зрения пользователя это совершенно не похоже на виртуалку.
                                            0
                                            И тем не менее это виртуалка. Для того, чтобы это работало, в ядре Linux давно уже есть куча функций для работы в режиме «гостя», благодаря чему можно на лету добавлять/убавлять памяти и много чего ещё, в том числе использовать общий с хост-системой дисковый кэш. Всё это очень круто и очень хорошо, но виртуалка остаётся виртуалкой.

                                            В WSL2 полноценный Linux, так что там нет «диска», зато там есть точки монтирования, в том числе «диски» хост-системы тоже доступны. Но сам Linux при этом не работает поверх NTFS, у него своя файловая система.
                                              0
                                              Кого волнует, что это виртуалка? Для пользователя переход с WSL 1 до WSL 2 означает значительное увеличение скорости файловых операций и полную совместимость. В 3 версии поменяют на что-то еще, другие плюшки получат. Как это реализовано чисто техническая деталь, которая сути WSL не меняет.

                                              И никто память на лету линукс хосту не убавляет. Линукс хост продолжает видеть столько памяти, сколько у хоста. Это hyperv, под которым это все работает, способен динамически выделять память гостю. В диспетчере задач можно наблюдать, сколько реально гость потребляет памяти.
                                                +1
                                                Это hyperv, под которым это все работает, способен динамически выделять память гостю.

                                                только у всех технологий виртуализации есть родовая болячка — наращивать память виртуалке они могут все, а вот отбирать назад — фигушки. В WSL2 как-то по-другому?

                                                  0
                                                  Похоже как умеет. В диспетчере задач vmmem процесс потребление памяти свое сокращать умеет. Память компактится периодически, но вверху команды можно попробовать, чтобы сразу эффект увидеть. Почти гиг памяти ушел, который, судя по всему, дисковый кэш занимал.
                                                    0

                                                    Но это похоже в самом линуксе какой-то ядерный агент должен стоять, который понимает какая память РЕАЛЬНО нужна...

                                                      0
                                                      Можно даже снаружи, сбрасывая в своп страницы к которым долго не было обращений.
                                                    0
                                                    в смысле, какая родовая болячка?
                                                    хост система
                                                    prod [root@monitoring chemist]# virsh setmem graylog.private.*** 15G
                                                    
                                                    prod [root@monitoring chemist]# virsh setmem graylog.private.*** 16G


                                                    непосредственно виртуалка
                                                    
                                                    prod [chemist@graylog ~]$ free -m
                                                                  total        used        free      shared  buff/cache   available
                                                    Mem:          15980        4962        1052        1017        9966        9592
                                                    Swap:             0           0           0
                                                    prod [chemist@graylog ~]$ free -m
                                                                  total        used        free      shared  buff/cache   available
                                                    Mem:          14956        4961         201        1017        9793        8572
                                                    Swap:             0           0           0
                                                    prod [chemist@graylog ~]$ free -m
                                                                  total        used        free      shared  buff/cache   available
                                                    Mem:          15980        4963        1238        1017        9778        9594
                                                    Swap:             0           0           0
                                                      +1

                                                      Речь шла о динамическом отбирании же, qemu для этого надо патчить.
                                                      UPD: хотя, в самом WSL2 полноценной динамики тоже похоже нет.

                                                    +2
                                                    Кого волнует, что это виртуалка?


                                                    Например, тех пользователей, кому приходится напрягаться с включением VT* в BIOS и у кого Hyper-V конфликтует с другими средствами виртуализации?
                                                      0

                                                      Ну, приходится выбирать между неработающей WSL1 и конфликтами с существующими виртуалками. Я для себя выбрал использовать гиперви и не париться.

                                                        0
                                                        Hyper-V конфликтует с другими средствами виртуализации?

                                                        Все нормальные средства вроде научились жить с ним бок о бок. virtualbox, vmware оба уже давно умеют использовать hyperv. Да и банально, раз уж так надо, то почему-то просто на сам hyperv не перейти.
                                                          0
                                                          Ну Hyper-V тоже не идеален, пробовал разные дистры линукса для перехода с Ubuntu, брал на нем основанные, на Hyper-V вроде только Deepin и завелся… хотя MX и на VirtualBox не запустился, в итоге.
                                              +1
                                              Не скажу, что мне это позарез нужно, но Docker Desktop for Windows (WSL2) весьма неплох.
                                              Прикольно было ansible задачи выпонять в powershell просто через
                                              docker run -it microsoft/ansible:latest ansible-playbook....

                                              VS Code вроде имеет такую возможность прямо из интерфейеса запускать плейбуку через подобный вызов контейнера безо всяких Remote-SSH.
                                              Хотя через Remote-WSL тоже весьма и весьма приятно много чего делать.

                                              Бее того, он позволяет не только контейнеры запускать, но и одной галочкой целый Kubernetes.
                                              Для девелопермента очень даже. И, мне кажется, эффективнее, чем запускать виртуалку с mikrok8s или чем-то подобным, выделяя вируталке фиксированный объем памяти…

                                              Есть у него своя ниша.
                                                0
                                                а ансибл-то зачем в контейнер упаковывать? Какой смысл?
                                                  +3

                                                  Под Windows нет бинарника ансибла.

                                                    0

                                                    Ну, учитывая, что он строго говоря скрипт под python, а интерпретатор python 3.* есть под винду… то Ваше заявление в лучшем случае полуправда

                                                      +2

                                                      К сожалению, я не умею запускать Ansible под Win без Cygwin. Если у вас получилось, буду рад, если поделитесь опытом.


                                                      Пока мне останется виртуалка с линуксом (полноценная или через WSL) либо докер контейнер.

                                                        0
                                                        Интерпретатор есть, но смутно помню сложные ритуалы по установке пакетов, которые я до конца не осилил, т.к. проще было запустить виртуалку с linux и поставить в 1 строчку через pip3.
                                                  +2
                                                  Кросс-платформенный VirtualBox низкого качества. виснет (фризится без восстановления).

                                                  Для времянки только
                                                    +3
                                                    У вас, видимо, достаточно необычные условия использования, потому что у меня, например, за весь 2020 ни одна виртуалбоксовая машина не зависла за много сотен часов работы
                                                      +2
                                                      Не уточнил, хост — Вин10.2004
                                                      +1

                                                      Ничего не виснет. Пробовал мигрировать с virtualbox на hyper-v — отказался из-за плохой поддержки старой windows xp, после очередного обновления, заставить гостевую систему видеть сетевые шары хоста стало невозможно.

                                                        +1
                                                        ни разу ни вис за три года, ни под линукс хостом, ни под десяткой — машины разные.
                                                      +29
                                                      Копирайтеру неплохо бы изучить историю вопроса по первоисточнику (благо, в официальном блоге её достаточно), прежде чем начинать фантазировать об «утраченном потенциале».

                                                      Скажем так, большая часть озвученного не имеет никакого отношения к действительности.

                                                      WSL 1 основана не на подсистеме окружения (как на древнем слайде из Википедии), а на пико-процессах. Это совершенно иная реализация с точки зрения архитектуры. POSIX/Interix/SFU действительно были когда-то сделаны как подсистемы, но WSL 1 устроена попросту абсолютно иначе.

                                                      Касательно рассуждений о трансляции системных вызовов. Она частично присутствует. Некоторые эмулируются, некоторые пробрасываются через обёртки, а для некоторых (таких как fork), в ядро NT были внесены нативные реализации, которые LXSS дёргает напрямую. И об этом тоже прямо писалось в официальном блоге. Да, теперь NT умеет настоящий никсовый fork/exec, представьте себе. Так что «не умеет» — это не соответствует действительности. Умеет, ещё как, и уже достаточно давно.

                                                      Огорчает, что на некогда техническом ресурсе публикуются такие малограмотные спекуляции.
                                                        +3
                                                        прям с языка сняли… лет 20 назад еще компилировал собственные ядра, лет 10 назад ставил двойной гипервизор на машину от Citrix, а теперь все из коробки… прям не нарадуюсь — хочешь так? Пожалуйста, Хочешь эдак? Да вот тебе
                                                          +1
                                                          Да ни фига NT в fork не умеет. Там специфическая и сугубо костыльная реализация конкретно в WSL1, от того достаточно медленная и затратная по памяти. Но в целом, внутри это все очень интересно устроено.
                                                            –5
                                                            А в чем смысл форка сегодня?

                                                            Вокруг микросервисы, околонулевые затраты на нити итп…

                                                            Может и ПОЗИКС туда же…

                                                            В мусорку истории.
                                                              +2
                                                              Достаточно глупо предлагать в мусорку POSIX только на том основании, что программисты одной компании чего-то там не осилили.

                                                              Что именно в мусорку уйдёт — порешает рыночек своей невидимой ручкой. Пока же весь бум микросервисов основан именно на технологиях Linux с его POSIX-подходом, вон, даже в Windows вынуждены были его впилить для хотя бы приемлемой работы докера.
                                                                0

                                                                Разработчик, внезапно, на posix пофиг. Они работают в терминологии высокоуровневых библиотек и фреймворков. Вот проведите опыт и спросите у какого-нибудь фронтендера про posix и что это такое. Скорее всего ответ будет невнятным.

                                                                  +1
                                                                  Так фронтендеру ни тепло ни холодно от того, есть в системе fork или нет, если на его работе это не сказывается.

                                                                  Суть претензии в том, что некоторые тут предлагают запретить этот самый fork, так как винда не осилила, а это по их мнению автоматически означает ненужность. Я при этом не обсуждаю, нужен ли fork на самом деле или нет, просто подчёркиваю, что такой ход мысли не является логически верным.
                                                                    +3
                                                                    Справедливости ради, именно для exec использование fork — весьма кривой оверкилл (если мне надо дёрнуть внешнюю тулзу из своей мегапроги, зачем для этого делать битовую копию памяти моего процесса? чтобы что?). Так что это скорее в unix-е не осилили нормальный CreateProcess.
                                                                      +1

                                                                      Справедливости ради, на современных системах fork + exec не делает битовую копию памяти (она клонируется лениво при доступе к ней). Но это и правда костыль, решаемый нормальным CreateProcess.

                                                                        0
                                                                        Ну как не делается, стэк точно копируется, да и всё остальное помечается. Давать сторонним тулзам возможность лазить по моему стэку — ну такое.
                                                                          0

                                                                          Если мне не изменяет память, то используется постраничный механизм Copy on Write, но это не про безопасность, а про производительность. Стэк, возможно, и правда копируется сразу, спорить не буду (нужно же куда-то результат fork сразу класть, правда). Я и согласен, что CreateProcess нужен, первый комментарий был чисто про то, что большая часть памяти не копируется при fork+exec на практике.

                                                                        –1

                                                                        Справедливости ради, лучше знать тему, а не рекламировать свою некомпетентность.


                                                                        В особенности назначение и подробности обработки ядром флажка CLONE_VFORK, которому уже более 20 лет.

                                                                          0
                                                                          Справедливости ради, речь шла про unix/posix, а не про linux
                                                                            0
                                                                            Справедливости ради, именно для exec использование fork — весьма кривой оверкилл (если мне надо дёрнуть внешнюю тулзу из своей мегапроги, зачем для этого делать битовую копию памяти моего процесса? чтобы что?). Так что это скорее в unix-е не осилили нормальный CreateProcess.

                                                                            Я правильно понимаю что вы не знаете о brk() и не в курсе ~40-летних рекомендаций по поводу его использования перед fork() + exec() ?

                                                                              +2
                                                                              brk()
                                                                              Это который еще в 1998 объявили как deprecated, а в 2001 вообще выкинули из стандарта?
                                                                                +1

                                                                                Ну тут товарищам выше нужно определиться что они пытаются обругать:


                                                                                • если старые Unix/POSIX, то brk()+fork()+exec().
                                                                                • если актуальный POSIX, то posix_spawn().
                                                                                • если актуальный Linux, то clone() и тот-же posix_spawn() как обертка над clone(CLONE_VFORK)+exec().

                                                                                ;)

                                                                                  +1

                                                                                  да все говно :-) отличная заявка на "сделать нормально", но для этого придется опять переписать весь софт… например, на Rust :-)

                                                                              0

                                                                              Тот же CoW был придуман еще до линуксов, ну и про posix_spawn() уже отметились.

                                                                            +2
                                                                            Так что это скорее в unix-е не осилили нормальный CreateProcess.
                                                                            man7.org/linux/man-pages/man3/posix_spawn.3.html
                                                                          0

                                                                          Вот и имеем потом кучу раздутого говнокода от того, что они не понимают, как их библиотеки и фреймворки работают. Не говоря уже о том, что выдерни тот же POSIX — сломаются их библиотеки и фреймворки.

                                                                            +1

                                                                            ну, это данность ) мы можем долго холиварить плохо это или нормально, но факт в том, что условному фронтендеру на кишки пофиг.

                                                                              0

                                                                              Ему всё-таки не пофиг должно быть на то, что без такого-то слоя (читай, на таких-то ОС) его фреймворки и либы сломаются. Иначе он всё же профнепригоден.

                                                                                +1

                                                                                Его главный слой — браузер, а не ОС даже.

                                                                                +1

                                                                                Пока не начинает пытаться ускорить сборку, сделать вотчеры и т. п.

                                                                    +2

                                                                    К сожалению, выпилят рано или поздно, как выпилили подсистему OS/2 из более ранних версий.

                                                                      0

                                                                      А кому-то сейчас нужна подсистема полуоси?

                                                                        +5

                                                                        Наверное, никому (но это не точно). Фраза "к сожалению" относится не к OS/2, к WSL1. Если минусуют в поддержку выпиливания, то хотелось бы развернутого объяснения, почему это хорошо.

                                                                          0

                                                                          Не, я не за выпиливание. Как оно в итоге получится, в будущем увидим. Так то wsl интересная тема

                                                                            –1
                                                                            Возможно минусуют потому, что подсистемы OS/2 никогда и не было в NT, и ее не выпиливали. А было когда-то общее ядро.

                                                                            Я даже HPFS на NT4 запускал. Работала в разы быстрее, чем NTFS. Хнык (
                                                                              +5

                                                                              Была-была такая подсистема
                                                                              https://www.itprotoday.com/strategy/nt-gatekeeper-disable-nt-servers-os2-subsystem
                                                                              Даже отдельными бинарниками

                                                                                –3
                                                                                Ну это были системные DLL, а не как устанавливаемая подсистема вроде Interix
                                                                                  +2

                                                                                  Ну, епрст, какая разница — устанавливаемые DLL и EXE в систему. Или изначально входящие в нее? WinNT обладала модульной структурой. Просто часть компонентов сунули в сам дистриб WinNT. А часть — поставляли как отдельный продукт. Вот тот самый Interix или SFU.

                                                                        –5
                                                                        Честно говоря не очень понимаю тех, кто пользуется Windows, особенно если не по долгу работы (например в винде есть какая-то супер нужная программа, а в линуксе ее нет).
                                                                        Конечно даже при таком раскладе есть wine, но его можно опустить (все-таки это лишние телодвижения).
                                                                          +2

                                                                          У меня есть макбук, у меня есть возможность установить линукс, но есть одна проблема — рендер шрифтов. Я так и не смог добиться качественного рендера шрифтов от мака (как и от линукса — где еще и периодически проблема с поддержкой моих двух мониторов и принтеров). Я даже жену подзывал, не объясняя, в чем суть, спросить — какой рендер лучше. И она сказала однозначно тот, который был на винде. Почему-то если смотреть на экран моего макбука, то там со шрифтами нет проблем. Но стоит мне его подключить к своему Dell U2415, так аж глаза болят через минут 15. Гугление ни к чему не привело (ну, кроме того, что, мол, отключите сглаживание — но именно оно мне в винде прям очень нравится).

                                                                            0
                                                                            у вас на мбп нет проблем из-за высокой плотности пикселей. возьмите 4k дисплей и забудете о шрифтах вообще :)

                                                                            у меня просто была аналогичная проблема, мне нравился линукс, но не глаза болели от шрифтов на FHD 24'' мониторе. теперь у меня ноут — 4k дисплей, монитор — 27'' 4k и я забыл что такое проблемы со шрифтами)
                                                                              +4
                                                                              у вас на мбп нет проблем из-за высокой плотности пикселей. возьмите 4k дисплей и забудете о шрифтах вообще :)

                                                                              Но я только что купил два эти монитора. Мне нравится их редкое соотношение сторон 16:10, нравится размер (больше уже смысла нет, а один монитор мне неудобно). И как бы странно покупать монитор под ось. Почему винда может рендерить достойно, а другие — нет? И потом, у линукса нет-нет, да бывают проблемы с двумя мониторами.

                                                                                +2
                                                                                Нет, что вы, конечно не обязательно покупать мониторы под ОСь. Пользуйтесь тем инструментом и причиняет наибольшую пользу.

                                                                                Как по мне, то линуксовый рендеринг с сглаживанием гораздо симпатичнее, но у лично у меня уставали глаза без донастройки, а у кучи других людей нет таких проблем. Виндовый рендеринг тоже ломает глаза, так как пытается своими алгоритмами встроить шрифт в пискельную сетку и создавая лесенку. С другой стороны я раньше сидел за TN матрицей и мне было норм на полной яркости и убунтовских шрифтах, а теперь глаза сильно избирательны — подавай откалиброванный IPS и все такое.

                                                                                В общем, безотносительно операционной системы, 4к панель — это рай для глаз, плотность пикселей как на современном смартфоне. Теперь я не могу ни на винде, ни на линуксе с 96 dpi :)
                                                                            +9
                                                                            Наверное, каждый пользуется тем, что ему удобнее. Лично я пробовал и Windows, и Linux. И мне гораздо удобнее пользоваться Windows.
                                                                            Во-первых, у меня компьютер не только для работы, но и для игр. Здесь Windows однозначно лучше (Linux, конечно, тоже позволяет запускать игры, но какой смысл мириться с 50% совместимостью, если можно взять 100%?).
                                                                            Далее, лично мне показалось, что Linux потребляет больше оперативной памяти. При этом, при достижении потребления к 100% система просто намертво зависала, не позволяя даже закрыть программы, которые съели все ресурсы (например, попытка открыть большой лог во встроенном текстовом редакторе KDE мне повесила всю систему). В Windows я хотя бы всегда могу открыть диспетчер задач — он всегда работает с повышенным приоритетом — и прибить ненужные процессы, избежав полного ребута системы.
                                                                            Третье. Софт. Под Windows есть практически весь необходимый для работы софт. Огромное количество GUI-клиентов на любой вкус и цвет (мне, например, не удалось найти вменяемый GUI-клиент для GIT под Linux — да, мне удобнее использовать GUI, а не консоль). Также на Windows лучше работают программы самой Microsoft (кто-бы сомневался). Тот самый MS Office. Найти полноценную замену для Outlook для работы с Exchange Server опять же не получилось.
                                                                            Уверен, можно возразить и найти множество вариантов «а вот это можно сделать так, а вот тут можно погуглить и сделать в итоге так». Однако главный вопрос — зачем? Что конкретно такого даёт Linux, чего не даёт Windows? Возможность запуска сервера? Так мне это не нужно — все серверы запускаются на машинах компании, на которую я работаю. Возможность сконфигурировать всё и вся? Зачем, если и так всё неплохо настроено?
                                                                            Если что, я не хочу сказать, что Linux плохая система. Я лишь отвечаю на вопрос «зачем кто-то вообще пользуется Windows?»
                                                                              0
                                                                              сомневался). Тот самый MS Office. Найти полноценную замену для Outlook для работы с Exchange Server опять же не получилось.

                                                                              До меня это было критично, хотя коллеги умудрились пользоваться OWA клиентом в браузере, поэтому я перешёл на MacOS и не жалею ни разу

                                                                                0

                                                                                О, а я как-то работал в конторе, где на мак перейти нельзя было, потому что безопасники только винду предпочитали. Основная проблема была в отсутствии клиентского сертификата, который выдавался на винду, но на мак, увы, нет. Из-за чего нельзя было залогиниться в сервисы MS. На винде он был при этом неэкспортируемым. И прав на его экспорт не было. Я, правда, извернулся, через какую-то незакрытую брешь вытащил таки сертификат, и запустил всё, что мне нужно было на маке, но если бы безопасники узнали...

                                                                                  0

                                                                                  Безопасники нынче продвинутые и умеют маковские рабочие станции "готовить"

                                                                                    0

                                                                                    Умеют. И те умели. Но не хотели. У них, как я потом где-то раскопал в старых доках, и служебные телефоны были до последнего исключительно на винде, пока их не перестали делать. Тогда они перешли на айфоны всей корпорацией.

                                                                                +2

                                                                                У Linux и Windows разные подходы к организации памяти:


                                                                                1. В Linux используется оверкоммит: приложение может выделить больше памяти, чем реально есть в системе, из-за чего out-of-memory может случиться в самые неожиданные моменты. В Windows оверкоммита нет, и в итоге возможна ситуация обратная: приложение при попытке выделить память получает отлуп, несмотря на то, что незанятой физической памяти дохрена и больше.


                                                                                2. Windows превентивно скидывает в своп данные, даже если свободной памяти полно. Linux же это начинает это судорожно делать, когда память исчерпана. Впрочем, на ноутбуке, где по умолчанию используется встроенное видеоядро, при исчерпании памяти Windows тоже начинает чудить: временно отваливается графический драйвер, пока свободной памяти снова не станет достаточно.



                                                                                Увы, у обеих систем управление памятью далеко от идеала.


                                                                                мне, например, не удалось найти вменяемый GUI-клиент для GIT под Linux — да, мне удобнее использовать GUI, а не консоль

                                                                                SourceTree, Sublime Merge

                                                                                  0
                                                                                  Windows превентивно скидывает в своп данные, даже если свободной памяти полно. Linux же это начинает это судорожно делать, когда память исчерпана.
                                                                                  Это неверно. Почитай Руссиновича.

                                                                                  Виндовс просто часть .exe назначает свопом, и подгружает по необходимости. Потому у Вин своп технически есть всегда, а если Линух лезет в своп — это крит.проблема.
                                                                                    +1
                                                                                    Виндовс просто часть .exe назначает свопом, и подгружает по необходимости.

                                                                                    Только это сказал не Руссинович, а Рихтер. «Windows для профессионалов. Создание эффективных Win32-приложений с учетом специфики 64-разрядной версии Windows». Часть III «Управление памятью», глава 13 «Архитектура памяти в Windows», стихи разделы «Физическая память и страничный файл» и «Физическая память в страничном файле не хранится».
                                                                                      0
                                                                                      Виндовс просто часть .exe назначает свопом, и подгружает по необходимости.

                                                                                      Разумеется, линукс тоже умеет выгружать неиспользуемые куски открытых на исполнение бинарников.


                                                                                      Возможно, эффект от этого менее заметен, поскольку все нормальные дистрибутивы стараются каждую либу держать в единственном экземпляре, а в винде многие программы тянут свои версии популярных dll и суммарно это занимает больше места в памяти.

                                                                                        +3
                                                                                        дистрибутивы стараются каждую либу держать в единственном экземпляре

                                                                                        Ага, Appimage, Snap, FlatPack…
                                                                                          0

                                                                                          Это новая и, мягко скажу, вызывающая споры технология. Мне пока удаётся избежать счастья её использовать.

                                                                                            0

                                                                                            Let's Encrypt, по-всей видимости, на линуксе скоро будет только через snap.

                                                                                              0

                                                                                              Клиентская часть же всегда была пачкой скриптов. Некоторые их даже переписывали по разным соображениям. Зачем там snap?

                                                                                                0

                                                                                                Я имел в виду Certbot. Посмотрите инструкции к установке на разных осях. И вот, что пишут. У меня нет точной ссылки, где опубликовано решение о переходе на snap, но это решение, как я понимаю, принято.

                                                                                                  0

                                                                                                  есть и сторонние клиенты

                                                                                                    0

                                                                                                    Это как-то меняет тот факт, что Certbot переходит на snap?

                                                                                                      0

                                                                                                      Просто вы сказали, что


                                                                                                      на линуксе скоро будет только через snap.
                                                                                                        0

                                                                                                        А сразу следующим комментарием я уточнил: "я имел в виду Certbot." Круг замкнулся :)


                                                                                                        Еще раз: думал я о Certbot'е, но некорректно написал Let's Encrypt. Иных клиентов может быть сколько угодно, но в рамках разговора о snap, я хотел подчеркнуть, что есть популярные проекты, которые, по всей видимости, полностью планируют перейти на snap на линуксе.

                                                                                                          0

                                                                                                          https://packages.debian.org/search?keywords=certbot
                                                                                                          елси даже LE сделает snap основным способом распространения certbot, исходники они не закроют, не думаю, что дистрибутивы перестанут опакечивать «по-своему».

                                                                                              0
                                                                                              В Убунте 20.04 вроде многие вещи через snap сделали, как тот же магазин приложений. Да и apt, если не путаю, тоже что-то через него делать стал. Потому и ушел я на Deepin. А потом вернулся на винду.
                                                                                              +2

                                                                                              Я бы в этот список добавил еще и докер. По сути для каждой софтины своё окружение.

                                                                                                0
                                                                                                Я тоже хотел, но с ходу не смог назвать пару его аналогов для веса ))
                                                                                            0
                                                                                            Виндовс просто часть .exe назначает свопом, и подгружает по необходимости

                                                                                            Так делают все ОС, основанные на Mach VM, то есть примерно все после 80-х.

                                                                                            –3
                                                                                            В Linux используется оверкоммит: приложение может выделить больше памяти, чем реально есть в системе, из-за чего out-of-memory может случиться в самые неожиданные моменты. В Windows оверкоммита нет, и в итоге возможна ситуация обратная: приложение при попытке выделить память получает отлуп, несмотря на то, что незанятой физической памяти дохрена и больше.

                                                                                            его можно отключить, но лучше не отключать, т.к. это сломает половину приложений...

                                                                                              0
                                                                                              У меня не сломана, своп отключаю со времён XP.
                                                                                                0

                                                                                                продолжайте наблюдение )


                                                                                                Еще раз — логика очень простая — своп в линуксе есть — приложения коммитятся на его использование и на то, что оперативки можно хоть жопой жевать — следовательно при отключении мы ловим веселые эффекты. Эти эффекты МОЖНО побеждать с переменным успехом.


                                                                                                Хорошо! Хотите банальный пример. Мы написали некое приложение. Оно провело свою инициализацию, потом пошло в рабочий режим. Те странички памяти, которые были изменены в ходе загрузки приложения — грязные, поэтому не могут быть полностью discard, чтобы быть подтянуты с диска, но с другой стороны — они в процессе работы приложения могут не использоваться. Что с ними делать? Налицо неэффективное использование ограниченного количества ОЗУ.


                                                                                                С другой стороны, все мы понимаем проблемы, возникающие от наличия swap'а

                                                                                                  0

                                                                                                  Странная логика. Что мешает то же самое делать и под виндой?

                                                                                                    0

                                                                                                    В смысле? Не совсем понимаю.

                                                                                                      0

                                                                                                      Приложение обычно не интересует, сколько там в системе памяти и свопа.
                                                                                                      Ему нужна память — оно памяти выделяет столько, сколько ему нужно вне зависимости от ОС. А если памяти не хватает, то отваливается по OOM.

                                                                                                        +1

                                                                                                        Нет ) это не так работает.
                                                                                                        В Линукс — приложение запрашивает память. И Линукс приложению память даёт. Если вдруг в процессе работы выясняется, что памяти не хватило — привет, оомкиллер.
                                                                                                        В винде же — если памяти нет — приложение упадёт именно в момент аллокации несуществующей памяти. По крайней мере, это работало именно так. И соответственно, если приложение работает, то оно работает ) без приключений

                                                                                                          +2

                                                                                                          Всё так. Вы описали CoW и оверкоммит. Оверкоммит в Linux можно отключить, но тогда перестанут работать приложения, которые рассчитывают на этот механизм и превентивно оттяпывают гигабайты памяти (собственно, что и вы написали в комментарии выше).

                                                                                              0
                                                                                              SmartGit
                                                                                                –1
                                                                                                Windows превентивно скидывает в своп данные, даже если свободной памяти полно

                                                                                                Линукс может так не делает, зато он любитель скинуть все в своп, когда активно используется дисковый кэш.
                                                                                                  –1
                                                                                                  Windows превентивно скидывает в своп данные, даже если свободной памяти полно. Linux же это начинает это судорожно делать, когда память исчерпана.

                                                                                                  В результате при тормозах Linux можно докинуть ОЗУ, а Windows тормозит всегда, но зато критическую ситуацию обрабатывает лучше. По моему опыту это сказывается на сборке больших проектов в фоне — на Windows становится невозможно пользоваться бразузером, потому что он постоянно своппится (хотя у него ещё много гигабайт свободной памяти), в то время как на Linux факт сборки проекта влияет только на температуру процессора (разумеется, это на хорошем железе, с большим количеством ОЗУ, SSD и т. д., на плохом железе страдания будут на любой ОС, просто с разным ароматами). И это на одном и том же железе. При этом у Linux есть хотя бы крутилка vm.swappiness, хоть и не идеальная, если не устраивает ситуация, а у Windows изменить поведение никак нельзя (совсем отключать своп тоже не лучшее решение, к тому же не отключается он полностью). При этом даже апргейд ПК не решит проблему, так как памяти изначально хватает. Разве что более быстрый SSD, чтобы Windows быстрее своппился, но SSD до RAM по скорости до сих пор далеко…
                                                                                                    +2
                                                                                                    При достаточном объёме памяти Windows не будет удалять из оперативной памяти те части, что скинула в своп. Так что тормозить там нечему.
                                                                                                    Процессу браузера можно повысить приоритет, либо понизить приоритет процессу сборки, и тогда сборка никак не сможет вытеснить память браузера из оперативной, для того и ввели уровни для кеша в ОП.
                                                                                                      +1
                                                                                                      Не знаю, о чем вы. Никогда не наблюдал на винде подобного поведения. Зато постоянно на серверах сталкиваюсь со свопом линукса. У меня делается бекап по расписанию. Дисковый кэш выталкивает в своп все приложения на серваке, которые ночью без трафика естественно. В итоге на утро приложение стоит колом, пока его первые «удачно» зашедшие пользователи не вытащат из свопа. Никакой swappiness это поведение не исправляет. Лечится только отключением свопа, что всегда и делаю на линуксовых серверах.
                                                                                                        +3
                                                                                                        У меня делается бекап по расписанию. Дисковый кэш выталкивает в своп все приложения на серваке.

                                                                                                        Что-то не так у вас с этим ночным бэкапом.


                                                                                                        Чуть менее чем весь приличный софт для бэкапа читает (и тем более пишет) данные не загрязняя pagecache: используется O_DIRECT и/или O_DSYNC для open(), posix_fadvise(POSIX_FADV_DONTNEED) перед close() и т.п.


                                                                                                        Если с упомянутым выше какие-то проблемы, либо используются какие-то собственные скрипты, то достаточно на время бэкапа подкручивать настройки /proc/sys/vm. Лучше посредством sysctl, например так:


                                                                                                        • vm.vfs_cache_pressure = 222
                                                                                                        • vm.dirty_background_ratio = 3
                                                                                                        • vm.dirty_ratio = 7
                                                                                                        • vm.dirty_writeback_centisecs = 1
                                                                                                        • vm.dirty_expire_centisecs = 10
                                                                                                        • vm.pagecache = 1
                                                                                                        • vm.swappiness = 0

                                                                                                        Соответственно, после завершения бэкапа вернуть исходные параметры (значение которых возможно тоже стоит продумать). Описание параметров легко гуглиться, вплоть до статей на Хабре.


                                                                                                        Если проблема сохраниться, то я подумаю о том чтобы съесть свою шляпу.

                                                                                                          0
                                                                                                          Это бэкап гитлаба. Он делается очень просто. В tar засовывает все репозитории и слепок базы и жмет gzip. vm.swappiness я подкручивал, нифига. Остальные параметры не трогал.

                                                                                                          Даже если это можно какими-то костылями и sysctl поправить, желания у меня особо нет это делать в любом случае. От свапа никакой пользы на серверах не вижу. Если не хватает памяти, то получаю честный OOM вместо тормозов, после чего иду и добавляю памяти виртуалке.
                                                                                                            +1
                                                                                                            От свапа никакой пользы на серверах не вижу. Если не хватает памяти, то получаю честный OOM вместо тормозов, после чего иду и добавляю памяти виртуалке.

                                                                                                            да все хуже на самом деле. Нет свопа — плохо, ОЗУ недоутилизирована (я выше писал почему). Есть своп — никаких гарантий того, что будет работать тоже нет. Более того — ООМ можно словить при штатной работе со свопом (!) даже при избытке свободной памяти. Короче, vm подсистема линукса — это реально кроличья нора


                                                                                                            Это бэкап гитлаба. Он делается очень просто.

                                                                                                            мы по-моему где-то обсуждали, что нужно декомпозировать гитлаб на отдельные сервисы (а не использовать омнибас) и снимать бекап другими способами ) например, на уровне LVM.

                                                                                                              0
                                                                                                              Это бэкап гитлаба. Он делается очень просто. В tar засовывает все репозитории и слепок базы и жмет gzip.

                                                                                                              Это стандартная багофича большинства java-приложений с таким функционалом. Если не лень, то закиньте им багрепорт (целевой файл для tar нужно открывать с опцией O_DSYNC).


                                                                                                              При этом, весьма вероятно, что у вас слишком большое значение vm.pagecache (процент памяти под кэширование) для ваших сценариев использования gitlab с учетом бэкапа. Поэтому за время бэкапа в кэш/память честно засасывается максимум читаемых tar-ом файлов, что выталкивает из памяти все холодные страницы.

                                                                                                        0
                                                                                                        SourceTree, Sublime Merge

                                                                                                        Гит гуи обычно встроены в ваши ИДЕ: студия, IDEA,… И лично мне они куда удобнее оказываются чем сторонний тул. Хотя бы тем, что я прямо из мержа могу сделать go to definition, у меня адекватная подсветка, и т.п.

                                                                                                        0
                                                                                                        GitKraken (платный), GitAhead (бесплатный)
                                                                                                          0
                                                                                                          Хм, вроде и фри-версия кракена норм, не?
                                                                                                            0
                                                                                                            Да, но новые версии не открывают приватные репозитории в бесплатной редакции
                                                                                                        0
                                                                                                        Без наезда, но что, в дестопном линуксе звук-то починили, или до сих пор заикается, как во времена первых пентиумов, чуть только дёрнется диск чуть больше среднего? А шрифты человеческие завезли? А умеющий в хинтинг рендерер к ним? (скопировать то сами шрифты из винды давно можно было, хотя лицензионно не труЪ). Или до сих пор постоянно наждачкой по глазам и ушам?
                                                                                                          +2

                                                                                                          Со звуком проблем как-то не замечал (а с профессиональным аудио дела ещё лучше). Да и по описанию, это точно не проигрыватель конкретный тупил? За человеческие шрифты не скажу, но хинтинг поддерживается практически повсюду (Qt и GTK, а на них большая часть гуёв).

                                                                                                            0
                                                                                                            По звуку, возможно, у меня устаревшая информация, но лет 8 назад это накрыло конкретно меня (когда я пытался поднять что-то вроде тв-приставки на амд с интегрированным видео), и тогда гуглинг закончился нахождением целой драмы между разработчиками ядра относительно планировщика. Не знаю, чем с тех пор закончилось.
                                                                                                            По шрифтам — у меня многие коллеги кодят под линуксом, ну и во время демонстраций экрана я вижу, что у них там происходит со шрифтами. Простите, но это кровь из глаз. Прыгающие кривые буквы, рандомный letter-spacing…
                                                                                                              +1

                                                                                                              Со звуком выглядит интересно. В своё время тема в линуксе была больная, но относительно давно уже приколов с ним не встречал. Быстрый взгляд подсказывает, что pulseaudio крутится с сильно повышенным приоритетом (nice -11) — возможно, этим решили периодические разрывы.


                                                                                                              Со шрифтами — спорить не буду. Только поинтересуюсь, в каких именно приложениях проблемы с ними. В этом плане есть ещё подарок в виде развлечения с настройкой всего интерфейса, включая шрифты и их рендер, что не принадлежит текущему рабочему столу, т.е. GTK приложений в KDE и Qt приложений практически во всём остальном. Это, увы, пока никуда не делось.

                                                                                                                0
                                                                                                                Хм, помню на Ubuntu 20.04 накатил DDE, так там pulseaudio сломался наглухо в итоге. А Deepin последней версии поставил — все работает. Хотя, может быть дело в остатках родного гнома и кеды, ну и обнова с 18.04 (после апдейта реально под убунтой ноут стал тупить сильнее, чем под виндой, при одном общем диске и прочем железе).
                                                                                                            +1
                                                                                                            А шрифты человеческие завезли?

                                                                                                            Да давно уже. А с 4K монитором рендеринг одинаковых шрифтов вообще неотличим.
                                                                                                            Правда, виндовые шрифты утащить все равно пришлось, иначе документы MS Office открываются в высшей степени коряво.

                                                                                                              0
                                                                                                              Вот извините меня, но субпиксельный рендеринг шрифтов в windows это непредсказуемая радуга. Т.е. в основном хорошо, даже лучше чем в linux, но местами боль и страдание. При том что в linux все шрифты рендерятся более-менее одинаково, и из коробки нормально. Кажется хуже всего в тех «универсальных» приложениях что с windows 8 пошли, но это не точно, редко на windows сижу.

                                                                                                              звук-то починили, или до сих пор заикается, как во времена первых пентиумов, чуть только дёрнется диск чуть больше среднего?
                                                                                                              Возможно Вы про звук при полной загрузке CPU фоновыми задачами? Меня до сих пор это удивляет, почему «десктопная» ОС лучше справляется с работой с фоновыми приложениями. Строго говоря при максимальной загрузке это не очень частое явление, и чаще подмораживается не столько звук сколько GUI. Но это мне напомнило первое восхищение linux: mplayer — когда перемотка занимает не то что меньше 500мс, а меньше 50. Мелочь — а приятно, а при виде обратного впечатления не лучшие.
                                                                                                                0
                                                                                                                Mplayer перематывает по ключевым кадрам. Давно любой плеер так умеет.
                                                                                                                  0
                                                                                                                  Вот не поленился и провел тесты, на тех видеоплеерах которые раньше использовал. Первый тест: зажимаем левую кнопку мыши на ползунке прогресса и водим влево-вправо. Второй тест: быстро нажимаем кнопки «перемотка вперед/назад».

                                                                                                                  1) Тестовый файл Samsung SUHD_Phantom_Flex.ts (Тестовое 4к видео от Samsung), HEVC.
                                                                                                                  MPC-HC: в обоих случаях перематывает не более 5 кадров в секунду с артефактами как будто идут потери данных. (При установке через k-lite standard я видел установленную галочку «перемотка по ключевым кадрам» и ничего не менял). 3/5
                                                                                                                  Windows Media Player: больше не проигрывает видео? Звук был, видео — нет. 0/5
                                                                                                                  PotPlayer: Tест первый не более 2-3-х кадров в секунду. Тест второй — более 5-10 кадров в секунду, точнее не засекал, по ощущением перематывает так быстро как я нажимаю на клавиши. 4+/5
                                                                                                                  GomPlayer: Tест первый 0.2-0.5 кадров в секунду, если быстро водить то вообще 0. Тест второй — 2-3 кадра в секунду. 3-/5
                                                                                                                  mplayer/mpv: перемотка как в MPC-HC или чуть быстрее, но с теми же артефактами 3/5

                                                                                                                  2) Перекодировал тестовое видео с х264 normal, уровнем квантования 15 (обычный фильм, высокий битрейт) и переделал тесты.
                                                                                                                  MPC-HC: артефакты пропали, скорость выросла до 5-10+ кадров в секунду. 5/5
                                                                                                                  PotPlayer: ничего не изменилось по сравнению с предыдущим видео. 4+/5
                                                                                                                  Windows Media Player: видео открыл, первый тест не воспроизводится, второй 1-2 кадра в секунду. 2/5
                                                                                                                  GomPlayer: удалил эту вирусню, ставить не буду, не учавствовал в тесте.
                                                                                                                  mplayer/mpv: артефакты пропали, скорость выросла до 5-10+ кадров в секунду. 5/5

                                                                                                                  Ну что я могу сказать. MPC-HC сейчас показал себя так же как mplayer, отлично! PotPlayer, не смотря на то что работает медленнее, смог проматывать HEVC видео без артефактов, вероятно за счет другого кодека и в результате промотка там приятнее пользователю, но таки медленее. В итоге так же быстро может только один из 4-х протестированных видеоплееров. А Вы говорите «любой». Суть не в том чтобы перематывал по ключевым кадрам, а в том чтобы делал это быстро. К тому же один из этих плееров еще и установил мне аваст. Так что вот еще один фатальный недостаток windows инфраструктуры: мусорное ПО, отсутствие адекватного пакетного менеджера (магазина приложений) и как следствие при установке не очевидно что будет установлено, и нет механизма надежного удаления.
                                                                                                                    +1
                                                                                                                    нет механизма надежного удаления.

                                                                                                                    Он есть в линуксе? Единственный механизм надежного удаление это приложения из microsoft store, которые ставятся в песочницу.
                                                                                                                      –1
                                                                                                                      Он есть в линуксе?
                                                                                                                      А чего нет? Нет удаления данных приложения? Или Вы о чем-то другом?
                                                                                                                        +1
                                                                                                                        Есть, но надежное оно в такой же степени, в какой надежные деинсталяторы у винды. Они удалят только то, о чем знают, что далеко не все, что мог создать не то что установщик, а еще само приложение. Как и на винде, все держится на порядочности автора инсталятора. Я точно так же могу остановить тонну мусора в линуксе и понаставить авастов, которые apt/yum/прочие удалить никак не смогут.
                                                                                                                          0
                                                                                                                          Само приложение запускается не от рута. Соответственно не может натаскать бинарников в систему. Есть конечно brew, pip, opt, но и это далеко не то же самое что добавить антивирус в систему без ведома пользователя.
                                                                                                                            +1
                                                                                                                            Зато пакетный менеджер работает от рута и мой пакет может наставить в систему все, что ему вздумается и куда ему вздумается.

                                                                                                                            А бинарники приложение может запросто натаскать и без рута. И добавить их в автозапуск через какой-нить bashrc, cron и еще наверняка миллион других вариантов.

                                                                                                                            Вам похоже кажется, что пакетный менеджер умнее, чем это в реальности. Нет, пакетный менеджер не знает ничего, что не лежит внутри deb/rpm пакета. Приложение, postinst\preinst скрипты могут насоздавать все что угодно и пакетный менеджер об этом узнать никак не сможет. Поэтому да, все держится на порядочности того, что писал пакет, чтобы при установке не ставилось ничего лишнего, а при удалении удалялось действительно все.
                                                                                                                              0
                                                                                                                              Ок. А как на практике часто это происходит? И как быстро такое приложение выпилят из репозитория? И когда подобное windows приложение выпилят для скачивания из интернета? Я не говорил что установка произвольных приложений в linux абсолютно безопасена, но по сравнению установкой произвольных приложений с интернета для windows разница огромна.
                                                                                                                                +3
                                                                                                                                Изначально речь была о «механизме надежного удаления», которого в линуксе, как мы выяснили, нет. Тут никаких отличий от винды. Далее мы уже отходим от этого вопроса.

                                                                                                                                Насколько в реальности это может проявиться это уже второй вопрос. Есть несколько вариантов. Если это встроенные репозитории, то там вряд ли такое будет, потому что, банально, мейнтейнеры дистриба вроде сами все эти пакеты собирают из сорцов. Они и выпилят, если что. Но это тоже самое, что рассуждать о приложениях от microsoft и о том, что ставится из windows update. Да или даже о вполне доверенных разработчиках вроде гугла, адоба и прочих. Там тоже таких вещей не будет.

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

                                                                                                                                Поэтому единственными преимуществами пакетного менеджера в линуксах всегда была централизованная система доставки обновлений и, отчасти, управление зависимостями. Во всем остальном теже яйца только сбоку. Реальный скачок вперед это, как я уже говорил, песочница по типу windows store и apple app store. Вот там у приложений чисто физически нет возможности что-то не туда поставить или оставить после себя мусор. Но это правда несет с собой много новых проблем. В большинстве для разработчиков самих приложений.
                                                                                                                                  0
                                                                                                                                  Изначально речь была о «механизме надежного удаления»
                                                                                                                                  Ок. Я изначально не слишком формально выразился, признаю. Давайте так: «достаточно надежного механизма удаления, достаточно в той мере на сколько это возможно реализовать, но не более чем если бы это мешало удобству использования» Если позвать юристов то они еще на пару страниц расширят каждое предложение, чтобы не было никаких возможностей двойной трактовки, с чем мы сейчас собственно и имеем дело.

                                                                                                                                  Продолжая по существу: с практической стороны «сторонних» в linux дистрибутиве существенно меньше, прямо единицы, по сравнению с windows.
                                                                                                                                  Поэтому единственными преимуществами пакетного менеджера в линуксах всегда была централизованная система доставки обновлений и, отчасти, управление зависимостями.
                                                                                                                                  Лично для меня нет, и я выбираю дистрибутив именно исходя из широкой поддержки софта в стандартном репозитории потому что почти ничего не устанавливаю из сторонних. Я не добавлю какой-то Пупкин-рра себе чтобы поставить tcpping. Добавить же google-ppa для установки, скажем android studio — другой вопрос. А в windows я был бы вынужден и то и то качать из интернета. Android Studio из такого же источника, а мелкие утилиты — увы, источники у них всегда сомнительны.

                                                                                                                                  Реальный скачок вперед это, как я уже говорил, песочница по типу windows store и apple app store. Вот там у приложений чисто физически нет возможности что-то не туда поставить или оставить после себя мусор.
                                                                                                                                  Т.е. из этих сторов нельзя установить браузер? Который может что-то скачать в систему?
                                                                                                                                  Кажется аналогом является snap песочница. Которая не работает правда, потому что все ее избегают.
                                                                                                                                    0
                                                                                                                                    Кажется аналогом является snap песочница. Которая не работает правда, потому что все ее избегают.

                                                                                                                                    Да.


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

                                                                                                                                    Значит, либо убунту, либо арч?
                                                                                                                                    Сам я за opensuse, но не навязываю )

                                                                                                                                      0
                                                                                                                                      Арч. Suse пока не пробовал, но музыка хороша :)
                                                                                                                                      0
                                                                                                                                      А в windows я был бы вынужден и то и то качать из интернета.

                                                                                                                                      > scoop search android-studio
                                                                                                                                      'extras' bucket:
                                                                                                                                          android-studio (4.0.1.0)
                                                                                                                                    0

                                                                                                                                    Эм… произвольно взятое приложение отсутствует в официальных репах линукса и обычно тащится с ppa или сайта разработчики. Или другой типичный пример — приложение в оф репе Дебиан/центос/убунту есть, но сильно устаревшей версии, а мейтейнерам пофиг. И приходится выкручиваться. И что там в стороннем репе — никаких гарантий, очевидно, нет. Так же как и при скачивании виндовых приложений не пойми откуда…

                                                                                                                                      0
                                                                                                                                      И что там в стороннем репе — никаких гарантий, очевидно, нет

                                                                                                                                      ну если учесть, что «сторонние» репозитории — это обычно авторов софта, то доверия им не меньше, чем дистрибутивным.

                                                                                                                                        0

                                                                                                                                        Подписанный deb из ppa и скачаный по ftp/http (без s) бинарь — это риски одного порядка, так и запишем…

                                                                                                                                          0

                                                                                                                                          А вот не надо перевирать мои слова ) между прочим многие виндовые приложения внутри цифровую подпись имеют ) если, конечно, вообще разработчик этим озаботился. И вместо простого «мы вас записали в книжечку» лучше было бы подробно и развёрнуто свою позицию описать по данному вопросу

                                                                                                                                            0

                                                                                                                                            А никто не перевирает.


                                                                                                                                            если, конечно, вообще разработчик этим озаботился

                                                                                                                                            Вот именно.
                                                                                                                                            Как вы себе представляете импорт ppa без подписи и импорта ключа?

                                                                                                                                              0
                                                                                                                                              Как вы себе представляете импорт ppa без подписи и импорта ключа?

                                                                                                                                              наличие ключа не убеждает меня, что там нет трояна, а только лишь в идентичности того, кто выложил софт. Это не избавляет от возможности атаки на цепочку поставки/сборки софта...

                                                                                                                                                0
                                                                                                                                                а только лишь в идентичности того, кто выложил софт.

                                                                                                                                                Разве там именной ключ?
                                                                                                                                                А не тот, что каждый проходимец может себе сгенерировать сам?
                                                                                                                                                  0

                                                                                                                                                  Но сразу отсекает массу векторов атаки на загружаемый софт.


                                                                                                                                                  Собственно, на чем тема себя полностью исчерпывает, так?

                                                                                                                                              –1
                                                                                                                                              Подписанный deb из ppa и скачаный по ftp/http (без s) бинарь — это риски одного порядка, так и запишем…


                                                                                                                                              Подпись там ничего не значит, кроме того, что вы доверяет некому сайту из интернета, где размещен PPA.

                                                                                                                                              Сомнительно, чтобы вы стали искать автора PPA и предъявить ему в судебном порядке за зловреда.

                                                                                                                                                +1

                                                                                                                                                Она говорит о том, что это именно те файлы, которые были скомпилированы подписавшим пакет.
                                                                                                                                                А не закладка от тащмаёра или Васи-кулхацкера, устроившего спуфинг у местечкового провайдера, а то и вообще подменившего точку доступа.

                                                                                                                                                  +1
                                                                                                                                                  Она говорит о том, что это именно те файлы, которые были скомпилированы подписавшим пакет.

                                                                                                                                                  при условии, что он компилировал ) А не взял откуда то еще. Или еще может быть, что ключ украли (тоже такое бывало в истории).


                                                                                                                                                  А не закладка от тащмаёра или Васи-кулхацкера, устроившего спуфинг у местечкового провайдера, а то и вообще подменившего точку доступа.

                                                                                                                                                  с этим — да, сложно не согласиться.

                                                                                                                                                    0
                                                                                                                                                    при условии, что он компилировал )

                                                                                                                                                    Да, спасибо за уточнение.

                                                                                                                                                    0
                                                                                                                                                    А не закладка от тащмаёра или Васи-кулхацкера, устроившего спуфинг у местечкового провайдера, а то и вообще подменившего точку доступа.


                                                                                                                                                    Что мешает кулхацкеру Васе сгенерировать подпись?
                                                                                                                                                    Вы подписи проверяете на принадлежность не кому попало, а именно что доверенным людям?
                                                                                                                                                    Хоть раз в жизни проверяли?
                                                                                                                                                    Не то что подпись есть вообще. А что подписавшим можно доверять?
                                                                                                                                                      0

                                                                                                                                                      Представляете, время от времени да.
                                                                                                                                                      Кроме того, вы упускаете маленький, но интересный факт: просто сгенерировать свою цифровую подпись недостаточно. Пакетный менеджер просто откажется устанавливать пакет, и даже обращаться к подмененному репозиторию.


                                                                                                                                                      А что подписавшим можно доверять?

                                                                                                                                                      Вы хотите приравнять доверие к подписавшему к доверию к первому попавшемуся скрипт-кидди?
                                                                                                                                                      Демагогию чует каджит.

                                                                                                                                                        +1
                                                                                                                                                        Представляете, время от времени да.

                                                                                                                                                        Как именно вы определяете что подписавший не кто попало?

                                                                                                                                                        Кроме того, вы упускаете маленький, но интересный факт: просто сгенерировать свою цифровую подпись недостаточно. Пакетный менеджер просто откажется устанавливать пакет, и даже обращаться к подмененному репозиторию.

                                                                                                                                                        Напоминаю вам:

                                                                                                                                                        Речь о PPA.
                                                                                                                                                        И сами эти репы и ключи с ними связанные изначально в системе отсутствуют.

                                                                                                                                                        То есть ключи для PPA ставите вы самостоятельно в явном виде.

                                                                                                                                                        Как вы определяете, что этим ключам можно доверять?

                                                                                                                                                        Где гарантия что вы поставили верные ключи?
                                                                                                                                                        Вы изначально доверяете PPA?

                                                                                                                                                        А что подписавшим можно доверять?


                                                                                                                                                        Вы хотите приравнять доверие к подписавшему к доверию к первому попавшемуся скрипт-кидди?
                                                                                                                                                        Демагогию чует каджит.


                                                                                                                                                        Отнюдь.
                                                                                                                                                        Скрипт-кидди тоже умеет подписывать это несложно.

                                                                                                                                                        Как вы проверяете истинность того, что подписавший не злодей?
                                                                                                                                                          0
                                                                                                                                                          То есть ключи для PPA ставите вы самостоятельно в явном виде.

                                                                                                                                                          Именно!


                                                                                                                                                          Как вы определяете, что этим ключам можно доверять?

                                                                                                                                                          Вы знаете, не всех еще забанили в гугле. PPA однозначно матчится с аккаунтом на launchpad, так? А значит и с пользовательским аккаунтом. аккаунтом, имеющим свою историю, ишью и коммиты (не всегда), кроме того этот аккаунт довольно просто связать с другими аккаунтами в Сети, кроме того вокруг каждого пакета и мейнтейнера существует, знаете ли, информационное поле, отличное от информационного вакуума.
                                                                                                                                                          И у скрипт-кидди из всего этого будет только свеженький аккаунт.


                                                                                                                                                          Сдается, вы то ли хотите выразить что-то неочевидное, то ли просто попутали ppa со свалкой пакетов в даркнете.

                                                                                                                                                            0
                                                                                                                                                            PPA однозначно матчится с аккаунтом на launchpad, так? А значит и с пользовательским аккаунтом. аккаунтом, имеющим ...

                                                                                                                                                            И кто всем этим занимается? Я думаю примерно столько же, сколько проверяют цифровую подпись exe файла. Хотя нет, намного меньше, ибо запуск установщика с повышенными правами показывает, какая компания его подписала.
                                                                                                                                                              0

                                                                                                                                                              И давно ли, например, лично вы с ходу различаете Microsoft Corp и Microsoft Corp.? Не говоря уже про более другие варианты.


                                                                                                                                                              В целом, мы уже далеко ушли в оффтоп, а сомнений в том, что автоматическая проверка подписей надежнее ее проверки глазами и лапками (а то и полного этой проверки отсутствия).
                                                                                                                                                              На чем этот предлагает и закончить.


                                                                                                                                                              UPD: Этот занимается. Благо что это нужно делать не на каждом файле, а все раз — дальше все делает автоматика.

                                                                                                                                                              0
                                                                                                                                                              Сдается, вы то ли хотите выразить что-то неочевидное, т