Рубрика «linux kernel» - 9

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

Недостатки текущего интерфейса

Прочитав заголовок, возникает вопрос:”A чем же старый интерфейс не угодил”? Многие из вас знают, что сейчас информация о процессах собирается по файловой системе procfs. Здесь каждому процессу соответствует директория, которая содержит несколько десятков файлов.

$ ls /proc/self/ 
attr             cwd      loginuid    numa_maps      schedstat  task
autogroup        environ  map_files   oom_adj        sessionid  timers
auxv             exe      maps        oom_score      setgroups  uid_map
cgroup           fd       mem         oom_score_adj  smaps      wchan
clear_refs       fdinfo   mountinfo   pagemap        stack
cmdline          gid_map  mounts      personality    stat
comm             io       mountstats  projid_map     statm
coredump_filter  latency  net         root           status
cpuset           limits   ns          sched          syscall

Читать полностью »

Тихо и незаметно вышло в свет ядро Linux 4.4 LTS (Long-Term Support), о чем известил Линус Торвальдс. Новинка включает довольно значительные обновления, включая, например, 3D поддержку виртуальных дравейров GPU. Благодаря этому можно использовать аппаратную поддержку графики в guest VM. Также включена поддержка Open-Channel Solid State Drives (SSDs) посредством LightNVM.

Более того, Linux kernel 4.4 LTS поддерживает RAID5 MD, добавлена возможность непривилегированным пользователям запускать eBPF программы. Также стоит упомянуть поддержку поллинга для улучшения общей производительности high-end устройств хранения данных, mlock2() syscal и многое другое. Улучшена поддержка 64-битных ARM, решена проблема с утечкой памяти в Skylake CPU от Intel. Добавлена возможность работы слушающих TCP-сокетов в неблокирующем режиме, возможность определения потери TCP-пакетов с использованием RACK, добавлен KMS-драйвер для «малинки» (Raspberry Pi), а xconfig переведён на Qt5.

В новой версии принято примерно 13 тысяч исправлений, внесенный 1548 разработчиками. Примерно 44% всех изменений в новой версии ядра связано с драйверами устройств.
Читать полностью »

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

  • На обратной стороне стоит sata-разьем — можно прицеплять hdd без вороха проводов. Очень важно, потому что немножко префекционист и не люблю, когда провода занимают объем больший, чем сама плата.
  • На плате разведено аж два lvds. То есть берем любую матрицу от ноута, отрезаем мелкий разъем, ставим на его место BLD2х15 и все. Если там не провод, а шлейф, то на али можно купить готовый провод за пару долларов. Китайские ноутбучные матрицы стоят копье по сравнению с готовыми экранами тех же разрешений и размеров.
  • Почти все разъемы идут по одному краю платы. Вот никогда не понимал, что движет разработчиком платы в тот момент, когда он ставит разьемы по всем четырем сторонам? Первая малина яркий тому пример. Зачем? Корпус нормальный не сделаешь, на столе занимает места раз в 6-9 больше, чем сама размером, если куда вставить — надо выпаивать все эти разъемы...

Но есть у платы и небольшой минус. Плата новая и разраб сделал под нее только buildroot c QT. А некоторым этого мало… Мне хотелось полноценную систему, как на десктопе. Зачем? Об этом и статья.
Читать полностью »

image

Год назад выполнял довольно интересную работу по разработке встраиваемого компьютера для одного предприятия, занимающегося электроникой. Компьютер ничего принципиально интересного не представлял: процессор Cortex A-8, работающий на субгигагерцовых частотах, 512Mb DDR3, 1Gb NAND, легковесная сборка Linux. Однако устройству, в который компьютер встраивался, а значит и ему самому, предстояло работать в довольно жестких условиях. Широкий температурный диапазон (от -40 до +85 градусов Цельсия), влагостойкость, стойкость к электромагнитным излучениям, киловольтные импульсы по питанию, защита от статики в 4 кВ и много чего интересного, что хорошо описано в различных ГОСТах на спецтехнику, – это все про него. Одно из основных требований заказчика – срок выработки на отказ не менее 10 лет. При этом производитель обеспечивает гарантийный ремонт изделия в течении пяти лет, потому вопрос не риторический, а денежный и серьезный. В изделие была заложена соответствующая элементная база. Прибор с честью прошел испытания и получил требуемые сертификаты, но разговор не про то. Проблемы начались когда была изготовлена установочная партия, и устройства разошлись по отделам и КБ для создания прикладного ПО. Пошли возвраты с формулировкой: «Чего-то не загружается».
Читать полностью »

Линус Торвальдс представил Linux Kernel 4.0 - 1

На днях Линус Торвальдс представил финальный релиз ядра Linux 4.0 (3.2). Выпуск нового релиза ядра прошел по плану, без особых проблем. При этом в Linux 4.0 обычное количество новых функций, Линус Торвальдс заявляет, что более инновационным (если можно так выразиться) будет версия 4.1, там будет больше новых функций и возможностей. Стоит отметить, что ранее релизу ядра планировалось присвоить версию 3.2, но после проведения голосования в блоге Торвальдса на Google Plus было решено выбрать V4.0.

Что касается версии 4.0, здесь достаточно много обновлений, которые имеют отношение к графическим драйверам. К примеру, добавлена поддержка аудио DisplayPort в драйвере Radeon DRM, плюс улучшен контроль скорости работы вентилятора.
Читать полностью »

Наблюдая за появляющимися драйверами в ядре Linux, не могу не отметить, что разработчики недостаточно хорошо знают инфраструктуру ядра, точнее внутренний API, значительно упрощающий жизнь при написании драйверов устройств. Сегодня я коснусь темы, посвящённой управляемым ресурсам. В частности поясню каким образом они работают и как упрощают разработку драйверов. Читать полностью »

Ко всемирному дню #ArduinoD15 Запускаем свежайшее ядро Linux на Intel Edison - 1 я подготовил материал по конфигурации и запуску свежайшего ядра Linux на плате Intel Edison (Arduino Edition).
Читать полностью »

Идея в следующем. Чтобы не было разыменование нулевого указателя, нужно, чтобы не было нулевого указателя. Ваш КО. Так сложилось, что однажды я исправил небольшую проблему в ядре Linux, но это была не текущая ветка ядра, а стабильная. В текущей на тот момент эту проблему тоже исправили, но по другому.
Читать полностью »

Продолжая тему улучшения кода ядра Linux хочу дать несколько рекомендаций, основанных как на жизненном опыте, так и на существующей документации.
Читать полностью »

Наверняка многие хотели бы попробовать что-то изменить в ядре Linux к лучшему, но не знают с чего начать. Я хочу описать несколько проблем, исправить которые под силу каждому, и на примере показать путь от нахождения проблемы до опубликования её исправления в списке рассылки. По ходу повествования читатель познакомится с некоторыми вспомогательными утилитами.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js