минимизировать время загрузки для Linux

0

Я работаю над встроенной системой. ОС - это проект Yocto (Ubuntu). Мое целевое оборудование должно запускать приложение анимации после включения. Я запускаю мое анимационное приложение в качестве службы systemd под basic.target.

Но как только я включил плату, на экране появляется флэш-экран в течение примерно 500 мс, и после этого курсор мигает в течение 10 секунд, затем запускается мое приложение для анимации. так что мое анимационное приложение начинает показываться на экране примерно за 13 секунд.

Я хочу убрать этот экран со вспышкой и курсор мигает. Что я должен делать? Есть ли способ минимизировать время загрузки ядра?

Результат обвинения systemd-analysis выглядит следующим образом:

      1.065s dev-mmcblk1p1.device
      1.004s launchHMIUSB.service
       518ms launchWeston.service
       437ms node-startup-controller.service
       287ms kmod-static-nodes.service
       286ms systemd-remount-fs.service
       279ms pas-daemon.service
       254ms systemd-modules-load.service
       245ms alsa-restore.service
       219ms systemd-journal-flush.service
       219ms connman.service
       207ms systemd-udev-trigger.service
       202ms dev-hugepages.mount
       190ms systemd-journald.service
       138ms systemd-sysctl.service
       133ms ofono.service
       127ms systemd-vconsole-setup.service
       121ms tmp.mount
       120ms systemd-update-utmp.service
       117ms dev-mqueue.mount
       102ms systemd-logind.service
       101ms node-health-monitor.service
        93ms sys-fs-fuse-connections.mount
        90ms sys-kernel-config.mount
        90ms sys-kernel-debug.mount
        88ms systemd-tmpfiles-setup-dev.service
        74ms user@0.service
        68ms wpa_supplicant.service
        67ms systemd-udevd.service
        60ms nodestatemanager-daemon.service
        53ms systemd-update-utmp-runlevel.service
        31ms systemd-random-seed.service
        31ms systemd-user-sessions.service
        18ms sshd.socket
        16ms systemd-tmpfiles-setup.service
        16ms Data-mnttemp.mount
        15ms var-volatile.mount
deepan
источник
Вы можете посмотреть на (и редактировать вопрос включать) результаты «Systemd-анализ вины» , чтобы начать, и проверить это , чтобы увидеть , если это помогает с мигающим курсором: wiki.archlinux.org/index.php/...
lx07
результат обвинения systemd-analysis добавляется в соответствии с запросом. Комментарий systemd-analysis дает время завершения запуска за 11,836 с (пространство пользователей) = 13,877 с. Я прошел по ссылке, прикрепленной выше, для удаления мерцания курсора, но я не смог сделать экспорт std_bootarg vt.global_cursor_default = 0 . Это показывает bash: export: `vt.global_cursor_default = 0 ': недопустимый идентификатор . У вас есть какое-то решение для этого. Спасибо.
Дипан

Ответы:

2

Минимизация времени загрузки - шаг 3. Ваши шаги 1 и 2 выясняют, что на самом деле занимает так много времени и почему .

Процесс загрузки не такой прямой, как «кнопка питания → ядро ​​→ ваше приложение». В течение первых 500 мс вы получаете исходную прошивку; загрузчик, если есть; и ядро ​​Linux, загружающее графические драйверы. Остальное - «init» (systemd), запускающий различные сервисы, пока он не достигнет точки, когда он может даже начать запускать ваше приложение.

  • Изучите системные журналы, чтобы найти наиболее очевидные ошибки.
  • Изучите выходные данные systemd-analyze blame, systemd-analyze critical-chainчтобы посмотреть, какие системные модули запускаются дольше всего. Выясните, почему каждый блок медленный, и нужен ли он вообще. (Большинство юнитов начинаются в параллельных группах. Некоторые сериализуются, но иногда без необходимости.)
  • Используйте такие инструменты, как bootchartd для мониторинга ресурсов во время загрузки системы. Например, это может быть связано с тем, что ваше хранилище слишком медленное или что определенная служба слишком долго загружает процессор.
grawity
источник
Спасибо за ответ. Я проверил с помощью systemd- analysis вина и systemd-анализ критической цепочки lazy.target комментарии (lazy.target - конечная цель, которую я запускаю), она показывает только 3 с. Но комментарий systemd- analysis дает время окончания запуска за 11,836 с (пространство пользователей) = 13,877 с . Это 13.877s перед процессом init или после процесса init. Если до запуска процесса init, как подойти к этой проблеме? Спасибо.
Дипан
0

Мигание курсора было удалено путем передачи vt.global_cursor_default = 0

setenv bootargs 'vt.global_cursor_default=0'
saveenv
deepan
источник