Как стать автором
Обновить

Состоялся релиз Linux 5.5

Настройка Linux *Разработка под Linux *

26 января 2020 года Линус Торвальдс представил первый стабильный релиз ядра Linux 5.5 под кодовым названием Kleptomaniac Octopus. Выпуск новой версии ядра Linux вышел в соответствии с графиком, спустя два месяца после выхода предыдущей стабильной версии.
Читать дальше →
Всего голосов 16: ↑15 и ↓1 +14
Просмотры 6K
Комментарии 1

Состоялся релиз ядра Linux 5.10

Настройка Linux *Open source *Разработка под Linux *


13 декабря 2020 года Линус Торвальдс представил первый стабильный релиз ядра Linux 5.10. Выпуск новой версии ядра Linux вышел в соответствии с графиком, спустя два месяца после выхода предыдущей стабильной версии. Исходный код ядра Linux 5.10 уже доступен для загрузки на портале kernel.org.

Новое ядро Linux 5.10 получило долгосрочную поддержку (LTS, long-term support). Разработчики будут не менее двух лет (вероятно, что это будет делаться даже до 6 лет) выпускать обновления для ядра Linux 5.10. Предыдущая версия ядра Linux с LTS — 5.4, которая будет поддерживаться до декабря 2025 года.
Читать дальше →
Всего голосов 17: ↑17 и ↓0 +17
Просмотры 11K
Комментарии 3

Релиз ядра Linux 5.12

Блог компании Дата-центр «Миран» Настройка Linux **nix *Разработка под Linux *


Вчера, 25 апреля 2021 года, после двух месяцев разработки, Линус Торвальдс представил ядро Linux 5.12. Как пишет сам Торвальдс, эта версия — спокойная и без каких-то глобальных изменений. Более радикальный патч ожидается в версии 5.13, в которой разработчики будут «наверстывать упущенное». Само обновление вышло с недельной задержкой от графика.

Размер патча ядра — 38 Мб, а основные изменения в кодовой базе коснулись драйверов — на них приходится более 40% (43%) внесенных правок и обновлений. Примерно 17% изменений относятся к обновлению кода аппаратных архитектур, 12% — сетевой стек, 5% — файловые системы и 4% — внутренние подсистемы ядра.
Читать дальше →
Всего голосов 14: ↑9 и ↓5 +4
Просмотры 4.9K
Комментарии 6

14.12.2021, 23:30 (Московское время): Ubuntu On Air: Как создать собственное ядро с нуля?

Блог компании Фактор груп Open source **nix *

Когда мы программируем пользовательские приложения, мы пользуемся поддержкой многих компонентов операционной системы: библиотек, других пользовательских программ и самого ядра, которое взаимодействует с пользовательским пространством (user-space) через интерфейс системных вызовов.

В течение своей презентации спикеры Андреа Риги и Янник Морей вместе с вами напишут собственное ядро с нуля, начиная с ранних стадий процесса загрузки, изучим основные шаги инициализации процессора Intel и реализуем некоторые основные функциональные возможности, которые предоставляет ядро, такие как концепция мульти-потокового режима, работа с разрывами соединений, переключение контекста, драйверы устройств и т.д.

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Просмотры 952
Комментарии 2

CFS vs O(1) scheduler

Настройка Linux *
Думаю многие слышали, что помимо стандартного O(1) планировщика в linux, появился CFS(Completely Fair Scheduler; «абсолютно справедливый планировщик»), над которым работает Ingo Molnar. Собственно эту заметку я хотел бы посвятить сравнению этих двух планировщиков и краткому рассмотрению их основных алгоритмов. В конце заметки можно немного почитать по FreeBSD'шный планировщие ULE.

preamble:
  • O(1) scheduler — вкратце, политика планировщика была довольно проста: каждый cpu имел 2 очереди: в одной находятся таски, которые в скором времени будут запущены, в другом — спящие таски. когда первая очередь оказывалась пуста, она менялась местами со второй, соответсвенно во второй очереди все спящие процессы 'просыпались', а в первая служила очередью для отработавших и уснувших процессов. посему время работы алгоритма во-первых, не зависит от кл-ва процессов, во-вторых, оно постоянно — O(1).
  • Completely Fair Scheduler — для хранения процессов использует red-black дерево, где ключём является wait_runtime каждого процесса. wait_runtime — это кл-во наносекунд, которое данный процесс недоработал или переработал. т.е. если оно < 0, значит он переработал, если оно > 0, значит он недоработал. эта мера позволяет засечь out-of-ballance от 'идеального случая'. в зависимости от значения wait_runtime, процесс занимает своё место в дереве. если wait_runtime < 0, то, я полагаю, процесс будет сидеть на нижних уровнях, если больше 0, то ближе к вершине. следовательно, CFS — не O(1) scheduler, он O(logN).


Читать дальше →
Всего голосов 30: ↑28 и ↓2 +26
Просмотры 6.3K
Комментарии 21

Запускаем VMware Workstation с kernel 2.6.24

Чулан
Текущая версия VMware Workstation 6.0.2 for Linux (Build: 59824) не поддерживает ядро 2.6.24. Для исправления это ситуации достаточно выполнить несколько шагов, которые описаны ниже.

1. останавливаем рабочую vmware
в ubuntu: sudo /etc/init.rc/vmware stop
в других:
$lsmod | grep vm
sudo rmmod vmmon
sudo ifdown vmnet2. удаляем сервисы
sudo /usr/bin/vmware-uninstall-vix.pl
sudo /usr/bin/vmware-uninstall.pl

3. скачиваем и распаковываем последнюю версию VMware Workstation 6.0.2. Затем инсталируем:
sudo vmware-install.pl
Отвечаем на все вопросы инсталятора и игнорируем ошибки, которые будут выводиться при создании модулей.

4. скачиваем и распаковываем патч vmware-any-any-update-116
запускаем
sudo runme.pl

К сожалению, автор патча не известен, патч найден на форумах vmware.

PS: Метод успешно работает на всех версиях ядра 2.6.24.
Всего голосов 9: ↑6 и ↓3 +3
Просмотры 311
Комментарии 2

Обновление kernel'а без ребута или просто Ksplice

Настройка Linux *
После любого обновления или пачта ядра, мы должны перегрузить систему.
Но, мы можем не делать этого, если посмотреть в сторону Ksplice
Ksplice распространяется под GPL 2 и дает возможность патчить ядро и ставить security апдейты — без перезагрузки системы.

Проверено на: kernel 2.6.8 Debain, Ubuntu и RHEl.

Подробное описание и документация
Всего голосов 22: ↑18 и ↓4 +14
Просмотры 3K
Комментарии 21

Обновление Linux ядра: 2.6.25.14 и 2.6.26.1. Что нового ожидается в 2.6.27

Настройка Linux *
Выпущены обновления Linux ядра — 2.6.26.1 и 2.6.25.14, содержащие исправления ошибок в различных подсистемах. Кроме того, несколько дней назад был выпущен первый релиз-кандидат ядра 2.6.27, по которому можно судить об ожидаемых новшествах. Версия 2.6.27-rc1 включает в себя 12 Мб изменённого кода, что на 50% больше, чем в 2.6.26-rc1. Половина всех изменений связана с драйверами устройств, около 25% с архитектурными изменениями (удаление директории arch/ppc/).

Список основных исправлений и новшеств 2.6.27:
* Улучшения в системном вызове kexec(), позволяющие драйверам выполнять различные задачи, перед переходом системы в спящий режим или после просыпания. Это призвано решить основные проблемы с standby-режимами.
* Улучшенная проверка целостности данных для блочных устройств;
* Система трассировки операций ввода/вывода, отраженных в память (memory-mapped I/O trace mmiotrace). Например, можно использовать для реверс инжиниринга бинарных драйверов, путем отслеживания их взаимодействия с оборудованием;
* Поддержка создания контрольных точек и восстановление из них виртуальных машин в Xen;
* Оболочка трассировки функций для упрощения управления realtime-характеристиками ядра (ftrace);
* Упорядочивание трассировочного кода всех процессов, для работы с ними, как с одним юнитом (tracehook patches);
* Усовершенствование некоторых системных вызовов, оперирующих файловыми дескрипторами, с целью увеличения безопасности при обращении к ним из пользовательских программ (например, более строгий контроль входящих параметров, защита от race condition в многопоточных приложениях);
* Отложенное распределение информации в ext4;
* Multiqueue networkin — организация нескольких очередей пакетов для одного устройства;
* Поддержка файловой системы UBIFS для работы на flash накопителях с ограниченным числом циклов записи данных. Файловая система разработана компанией Nokia;
* Новые драйверы сетевых устройств Atheros AR8121, AR8113 и AR8114 Gigabit LAN для обладателей Asus Eee PC, Broadcom BCM57711, BCM57711E.

Ссылка на источник
Всего голосов 25: ↑21 и ↓4 +17
Просмотры 772
Комментарии 3

Программирование в ring0 для Windows: вводная статья

Системное программирование *

По долгу службы мне пришлось столкнуться с программированием драйверов под Windows. Люди, которые никогда не сталкивались с этой задачей могут предположить, что драйвера — это что-то очень сложное и непосредственно взаимодействующее с железом. Отчасти они правы, а отчасти нет. В этой статье я постараюсь рассказать о том, что же из себя представляют Windows драйвера изнутри и с чем мне пришлось столкнуться. Статья является некоторым введением и не содержит «кусков кода».

Читать дальше →
Всего голосов 123: ↑113.5 и ↓9.5 +104
Просмотры 28K
Комментарии 32

Пишем свой первый Windows-драйвер

Системное программирование *
Итак, после моей предыдущей статьи я понял что тема про программирование драйверов Windows интересна хабровчанам, поэтому продолжу. В этой статье я решил разобрать простую программу-драйвер, которая делает только то, что пишет отладочное сообщение «Hello world!» при старте драйвера и «Goodbye!» при завершении, а также опишу те средства разработки, которые нам понадобятся для того, чтобы собрать и запустить драйвер.

Читать дальше
Всего голосов 99: ↑95 и ↓4 +91
Просмотры 119K
Комментарии 35

Crash dump'ы и KeCapturePersistentThreadState

Системное программирование *
Я тут обнаружил очень занятную недокументированную функцию, экспортируемую ядром, на которую нет ссылок внутри ядра, но которая делает весьма занятную вещь. А именно, записывает в переданный кусок памяти полноценный minidump на данный момент времени.
Весьма полезно с учетом того, что там (в дампе) есть оффсеты неэкспортируемых структур типа PsLoadedModuleList, которые могут пригодиться.
Спасибо Freeman за помощь)

ULONG
NTAPI
KeCapturePersistentThreadState(
PCONTEXT Context,
PKTHREAD Thread,
ULONG BugCheckCode,
ULONG BugCheckParameter1,
ULONG BugCheckParameter2,
ULONG BugCheckParameter3,
ULONG BugCheckParameter4,
PVOID VirtualAddress
);


Входные параметры:
Context — текущий контекст (можно от балды, нужно лишь заполнить EIP & ESP)
Thread — текущий поток. можно указать NULL, тогда она сама возьмет текущий
BugCheckCode, ParametersX — багчек код и аргументы, которые она запишет в дамп.
VirtualAddress — адрес выделенных 16 страниц памяти (64кб), куда она положит аккуратно готовенький крешдамп.

Пример:

Заголовок дампа:
typedef struct _DUMP_HEADER {
/* 00 */ ULONG Signature;
/* 04 */ ULONG ValidDump;
/* 08 */ ULONG MajorVersion;
/* 0c */ ULONG MinorVersion;
/* 10 */ ULONG DirectoryTableBase;
/* 14 */ PULONG PfnDataBase;
/* 18 */ PLIST_ENTRY PsLoadedModuleList;
/* 1c */ PLIST_ENTRY PsActiveProcessHead;
/* 20 */ ULONG MachineImageType;
/* 24 */ ULONG NumberProcessors;
/* 28 */ ULONG BugCheckCode;
/* 2c */ ULONG BugCheckParameter1;
/* 30 */ ULONG BugCheckParameter2;
/* 34 */ ULONG BugCheckParameter3;
/* 38 */ ULONG BugCheckParameter4;
/* 3c */ CHAR VersionUser[32];
/* 5c */ UCHAR PaeEnabled;
UCHAR NotUsed[3];
/* 60 */ PVOID KdDebuggerDataBlock;
} DUMP_HEADER, *PDUMP_HEADER;


Использование функции: www.everfall.com/paste/id.php?mkgmkfg1a057

Кодес получает дамп, показывает адерса MmPfnDatabase, PsActiveProcessHead, PsLoadedModuleList и сбрасывает дамп на диск. Дамп можно спокойно запихать в WinDbg и изучать

Вообщем, весьма занятная штуковина…

Надо будет переписать свой gr8lkd (http://gr8lkd.googlecode.com/) с использованием этой функции.
Всего голосов 17: ↑11 и ↓6 +5
Просмотры 1.7K
Комментарии 3

Вышла новая версия ядра Линукс 2.6.28.

Настройка Linux *
Вчера вечером вышло новая версия ядра Линукс с номером 2.6.28.
По поводу выхода ядра Торвальдс написал следующую заметку, заставляющую улыбнуться:

далее
Всего голосов 94: ↑83 и ↓11 +72
Просмотры 1.1K
Комментарии 38

Btrfs вошла в состав основной ветки ядра Linux

Настройка Linux *
Перевод
Btrfs, файловая система Linux следующего поколения, задуманная Oracle и предназначенная для того, чтобы конкурировать с некоторыми особенностями файловой системы Sun ZFS, только что вошла в состав ядра Linux 2.6.29.

Сегодня утром Линус Торвальдс, наконец, «запихнул» Btrfs в основное ядро.

С этой файловой системой, которая привносит ряд преимуществ по сравнению с EXT4 в ядро Linux, а так же kernel mode-settings и другими особенностями, ядро Linux 2.6.29 видится очень интересным релизом. Подробнее о файловой системы Btrfs можно прочитать на веб-сайте проекта.

PS. Ранее про файловые системы на Хабре была статья, где кратко описываются основные особенности различных FS, в том числе и Btrfs.

Update. Вышел Linux 2.6.29-rc1. Релиз кандидат.
Всего голосов 33: ↑29 и ↓4 +25
Просмотры 1.7K
Комментарии 25

Появился первый релиз-кандидат ядра Linux 2.6.29.

Настройка Linux *
Только вчера я опубликовал новость о включении в состав основной ветки ядра linux 2.6.29 файловой системы Btrfs, а сегодня уже новое сообщение: вышел первый релиз-кандидат ядра Linux 2.6.29.

Официальное объявление можно прочитать здесь.
Полный список изменений Linux 2.6.29-rc1 — здесь.
Всего голосов 29: ↑27 и ↓2 +25
Просмотры 477
Комментарии 17

Мысли на полях и сжатый перевод материалов Ubuntu Open Week

Чулан
Перенесу-ка я пожалуй мои комментарии к этой теме в свой блог. А там посмотрим.

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

Читать дальше →
Всего голосов 9: ↑8 и ↓1 +7
Просмотры 191
Комментарии 7

Ubuntu Developer Week: Пакуем модули ядра с DKMS

Настройка Linux *
Краткая компиляция irc-чата в рамках Ubuntu Developer Week на тему «Packaging Kernel modules with DKMS»

Пакуем модули ядра с DKMS. Докладчик: уже известный нам Ben Collins

Смотрю я на список материалов январского Ubuntu Developer Week и глаз радуется. Много хорошего материала было рассмотрено в добровольно-принудительном общении разработчиков с комьюнити. Начнем сегодня с разговора о ядерных модулях и одном замечательном фреймворке для ухода за ними.
Читать дальше →
Всего голосов 16: ↑14 и ↓2 +12
Просмотры 4.6K
Комментарии 3

Новая версия ядра Linux 2.6.30

Настройка Linux *
Еще пару дней назад вышла новая версия ядра Linux 2.6.30

Из нового:
  • поддержка файловой системы ориентированной на последовательную запись больших массивов информации, NILFS2 (log-structured filesystem)
  • поддержка высокопроизводительной сетевой распределенной файловой системы POHMELFS (Parallel Optimized Host Message Exchange Layered File System)
  • поддержка файловой системы для устройств с объектно-ориентированным хранением данных EXOFS
  • поддержка кэширующей файловой системы FS-Cache
  • поддержка протокола межпроцессного общения для серверов в кластере RDS (Reliable Datagram Sockets)
  • поддержка быстрой загрузки ядра (Fastboot) от Intel за счет асинхронного опроса устройств
  • поддержка текущей спецификации разрабатываемого стандарта IEEE 802.11w

и т.д. changelog тут
Всего голосов 53: ↑43 и ↓10 +33
Просмотры 1.2K
Комментарии 34

Проблемы с ext4 в ubuntu jaunty

Настройка Linux *
Коротко о главном — ext4 в ubuntu jaunty нестабильна. При определённых обстоятельствах, в которые включается относительно малый объём свободного места — несколько Гб, при попытке удаления больших файлов или большого количества файлов, происходит зависание системы. Глухое зависание, что называется «под ресет». Есть соответствующий баг-репорт. Но это лечимо.

Читать дальше →
Всего голосов 14: ↑10 и ↓4 +6
Просмотры 1.1K
Комментарии 27