Я работаю над встроенной системой. ОС - это проект 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
linux
boot
embedded-linux
deepan
источник
источник
Ответы:
Минимизация времени загрузки - шаг 3. Ваши шаги 1 и 2 выясняют, что на самом деле занимает так много времени и почему .
Процесс загрузки не такой прямой, как «кнопка питания → ядро → ваше приложение». В течение первых 500 мс вы получаете исходную прошивку; загрузчик, если есть; и ядро Linux, загружающее графические драйверы. Остальное - «init» (systemd), запускающий различные сервисы, пока он не достигнет точки, когда он может даже начать запускать ваше приложение.
systemd-analyze blame
,systemd-analyze critical-chain
чтобы посмотреть, какие системные модули запускаются дольше всего. Выясните, почему каждый блок медленный, и нужен ли он вообще. (Большинство юнитов начинаются в параллельных группах. Некоторые сериализуются, но иногда без необходимости.)источник
Мигание курсора было удалено путем передачи vt.global_cursor_default = 0
источник