МойГентусистема сИнициализация OpenRCтребуется много времени для запуска, около 24 секунд (измерено отGRUBкГДМ). Мне было интересно, есть ли какие-нибудь рекомендуемые способы улучшить это время. Но в интернете не так много информации по этой теме, насколько я могу судить.
У меня Intel Core i5-6400 и Samsung SSD 970 EVO Plus 500 ГБ.
решение1
Все любят быстрый запуск системы, особенно на ежедневно используемом настольном компьютере. 24 секунды — это довольно долгое время запуска, и мне удалось сократить его до9 секунд.
Я покажу вам несколько советов, без необходимости трогать ваше ядро.
/etc/rc.conf
Начнем с файла конфигурации OpenRC. Есть опция, которая называется rc_parallel
. По умолчанию службы запускаются по одной, и когда какая-то служба занимает больше времени, она задерживает другие. Настройка rc_parallel="YES"
позволяет системе RC пытаться запускать службы параллельно для небольшого улучшения скорости. В моем случае это было -5 секунд.
A также пришлось установить rc_send_sighup="YES"
, rc_timeout_stopsec="10"
, rc_send_sigkill="YES"
, потому что xdm сервисне хотел останавливатьсяпри выключении системы.
rc-сервис, rc-обновление
Еще одна важная вещь — знать, какие службы на самом деле запускаются. Это вывод, который вы видите во время запуска. Если вы хотитезарегистрируйте этот вывод, установлено rc_logger="YES"
в /etc/rc.conf
файле. Здесь вы можете найти точное время, предупреждающие сообщения или ошибки.
Услуги делятся на так называемыеуровни запуска, что означает период, когда эти службы запускаются. В запуске системы задействованы два уровня запуска. boot
и default
.
Вы можете вывести список всех служб и их уровней запуска с помощью команды: rc-update show
.
Или вы можете вывести список всех запущенных и остановленных служб с помощью:rc-status --servicelist
В моем случае я нашел несколько ненужных служб, которые я мог безопасно отключить. Например bluetooth
, netmount
или net.enp0s31f6
службу для настройки моего сетевого интерфейса. Она была включена, даже если я использую NetworkManager
службу. Мне эти службы не были нужны, и я получил еще 10 секунд, отключив их.
Вы можете отключить службу на определенном уровне выполнения с помощью команды: rc-update del <service> <runlevel>
.
Всегдапроверьте, что делает конкретная услуга, прежде чем отключить его. Вы можете получить сломанную систему.
Надеюсь, это поможет кому-то и сэкономит мне немного времени.
решение2
Попробуйте установить app-shells/dash
пакет, а затем сделать так, чтобы /bin/sh
символическая ссылка указывала на dash
. Последнее можно сделать вручную или с помощью eselect sh
подкоманды.
Первым дистрибутивом, который сделал это по умолчанию, был Ubuntu более 10 лет назад (IIRC), и это имело большее значение, чем попытка запустить initscript параллельно, как рекомендуется в другом ответе.