Настройка systemd

У меня минимальная встроенная система на основе i.MX6, у которой нет подключения к сети. Я планирую настроить systemd так, чтобы загрузка занимала меньше времени. В настоящее время для загрузки пользовательского пространства требуется больше времени. Я создал изображения с помощью yocto.

Можно ли настроить systemd с помощью yocto? или необходимо отключить службы systemd с помощью sysctl после загрузки платы.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
1 350
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Прежде всего проверьте, сколько служебных файлов systemd запущено при загрузке платы. В etc/systemd/system/ путь ко всем запущенным службам при загрузке. попробуйте удалить все службы (*.services) по очереди и загрузите плату.

Я удалял службы одну за другой, но когда я удалял несколько служб, таких как mountnfs.service, dmesg.service, время увеличивалось на 1 секунду. Проверка времени с помощью systemd-analysis. Услуги dev-mmcblk1p2.device (8.571s), systemd-logind.service (1.718s), console-kit-log-system-start.service (1.075s), rc-local.service (1.022s), systemd-update-utmp-runlevel.service (915ms), psplash-quit.service (553ms) занимают значительное время. Не уверены в сервисе dev-mmcblk1p2.device, является ли он родительским для всех сервисов?

Ravi A 03.09.2018 11:33

Я попытался изменить цель по умолчанию на basic.target с помощью systemctl set-default basic.target. Но после загрузки приглашение на вход в систему не появляется. Нет обновлений после Started Console System Startup Logging на приставке.

Ravi A 03.09.2018 14:14

@ Рави. сначала изучите systemd и начните работать. "mountnfs.service" этот сервис смонтирует ваши корни, если вы удалите его, то rootfs будет смонтирован.

yoctotutor.com 03.09.2018 14:20

Судя по названию, я подумал, что это связано с монтированием NFS, поэтому я отключил его, после его отключения плата загружается полностью и появляется запрос на вход, я предполагаю, что другие службы, которые зависят от "mountnfs.service", повторяются, из-за чего время загрузки увеличено еще на 1 сек. Можете ли вы помочь понять, почему запрос на вход в систему не отображается с помощью basic.target.

Ravi A 03.09.2018 14:24

Я изменил цель по умолчанию на базовую systemctl set-default basic.target, после этого изменения перезагрузил плату, теперь не получаю приглашения на вход. Служба входа находится на /lib/systemd/system/systemd-logind.service, а двоичный файл - на /lib/systemd/systemd-logind. Как изменить basic.target для запуска службы входа в систему. Можно ли пропустить службу входа в систему и напрямую получить командную строку.

Ravi A 04.09.2018 09:09
Ответ принят как подходящий

Это можно сделать из самого yocto. Но перед тем, как приступить к удалению, обязательно перечислите субкомпоненты / пакеты, которые вам не нужны в systemd.

В большинстве случаев вас могут не интересовать также пакеты timesyncd, timedated и другие сетевые пакеты.

Получите полный список здесь. Это последняя версия systemd bitbake со всеми доступными пакетами, которые она предоставляет. Выберите список, который вы хотите, и включите только тот список, который вы хотите, в файле .bbappend

Если у вас недостаточно контроля над уже включенными пакетами, создайте собственный .bbappend (может быть в вашем настраиваемом слое) с именем «systemd _%. bbappend» и добавьте,

PACKAGECONFIG_remove = "список пакетов для удаления".

Это удалит пакеты, которые вам не нужны в systemd. Та же процедура применяется к компонентам, не относящимся к systemd.

Спасибо, добавлено в файл .bbappend для удаления нежелательных пакетов, и это сработало. Можно ли увидеть все переменные и их значения, связанные с рецептом systemd, с помощью bitbake?

Ravi A 10.09.2018 12:13

@Ravi Вы можете использовать devshell в своем рецепте, если он поддерживает. Например, bitbake -c devshell systemd. это даст оболочку с окружением для рецепта. но не уверен, добавит ли он переменные внутри рецепта в среду.

Parthiban 10.09.2018 12:20

Когда я пытаюсь запустить devshell, появляется ошибка «Не удалось выполнить дочерний процесс» / tmp / tmpyw1cv1v2 «(В ​​доступе отказано)». Искал эту ошибку, но не получил никакой информации для исправления, большинство объяснений связано с предоставлением разрешения на выполнение файлу / скрипту, но здесь проблема связана с созданием файла во время выполнения в / tmp /. Использование ubuntu 14.04 для сборки.

Ravi A 13.09.2018 16:55

@ Рави: Я не уверен в этом. Возможно, что-то нужно настроить в вашей системе / среде. Обычно devshell не требует специальных разрешений.

Parthiban 13.09.2018 17:00

Изначально после поиска в net add path для gnome-terminal возникла ошибка двоичного файла терминала gnome. При копировании и вставке строки, которую я пропустил, чтобы добавить spcae + "", из-за этого возникла проблема с разрешением. Теперь это решено, но не знаю, как отсутствующее пространство вызвало эту проблему с разрешением.

Ravi A 14.09.2018 06:14

Теперь попробовал увидеть значения переменных рецепта в новом запущенном терминале. Пробовал с env на новом терминале, но не видел переменных рецепта systemd (скажем, зависит).

Ravi A 14.09.2018 06:24

Другие вопросы по теме