Lldb rpc server что это
Перейти к содержимому

Lldb rpc server что это

  • автор:

Руководство по устранению неполадок с ошибками удаленного вызова процедур (RPC)

При подключении к инструментарию управления Windows (WMI) или Microsoft SQL Server, во время сеанса удаленного вызова процедур (RPC) или при использовании различных оснасток консоли управления Майкрософт (MMC) может возникнуть ошибка «Сервер RPC недоступен». На следующем рисунке показан пример ошибки RPC.

Снимок экрана: сообщение об ошибке о том, что произошла следующая ошибка: сервер RPC недоступен.

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

  • Сопоставитель конечных точек (EPM) — служба, которая прослушивает на сервере и направляет клиентские приложения к серверным приложениям с помощью сведений о порте и UUID.
  • Tower: описывает протокол RPC, позволяющий клиенту и серверу согласовать подключение.
  • Этажи: слои содержимого в башне, содержащие определенные данные, такие как порты, IP-адреса и идентификаторы.
  • UUID: хорошо известный GUID, который идентифицирует приложение RPC. Во время устранения неполадок можно использовать UUID для отслеживания бесед RPC одного типа приложения (среди множества типов, которые происходят на одном компьютере одновременно).
  • Opnum: определяет функцию, которую клиент хочет, чтобы сервер выполнял. Это просто шестнадцатеричное число. Однако хороший сетевой анализатор преобразует функцию за вас. Если не удается определить функцию, обратитесь к поставщику приложения.
  • Порт: конечная точка связи для клиента или серверного приложения. EPM выделяет динамические порты (также известные как порты с высоким или временным) для использования клиентами и серверами.

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

Принцип работы подключения

На следующей схеме показано, как клиент подключается к серверу для выполнения удаленной операции. Клиент сначала связывается с TCP-портом 135 на сервере, а затем согласовывает с EPM динамический номер порта. После того как EPM назначит порт, клиент отключается, а затем использует динамический порт для подключения к серверу.

Схема, показывающая, как клиент устанавливает RPC-подключение к удаленному серверу.

Если брандмауэр разделяет клиент и сервер, брандмауэр должен разрешить обмен данными через порт 135 и динамические порты, назначенные EPM. Один из подходов к управлению этим сценарием заключается в указании портов или диапазонов портов для EPM. Дополнительные сведения см. в разделе Настройка выделения динамических портов RPC.

Некоторые брандмауэры также разрешают фильтрацию UUID. В этом сценарии, если запрос RPC использует порт 135 для пересечения брандмауэра и связи с EPM, брандмауэр замечает UUID, связанный с запросом. Когда EPM отвечает и отправляет динамический номер порта для этого UUID, брандмауэр также замечает номер порта. Затем брандмауэр разрешает операции привязки RPC для этого UUID и порта.

Настройка того, как RPC выделяет динамические порты

По умолчанию EPM выделяет динамические порты случайным образом из диапазона, настроенного для TCP и UDP (на основе реализации используемой операционной системы). Однако такой подход может оказаться нецелесообразной, особенно если клиент и сервер должны взаимодействовать через брандмауэр. Альтернативный способ — указать номер порта или диапазон номеров портов для EPM и открыть эти порты в брандмауэре.

Многие серверные приложения Windows, использующие RPC, предоставляют параметры (например, разделы реестра) для настройки разрешенных портов. Службы Windows используют подраздел HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\Internet для этой задачи.

При указании порта или диапазона портов используйте порты, которые находятся за пределами диапазона часто используемых портов. Полный список портов сервера, используемых в Windows и основных продуктах Майкрософт, см. в статье Общие сведения о службах и требования к сетевым портам для Windows. В этой статье также перечислены серверные приложения RPC и упоминаются, какие серверные приложения RPC можно настроить для использования пользовательских портов сервера за пределами возможностей среды выполнения RPC.

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

По умолчанию ключ Интернета не существует. Поэтому его нужно создать. Для ключа Интернета можно настроить следующие записи:

  • Порты REG_MULTI_SZ. Указывает порт или инклюзивный диапазон портов. Другие записи, которые отображаются в разделе Интернет , указывают, являются ли эти порты используемыми или исключенными из использования.
    • Диапазон значений: 065535
      Например, 5984 представляет один порт, а 5000–5100 — набор портов. Если какие-либо значения находятся за пределами диапазона от 0 до 65535 или если какое-либо значение невозможно интерпретировать, среда выполнения RPC обрабатывает всю конфигурацию как недопустимую.
    • Значения: Y или N (без учета регистра)
      • Y. Порты, перечисленные в записи Порты , представляют все порты на этом компьютере, доступные EPM.
      • N. Порты, перечисленные в записи Порты , представляют все порты, недоступные EPM.
      • Значения: Y или N (без учета регистра)
        • Y. Процессам, которые используют системную политику по умолчанию, назначаются порты из набора доступных в Интернете портов, как определено ранее.
        • N. Процессам, которые используют системную политику по умолчанию, назначаются порты из набора портов, доступных только для интрасети.

        Необходимо открыть диапазон портов, превышающий порт 5000. Номера портов, которые меньше 5000, могут уже использоваться другими приложениями, и они могут вызвать конфликты с вашими приложениями DCOM. Кроме того, предыдущий опыт показывает, что необходимо открыть не менее 100 портов. Это связано с тем, что несколько системных служб используют эти порты RPC для обмена данными друг с другом.

        Минимальное количество необходимых портов может отличаться от компьютера к компьютеру. Компьютеры, поддерживающие больший объем трафика, могут столкнуться с нехваткой портов, если динамические порты RPC ограничены. Примите это во внимание при ограничении диапазона портов.

        Если в конфигурации портов возникла ошибка или в пуле недостаточно портов, EPM не сможет зарегистрировать серверные приложения RPC (включая службы Windows, такие как Netlogon), которые используют динамические конечные точки. Если возникает ошибка конфигурации, код ошибки 87 (0x57) ERROR_INVALID_PARAMETER. Например, если портов недостаточно, netlogon регистрирует событие 5820:

        Имя журнала: System
        Источник: NETLOGON
        Идентификатор события: 5820
        Уровень: ошибка
        Ключевые слова: классический
        Описание:
        Службе Netlogon не удалось добавить интерфейс RPC AuthZ. Служба была завершена. Произошла следующая ошибка: «Неправильный параметр».

        Дополнительные сведения о том, как работает RPC, см. в разделе RPC через ИТ/Pro.

        Пример настраиваемой конфигурации порта

        В этом примере порты от 5000 до 6000 (включительно) были выбраны произвольно, чтобы продемонстрировать, как можно настроить новые записи реестра. В этом примере не рекомендуется использовать минимальное количество портов, необходимых любой конкретной системе. Для такой конфигурации требуется добавить интернет-ключ вHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpcи добавить следующие записи:

        Чтобы эта конфигурация вступила в силу, необходимо перезагрузить компьютер. После этого всем приложениям, используюющим RPC, назначаются динамические порты в диапазоне от 5000 до 6000 (включительно).

        Устранение ошибок RPC

        Программа

        PortQry предоставляет краткие сведения о том, как работает RPC, прежде чем углубляться в данные трассировки сети. Вы можете быстро определить, можно ли установить подключение, выполнив на клиентском компьютере следующую команду:

        Portqry.exe -n -e 135 

        В этой команде ServerIP> представляет IP-адрес сервера, с которым вы обращаетесь.

        Например, рассмотрим следующую команду:

        Portqry.exe -n 169.254.0.2 -e 135 

        Эта команда создает выходные данные, аналогичные следующему фрагменту:

        Querying target system called: 169.254.0.2 Attempting to resolve IP address to a name. IP address resolved to RPCServer.contoso.com querying. TCP port 135 (epmap service): LISTENING Using ephemeral source port Querying Endpoint Mapper Database. Server's response: UUID: d95afe70-a6d5-4259-822e-2c84da1ddb0d ncacn_ip_tcp:169.254.0.2[49664] 

        Изучив эти выходные данные, можно определить следующие сведения:

        • DNS работает правильно (он разрешил IP-адрес в полное доменное имя (FQDN)).
        • PortQry связался с портом RPC (135) на целевом компьютере.
        • EPM ответил на PortQry и назначил динамический порт 49664 (заключенный в квадратные скобки) для последующего взаимодействия.
        • PortQry повторно подключен к порту 49664.

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

        Netsh

        Средство Windows netsh можно использовать для одновременного сбора данных трассировки сети на клиенте и сервере.

        Чтобы собрать одновременные трассировки сети, откройте окно командной строки с повышенными привилегиями как на клиенте, так и на сервере.

        На клиенте выполните следующую команду:

        Netsh trace start scenario=netconnection capture=yes tracefile=c:\client_nettrace.etl maxsize=512 overwrite=yes report=yes 

        На сервере выполните следующую команду:

        Netsh trace start scenario=netconnection capture=yes tracefile=c:\server_nettrace.etl maxsize=512 overwrite=yes report=yes 

        Теперь попробуйте воспроизвести проблему на клиентском компьютере. Затем выполните следующую команду в командной строке в обоих окнах, чтобы остановить трассировку:

        Netsh trace stop 

        Откройте файлы трассировки в Microsoft Network Monitor 3.4 или анализаторе сообщений и отфильтруйте данные трассировки по IP-адресу сервера или клиентских компьютеров и TCP-порту 135. Например, используйте строки фильтра, такие как:

        • Ipv4.address==client-ip> и ipv4.address==server-ip> и tcp.port==135 В этой строке < фильтра client-ip> представляет IP-адрес клиента, а server-ip> — IP-адрес сервера.
        • tcp.port==135

        В отфильтрованных данных найдите запись EPM в столбце Протокол .

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

        Снимок экрана: монитор сети с выделенным динамическим портом.

        Перепроверяйте данные трассировки для динамического номера порта и IP-адреса сервера. Например, используйте строку фильтра, например tcp.port==dynamic-port-allocated> и ipv4.address=server-ip>. В этой строке фильтра dynamic-port-allocated> представляет динамический номер порта, < а server-ip> — IP-адрес сервера.

        Снимок экрана: сетевой монитор с примененным фильтром.

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

        Порт недоступен

        Наиболее распространенной причиной ошибок «сервер RPC недоступен» является то, что клиент не может подключиться к выделенному динамическому порту. Затем трассировка на стороне клиента будет отображать повторную передачу TCP SYN для динамического порта.

        Снимок экрана: монитор сети, на котором показаны повторные передачи TCP SYN.

        Это поведение указывает на то, что одно из следующих условий блокирует обмен данными:

        • Динамический диапазон портов заблокирован в брандмауэре в среде.
        • Среднее устройство удаляет пакеты.
        • Целевой сервер удаляет пакеты. Это условие может быть вызвано такими конфигурациями, как удаление пакетов платформы фильтрации Windows (ВПП), удаление пакетов сетевой карты (NIC) или изменение драйвера фильтрации .

        Сбор данных для более глубокого устранения неполадок

        Прежде чем обращаться в службу поддержки Майкрософт, мы рекомендуем собрать сведения о проблеме.

        Предварительные требования

        Эти процедуры используют набор инструментов TroubleShootingScript (TSS). Чтобы использовать этот набор инструментов, необходимо учитывать следующие предварительные требования:

        • Необходимо иметь разрешение уровня администратора на локальном компьютере.
        • При первом запуске набора инструментов необходимо принять лицензионное соглашение.
        • Убедитесь, что для политики выполнения скриптов Windows PowerShell для компьютера задано значение RemoteSigned . Дополнительные сведения о политике выполнения PowerShell см. в разделе about_Execution_Policies.

        Примечание. Если ваша среда не позволяет использовать RemoteSigned на уровне компьютера, ее можно временно задать на уровне процесса. Для этого выполните следующий командлет в окне командной строки PowerShell с повышенными привилегиями перед запуском средства:

        PS C:\> Set-ExecutionPolicy -scope Process -ExecutionPolicy RemoteSigned 

        Чтобы убедиться, что изменение вступает в силу, выполните PS C:\> Get-ExecutionPolicy -List командлет . Разрешения уровня процесса применяются только к текущему сеансу PowerShell. После закрытия окна PowerShell политика выполнения возвращается к исходному параметру.

        Сбор ключевой информации перед обращением в службу поддержки Майкрософт

        1. Скачайте TSS на всех узлах и разверните его в папку C:\tss .
        2. Откройте папку C:\tss в окне командной строки PowerShell с повышенными привилегиями.
        3. Запустите трассировку на проблемном компьютере, выполнив следующий командлет:
        TSS.ps1 -Scenario NET_RPC 

        Статический и динамический массив (Си)

        Пожалуйста, помогите с Си! Статический и динамический массив (Си) Напишите программу, которая: • заполнить статический массив tabS из 100 элементов случайными числами от 1 до 100 (случайная функция), • подсчитает, сколько из них из заданного диапазона , а затем создаст массив динамический соответствующего размера и заполнить его этими числами (функция nowatabDyn с параметрами: указатель на статический массив tabS, его номер n элементов, диапазоны a и b, указатель на количество элементов динамического массива m; функция возвращает указатель на динамический массив).

        #include int main() < int *losowe; int list[99]; int n; int i; int a; int b; printf("количество чисел в массивe: "); scanf("%i", &n); srand(time(NULL)); for (int i = 0; i < n; ++i) < losowe[i] = rand() % 100; printf("%d ", losowe[i]); printf("\n"); >printf("введите диапазон :\n"); scanf("%d/%d", &a, &b); for(int i=0; losowe[i]; ++i)< if(a=i) < printf("[%d]\n", losowe[i]); >> return 0; > 

        Подскажите это правильное решение или я сделал не то что требовалось?

        Отслеживать

        задан 21 янв 2023 в 21:04

        11 3 3 бронзовых знака

        Не хотелось бы вас огорчать, но не будет это работать совсем. У вас есть указатель losowe , который указывает в неизвестное, случайное место в памяти. И вы туда записываете свои данные. Программа, скорее всего, мгновенно рухнет. Сначала память надо выделить (см. malloc ).

        21 янв 2023 в 21:07

        ну сначала напишите этот статический массив int tabS [ 100 ] ; , а там глядишь и дело пойдёт.

        What is LLDB RPC Server ? When does it crash in Xcode? Why it crashes?

        enter image description here

        I followed the steps from this answer stackoverflow.com/a/33812614/618994, except the first step and it worked for me. I believe Step 4 & 5 would be suffice.

        Jun 28, 2017 at 11:43

        16 Answers 16

        In my case the LLDB RPC server consistently crashed every time I ran my app, even after cleaning the build folder and removing and reinstalling Xcode (Version 8.3.3 (8E3004b)) completely.

        It turned out that apparently LLDB took objection to a breakpoint I had set, just moving this breakpoint by a line resolved the issue.

        answered Jul 26, 2017 at 14:00
        1,347 2 2 gold badges 16 16 silver badges 38 38 bronze badges

        I had the exact same issue. I was receiving The LLDB RPC server has crashed . Not sure which breakpoint was causing this error, but I just turned every break point off.

        Jul 6, 2018 at 1:03
        Actually, moving the breakpoint affect nothing on the crash. It still crashing.
        Sep 6, 2018 at 7:22

        Though removing the breakpoint removed the crash for me, I’d still like to know why. I needed that breakpoint; removing it really just got me back to square one. Moving it a line didn’t seem to work either.

        Apr 26, 2019 at 16:42
        I don’t have any breakpoint. Still I’m facing the issue. Can anybody help me to fix this problem?
        Jul 3, 2019 at 10:16

        Yeah me too. I was getting the same issue in XCode 11.0. I did clean build removed derived data but nothing worked. Then I just removed few of the breakpoints and it worked. It’s really strange

        Oct 17, 2019 at 13:27

        In my case: I update to Xcode Version 9.3 (9E145) recently and Xcode execute to the line with breakpoint then I type «po XXX» commend it will show the same message. I try to delete following files

        ~/Library/Preferences/com.apple.dt.Xcode.plist ~/Library/Caches/com.apple.dt.Xcode 

        and it solved. not knowing exactly why but worth to try.

        remember to backup those files in order to recovered in case any unexpected situation occur.

        20.9k 39 39 gold badges 144 144 silver badges 264 264 bronze badges
        answered Apr 10, 2018 at 8:01
        andrew54068 andrew54068
        1,356 1 1 gold badge 14 14 silver badges 29 29 bronze badges

        Keep in mind that ~/Library/Preferences/com.apple.dt.Xcode.plist will remove your preference from Xcode, e.g. editor color scheme

        Mar 28, 2020 at 23:26
        deleted these files but it didn’t help. These files are recreated on xcode launch
        Oct 28, 2021 at 7:08

        Make sure you are not running the app in release mode, if it is in release mode then change it to debug.

        4,174 37 37 silver badges 54 54 bronze badges
        answered Oct 18, 2018 at 9:21
        4,879 2 2 gold badges 30 30 silver badges 39 39 bronze badges
        This it not worked for me, I use Xcode 11.3 and set debug mode is still crash.
        Dec 31, 2019 at 5:55
        why is it accepted as an answer?
        Oct 28, 2021 at 7:02

        I had the same problem and fixed it after I deleted some of the breakpoints. Not sure why this happen at all, but at least you can remove breakpoints and use some NSLog() or print() if you are in Swift and debug with the help of those. Good luck!

        answered Aug 18, 2017 at 9:34
        Boris Nikolic Boris Nikolic
        756 14 14 silver badges 24 24 bronze badges

        Clearly a lot of different causes for this, but for me I was using a DispatchGroup to keep track of multiple async tasks.

        I had forgotten to call dispatchGroup.enter() before one of the async tasks (but still calling dispatchGroup.leave() when it finished).

        Adding this in fixed the crash for me.

        answered Jan 21, 2019 at 21:50
        81 3 3 bronze badges

        If workspace has lots of breakpoint then it will happen, So try to remove all the break point and see the magic.

        answered Aug 20, 2020 at 13:03
        73 1 1 silver badge 7 7 bronze badges

        For me just restarting the simulator worked.

        answered Jan 27, 2021 at 9:24
        Nikita Sharma Sahu Nikita Sharma Sahu
        337 3 3 silver badges 12 12 bronze badges

        I found the solution to this issue. I don’t know is this correct or not, but this solution is work for me. what I did is Actually I connected two devices to my mac mini, in one device I run the app and get the above error in my console. Then I removed one device and tried, this time I didn’t get any error in my console its worked fine. I think you guys won’t believe this, I tried Almost 3 time with two devices and one device its only work for one device

        answered Apr 23, 2020 at 13:35
        53 3 3 bronze badges
        This worked for me, and I think it is really unfair that you got downvoted.
        May 14, 2020 at 13:36
        doesn’t work for me
        Oct 28, 2021 at 7:03

        This error occurs for different reasons and the main one is when you add a watch app later to your project where Xcode adds an extra build target to scheme. click on scheme section in right side of «run/stop buttons» then hit on edit scheme, hit on Build section which is the first one, There you see 2 targets one has 2 sub targets which includes watch app and watch extension in it and the other one has no sub targets and it is a watch app target.

        Solution is simple delete the watch app target which has no sub targets and run the app again.

        answered May 10, 2020 at 8:57
        Developersian Developersian
        151 2 2 silver badges 7 7 bronze badges

        For me, I had an expression in my watch list that it was barfing on. When looking at the crash logs in Console, there was something like this on the reported crashed thread which gave it away:

        lldb_private::EvaluateExpressionOptions const&, std::__1::basic_string, std::__1::allocator >*, lldb_private::ValueObject*) + 619 17 com.apple.LLDB.framework 0x0000000102855f18 lldb::SBFrame::**EvaluateExpression**(char const*, lldb::SBExpressionOptions const&) + 696 18 lldb-rpc-server 0x00000001025e72e9 rpc_server::_ZN4lldb7SBFrame18EvaluateExpressionEPKcRKNS_19SBExpressionOptionsE::HandleRPCCall(rpc_common::Connection&, rpc_common::RPCStream&, rpc_common::RPCStream&) + 169 19 lldb-rpc-server 0x00000001025f8ce1 rpc_common::Connection::PrivateHandleRPCPacket(rpc_common::RPCPacket&, rpc_common::RPCPacket&, bool&) + 1553 20 lldb-rpc-server 0x00000001025fc36d Packets::ProcessPackets() + 1005 21 lldb-rpc-server 0x00000001025fbe96 Packets::ReadThread() + 214 22 lldb-rpc-server 0x00000001025fbdb9 Packets::RunReadThread(void*) + 9 23 libsystem_pthread.dylib 0x00007fff6a586109 _pthread_start + 148 24 libsystem_pthread.dylib 0x00007fff6a581b8b thread_start + 15 

        FreeBSD

        FreeBSD — свободная операционная система семейства Unix, потомок AT&T Unix по линии BSD, созданной в университете Беркли. FreeBSD работает на PC-совместимых системах семейства Intel x86 (IA-32) (включая Microsoft Xbox), а также на DEC Alpha, Sun UltraSPARC, IA-64, AMD64, PowerPC, NEC PC-98, ARM. Готовится поддержка архитектуры MIPS.

        Эмблема проекта FreeBSD

        FreeBSD разрабатывается как целостная операционная система. Исходный код ядра, драйверов устройств и базовых пользовательских программ (т. н. userland), таких как командные оболочки и т. п., содержится в одном дереве системы управления версиями (CVS до 31 мая 2008, сейчас SVN). Это отличает FreeBSD от GNU/Linux — другой свободной UNIX-подобной операционной системы — в которой ядро разрабатывается одной группой разработчиков, а набор пользовательских программ — другими (например, проект GNU), а многочисленные группы собирают это все в единое целое и выпускают в виде различных дистрибутивов GNU/Linux.

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

        2023: FreeBSD 13.2

        11 апреля 2023 года стало известно о том, что после 11 месяцев разработки опубликован релиз FreeBSD 13.2. Установочные образы сформированы для архитектур amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 и riscv64. Дополнительно подготовлены сборки для систем виртуализации (QCOW2, VHD, VMDK, raw) и облачных окружений Amazon EC2 , Google Compute Engine и Vagrant.

        FreeBSD 13.2

        Как сообщалось ключевые изменения включают следующее:

        • Реализована возможность создания снапшотов файловых систем UFS и FFS, на которых включено журналирование (soft updates). Также добавлена поддержка фонового сохранения дампов (запуск dump с флагом «-L») с содержимым примонтированных файловых систем UFS при включённом журналировании. Из возможностей, которые недоступны при использовании журналирования, остаётся фоновое выполнение проверки целостности при помощи утилиты fsck.
        • В основной состав принят работающий на уровне ядра драйвер wg с реализацией сетевого интерфейса для VPN WireGuard. Для использования необходимых драйверу криптографическихалгоритмов было произведено расширение API криптоподсистемы ядра FreeBSD, в который была добавлена обвязка, позволяющая использовать через стандартный крипто-API не поддерживаемые во FreeBSD алгоритмы из библиотеки libsodium. В процессе разработки также была проведена оптимизация для равномерной балансировки привязки задач шифрования и расшифровки пакетов к ядрамCPU, что позволило снизить накладные расходы при обработке пакетов WireGuard. Прошлая попытка включения WireGuard в состав FreeBSD была предпринята в 2020 году, но завершилась скандалом, в результате которого уже добавленный код был удалён из-за низкого качества, безалаберной работы с буферами, использования заглушек вместо проверок, неполной реализация протокола и нарушения лицензии GPL. Обновленная реализация , совместно подготовлена основными командами разработчиков FreeBSD и WireGuard при участии Джейсона Доненфилда (Jason A. Donenfeld), автора VPN WireGuard, и Джона Болдуина (John H. Baldwin), известного разработчика FreeBSD. Перед принятием кода при поддержке организации FreeBSD Foundation было проведено полное рецензирование изменений.
        • Реализована поддержка коммуникационного протокола Netlink (RFC 3549), применяемого в Linux для организации взаимодействия ядра с процессами в пространстве пользователя. Проект ограничивается поддержкой семейства операций NETLINK_ROUTE для управления состоянием сетевой подсистемы в ядре, что позволяет использовать во FreeBSD Linux-утилиту ip из пакета iproute2 для управления сетевыми интерфейсами, установки IP-адресов, настройки маршрутизации и манипуляции объектами nexthop, хранящими данные о состоянии, используемом для передачи пакета в желаемую точку назначения.
        • Для всех исполняемых файлов базовой системы на 64-разрядных платформах включена по умолчанию рандомизация адресного пространства (ASLR, Address Space Layout Randomization). Для выборочного отключения ASLR можно использовать команды «proccontrol -m aslr -s disable» или «elfctl -e +noaslr».
        • В ipfw для поиска MAC-адресов задействованы базисные таблицы (Radix table), что позволяет создавать таблицы с MAC-адресами и использовать их для фильтрации трафика.
        • Добавлены и доступны для загрузки через loader.conf модули ядра dpdk_lpm4 и dpdk_lpm6 с реализацией алгоритма поиска маршрутов DIR-24-8 для IPv4/IPv6, который позволяет оптимизировать функции маршрутизации для хостов с очень большими таблицами маршрутизации (в тестах наблюдается прирост скорости на уровне 25%). Для настройки модулей может использоваться штатная утилита route (добавлена опция FIB_ALGO).
        • Реализация файловой системы ZFS обновлена до выпуска OpenZFS 2.1.9. В стартовом скрипте zfskeys обеспечена автоматическая загрузка ключей, хранимых в ФС ZFS. Добавлен RC-скрипт zpoolreguid для назначения идентификатора GUID к одному или нескольким zpool (например, полезно для окружений виртуализации с общими данными).
        • В гипервизоре Bhyve и модуле vmm реализована поддержка прикрепления к гостевой системе более 15 виртуальных CPU (регулируется через sysctl hw.vmm.maxcpu). В утилите bhyve реализована эмуляция устройства virtio-input, при помощи которого можно подставлять события ввода с клавиатуры и мыши в гостевую систему.
        • В KTLS, реализацию протокола TLS, работающую на уровне ядра FreeBSD, добавлена поддержка аппаратного ускорения TLS 1.3 через вынос на сторону сетевой карты некоторых операций, связанных с обработкой зашифрованных входящих пакетов. Ранее подобная возможность была доступна для TLS 1.1 и TLS 1.2.
        • В стартовом скрипте growfs при расширении корневой ФС обеспечено добавление раздела подкачки, если такой раздел изначально отсутствовал (например, полезно при установке на SD-карту готового системного образа). Для управления размером подкачки в rc.conf добавлен параметр growfs_swap_size.
        • В стартовом скрипте hostid обеспечена генерация случайного UUID в случае отсутствия файла /etc/hostid и невозможности получения UUID от аппаратного обеспечения. Также добавлен файл /etc/machine-id с компактным представлением идентификатора хоста (без дефисов).
        • В rc.conf добавлены переменные defaultrouter_fibN и ipv6_defaultrouter_fibN, через которые можно добавить маршруты по умолчанию в FIB-таблицы, отличные от первичной.
        • В библиотеку libmd добавлена поддержка хэшей SHA-512/224.
        • В библиотеке pthread реализована поддержка семантики функций, используемых в Linux.
        • В kdump добавлена поддержка декодирования системных вызовов Linux. В kdump и sysdecode добавлена поддержка трассировки системных вызовов в стиле Linux.
        • В утилите killall появилась возможность отправки сигнала процессам, привязанным к определённому терминалу (например, «killall -t pts/1»).
        • Добавлена утилита nproc для вывода числа доступных текущему процессу вычислительных блоков.
        • В утилиту pciconf добавлена поддержка декодирования параметров ACS (Access Control Services).
        • В ядро добавлена настройка SPLIT_KERNEL_DEBUG, позволяющая сохранять в отдельные файлы отладочную информацию для ядра и модулей ядра.
        • В ABI linux почти завершена реализации поддержки механизма vDSO (virtual dynamic shared objects), предоставляющего ограниченный набор системных вызовов, доступный в пространстве пользователя без переключения контекста. ABI linux на системах ARM64 доведён до паритета с реализацией для архитектуры AMD64.
        • Оптимизирована поддержка оборудования. Добавлена поддержка мониторинга производительности (hwpmc) для CPU Intel Alder Lake.
        • Обновлён драйвер iwlwifi для беспроводных карт Intel c поддержкой чипов и стандарта 802.11ac. Добавлен драйвер rtw88 для беспроводных карт Realtek с интерфейсом PCI. Расширены возможности прослойки linuxkpi для использования во FreeBSD драйверов Linux.
        • Библиотека OpenSSL обновлена до версии 1.1.1t, LLVM/Сlang до версии 14.0.5, а SSH-сервер и клиент обновлены до OpenSSH 9.2p1 (в прошлой версии использовался OpenSSH 8.8p1). Также обновлены версии bc 6.2.4, expat 2.5.0, file 5.43, less 608, libarchive 3.6.2, sendmail 8.17.1, sqlite 3.40.1, unbound 1.17.1, zlib 1.2.13.

        Дополнительно объявлено о переводе в разряд устаревших и удалении начиная с ветки FreeBSD 14.0 одноразовых паролей OPIE, драйверов ce и cp, драйверов для карт с интерфейсом ISA, утилит mergemaster и minigzip, компонентов ATM в netgraph (NgATM), фонового процесса telnetd и класса VINUM в geom [1] .

        2022

        Добавление поддержки протокола Netlink

        В кодовую базу FreeBSD принята реализация коммуникационного протокола Netlink (RFC 3549), применяемого в Linux для организации взаимодействия ядра с процессами в пространстве пользователя. Проект ограничивается поддержкой семейства операций NETLINK_ROUTE для управления состоянием сетевой подсистемы в ядре. Об этом стало известно 5 октября 2022 года.

        В текущем виде уровень поддержки Netlink позволяет использовать во FreeBSD Linux-утилиту ip из пакета iproute2 для управления сетевыми интерфейсами, установки IP-адресов, настройки маршрутизации и манипуляции объектами nexthop, хранящими данные о состоянии, используемом для передачи пакета в желаемую точку назначения. После незначительного изменения заголовочных файлов возможно использование Netlink в пакете маршрутизации Bird. Чем запомнился 2023 год. Главные итоги и тенденции. Мнения ключевых игроков ИТ-рынка

        Реализация Netlink для FreeBSD оформлена в виде загружаемого модуля ядра, по возможности не затрагивающего другие подсистемы ядра и создающего отдельные очереди задач (tasqueue) для обработки поступающих по протоколу сообщений и выполнения операций в асинхронном режиме. В качестве причины портирования Netlink называется отсутствие стандартного механизма для взаимодействия с подсистемами ядра, что приводит к тому, что разные подсистемы и драйверы изобретают собственные протоколы.

        Netlink предлагает унифицированный коммуникационный слой и расширяемый формат сообщений, который может выступать в роли посредника, автоматически объединяющего в одном запросе разрозненные данные от разных источников. Например, на Netlink могут быть переведены такие подсистемы FreeBSD, как devd, jail и pfilctl, ныне использующие собственные вызовы ioctl, что значительно упростит создание приложений для работы с данными подсистемами. Кроме того, использование Netlink для изменения объектов и групп nexthop в стеке маршрутизации позволит более эффективно взаимодействовать с процессами маршрутизации в пространстве пользователя.

        Реализованные в настоящее время возможности:

        • Получение информации о маршрутах, объектах и группах nexthops, сетевых интерфейсах, адресах и соседних хостах (arp/ndp).
        • Формирование уведомлений о появлении и отключении сетевых интерфейсов, установке и удалении адресов, добавлении и удалении маршрутов.
        • Добавление и удаление маршрутов, объектов и групп nexthops, шлюзов, сетевых интерфейсов.
        • Интеграция с интерфейсом Rtsock для управления таблицей маршрутизации [2] .

        FreeBSD 13.1

        17 мая 2021 года стало известно о том, что после года разработки опубликован релиз FreeBSD 13.1. Установочные образы доступны для архитектур amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 и riscv64. Дополнительно подготовлены сборки для систем виртуализации (QCOW2, VHD, VMDK, raw) и облачных окружений Amazon EC2, Google Compute Engine и Vagrant.

        Image:FreeBSD13123.png

        FreeBSD 13.1

        Как сообщалось, в FreeBSD 13.1:

        • Предложен драйвер iwlwifi для беспроводных карт Intel c поддержкой чипов и стандарта 802.11ac. Драйвер основан на Linux-драйвере и коде из Linux-подсистемы net80211, работа которых во FreeBSD обеспечивается при помощи прослойки linuxkpi.
        • Реализация файловой системы ZFS обновлена до выпуска OpenZFS 2.1 с поддержкой технологии dRAID (Distributed Spare RAID) и значительными оптимизациями производительности.
        • Добавлен rc-скрипт zfskeys, при помощи которого можно на этапе загрузки организовать автоматическую расшифровку зашифрованных ZFS-разделов.
        • В сетевом стеке изменено поведение для IPv4-адресов с нулевым последним числом (x.x.x.0), который теперь можно использовать в качестве хоста и к нему по умолчанию не применяется отправка в широковещательном режиме. Старое поведение можно вернуть при помощи sysctl net.inet.ip.broadcast_lowest.
        • Для 64-разрядных архитектур включена по умолчанию сборка базовой системы с использованием режима PIE (Position Independent Executable). Для отключения предусмотрена настройка WITHOUT_PIE.
        • Добавлена возможность вызова chroot непривилегированным процессом, для которого выставлен флаг NO_NEW_PRIVS. Режим включается при помощи sysctl security.bsd.unprivileged_chroot. В утилиту chroot добавлена опция «-n», выставляющая для процесса флаг NO_NEW_PRIVS перед его изоляцией.
        • В инсталлятор bsdinstall добавлен режим автоматизированного редактирования дисковых разделов, позволяющий для разных имён дисков подключать сценарии разбивки, работающие без участия пользователя. Предложенная возможность оптимизирует создание полностью автоматически работающих установочных носителей для систем и виртуальных машин с разными дисками.
        • Изменена поддержка загрузки на системах с UEFI. В загрузчике включена автоматическая настройка параметра copy_staging в зависимости от возможностей загружаемого ядра.
        • Проведена работа по оптимизации производительности загрузчика, nvme, rtsold, инициализации генератора псевдослучайных чисел и калибровки таймера, что привело к сокращению времени загрузки.
        • Добавлена поддержка работы NFS поверх шифрованного канала связи на базе TLS 1.3. Реализация использует предоставляемый ядром стек TLS, позволяющий задействовать средства аппаратного ускорения. Сборка процессов rpc.tlsclntd и rpc.tlsservd с реализацией клиента и сервера NFS-over-TLS, по умолчанию включена для архитектур amd64 и arm64.
        • Для NFSv4.1 и 4.2 реализована опция монтирования nconnect, определяющая число установленных с сервером TCP-соединений. Первое соединение используется для мелких RPC сообщений, а остальные для балансировки трафика с передаваемыми данными.
        • Для сервера NFS добавлен sysctl vfs.nfsd.srvmaxio, позволяющий изменить максимальный размер блока ввода/вывода (по умолчанию 128Kb).
        • Оптимизирована поддержка оборудования. В драйвер igc добавлена поддержка Ethernet-контроллера Intel I225.
        • Оптимизирована поддержка Big-endian систем. Добавлен драйвер mgb для Ethernet-контроллера Microchip devices LAN7430 PCIe Gigabit Ethernet
        • Драйвер ice, используемый для Ethernet-контроллеров Intel E800, обновлён до версии 1.34.2-k, в которой появилась поддержка отражения в системном логе событий прошивки и добавлена начальная реализация расширений протокола DCB (Data center bridging).
        • В образах для Amazon EC2 по умолчанию включена загрузка с использованием UEFI вместо BIOS.
        • В гипервизоре bhyve обновлены компоненты для эмуляции накопителей NVMe, в которых обеспечена поддержка спецификации NVMe 1.4. Решены проблемы с NVMe iovec при интенсивном вводе/выводе.
        • Библиотека CAM переведена на использование вызова realpath при обработке имён устройств, что позволяет использовать символические ссылки на устройства в утилитах camcontrol и smartctl. В camcontrol решены проблемы с загрузкой прошивок на устройства.
        • Прекращена сборка утилиты svnlite в базовой системе.
        • Добавлены Linux-варианты утилит для вычисления контрольных сумм (md5sum, sha1sum и т.п.) которые реализованы путём вызова имеющихся BSD-утилит (md5, sha1 и т.п.) с опцией «-r».
        • В утилиту mpsutil добавлена поддержка управления NCQ и обеспечен показ информации об адаптере.
        • В /etc/defaults/rc.conf по умолчанию включено применение опции «-i» при вызове процессов rtsol и rtsold, отвечающих за отправку сообщений ICMPv6 RS (Router Solicitation). Указанная опция отключает случайную задержку перед отправкой сообщения.
        • Для архитектур riscv64 и riscv64sf включена сборка библиотек с ASAN (address sanitizer), UBSAN (Undefined Behavior Sanitizer), OpenMP и OFED (Open Fabrics Enterprise Distribution).
        • Решены проблемы с определением поддерживаемых процессорами ARMv7 и ARM64 средств аппаратного ускорения криптографических операций, что позволило оптимизировать работу алгоритмов aes-256-gcm и sha256 на системах ARM.
        • Для архитектуры powerpc в основной состав включён отладчик LLDB, развиваемый проектом LLVM.
        • Библиотека OpenSSL обновлена до версии 1.1.1o и расширена применением ассемблерных оптимизаций для архитектур powerpc, powerpc64 и powerpc64le.
        • SSH-сервер и клиент обновлены до OpenSSH 8.8p1 с отключением поддержки цифровых подписей rsa-sha и поддержкой двухфакторной аутентификации при помощи устройств на базе протокола FIDO/U2F. Для взаимодействия с устройствами FIDO/U2F добавлены типы ключей «ecdsa-sk» и «ed25519-sk», в которых используются алгоритмыцифровой подписи ECDSA и Ed25519, в сочетании с хэшем SHA-256.
        • Обновлены версии входящих в базовую систему сторонних приложений: awk 20210215 (с патчами, отключающими использование локали для диапазонов и оптимизирующих совместимость с gawk и mawk), zlib 1.2.12, libarchive 3.6.0 [3] .

        Image:FreeBSD_13.1.png

        FreeBSD 13.1

        2020: Новый кодекс поведения разработчиков

        9 июня 2020 года проект FreeBSD объявил о введении нового кодекса поведения (Code of Conduct). В его основу лёг кодекс.

        Прежний кодекс назывался Geek Feminism, в нём большой акцент делался на проблемах половой идентичности, гендерной дискриминации и т.п. Среди разработчиков FreeBSD были проведён опрос (итоги опубликованы в июне 2020 года), в рамках которого 35% респондентов проголосовали против Geek Feminism, 30% — «за», а 34% опрошенных воздержались. Тогда разработчикам предложили выбрать один из следующих кодексов:

        Проект FreeBSD принял новый кодекс поведения разработчиков

        • Geek Feminism.
        • Производный от кодекса LLVM.
        • Производный от кодекса сообщества Golang.

        Лишь 4% проголосовали за старый кодекс. 33% выбрали Go Golang, а 63% — LLVM. Таким образом, большинство участников опроса выбрали вариант от проекта LLVM, в котором приветствуются:

        • дружелюбие и терпимость;
        • доброжелательность;
        • внимательность;
        • уважительное отношение;
        • аккуратность в высказываниях;
        • желание вникнуть в детали происходящего.

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

        Кодекс LLVM считается достаточно конкретным, в нем нет «воды» и лишних рассуждений. Производный от кодекса сообщества Golang почти в два раза длиннее по сравнению с LLVM и чуть хуже структурирован.

        Результаты предыдущего опроса разработчиков были следующими: 94% разработчиков считали важным поддержание уважительной манеры общения, 89% считали, что FreeBSD должен приветствовать участие в проекте людей любого мировоззрения (2% против), 74% считали необходимым удалять из сообщества токсичных людей. [4]

        2016

        FreeBSD 11.0 beta 2

        25 июля 2016 года стал доступен второй бета-выпуск FreeBSD 11.0.

        Выпуск FreeBSD 11.0-BETA2 подготовлен для архитектуры amd64, i386, powerpc, powerpc64, sparc64 и armv6 (BANANAPI, BEAGLEBONE, CUBIEBOARD, CUBIEBOARD2, CUBOX-HUMMINGBOARD, GUMSTIX, RPI-B, RPI2, PANDABOARD, WANDBOARD) [5] .

        Дополнительно подготовлены образы для систем виртуализации (QCOW2, VHD, VMDK, raw) и облачных окружений Amazon EC2. Релиз FreeBSD 11.0 запланирован на 2 сентября 2016 года.

        Во втором бета-выпуске, в утилите freebsd-update появилась возможность установки наборов дистрибутива (‘*-dbg’), внесены исправления в сборочный инструментарий, для архитектуры powerpc/powerpc64 и arm/armv6 отключены WITNESS и INVARIANTS, удалена конфигурация ядра GENERIC-NODEBUG, проведена работа над ошибками.

        Microsoft выпустила свой дистрибутив FreeBSD

        В июне 2016 года Microsoft выпустила собственный дистрибутив открытой операционной системы FreeBSD. Таким образом, американская корпорация продолжает развивать проекты в области Open Source. Подробнее здесь.

        Выход FreeBSD 10.3

        4 апреля 2016 года сообщество FreeBSD сообщило о выпуске релиза 10.3 [6] .

        Подготовлены образы для систем виртуализации (QCOW2, VHD, VMDK, raw) и облачных окружений Amazon EC2, Google Compute Engine и Hashicorp/Atlas Vagrant. Среди значимых изменений:

        • улучшение работы на системах UEFI,
        • возможность загрузки на корневых разделах с ZFS,
        • функция смены корневой ФС (reroot) во время загрузки,
        • поддержка выполнения 64-разрядных приложений в режиме эмуляции Linux,
        • добавление средств кластеризации в CAM Target Layer (CTL).

        Основные изменения

        • Серия изменений, связанных с загрузкой на системах с UEFI. В UEFI-загрузчик добавлена поддержка корневых разделов с ZFS и возможность использования нескольких загрузочных окружений ZFS, таких как предоставляются в sysutils/beadm. Улучшена совместимость с различными реализациями UEFI. В UEFI-загрузчик добавлена возможность установки переменных EFI из командной строки загрузчика, а также поддержка файлов конфигурации /boot/config и /boot.config. В применяемый в загрузчике UEFI драйвер фреймбуфера efifb добавлены новые команды gop (Graphics Output Protocol) и uga (Universal Graphics Adapter) для диагностики проблем или установки графического режима на системах с поддержкой протоколов GOP и UGA (iMac7,1, MacBook3,1). В loader.efi добавлена начальная поддержка эмуляции терминала. Решены проблемы с мультизагрузкой и с загрузкой, приводящие к выводу ошибки «ExitBootServices() returned 0x8000000000000002»;
        • В инсталлятор bsdinstall добавлена возможность установки на корневой раздел ZFS на системах с UEFI;
        • Обновлена реализация ZFS. По умолчанию включена поддержка сжатия LZ4, на 50% сокращено потребление памяти при использовании L2ARC, улучшено агрегирование ввода/вывода, переработан код упреждающей загрузки данных;
        • Добавлена возможность смены корневой ФС на лету. Ранее для перемонтирования корневого раздела требовалась перезагрузка. Смена корневой ФС необходима для работы на ранней стадии загрузки временных образов ram-дисков, осуществляющих инициализацию сеанса iSCSI, с последующим подключением корневой ФС поверх iSCSI;
        • Расширены возможности инфраструктуры эмуляции окружения Linux, в которой появилась возможность выполнения 64-разрядных приложений на системах с архитектурой amd64 (x86_64), добавлена поддержки потоков 1:1, VDSO и части API мультиплексированного ввода-вывода epoll(7). В jail добавлена поддержка монтирования файловых систем linprocfs и linsysfs;
        • В подсистему CAM Target Layer (CTL), обеспечивающую эмуляцию дисковых и процессорных устройств, через которую реализован сервер iSCSI, добавлена поддержка средств для обеспечения высокой доступности. Поддерживается создание двухузловых кластеров с асинхронными режимами доступ к юнитам LUN (ALUA, Asynchronous LUN Unit Access): Active/Unavailable, Active/Standby, синхронным Active/Active и прокси Active/Active;
        • Системные изменения
          • Внесены корректировки в код инициализации генератора псевдослучайных чисел, исключающие недостаток энтропии при загрузке на некоторых типах систем;
          • В системный вызов kqueue добавлена возможность обработки событий записи для файлов, размер которых превышает 2 Гб;
          • Переработана реализация кэша vnode, проведена оптимизация кода для распределения и чистки vnode;
          • В библиотеку разрешения имён добавлена поддержка перезагрузки файла /etc/resolv.conf, если изменилось время его модификации;
          • В скрипт rc.d/netwait добавлено ожидания сетевых интерфейсов, добавленных на последней стадии загрузки, например, сетевых адаптеров с интерфейсом USB;
          • В режиме межсетевого экрана firewall_type=»SIMPLE» для блокирования адресов задействованы таблицы ipfw;
          • Добавлена sysctl-переменная kern.features.invariants, показывающая собрано или нет ядро с поддержкой инвариантов (INVARIANTS);
          • В утилиту mkimg добавлена поддержка файловой системы NTFS;
          • Утилита sesutil для управления устройствами SES (SCSI Environmental Services);
          • Утилита timeout, позволяющая запустить команду с ограничением времени её выполнения;
          • В утилиту cp добавлен флаг «-s», позволяющий создавать символические ссылки;
          • При запуске утилиты jail если явно не указана выполняемая команда по умолчанию теперь запускается shell. Добавлена опция «-l» , которая гарантирует очистку переменных окружения по аналогии с директивой exec.clean, т.е. в jail передаются только переменные HOME, SHELL, TERM и USER, которые устанавливаются в фактические значения;
          • В утилите ifconfig при использовании флага «-v» обеспечен вывод информации об оптических модулях SFP/SFP+, при использовании поддерживающих вывод данной информации драйверов (cxgbe, ixgbe, mlx5en и sfxge);
          • В утилиту last возвращена случайно удалённая во FreeBSD 9.0 поддержка виртуального пользователя reboot, при указании которого показываются все записи, связанные перезагрузкой;
          • Обновлены версии сторонних программ, в том числе file 5.25, xz 5.2.2, ntpd 4.2.8p5, unbound 1.5.7, less v481, OpenSSL 1.0.1s, OpenSSH 7.2p2;
          • В портах обновлено десктоп-окружение GNOME 3.16.2 (был 3.14.2). X.org Server обновлён до выпуска 1.17.4 (был 1.14.7);
          • Добавлен драйвер ismt с поддержкой контроллеров Intel SMBus 2.0;
          • Добавлен драйвер mlx5 с поддержкой Ethernet и Infiniband сетевых карт Mellanox ConnectX-4, поддерживающих передачу данных на скоростях до 100GBit/s. Связанный с драйвером модуль ядра mlx5en включён по умолчанию в конфигурации GENERIC;
          • В драйвер ctl добавлена поддержка CD-ROM и извлекаемых устройств;
          • В драйвер xen добавлена поддержка непрямого сегментированного ввода/вывода blkif;
          • Драйвер ixgbe(4) обновлён до версии 3.1.13-k, в которой появилась поддержка адаптеров X552 и X550T, добавлена поддержка настроек загрузчика hw.ix.flow_control и hw.ix.advertise_speed, исправлена большая порция проблем;
          • Обновлён драйвер isp(4), в котором появилась поддержка 16-гигабитных адаптеров Fibre Channel и завершена реализация функциональности Multi-ID (NPIV);
          • До версий 7.6.1 и 2.5.3 обновлены драйверы em(4) и igb(4), в которые добавлена поддержка чипов i219, i219(2) и i219(3), используемых в чипсетах для процессоров на базе Skylake и более новых микроархитектур;
          • Удалены устаревшие драйверы ata, такие как ataahci, ataadaptec и mv_sata, вместо которых следует использовать ahci, siis и mvs;
          • Из ядра GENERIC удалён драйвер pms из-за конфликта с драйверами ahd и mvs.

          Вышел бета-релиз FreeBSD 10.3

          В феврале 2016 года был представлен первый бета-выпуск FreeBSD 10.3. Выпуск FreeBSD 10.3-BETA1 доступен для архитектур amd64, i386, powerpc, powerpc64, sparc64 и armv6 (BEAGLEBONE, CUBOX-HUMMINGBOARD, GUMSTIX, PANDABOARD, RPI-B, WANDBOARD). Дополнительно подготовлены образы для систем виртуализации (QCOW2, VHD, VMDK, raw) и облачных окружений Amazon EC2 и Microsoft Azure. Релиз FreeBSD 10.3 запланирован на 22 марта. 27 июля ожидается релиз FreeBSD 11.

          Список изменений FreeBSD 10.3 находится на начальной стадии формирования. Добавленные возможности и функции:

          • Поддержка NTFS в утилите mkimg,
          • Новая утилита sesutil для управления устройствами SES (SCSI Environmental Services),
          • В системном вызове kqueue появилась обработка событий записи для файлов больше 2 Гб,
          • Переписана реализация CTL High Availability,
          • В драйвер ctl добавлена поддержка CD-ROM и извлекаемых устройств,
          • В драйвер xen добавлена поддержка непрямого сегментированного ввода/вывода blkif,
          • Обновлена реализация ZFS.

          2015: FreeBSD 10.2

          14 августа 2015 года сообщество разработчиков официально представило релиз FreeBSD 10.2 [7] .

          Система доступна для архитектуры AMD64, I386, IA64, PowerPC, PowerPC64, Sparc64 и ARMv6. Дополнительно подготовлены образы для систем виртуализации (QCOW2, VMDK, raw) и облачных окружений Amazon EC2, Google Compute Engine и Microsoft Azure.

          Основные изменения

          • Добавлена новая утилита uefisign для формирования цифровых подписей для файлов EFI, используемых для загрузки в конфигурациях с UEFI Secure Boot. В состав загрузчика EFI включен bzipfs;
          • Представлен новый rc-скрипт growfs, предназначенный для осуществления операции по изменению размера корневой ФС во время первой загрузки (если создан файл /firstboot), давая возможность автоматически занять корневой ФС всё нераспределённое место на диске. Управление работой скрипта производится через опцию growfs_enable в rc.conf. Скрипт также можно выполнить вручную («/etc/rc.d/growfs onestart»), а не на этапе перезагрузки;
          • Поддерживаемая во FreeBSD инфраструктура эмуляции окружения Linux обновленa до CentOS 6.6 (порт emulators/linux-c6). Связанные с эмулятором порты адаптированы для использования CentOS 6.6, который теперь предлагается по умолчанию вместо пакетов на основе Fedora 10. Слой совместимости с ядром Linux теперь ссылается на выпуск 2.6.18;
          • Код drm-драйверов для графических карт синхронизирован с ядром Linux 3.8.13, что позволило реализовать ioctl-вызовы setmaster/dropmaster для решения проблемы с запуском одновременно нескольких X-серверов;
          • Расширены возможности порта FreeBSD/arm. Добавлена поддержка систем Exynos 5420 Octa и плат Toradex Apalis i.MX6. Добавлен драйвер bcm2835_cpufreq, позволяющий управлять частотой CPU и напряжением на Raspberry Pi. Для всех систем Exynos 5 активирована поддержка SMP. Добавлены драйверы передачи звука с поддержкой AUDMUXM (Digital Audio Multiplexer), SDMA (Smart Direct Memory Access Controller) и SSI (Syncronous Serial Interface). Реализованы корректные средства завершения работы на платах BeagleBone Black;
          • В ядро FreeBSD/i386 добавлена настройка PAE_TABLES, при которой в pmap включается использование формата PAE при работе с табицами страниц памяти в условиях 32-разряднной физической адресации. В данном режиме возможен маппинг памяти в режиме «no execute», что позволяет повысить защищённость системы от некоторых видов атак. Кроме того, в отличие от режима PAE, режим PAE_TABLES сохраняет совместимость на уровне бинарных интерфейсов (KBI) с не-PAE ядрами, позволяя использовать собранные для них модули и драйверы. При включении режиме PAE_TABLES лимиты ядра настраиваются с расчётом на размер ОЗУ 4 Гб;
          • Добавлен драйвер vxlan для создания виртуальных расширяемых локальных сетей (Virtual Extensible LAN), используемых для туннелирования виртуализированных сетей второго уровня поверх сетей третьего уровня. VXLAN позволяет обойти ограничение на 4096 VLAN-ов за счёт использования 24-разрядных идентификаторов;
          • Обновлён гипервизор bhyve: добавлена поддержка процессоров AMD c аппаратными расширениями SVM и AMD-V, добавлена поддержка команды DSM TRIM для виртуальных дисков AHCI;
          • В подсистеме autofs реализован новый тип сопоставлений «-media», позволяющий организовать автоматическое монтирование встраиваемых накопителей, таких как CD и USB Flash. Также добавлен тип «-noauto» аналогичный использованию флага noauto в fstab;
          • В сетевой драйвер em добавлена поддержка многоуровневых очередей (multiqueue). Включение производится через опцию ядра EM_MULTIQUEUE;
          • В ядре GENERIC по умолчанию включена поддержка RACCT и RCTL, подсистем для аккаунтинга и лимитирования ресурсов;
          • Для ZFS добавлена настройка vfs.zfs.spa_slop_shift, позволяющая изменить зарезервированное по умолчанию дисковое пространство;
          • Обновлена подсистема ctl (CAM Target Layer), в которой со 128 до 256 увеличен лимит на число портов, и с 256 до 1024 на число LUN;
          • В загрузчик добавлена поддержка ввода пароля для GELI-шифрования на этапе до загрузки ядра;
          • Существенно переработан драйвер gre, который теперь разделён на два отдельных модуля gre и me;
          • Добавлен драйвер virtio_console, предоставляющий интерфейс для проброса консольных устройств VirtIO через устройство tty;
          • Решены проблемы при использовании jail совместно с gif- и gre-туннелями;
          • В GENERIC ядре по умолчанию включены драйверы nvd и nvme с поддержкой дисковых контроллеров NVM Express;
          • В драйвер psm добавлена поддержка тачпадов Synaptics и мышей ClickPad, используемых в новых моделях ноутбуков Lenovo;
          • В драйвер ral добавлена поддержка чипов RT5390 и RT5392;
          • В утилите mount_nfs появилась поддержка опций timeo, actimeo, noac и proto;
          • В TCP-стеке по умолчанию отключено определение PLPMTUD (Packetization Layer Path MTU Discovery, RFC 4821). Для включения следует использовать sysctl net.inet.tcp.pmtud_blackhole_detection, net.inet.tcp.pmtud_blackhole_mss и net.inet.tcp.v6pmtud_blackhole_mss;
          • В базовую систему включена новая утилита dpv, наглядно отображающая прогресс передачи данных для одного или нескольких потоков;
          • Добавлена утилита fstyp для определения типа файловой системы на указанном разделе;
          • Добавлена библиотека figpar, предоставляющая API для разбора файлов конфигурации;
          • В утилиту gpart добавлена поддержка схем разделов в MBR apple-boot, apple-hfs и apple-ufs;
          • В утилиту mkimg добавлена поддержка разделов MBR EFI и реализован флаг «-c» для задания минимального виртуального размера итогового образа;
          • В утилиту netstat добавлена флаг «-R», при указании которого выводится информация об RSS/flow;
          • В утилите date для улучшения совместимости с GNU date реализовано отображение времени модификации файла, указанного через флаг «-r»;
          • В bsdinstall добавлена возможность выбора схемы дисковых разделов при установке на UFS. Реализована поддержка выравнивания разделов по границе в 1 Мб при определении такой необходимости. Добавлен обходной путь для загрузки на различных ноутбуках и материнских платах, на которых ранее наблюдались проблемы с загрузкой с дисков с GPT-разделами;
          • Во freebsd-update добавлена защита от загрузки новых бинарных патчей, если прошлое обновление ещё не завершено;
          • Утилита resolvconf обновлена до версии openresolv 3.7.0, примечательной добавлением возможности установки флага приватности для интерфейсов в resolv.conf, что позволяет использовать данные интерфейсы только для осуществления резолвинга доменов по явно заданной в resolv.conf маске (domain/search);
          • Обновлены версии сторонних программ, в том числе ntp 4.2.8p3, acpi 20150515, file 5.23, unbound 1.5.3, sendmail 8.15.2, OpenSSL 1.0.1p.
          • Обновлены предлагаемые из портов десктоп-окружения: GNOME 3.14.2 и KDE 4.14.3. Обновлён графический стек (x11-servers/xorg-server 1.14.7_5, x11/xorg 7.7_2).

          2014: FreeBSD 10.0

          20 января 2014 года стало известно о выходе последнего релиза FreeBSD 10.0. Релиз 10.0 доступен для нескольких архитектур, включая x86, Power PC и Sparc.

          Новую реализацию системы перевели на умолчательное использование компилятора Clang. В систему интегрирован гипервизор BHyVe, DNS-сервер BIND заменён на Unbound, вновь реализован протокол CARP, интегрирована подсистема FUSE, действует пакетный менеджер pkg по умолчанию.

          Интегрирована поддержка unmapped VMIO, которая позволила поднять производительность ввода/вывода, благодаря исключению стадии маппинга буферов в TLB-кэше, что снизило накладные расходы при работе на многопроцессорных системах.

          Обновлён установщик системы bsdinstall и в него добавлена поддержка полноценной установки системы на разделы ZFS. При этом все настройки производятся из меню, в том числе создание разделов, выбор уровня ZFS RAID, настройка шифрования с использованием GELI, выбор имени пула и т.п. Прежний инсталлятор sysinstall удалён из базовой системы, вместо него следует использовать bsdinstall и bsdconfig. Утилита bsdconfig реализует интерфейс для настройки различных параметров системы, обеспечивая функциональность похожую на меню «Configure» из sysinstall.

          Реализована интеграция подсистемы FUSE — для работы файловых систем, реализованных на уровне пользователя. Поддерживается использование большинства FUSE-модулей, в том числе sshfs, ntfs-3g и ext4fuse.

          Включена поддержка увеличения размера разделов UFS при помощи утилиты growfs на лету, без размонтирования раздела.

          Включение наработок по оптимизации производительности файловых систем UFS/FFS. Ускорено выполнение fsck для новых разделов UFS;

          Обновление компонентов подсистемы ZFS до последней версии ZFS pools с поддержкой сжатия LZ4 и L2ARC, уничтожением наборов данных в асинхронном режиме, оптимизациями ZIO NOP-write, поддержкой операции TRIM для SSD-накопителей.

          В сетевой подсистеме проведена интеграция наработок проекта CARP2. В его рамках действует новая реализация протокола CARP (Common Address Redundancy Protocol) для FreeBSD. Протокол CARP, выступая в роли открытой альтернативы протоколам HSRP (Hot Standby Router Protocol) и VRRP (Virtual Router Redundancy Protocol), даёт возможность организации совместного использования IP-адреса между несколькими серверами в локальной сети, что может применяться для балансировки нагрузки или для создания отказоустойчивых систем.

          Заменён DNS-сервер BIND на связку из кэширующего DNS-сервера Unbound и библиотеки LDNS. Unbound распространяется под лицензией BSD, имеет модульную структуру, поддерживает работу еханизма разрешения имён в рекурсивном и кэширующем режиме. Также обеспечивает проверку валидности DNSSEC-сигнатур. Вместо утилиты dig теперь используется drill. В качестве причины ухода от BIND разработчики упоминают о проблеме с протяжённостью цикла поддержки выпуска обновлений для BIND, которые не укладываются в цикл поддержки релизов FreeBSD.

          Проведена интеграция гипервизора BHyVe, созданного компанией NetApp. Потребуется система с процессором Intel, поддерживающим аппаратные средства виртуализации VT-x и EPT (Extended Page Tables). Поддержка BHyVe пока ограничивается архитектурой amd64.

          Добавлены драйверы устройств, видеокарт, средства для манипуляции страницами памяти большого размера.

          Глеб Смирнов — Что нового в FreeBSD 10.0

          2012

          Hyper-V поддерживает FreeBSD

          14 мая 2012 года на конференции BSDCan 2012 компания Microsoft вместе со своими партнерами компаниями NetApp и Citrix объявила о том, что операционная система FreeBSD будет поддерживаться гипервизором Hyper-V. Соответствующие драйверы, которые позволят операционной системе эффективно работать в виртуальной среде Windows Server 2008 R2 Hyper-V, включая исходные коды под лицензией BSD, станут доступны в начале лета 2012 г. для FreeBSD версий 8.2 и 8.3.

          Разработка драйвера VMBUS, который связывает гостевую операционную систему с гипервизором Windows Server Hyper-V, проводилась Microsoft совместно с Insight Global. В дальнейшем планируется, что этот драйвер станет частью FreeBSD.

          FreeBSD 9

          Среди улучшений следует отметить сразу две графические среды, которые предлагаются пользователям на выбор. В последнее время Linux часто критикуют за недостатки графической среды, которые присущи как GNOME 3, так и Ubuntu Unity.

          Разработчики FreeBSD 9.0 решили обойти это препятствие, предложив пользователям самим выбрать между дружественной и привычной средой GNOME 2.32 и приятным с эстетической точки зрения интерфейсом KDE 4.7.

          Среди других существенных расширений FreeBSD 9.0 следует отметить новый инсталлятор, совместимость с процессорами PowerPC, которые используются в игровых приставках Sony PlayStation 3, множество обновленных драйверов, а также поддержку USB 3.0 и High Performance SSH.

          Версия FreeBSD 9.0, выпуск которой ее разработчики посвятили памяти пионера компьютерной отрасли, создателя Unix и языка программирования Си Денниса Ритчи, работает в настоящее время на архитектурах AMD64, i386, ia64, PowerPC, PowerPC64 и SPARC64. Все необходимые ссылки и инструкции по установке находятся на официальном сайте FreeBSD.

          2010: FreeBSD 8.1

          Сообщество разработчиков FreeBSD объявило в августе 2010 года о выпуске версии 8.1 одноименной операционной системы на основе ядра Linux. Среди ключевых изменений нового продукта разработчики называют улучшенную поддержку оборудования и проведенную модернизацию программных составляющих системы. В FreeBSD 8.1 расширена и обновлена база драйверов, оптимизирован код платформы, исправлены обнаруженные ранее недочеты. Большое внимание при разработке новой версии FreeBSD было уделено средствам беспроводной связи Wi-Fi, сетевым компонентам, инструментам виртуализации и оптимизации платформы под современные многоядерные процессоры.

          В числе прочих новшеств FreeBSD 8.1 фигурируют рабочие среды GNOME 2.30.1 и KDE 4.4.5, обновленный инструментарий OpenSSH для организации защищенных сетевых соединений, почтовый сервер Sendmail 8.14.4, поддержка архитектур UltraSPARC IV/IV+, SPARC64 V и прочие нововведения. Немало внимания уделялось вопросам безопасности и надежности продукта.

          Новая версия платформы рекомендована разработчиками для промышленного внедрения; пользователи предыдущих редакций FreeBSD могут обновить ОС посредством утилиты freebsd-update и поясняющих инструкций, опубликованных на странице официального сайта продукта.

          2009: FreeBSD 8.0

          По состоянию на 26 ноября 2009 года текущий релиз FreeBSD имеет номер 8.0.

          После выпуска релизов создаются дополнительные ветви разработки для их поддержки, но в них вносятся лишь самые необходимые изменения, исправляющие серьёзные ошибки или проблемы с безопасностью системы. До четвёртой версии FreeBSD у стабильной и текущей веток был один и тот же старший номер версии. Затем текущей ветви был присвоен номер 5, а у стабильной остался номер 4. В настоящее время стабильная версия имеет номер 8, а текущая — 9. Существует также ветвь 7-STABLE для поддержки тех пользователей, которые ещё не обновили FreeBSD до версии 8.

          FreeBSD 5 включает несколько новых функций, в том числе относящихся к безопасности. С целью повысить безопасность FreeBSD был сформирован проект TrustedBSD, в рамках которого были разработаны, в том числе: расширяемая система принудительного контроля доступа MAC, списки доступа ACL для файловых систем и новая файловая система UFS2. Некоторые функции TrustedBSD были интегрированы также в операционные системы NetBSD и OpenBSD. FreeBSD 5 также поддерживает шифрование файловых систем посредством системы GBDE (Geom Based Disk Encryption), которую написал Пол-Хеннинг Камп, один из ведущих разработчиков. Другие важные возможности FreeBSD 5 относятся к внутриядерным блокировкам для улучшения производительности на многопроцессорных SMP-системах и многопоточности, реализованной системой KSE, которая являлась поточной библиотекой по умолчанию начиная с версии 5.3. Позже libkse в этом качестве была заменена на libpthread, однако до сих пор поддерживается в -STABLE.

          8.0-RELEASE внёс несколько существенных новшеств: виртуализация сетевого стека (vimage), позволяющая использования нескольких сетевых стеков, поддержка работы в гостевом домене Xen (domU), переработанный USB стэк, ZFS версии 13, RPCSEC_GSS аутентификация для NFS, поддержка NAT-traversal (RFC 3948) в IPSEC, включенная по умолчанию система защиты от переполнения стека ProPolice SSP, улучшенный код для изолированных окружений (Jail2), поддержка равновесной маршрутизации (RFC 2992),

          1993: Старт разработки FreeBSD

          Разработка FreeBSD началась в 1993 году с большой скоростью, в качестве отправной точки были взяты исходные тексты 386BSD. Однако, из соображений законности использования исходных кодов 386BSD, команда разработчиков FreeBSD переработала большую часть системы ко времени выпуска FreeBSD 2.0 в январе 1995 года используя 4.4BSD-Lite.

          Модель разработки FreeBSD

          Существует около 4000 разработчиков, которые работают на добровольной основе. Все они могут читать дерево репозитория. Но не могут вносить изменения. Вместо этого разработчик обращается к коммитеру, который имеет право вносить изменение в код. Существует около 400 коммитеров. Разработчик может вырасти по социальной лестнице проекта и стать коммитером, а затем членом основной команды. Нового коммитера избирают другие коммитеры. Основная команда является ядром проекта и состоит из 9 человек, которые выбираются на 2 года. Основная команда решает конфликты между коммитерами.

          Участники проекта разрабатывают две ветки «CURRENT» и «STABLE».

          Новый код для тестирования помещают в ветку CURRENT(нестабильная, тестовая). Новые функции, добавленные в CURRENT, могут остаться в системе или от них могут отказаться, если реализация окажется неудачной. Иногда эта версия может оказаться в непригодном для использования состоянии. STABLE (стабильная или производственная) версия содержит только те нововведения, которые прошли проверку в CURRENT. Тем не менее, эта версия тоже предназначена, в основном, для разработчиков. Не рекомендуется обновлять ответственные рабочие серверы до STABLE, предварительно её не протестировав. На основе STABLE регулярно создаются тщательно протестированные разработчиками RELEASE версии.

          Примечания

          1. ↑Релиз FreeBSD 13.2 с поддержкой Netlink и WireGuard
          2. ↑Во FreeBSD добавлена поддержка протокола Netlink, применяемого в ядре Linux
          3. ↑Релиз FreeBSD 13.1
          4. ↑FreeBSD Adopts A New Code of Conduct Based On The LLVM CoC
          5. ↑Второй бета-выпуск FreeBSD 11.0
          6. ↑Релиз FreeBSD 10.3
          7. ↑Релиз FreeBSD 10.2

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *