Недавняя ситуация с зависшей батареей снова напомнила о себе, когда баг, мучивший меня в ядре Linux несколько лет, вдруг обнаружился в FreeBSD. Это стало неожиданностью, учитывая давние споры о различиях между этими операционными системами. Основная проблема заключалась в том, что ноутбук переставал отображать статус заряда после выхода из спящего режима. Мой старенький Asus F3Ke оказался подвержен этой ошибке, вызванной несовершенной поддержкой ACPI.
История с поиском решения была довольно длительной, но сейчас меня интересует, каким образом этот баг из драйвера одной системы перекочевал в другую. В FreeBSD есть каталоги contrib, где хранится код, разработанный вне проекта. В частности, именно в каталоге /usr/src/sys/contrib/dev/acpica находится источник проблемы.
ACPICA, разработанная Intel, представляет собой реализацию ACPI, активно используемую в обеих системах. Оказалось, что оригинальный код, который я исправлял, был перенесен из Linux в FreeBSD без изменений. Эта история показывает, как открытые проекты могут обмениваться кодом и идеями, что подчеркивает важность сотрудничества в мире технологий.
Вопрос-ответ
Какую проблему с батареей и ACPI вы заметили на ноутбуке?
На Asus F3Ke после выхода из спящего режима переставал отображаться статус заряда батареи. Проблема была связана с несовершенной поддержкой ACPI в системе, что приводило к неправильному обновлению уровня заряда и индикаторов.
Как связаны между собой Linux и FreeBSD в контексте этой проблемы?
Исследование показало, что код, который исправлял баг в Linux, был перенесён в FreeBSD без изменений через каталог contrib, где хранятся внешние разработки. Это демонстрирует реальное взаимное влияние открытых проектов и обмен кодом между операционными системами.
Где именно находится источник проблемы в FreeBSD?
Источник проблемы лежит в каталоге /usr/src/sys/contrib/dev/acpica, где расположен код ACPICA — реализации ACPI, разработанной Intel и используемой в обеих системах. Перенос оригинального кода из Linux без адаптаций стал причиной бага в FreeBSD.
Почему важно сотрудничество и обмен кодом в открытых проектах?
История показывает, что совместное использование решений между проектами позволяет быстрее выявлять и исправлять уязвимости, улучшать совместимость устройств и ускорять развитие технологий. Обмен кодом в рамках открытых проектов способствует более стабильной и совместимой экосистеме.


