User Tools

Site Tools


система_инициализации_на_си

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
система_инициализации_на_си [2024/02/18 20:01] uf4nсистема_инициализации_на_си [2024/03/09 18:11] (current) uf4n
Line 2: Line 2:
  
 ===== Концепция ===== ===== Концепция =====
-External Linkызывает интерпретатор + 
-Хотелось бы достигнуть наибольшей возможной скорости инициализации системы. Для этого можно было бы включить **в один код на Си** зпуск демонов, монтирование файловых систбез оптимизаций кем, инициализацию драйверов и т.п. Это позволило бы сократить на порядок количесво системных вызовов, неизбежных при использовании Bash.+Хотелось бы достигнуть наибольшей возможной скорости инициализации системы. Для этого можно было бы включить **в один код на Си** зпуск демонов, монтирование файловых систем, инициализацию драйверов и т.п.
  
 Проблемы обычного sysvinit: Проблемы обычного sysvinit:
Line 15: Line 15:
 Очень бы хотелось сохранить интерактив, подобный тому, что предоставляет sysvinit, так как он весьма прост в реализации и понятен системным администраторам. Им не придётся переучиваться. Очень бы хотелось сохранить интерактив, подобный тому, что предоставляет sysvinit, так как он весьма прост в реализации и понятен системным администраторам. Им не придётся переучиваться.
  
-Если пользователь захочет изменить набор запускаемых сервисов или порядок их запуска некой специальной командой (аналог service), исходный файл на Си будет перегенерирован и перекомпилирован. Это напоминает принцип работы загрузчика LILO, для которого надо запускать процедуру перегенерации MBR и PBR при любых вмешательствах в конфигурационные файлы или изменениях ядра.+Если пользователь захочет изменить набор запускаемых сервисов или порядок их запуска, исходный файл на Си будет перегенерирован и перекомпилирован. Это напоминает принцип работы загрузчика LILO, для которого надо запускать процедуру перегенерации MBR и PBR при любых вмешательствах в конфигурационные файлы или изменениях ядра.
  
 Запуск каждого демона можно описать в отдельном текстовом файле. При добавлении сервиса в автозапуск, подобно тому, как это делается в sysvinit, система инициализации должна отследить изменения в каталогах /etc/rc*.d/ (условно) и сконкатенировать код запуска демона в код init'a. Сразу после этого файл компилируется со всеми возможными оптимизациями (компилировать такой init как-то иначе смысла нет), такими как march=native, O3 и flto. Запуск каждого демона можно описать в отдельном текстовом файле. При добавлении сервиса в автозапуск, подобно тому, как это делается в sysvinit, система инициализации должна отследить изменения в каталогах /etc/rc*.d/ (условно) и сконкатенировать код запуска демона в код init'a. Сразу после этого файл компилируется со всеми возможными оптимизациями (компилировать такой init как-то иначе смысла нет), такими как march=native, O3 и flto.
 +
 +Библиотечную функцию execve можно попробовать реализовать на ассемблече с помощью удобных макросов.
  
   * Наш init сохраняет систему уровней запуска (runlevels)   * Наш init сохраняет систему уровней запуска (runlevels)
система_инициализации_на_си.1708286491.txt.gz · Last modified: 2024/02/18 20:01 by uf4n