Исходные коды ядра Linux находятся на сайте kernel.org. Там же находятся. Слева ищем пункт Power management and ACPI options и снимаем галочку с ACPI. Можно ли брать исходники ядра с текущего репозитория а не с kernel.org и на него наложить патч pf, конфликтов не будет? Прикрепленное изображение. CX-818, xtouch XTV01 Прикрепленное изображение. Общие параметры. Поддержка стандартов. Форматы файлов AVI, MKV, MOV, MPEG-2, MPEG-4, RM, RMVB, WMV Аудиофайлы 3GP, AAC, FLAC, MP3, OGG, WAV Подключение.
В этой статье я постараюсь рассказать о наиболее популярных и полезных модификациях UEFI BIOS, условиях их применения и способах поиска. Кроме этого, на описанной в утилите UEFITool свет еще не сошелся клином, поэтому будут упомянуты и другие программы, используемые для модификации UEFI BIOS'ов различных производителей.
![Kernel Power Management Patch Kernel Power Management Patch](http://cdn.windowsreport.com/wp-content/uploads/2016/02/changed-advanced-power-settings.jpg)
Если тема вам интересна — добро пожаловать под кат. Введение и еще один отказ от ответственности Не хочу повторять свою тираду про необходимость SPI-программатора и тот факт, что все модификации вы делаете на свой страх и риск, поэтому если вдруг вы ее не читали — и возвращайтесь. С этого момента я полагаю, что с восстановлением после неудачной прошивки у вас пролем нет, и с UEFITool'ом вы тоже знакомы, поэтому останавливаться на технических вопросах типа «Как мне вытащить из образа файл» и «как потом его вставить обратно» не буду. Необходимые инструменты Чтобы успешно модифицировать ваш образ UEFI BIOS, могут потребоваться следующие инструменты: • Hex-редактор на ваш выбор. • Редактор образов UEFI, в качестве которого я, по понятным причинам, буду использовать UEFITool, но вы также можете использовать PhoenixTool (универсальный и хорошо отлаженый, но не без ограничений) или MMTool (более или менее сносно работает только с образами AMI Aptio). • Если для необходимой модификации не нашлось постоянного паттерна, могут потребоваться ассемблер и дизассемблер с поддержкой x86-64. Ассемблера вполне досточно, а вот дизассемблер нужен нормальный, иначе поиски точки модификации могут сильно затянуться.
К сожалению, бесплатная версия IDA Pro не поддерживает разбор 64-битных PE-файлов, поэтому для Windows я рекомендую использовать утилиту dumpbin, входящую в набор компиляторов Microsoft, а для MacOS X — либо objdump, либо пробную версию Hopper Disassembler. • Если модификация может быть выполнена утилитой от производителя UEFI-платформы, пусть ей она и будет выполнена — это надежнее, чем вручную. К сожалению, «узок круг этих революционеров и страшно далеки они от народа», поэтому чаще всего подходящей утилиты от производителя не существует. Модификации Довольно предисловий, перейдем к сами модификациям. Здесь я опишу только те модификации, которые протестировал сам, поэтому список может быть обязательно будет неполным.
Если вы пробовали какие-то другие моды — прошу поделиться результатами в коментариях. Формат описания будет таким: название модификации или класса модификаций, назначение и краткое описание необходимых шагов.
CPU PM patch, MSR 0xE2 lock removal Что: обход установки бита LOCK (0x0F) в регистр MSR_PMG_CST_CONFIG_CONTROL (0xE2) после прохождения POST Зачем: открытый регистр 0xE2 необходим для работы подсистемы CPU Power Management в MacOS X, при закрытом происходит kernel panic. Если вы не планируете её уставновку или в вашем UEFI BIOSе присутсвует настройка «Unlock C-State MSR» — эта модификация вам не нужна.
Где искать: в UEFI-драйверах, относящихся к CPU PM. В старых БИОСах код установки лока находится в модуле CpuPei, в новых — в модуле PowerManagement (может также называться PowerManagement2.efi или PowerMgmtDxe.efi). Способ модификации: В CpuPei код, который нужно модифицировать, выглядит примерно так: 81 FB D0 06 02 00 cmp ebx,206D0h 75 0C jne FFFE426E 0D 00 80 00 18 or eax,18008000h; Бит 15 (LOCK) ставится здесь EB 05 jmp FFFE426E 0D 00 80 00 00 or eax,8000h; Или здесь 6A FF push 0FFFFFFFFh 6A F8 push 0FFFFFFF8h 6A 00 push 0 50 push eax 56 push esi E8 DC 0F 00 00 call FFFE5257; А внутри этой функции находится wrmsrДостаточно заменить в этом месте 00800018 на 00000018 и 00800000 на 00000000, чтобы обойти установку лока. В PowerManagement код выглядит иначе, чаще всего вот так: 80 FB 01 cmp bl,1; Если BL == 1 75 08 jne 002700; Перепрыгнуть две следующие команды 0F BA E8 0F bts eax,0Fh; Установить бит 15 (LOCK) 89 44 24 30 mov dword ptr [rsp+30h],eax; Сохранить результат в переменную на стеке 48 8B 54 24 30 mov rdx,qword ptr [rsp+30h]; Загрузить значение из этой переменной в RDX B9 E2 00 00 00 mov ecx,0E2h; А номер MSR в ECX E8 79 0C 00 00 call 003388; И вызвать функцию с wrmsr внутриМожно заменить JNE на JMP, BTS на BTR или просто «занопать» весь код установки лока. Проще всего сделать первое, т.е.
Поменять 75 08 на EB 08. Если такого кода в вашем UEFI BIOS не нашлось, ищите в драйверах, относящихся к CPU Power Management, значение 0xE2, и проверяйте весь код на предмет установки 15-го бита.
В последних версиях BIOSов для некоторых современных десктопных плат AMI перестали лочить этот регистр, поэтому такого кода в них уже не найти — считайте, что производитель сделал этот мод за вас. AES NI unlock Что: обход установки бита LOCK (0x02) в регистр MSR 0x13C Зачем: включение аппаратного ускорения AES на системах с экспортными ограничениями Где искать: в UEFI-драйверах, относящихся к CPU PM, чаще всего в PowerManagement Способ модификации: мало чем отличается от PM patch'а (и уже ), поэтому останавливаться подробно на нем не буду. Whitelist removal Что: обход белого списка совместимого оборудования, который использую в своих UEFI BIOS'ах некоторые производители ноутбуков. Зачем: идея производителя понятна — можно продать обладателям «несовместимого» оборудования еще и ребрендированное совместимое втридорога. Если вы сами хотите решать, что какое оборудование совместимо с вашим ноутбуком — эта модификация для вас.
Где искать: в UEFI-драйверах, относящихся к PCIe-устройствам. У HP это драйвер обычно называется BiosLockPcie, у Lenovo — LenovoWmaPolicyDxe.efi, но может называться и иначе. Способ модификации: т.к. Производители ноутбуков стараются менять код проверки Whitelist почаще, то описать какой-то постоянный способ довольно трудно.
Общая стратегия поиска такова: • Вставить несовместимую карту в нотбук, дождаться сообщения о невозможности загрузки и запомнить его. • Найти это сообщение в одном из FFS-файлов. • Найти код, который ссылается на это сообщение. • Исследовать этот код и попробовать изменить его так, чтобы проверка всегда заканчивалась успешно.
Сделать это можно двумя способами: либо пропатчить переход, либо добавить свои Vendor ID и Device ID в белый список. Подробности модификации на примере HP хорошо описаны широко известным в кругах моддеров товарищем Donovan6000, а я опишу вариант модификации на примере Lenovo X121E. Проверка осуществляется драйвером LenovoWmaPolicyDxe.efi, попасть необходимо вот сюда: 44 38 0D F0 0F 00 00 cmp byte ptr [00001BF0h],r9b 75 18 jne 000C1A E8 35 FD FF FF call 00093C 48 85 C0 test rax,rax 4C 8B C8 mov r9,rax 0F 88 77 FF FF FF js 000B8A C6 05 D6 0F 00 00 01 mov byte ptr [00001BF0h],1 49 8B C1 mov rax,r9 E9 68 FF FF FF jmp 000B8AВсе переходы к этому коду необходимо пропатчить на безусловные, а в самом коде необходимо «занопать» первую и вторую строки, после чего проверка всегда будет заканчиваться успешно. BIOS lock removal Что: снятие защиты от прошивки модифицированных образов UEFI встроенным программатором.
Зачем: при большом количестве экспериментов с UEFI доставать каждый раз программатор быстро надоедает, да и прошивка встроенным программатором происходит быстрее (засчет работы по протоколу QuadSPI вместо обыкновенного SPI в случае внешнего программматора). Где искать: в драйверах чипсета, чаще всего в PchInitDxe (другой вариант мода — в BiosWriteProtect) Способ модификации: вариант модификации PchInitDxe полностью описан на английском, поэтому я приведу только идею. Необходимо найти запись бита BIOS Lock Enable (BLE) в регистр BIOS_CNTL чипсета и предотвратить её.
Я таким образом изменял настройку HDA кодека Realtek. Если вкратце — сделали мы плату на x86 по референсу Intel, только повыкидывали кучу всего и контроллер аудио поставили от Realtek. Кто же знал, что verb table регистров прописывает не драйвер по старту, а BIOS. А Intel предоставляет референсный BIOS в бинарнике, а денег AMIшникам сами понимаете платить неохото было (Там примерно 30K$ за Aptio и за платформу). Ну что, расковырял, нашел место где эти регистры выставляются, поменял, вуаля Сейчас правда есть исходники и всё гораздо проще. Спасибо за статью.
ХПЕТ вроде обязательно нужен для AppleIntelCPUPowerManagement. Но мы знаем (?), что для более современных процессоров работает kernelPM. Вполне возможно, что он способен обойтись без хпета. Но я поставлю жирный вопрос, потому что наблюдения это еще не наука. Вот если бы кто-то дизассемблировал, разобрался, и написал свод правил, что куда откуда и почем, был бы другой разговор. Вопрос очень странный: почему нужен kernelPM patch при использовании BIOS F20, и совершенно не нужен при F5? Объясните мне, как это зависит от БИОСа, и что там вообще происходит.
Что это за патч вообще? Автор - рехабман. Ничего не имею против полезных вещей, но как бы мне получить какие-то разъяснения, что это вообще такое, и почему понадобилось для F20? Вроде говорилось про залоченный Е2. Но по пребут-лог Кловера он незалочен ни с тем, ни с другим БИОСом. Код: UEFI Compliant - Globally Defined Variables -- FAILURE F6334F9B-B930-4ADB-A53B-76FA7B4C2762 c: myworkspace SctPkg TestCase UEFI EFI Generic EfiCompliant BlackBoxTest EfiCompliantBBTestRequired_uefi.c:1351, Illegal Variable: AuditMode VariableName: DeployedMode is not defined in the Spec UEFI Compliant - Globally Defined Variables -- FAILURE F6334F9B-B930-4ADB-A53B-76FA7B4C2762 c: myworkspace SctPkg TestCase UEFI EFI Generic EfiCompliant BlackBoxTest EfiCompliantBBTestRequired_uefi.c:1351, Illegal Variable: DeployedMode Returned Status Code: Success RequiredElements: [FAILED] Passes.. Это нормальные переменные из UEFI 2.5 (новые режимы настройки SecureBoot), так что ошибка там в тесте, а не в прошивке.
Когда выложат SCT 2.5 - надо будет им проверить. По тому, как не проходить весь тест - запусти SCT.efi с ключом -u, она выдаст графический интерфейс, в котором можно выбрать нужные настройки. По поводу твоих проблем всех с F20 - виновато, скорее всего, состояние кодовой базы. F5 был на UEFI 2.4 и там два года шла разработка, а F20 - на новой платформе, да еще и со сменой версии стандарта, там на первых 10-15 версиях всегда багов не меряно. Если тебе поддержка Kaby Lake не принципиальна и на F5 нет никаких вопиющих проблем - на нем и сиди.
Код: kernel: (AppleACPIPlatform) ACPI: cannot translate ACPI object 14 kernel: (AppleACPIPlatform) ACPI: cannot translate ACPI object 14 kernel: (AppleACPIPlatform) ACPI Error: kernel: (AppleACPIPlatform) ACPI Error: kernel: (AppleACPIPlatform) [ _PR_.EPCS] kernel: (AppleACPIPlatform) [ _PR_.EPCS] kernel: (AppleACPIPlatform) Namespace lookup failure, AE_NOT_FOUND kernel: (AppleACPIPlatform) Namespace lookup failure, AE_NOT_FOUND kernel: (AppleACPIPlatform) (20140828/psargs-1d1) Если сделать кастомный ДСДТ, от них можно избавиться. У меня все работает включая sleep/wake.
Связаться с Тимом Тим один из наиболее популярных и активных авторов портала developerWorks. Познакомьтесь с, опубликованными на нашем портале. Посетите, свяжитесь с ним и другими авторами и присоединяйтесь. В версиях 3.3 и 3.4 ядра Linux® реализован впечатляющий набор возможностей, но есть ещё один важный момент. Версия 3.3 – это первая версия Linux, в которой более 15 миллионов строк (правда, это очень грубая оценка).
Если вычесть из ядра Linux различные фрагменты (например, драйверы; код, привязанный к конкретной архитектуре, и различные инструменты), то объём кода уменьшится до 4 миллионов строк, что, конечно, тоже очень много. WЭта веха не только демонстрирует скорость роста объём ядра Linux (на 50% с 2008 года), но и заставляет задуматься о том, что это разрастание ядра может негативно сказаться на его эффективности как с точки зрения энергопотребления, так и производительности. Эти два параметра не измеряются для разных версий ядра, так что их ухудшение не всегда можно сразу выявить.
Например, ошибка функции управления состоянием питания PCIe-устройств (PCI Express Active State Power Management) только через год после выхода этой функции была исправлена в версии 3.3 ядра. Нумерация версий ядра Linux Номер версии ядра состоит из версии ядра, за которой следуют номера основной (major) и дополнительной (minor) ревизии (например, 3.3.4). Предварительные версии (release candidate) ядра включают суффикс rc#, в конце которого находится число, указывающее номер данной версии (например, текущей версией является 3.5rc1). Меньше чем за 21 год объём ядра Linux вырос от 10000 строк кода до 15 миллионов. Хотя большая часть кода - это драйверы, сложность ядра растёт вместе с его объёмом. Возможно, вскоре, это развитие приведёт к появлению изменений в ядре, которые будут призваны устранить сложность и упростить его поддержку. Как показано на, ядро Linux начало быстро расти, начиная с версии 2.4, выпущенной в 2001 году (от 3 377 902 строк до 14 998 651 строк в 2012).
В течение этого периода каждый год в ядро добавлялось порядка миллиона строк нового кода. Этот ошеломляющие темпы роста могут повергнуть в ужас любого программиста. Увеличение размера ядра Linux c версии 2.2 (2001) до версии 3.3 (2012). Сам Торвальдс (создатель Linux) выразил обеспокоенность возможным усложнением поддержки ядра в будущем из-за его увеличения. Когда само ядро состоит из около 4 миллионов строк кода, то традиционный подход к управлению ядром неэффективен и требует усовершенствования. Интеграция с Android Главной новостью, связанной с ядром 3.3, была интеграция Google Android в основную часть ядра. Процесс интеграции будет продолжен в версии 3.4, но уже сейчас в ядре достаточно возможностей Android, чтобы загрузить пространство пользователей Android, как показано.
Ядро Android – это 'отросток' от ядра Linux с дополнительными возможностями, необходимыми для эффективного управления питанием и ресурсами (так как это требуется для мобильных устройств, которые обычно работают от своего аккумулятора). Хотя основным направлением Android считается архитектура ARM, но также присутствует и поддержка архитектуры x86, которая, например, используется в проекте Google TV. Загрузка пространства пользователя Android на компьютере x86 с помощью платформы виртуализации Oracle VM VirtualBox. Из-за проблем координации работы группы, отвечающей за поддержку Linux, и Google, привели к тому, что в течение нескольких лет платформа Android развивалась самостоятельно. В начале 2012 года был запущен проект Android Mainlining, задачей которого стала интеграция драйверов и возможностей Android в основное ядро Linux. Результаты этой работы были представлены в версии 3.3, но интеграция будет продолжена в версии 3.5. Android также представил несколько улучшений для Linux, которые усилят позиции Linux на рынке мобильных платформ.
В качестве примеров можно упомянуть быстрое межпроцессное взаимодействие (IPC), улучшенное управление памятью приложений, и решение для проблемы, связанной с управлением большими непрерывными фрагментами памяти. Драйвер, названный Binder – это реализация IPC для Android. Разработчики приложений для ОС Android могут с легкостью использовать существующие решения, но Binder включает уникальные возможности, которых нет больше нигде (например, передача zero-copy сообщений и передача параметров учетных записей (credentials)). Приложения, работающие на платформе Anroid, фактически никогда не закрываются, так что их выполнение продолжается до тех пор, пока ядро не удалит их. Функция shrinker используется для оптимизации использования памяти по мере ее загруженности.
Приложение регистрирует функцию, которая будет использоваться для минимизации объёма задействованной памяти, и когда свободной памяти не хватает, то ядро вызывает эту функцию. Еще одной новинкой Android является функция Pmem, которая позволяет при необходимости выделять большие и монолитные буферы памяти (такая возможность требуется для функции фотокамеры). Pmem экспортирует в пространство пользователя драйвер для данного типа выделения памяти. Кроме того, в ядро Linux были интегрированы и другие возможности, специфичные для мобильных платформ. Определенные функции еще не попали в ядро, например, wakelock - функция управления питанием, которая позволяет компоненту запретить системе переходить в режим пониженного энергопотребления (например, когда происходит обновление ПО устройства). Отсутствие wakelock не помешает загрузке Android-системы, но в таком случае время работы батарея разрядится быстрее. То, что Android удалось вернуть обратно в ядро Linux, это ещё один пример гибкости ядра Linux (от встраиваемых систем и мобильных устройств до крупнейших мэйнфреймов и суперкомпьютеров).
Вместе с более чем 300 миллионами Android-устройств, используемых прямо сейчас, Linux продолжает развиваться как универсальная платформа. Open vSwitch Linux также продолжает оставаться предпочтительной платформой для виртуализации – он не только великолепная операционная система, но и первоклассный гипервизор (hypervisor). Интеграция ядра с Open vSwitch укрепила этот статус, предоставив готовые решения для виртуализации и IaaS (Infrastructe as a Service – инфраструктура как сервис). Виртуальный коммутатор – это нечто большее, нежели просто программная версия аппаратного коммутатора. Напомню, что виртуализация платформ (например реализованная на основе KVM (Kernel-based Virtual Machine) или Xen) позволяет запускать несколько экземпляров операционных систем (или виртуальных машин) на гипервизоре, который разделяет аппаратную платформу на несколько виртуальных. Появление виртуального коммутатора развило эту абстракцию, реализовав реализацию сетевой инфраструктуры в виртуальной форме.
Виртуальный коммутатор обеспечивает виртуальные машины эффективными средствами для взаимодействия между собой с помощью виртуальной сети. Проект Open vSwitch распространяет эту абстракцию между виртуальными хостами, позволяя виртуальной машине на одном физическом хосте 'прозрачно' общаться с виртуальной машиной, расположенной на другом физическом хосте. В самом Open vSwitch можно найти богатый набор функций для создания виртуальных сетей, включая quality of service, виртуальные локальные сети, фильтрацию и изоляцию трафика, и множество протоколов для мониторинга и управления (таких как OpenFlow и NetFlow). Хотя в Linux уже имеется реализация виртуального коммутатора Linux Bridge, Open vSwitch мощнее по своей функциональностит (включая управление несколькими хостами) и поэтому его интеграция в ядро Linux очень важна. В разделе ' можно найти дополнительную информацию по Open vSwitch. Изменения в файловой системе В версии ядра 3.3 содержатся изменения, касающихся файловой системы, которые охватывают различные файловые системы для пользователей и разработчиков.
Для пользователей стало доступно онлайновое изменение размера файловой системы ext4 (fourth extended file system) с помощью управления вводом/выводом (онлайновое означает, что система продолжает работать во время изменения размера файловой системы). Это значит, что весь процесс изменения размера полностью выполняется на уровне ядра, что приводит к ускорению этой операции. Для файловой системы Btrfs на основе B-дерева была переписана операция балансировки (используемая для изменения основной структуры метаданных, например, в случае добавления нового диска), в которую добавили поддержку приостановки ( pause) и возобновления ( resume) работы. В версии 3.4 для Btrfs были также представлен инструмент для восстановления данных ( btrfs-restore), который можно использовать для извлечения файлов из поврежденной системы Btfrs. Также в версии 3.4 файловая система Btrfs получила несколько изменений, направленных на улучшение производительности и обработки ошибок (включая замену 'паники' на удобный алгоритмом управления ошибками). До выхода версии ядра 3.4 файловая система Btrfs не могла использоваться для виртуальных машин из-за своего механизма copy-on-write ('копирования при записи').
В версии 3.4 Btrfs эта проблема была устранена с помощью выполнена тонкой настройка параметров файловой системы. Программная реализация RAID-массивов также была обновлена для поддержки 'горячей' замены, которая позволяет перенести данные с тома (помеченного как заменяемый утилитой mdadm) на другой том и затем удалить исходный том. Также в версии 3.4 была добавлена поддержка файловой системы QNX4 в режиме 'только для чтения'.
У разработчиков появилась возможность вставлять ошибки в Network File Systemсистему, чтобы проверить способность клиентов файловой системы к восстановлению после ошибок с помощью sysfs. Для разработчиков, использующих Btrfs, была добавлена новая утилита для проверки целостности, которую можно использовать для идентификации некорректных запросов на запись, что, в свою очередь, должно привести к более быстрому устранению сбоев. Новые возможности для работы в сети Linux всегда отличался передовыми сетевыми функциями и несколько усовершенствований для работы в сети появились и в версии ядра 3.3. Для инфраструктур с минимальными задержками (например, высокопроизводительные компьютеры) был интегрирован драйвер протокола SCSI RDMA (Remote Direct Memory Access – удаленный прямой доступ к памяти SCSI). Протокол Secure Remote Password позволяет использовать RDMA в качестве основного протокола для блочных устройств хранения данных. Это специальное расширение позволяет Linux организовать доступ к блочному устройству с помощью SRP, через который удаленные потребители могут подключаться к блочному вводу/выводу.
Протокол RDMA поддерживается технологией InfiniBand и часто используется в высокопроизводительных кластерах. Планировщик пакетов RED (Random Early Detection) был модифицирован с помощью нового алгоритма Adaptive RED от Салли Флойд (Sally Floyd), Рамакришны Гуммади (Ramakrishna Gummadi) и Скотта Шенкера (Scott Shenker). Алгоритм RED доказал свою эффективность при планировании обработки пакетов. В данном алгоритме решение об 'отбрасывании' пакета, который нельзя было поместить в буфер, принималось в зависимости от доступного объёма очереди, но его работа зависит от уровня загруженности сети. Алгоритм RED использовал объём очереди для оценки вероятности 'игнорирования' пакета, так что в случае с пустой или почти пустой очередью принимались все пакеты, но по мере того как очередь заполнялась, все пакеты начали сбрасываться.
Алгоритм Adaptive RED динамически изменяет вероятность сброса пакета, измеряя, насколько 'агрессивно' происходит игнорирование пакетов. Получить дополнительную информацию об этом алгоритме можно в описании Adaptive RED, ссылка на которое приведена в разделе '. Важное изменение произошло в функциональности для объединения сетевых интерфейсов: вместо устаревшего «соединяющего» драйвера (bonding driver) ядра был представлен новый механизм teaming, позволяющее объединить несколько физических сетевых адаптеров Ethernet. Такое устройство позволяет создавать виртуальные сетевые интерфейсы, которые объединяют пропускную способность нескольких физических Ethernet-устройств (link aggregation согласно стандарту 802.1AX). Teaming можно использовать для повышения производительности сети (за счёт объединения нескольких физических устройств) или для избыточности (при сбое одного физического интерфейса его трафик переводится на другой физический интерфейс). В данный момент поддерживаются оба этих режима, в первом случае сетевой трафик просто распределяется по всем физическим портам, а во втором отдельный порт может быть выделен в качестве резервного канала для трафика, если основное сетевое соединение будет разорвано. Среди других новых сетевых функций следует выделить возможность ограничения размера буферов, используемых протоколом TCP, с помощью контролирующих групп cgroups (control groups).
Группы cgroups могут использоваться различными способами, например, для изоляции выделенной виртуальной машине ресурсов. Данное новшество позволяет cgroup отслеживать размеры памяти ядра и пользовательского пространства (которые обычно и используются для TCP-буферов), что, в свою очередь, упрощает управление ресурсами системы. Другие интересные изменения В Linux 3.3 также появились изменения, не относящиеся к файловым системам или сетевым интерфейсам. Так, архитектура процессора Texas Instruments C6x теперь поддерживается напрямую, а не в рамках отдельного проекта. Многоядерный процессор C6х для обработки цифровых сигналов (Digital Signal Processor) построен на основе архитектуры VLIW (Very Long Instruction Word), но в нём отсутствуют некоторые современные возможности, например, симметричная параллельная обработка данных, однородность кеша и блок управления памятью (MMU - memory management unit).
Несмотря на указанные пробелы в архитектуре, процессоры серии C6x обладают большими возможностями и поддерживают широкий список периферийных устройств и встроенных ускорителей 'на кристалле' (для обеспечения безопасности, быстрого преобразования Фурье и т.д). В версии ядра 3.4 поддерживаются самые современные GPU-процессоры, такие как Kepler от Nvidia и Radeon и Trinity от AMD.
Поддерево архитектуры для ARM-процессоров теперь может использовать расширение для работы с большими физическими адресами и возможности сервисов Nvidia Tegra на кристалле, что еще больше усилит позиции процессоров ARM как альтернативы процессорам Intel для серверов с уменьшенным энергопотреблением. Также в версии 3.3 стали доступны улучшения для решений на основе AMD I/O MMU, благодаря которым упростилось управление изменением размера страниц и повысилась защищенность устройств (благодаря их группированию или изоляции). Также технология Virtual Function I/O увеличила возможности платформы KVM для привязки мобильных устройств к гостевым системам KVM. Наконец, архитектура S390 была доработана для увеличения максимального поддерживаемого размера RAM с 4ТБ до 64TБ. Модуль управления производительностью (PMU, Performance Monitoring Unit) был виртуализирован для KVM, так что гостевые системы теперь могут использовать PMU для своих виртуальных платформ. Это изменение сделало доступными для гостевых систем различные события, связанные с производительностью, включая устаревшие инструкции, удачные и неудачные обращения к кешу, а также ветви исполненных и пропущенных инструкций.
Для платформы виртуализации Xen была добавлена полезная возможность – безопасное отключение (secure discard), которое полностью удаляет 'подозрительный' сектор вместо того, чтобы просто пометить его как свободный. Также различные драйверы виртуального ввода/вывода (blk, net, balloon и console) теперь поддерживают 'спящее' состояние по стандарту Advanced Configuration and Power Interface S4, что позволяет гостевым системам, развернутым на платформе Xen, входить в состояние гибернации.
Для плохо поддающихся диагностике проблем, связанных с повреждением памяти, был добавлен новый элемент конфигурации CONFIG_DEBUG_PAGEALLOC. Это изменение проверяет доступ CPU к свободным страницам памяти и поэтому может несколько снизить производительность. Взгляд в будущее Платформа Linux продолжает развиваться, и после выхода версии ядра 3.4 к публикации уже готовится предварительная версия 3.5, которая должна выйти в августе 2012 года. В этой версии также ожидается несколько новых интересных возможностей. В файловую систему планируется добавить оптимизацию для обработчика обратной записи (write-back) в рамках файловой системы. В стандартной файловой системе Linux ext4 также появилась возможность добавления контрольной суммы к метаданным, что поможет выявлять попытки взлома защиты данных.
Также в Linux скоро может появиться поддержка SCSI-targets по протоколам FireWire или USB Attached SCSI Protocol. Наконец, будет добавлена поддержка пробников пользовательского пространства для совместного использования с SystemTap при анализе поведения программ в пользовательском пространстве. И по мере того, как приближается дата выхода предварительной версии, запланированная на август 2012 года, можно ожидать появления и других изменений.
Похожие темы •: оригинал статьи (EN). •: Web-cайт с информацией о последней и предыдущих версиях ядра Linux. •: отличный источник информации о различных версиях ядра, включая сводную информацию о наиболее новшествах каждой версии ядра. Дополнительную информацию о версии ядра Linux 3.3 можно найти. •: проект, созданный компанией Google, для разработки и сопровождения платформы Android. В рамках этого проекта также поддерживается бесплатная программа оценки совместимости продуктов третьих фирм с платформой Andoird.
Дополнительную информацию об Android можно найти. • Вы можете эмулировать среду Android для мобильных устройства с помощью.
Кроме того, используя Linux и KVM, Android можно эмулировать с помощью, который поддерживает как эмуляцию ARM, так и менее эффективную эмуляцию x86. • Несколько новых компонентов Android включены в состав ядра Linux, например,, и (аналог исключенного компонента Ashmem). • Платформа Android, основанная на Linux, является отличным примером гибкости и универсальности самой платформы Linux.
Аналогичные примеры можно найти в статье Тима, опубликованной на портале developerWorks в марте 2012. •: это многоуровневый виртуальный коммутатор, который уже стал частью ядра Linux, и теперь сразу после установки Linux вы можете начать использовать Open vSwitch в качестве гипервизора. Это приятная новость для пользователей виртуализированных возможностей Linux. Дополнительную информацию об Open vSwitch можно найти в этом обзоре. Также можно познакомиться с предшествующим решением, разработанным. Tim Jones, developerWorks, March 2010) (EN): статья, которая знакомит с виртуальными коммутаторами в контексте облачных вычислений и IaaS.
Tim Jones, developerWorks, October 2010) (EN): ещё одна статья Тима, посвященная различным вариантам виртуальных коммутаторов, доступных для Linux, включая Open vSwitch. Также вы можете узнать о различных типах виртуализации, поддерживаемых Linux, из статьи Тима, опубликованной в 2006 году, а в статье hypervisor рассказывает о том, как происходила трансформация Linux в гипервизор.
• Btrfs – это файловая система, разработанная компанией Oracle, как конкурент файловой системе ZFS от компании Sun. Btrfs можно использовать для создания крупных корпоративных систем хранения данных с такими возможностями, как онлайновое восстановление и упрощенное обслуживание. Дополнительную информацию о Btrfs можно найти.
• Virtio – это виртуализированная инфраструктура ввода/вывода для Linux-гипервизоров, которая предоставляет гипервизорам эффективный абстрактный уровень с набором стандартных виртуализированных драйверов ввода/вывода. Дополнительную информацию о Virtio можно найти в статье Тима, также опубликованной на портале developerWorks в 2010 году. • (EN): статья Роланда Дрейера (Roland Dreier) из компании Cisco, знакомящая с технологией RDMA и принципами разработки приложений Linux, способных использовать возможности RDMA.
• (EN): статья с подробным описанием изменений по сравнению со стандартной реализации алгоритма RED в его обновленной версии Adaptive RED. • Технология рассматривается в онлайновой документации Red Hat. Узнать больше о использовании ограничений для TCP-буферов с помощью cgroups можно из статьи на портале. • Следите за или подпишитесь. Вы также может подписаться.