新添加的Plymouth主题在启动时没有显示出来。

我正在使用Ubuntu 16.04,当我添加并选择除默认主题之外的其他Plymouth主题时,在重新启动进行测试时,我可以在关机过程中看到它,但在启动后,经过grub后我会得到一个黑屏,上面什么都没有,直到我到达登录界面。

请告诉我们在哪里以及如何设置这个其他的普利茅斯主题。 - d1bro
  1. 将custom_theme_directory复制到/usr/share/plymouth/themes。
  2. 安装主题。
  3. 使用sudo update-alternatives --config default.plymouth设置主题。
  4. 运行sudo update-initramfs -u
- kashish
主题是使用命令 sudo update-alternatives --install /usr/share/plymouth/themes/default.plymouth default.plymouth /usr/share/plymouth/themes/custom_theme_directory/ubuntu-logo.plymouth 100 安装的。 - kashish
2个回答

安装它还不够。
每个Plymouth主题都有一个优先级,默认情况下选择优先级最高的作为启动主题。您可以使用以下命令覆盖它:
sudo update-alternatives -config default.plymouth

展示类似这样的内容:
There are 2 choices for the alternative default.plymouth (providing /usr/share/plymouth/themes/default.plymouth).

  Selection    Path                                                                 Priority   Status
------------------------------------------------------------
* 0            /usr/share/plymouth/themes/ubuntu-logo/ubuntu-logo.plymouth           100       auto mode
  1            /usr/share/plymouth/themes/ubuntu-logo/ubuntu-logo-scale-2.plymouth   99        manual mode
  2            /usr/share/plymouth/themes/ubuntu-logo/ubuntu-logo.plymouth           100       manual mode

Press <enter> to keep the current choice[*], or type selection number:

目前在我的系统中选择的选项(默认选项)是0(自动),您可以通过星号字符(*)看到。

您还可以看到自动选择的主题。

您应该在那里看到您的主题,只需在“选择”列中写入数字并按回车键。

然后您需要使更改生效,要做到这一点,请运行以下命令:

sudo update-initramfs -u

重启后,您应该能看到您的新主题。
这一切已经在this问题中有详细记录。

我已经做过了,并且在评论中提到过。 - kashish
2此外,该主题在关闭时可见,但在启动时不可见。 - kashish

我遇到了同样的问题(还有很多其他问题),在Ubuntu 16.04下无法使用2011年的地球日出主题。
将路径名从“小于16.04”更改为“16.04格式”。
文件“/usr/share/plymouth/themes/default.plymouth”中有来自Ubuntu 14.04的旧路径,必须更改以反映Ubuntu 16.04。
请确保您的路径名包含类似这样的内容:
[Plymouth Theme]
Name=Earth Sunrise
Description=This theme is a modification of Andre "Osku" Schmidt's Space sunrise plymouth theme
ModuleName=script

[script]
ImageDir=/usr/share/plymouth/themes/earth-sunrise
ScriptFile=/usr/share/plymouth/themes/earth-sunrise/earth-sunrise.script

initramfs-tools中的帧缓冲

编辑文件/etc/initramfs-tools/conf.d/splash并添加以下行:

FRAMEBUFFER=y

平稳过渡到GDM

为了实现平稳过渡,您需要禁用显示管理器单元,例如:

systemctl disable gdm.service

启用相应的DM-plymouth单元(提供GDM、LXDM、SLiM单元),例如。
systemctl enable gdm-plymouth.service

打开调试模式

编辑文件/etc/default/grub,并搜索LINUX_DEFAULT行:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash vt.handoff=7 kaslr"

将其更改为这样:
GRUB_CMDLINE_LINUX_DEFAULT="plymouth:debug splash vt.handoff=7 kaslr"

注意,plymouth:debug 是重要的事情。同时,splash 总是需要调用 plymouth。
重新启动后,查看文件 /var/log/plymouth-debug.log,它应该类似于以下内容:
[main.c:1865]                                 check_logging:checking if console messages should be redirected and logged
[main.c:1874]                                 check_logging:logging will be enabled!
[main.c:1946]                        initialize_environment:source built on May 10 2016
[main.c:1957]                        initialize_environment:Making sure /run/plymouth exists
[ply-utils.c:703]                          ply_create_directory:directory '/run/plymouth' already exists
[main.c:1961]                        initialize_environment:initialized minimal work environment
[main.c:716]                       get_cache_file_for_mode:returning cache file '/var/lib/plymouth//boot-duration'
[main.c:321]                                 load_settings:Trying to load /etc/plymouth//plymouthd.conf
[ply-key-file.c:83]                        ply_key_file_open_file:Failed to open key file /etc/plymouth//plymouthd.conf: No such file or directory
[main.c:449]                    find_system_default_splash:failed to load /etc/plymouth//plymouthd.conf
[main.c:321]                                 load_settings:Trying to load /usr/share/plymouth//plymouthd.defaults
[ply-key-file.c:83]                        ply_key_file_open_file:Failed to open key file /usr/share/plymouth//plymouthd.defaults: No such file or directory
[main.c:463]              find_distribution_default_splash:failed to load /usr/share/plymouth//plymouthd.defaults
[main.c:873]           plymouth_should_show_default_splash:checking if plymouth should show default splash
[main.c:901]           plymouth_should_show_default_splash:using default splash because kernel command line has option "splash"
[ply-device-manager.c:668]                   create_seats_from_terminals:checking for consoles
[ply-device-manager.c:555]                        add_consoles_from_file:opening /sys/class/tty/console/active
[ply-device-manager.c:563]                        add_consoles_from_file:reading file
[ply-device-manager.c:601]                        add_consoles_from_file:console /dev/pts/17 found!
[ply-device-manager.c:793]                ply_device_manager_watch_seats:udev support disabled, creating fallback seat
[ply-device-manager.c:635]    create_seat_for_terminal_and_renderer_type:creating seat for /dev/pts/17 (renderer type: 0) (terminal: /dev/pts/17)
[ply-renderer.c:230]                      ply_renderer_open_plugin:trying to open renderer plugin /usr/lib/x86_64-linux-gnu/plymouth/renderers/x11.so
[ply-renderer.c:250]                      ply_renderer_open_plugin:opened renderer plugin /usr/lib/x86_64-linux-gnu/plymouth/renderers/x11.so
[ply-seat.c:80]                            add_pixel_displays:Adding displays for 1 heads
[ply-terminal.c:600]                             ply_terminal_open:trying to open terminal '/dev/pts/17'
[ply-terminal.c:395]                 ply_terminal_look_up_geometry:looking up terminal text geometry
[ply-terminal.c:409]                 ply_terminal_look_up_geometry:terminal is now 80x24 text cells
[ply-seat.c:113]                             add_text_displays:adding text display for terminal /dev/pts/17
[main.c:1034]                                 on_seat_added:listening for keystrokes
[main.c:1038]                                 on_seat_added:listening for escape
[main.c:1042]                                 on_seat_added:listening for backspace
[main.c:1046]                                 on_seat_added:listening for enter
[main.c:2243]                                          main:entering event loop
[ply-terminal.c:395]                 ply_terminal_look_up_geometry:looking up terminal text geometry
[ply-terminal.c:409]                 ply_terminal_look_up_geometry:terminal is now 81x24 text cells
[ply-terminal.c:395]                 ply_terminal_look_up_geometry:looking up terminal text geometry
[ply-terminal.c:409]                 ply_terminal_look_up_geometry:terminal is now 82x24 text cells
[ply-terminal.c:395]                 ply_terminal_look_up_geometry:looking up terminal text geometry
[ply-terminal.c:409]                 ply_terminal_look_up_geometry:terminal is now 85x24 text cells
[ply-terminal.c:395]                 ply_terminal_look_up_geometry:looking up terminal text geometry
[ply-terminal.c:409]                 ply_terminal_look_up_geometry:terminal is now 89x24 text cells
[ply-terminal.c:395]                 ply_terminal_look_up_geometry:looking up terminal text geometry
[ply-terminal.c:409]                 ply_terminal_look_up_geometry:terminal is now 92x24 text cells
[ply-terminal.c:395]                 ply_terminal_look_up_geometry:looking up terminal text geometry
[ply-terminal.c:409]                 ply_terminal_look_up_geometry:terminal is now 97x24 text cells
[ply-terminal.c:395]                 ply_terminal_look_up_geometry:looking up terminal text geometry
[ply-terminal.c:409]                 ply_terminal_look_up_geometry:terminal is now 101x24 text cells
[ply-terminal.c:395]                 ply_terminal_look_up_geometry:looking up terminal text geometry
[ply-terminal.c:409]                 ply_terminal_look_up_geometry:terminal is now 104x24 text cells
[ply-terminal.c:395]                 ply_terminal_look_up_geometry:looking up terminal text geometry
[ply-terminal.c:409]                 ply_terminal_look_up_geometry:terminal is now 108x24 text cells
[ply-terminal.c:395]                 ply_terminal_look_up_geometry:looking up terminal text geometry
[ply-terminal.c:409]                 ply_terminal_look_up_geometry:terminal is now 111x24 text cells
[ply-terminal.c:395]                 ply_terminal_look_up_geometry:looking up terminal text geometry
[ply-terminal.c:409]                 ply_terminal_look_up_geometry:terminal is now 112x24 text cells
[ply-boot-server.c:388]             print_connection_process_identity:connection is from pid 8073 (plymouth --ping) with parent pid 7812 (sudo plymouth --ping)
[ply-event-loop.c:1060]   ply_event_loop_handle_disconnect_for_source:calling disconnected_handler 0x406350 for fd 12
[ply-event-loop.c:1064]   ply_event_loop_handle_disconnect_for_source:done calling disconnected_handler 0x406350 for fd 12
[ply-event-loop.c:1144]   ply_event_loop_free_destinations_for_source:freeing destination (1, 0x406490, 0x406350) of fd 12
[ply-event-loop.c:643]             ply_event_loop_remove_source_node:failed to delete fd 12 from epoll watch list: Bad file descriptor
[ply-boot-server.c:388]             print_connection_process_identity:connection is from pid 10838 (plymouth show-splash) with parent pid 10837 (sudo plymouth show-splash)
[ply-boot-server.c:484]                ply_boot_connection_on_request:got show splash request
[main.c:843]      plymouth_should_ignore_show_splash_calls:checking if plymouth should be running
[main.c:942]                                on_show_splash:at least one seat already open, so loading splash
[main.c:873]           plymouth_should_show_default_splash:checking if plymouth should show default splash
[main.c:901]           plymouth_should_show_default_splash:using default splash because kernel command line has option "splash"
[main.c:476]                           show_default_splash:Showing splash screen
[main.c:495]                           show_default_splash:Trying old scheme for default splash
[main.c:1610]                                    load_theme:Loading boot splash theme '/usr/share/plymouth/themes/default.plymouth'
[ply-key-file.c:171]                       ply_key_file_load_group:trying to load group Plymouth Theme
[ply-key-file.c:171]                       ply_key_file_load_group:trying to load group script
[ply-key-file.c:259]                      ply_key_file_load_groups:key file has no more groups
[main.c:1625]                                    load_theme:attaching plugin to event loop
[main.c:1628]                                    load_theme:attaching progress to plugin
[ply-boot-splash.c:178]                                attach_to_seat:adding pixel displays
[ply-boot-splash.c:191]                                attach_to_seat:Adding 1920x1080 pixel display
[ply-device-manager.c:841]         ply_device_manager_activate_renderers:activating renderers
[ply-boot-splash.c:491]                          ply_boot_splash_show:showing splash screen
[./plugin.c:424]                            show_splash_screen:starting boot animation
[./plugin.c:302]                               start_animation:parsing script file
[./plugin.c:280]                        start_script_animation:executing script file
[ply-device-manager.c:881]         ply_device_manager_activate_keyboards:activating keyboards
[main.c:294]                                 show_messages:not displaying messages, since no boot splash
[ply-event-loop.c:1060]   ply_event_loop_handle_disconnect_for_source:calling disconnected_handler 0x406350 for fd 12
[ply-event-loop.c:1064]   ply_event_loop_handle_disconnect_for_source:done calling disconnected_handler 0x406350 for fd 12
[ply-event-loop.c:1144]   ply_event_loop_free_destinations_for_source:freeing destination (1, 0x406490, 0x406350) of fd 12
[ply-event-loop.c:643]             ply_event_loop_remove_source_node:failed to delete fd 12 from epoll watch list: Bad file descriptor
[ply-boot-server.c:388]             print_connection_process_identity:connection is from pid 13320 (plymouth message --text=hello world) with parent pid 13319 (sudo plymouth message --text=hello world)
[ply-boot-server.c:637]                ply_boot_connection_on_request:got show message request
[main.c:595]                            on_display_message:displaying message hello world
[ply-event-loop.c:1060]   ply_event_loop_handle_disconnect_for_source:calling disconnected_handler 0x406350 for fd 12
[ply-event-loop.c:1064]   ply_event_loop_handle_disconnect_for_source:done calling disconnected_handler 0x406350 for fd 12
[ply-event-loop.c:1144]   ply_event_loop_free_destinations_for_source:freeing destination (1, 0x406490, 0x406350) of fd 12
[ply-event-loop.c:643]             ply_event_loop_remove_source_node:failed to delete fd 12 from epoll watch list: Bad file descriptor
[ply-boot-server.c:388]             print_connection_process_identity:connection is from pid 16361 (plymouth show-splash) with parent pid 16360 (sudo plymouth show-splash)
[ply-boot-server.c:484]                ply_boot_connection_on_request:got show splash request
[main.c:920]                                on_show_splash:show splash called while already shown
[ply-event-loop.c:1060]   ply_event_loop_handle_disconnect_for_source:calling disconnected_handler 0x406350 for fd 12
[ply-event-loop.c:1064]   ply_event_loop_handle_disconnect_for_source:done calling disconnected_handler 0x406350 for fd 12
[ply-event-loop.c:1144]   ply_event_loop_free_destinations_for_source:freeing destination (1, 0x406490, 0x406350) of fd 12
[ply-event-loop.c:643]             ply_event_loop_remove_source_node:failed to delete fd 12 from epoll watch list: Bad file descriptor
[ply-boot-server.c:388]             print_connection_process_identity:connection is from pid 17411 (plymouth pause-progress) with parent pid 17410 (sudo plymouth pause-progress)
[ply-boot-server.c:672]                ply_boot_connection_on_request:got progress pause request
[main.c:665]                             on_progress_pause:pausing progress
[ply-event-loop.c:1060]   ply_event_loop_handle_disconnect_for_source:calling disconnected_handler 0x406350 for fd 12
[ply-event-loop.c:1064]   ply_event_loop_handle_disconnect_for_source:done calling disconnected_handler 0x406350 for fd 12
[ply-event-loop.c:1144]   ply_event_loop_free_destinations_for_source:freeing destination (1, 0x406490, 0x406350) of fd 12
[ply-event-loop.c:643]             ply_event_loop_remove_source_node:failed to delete fd 12 from epoll watch list: Bad file descriptor
[ply-boot-server.c:388]             print_connection_process_identity:connection is from pid 21148 (plymouth show-splash) with parent pid 20299 (sudo plymouth show-splash)
[ply-boot-server.c:484]                ply_boot_connection_on_request:got show splash request
[main.c:920]                                on_show_splash:show splash called while already shown
[ply-event-loop.c:1060]   ply_event_loop_handle_disconnect_for_source:calling disconnected_handler 0x406350 for fd 12
[ply-event-loop.c:1064]   ply_event_loop_handle_disconnect_for_source:done calling disconnected_handler 0x406350 for fd 12
[ply-event-loop.c:1144]   ply_event_loop_free_destinations_for_source:freeing destination (1, 0x406490, 0x406350) of fd 12
[ply-event-loop.c:643]             ply_event_loop_remove_source_node:failed to delete fd 12 from epoll watch list: Bad file descriptor
[ply-boot-server.c:388]             print_connection_process_identity:connection is from pid 29215 (plymouth --quit) with parent pid 29214 (sudo plymouth --quit)
[ply-boot-server.c:519]                ply_boot_connection_on_request:got quit request
[main.c:1290]                                       on_quit:quitting (retain splash: false)
[main.c:1307]                                       on_quit:system not initialized so skipping saving boot-duration file
[main.c:1566]         tell_systemd_to_stop_printing_details:telling systemd to stop printing details
[main.c:1316]                                       on_quit:closing log
[ply-device-manager.c:901]       ply_device_manager_deactivate_keyboards:deactivating keyboards
[ply-seat.c:185]                  ply_seat_deactivate_keyboard:deactivating keyboard
[main.c:1322]                                       on_quit:unloading splash
[ply-boot-splash.c:689]                   ply_boot_splash_become_idle:telling splash to become idle
[ply-boot-splash.c:668]                                       on_idle:splash now idle
[main.c:1202]                           on_boot_splash_idle:boot splash idle
[main.c:1209]                           on_boot_splash_idle:hiding splash
[ply-device-manager.c:861]       ply_device_manager_deactivate_renderers:deactivating renderers
[ply-seat.c:200]                  ply_seat_deactivate_renderer:deactivating renderer
[ply-event-loop.c:951]      ply_event_loop_stop_watching_for_timeout:multiple matching timeouts found for removal
[main.c:1214]                           on_boot_splash_idle:quitting splash
[main.c:1070]                                   quit_splash:quiting splash
[main.c:1072]                                   quit_splash:freeing splash
[ply-boot-splash.c:406]                          ply_boot_splash_free:freeing splash
[ply-event-loop.c:965]      ply_event_loop_stop_watching_for_timeout:no matching timeout found for removal
[ply-boot-splash.c:385]                             detach_from_seats:detaching from seats
[ply-boot-splash.c:110]                              detach_from_seat:removing keyboard
[ply-boot-splash.c:116]                              detach_from_seat:removing pixel displays
[ply-boot-splash.c:131]                              detach_from_seat:Removing 1920x1080 pixel display
[ply-boot-splash.c:139]                              detach_from_seat:removing text displays
[ply-boot-splash.c:153]                              detach_from_seat:Removing 112x24 text display
[ply-device-manager.c:901]       ply_device_manager_deactivate_keyboards:deactivating keyboards
[main.c:1081]                                   quit_splash:Not retaining splash, so deallocating VT
[ply-terminal.c:919]                    ply_terminal_deactivate_vt:terminal is not for a VT
[ply-terminal.c:669]                            ply_terminal_close:restoring color palette
[ply-terminal.c:673]                            ply_terminal_close:stop watching tty fd
[ply-event-loop.c:759]               ply_event_loop_stop_watching_fd:stopping watching fd 11
[ply-event-loop.c:775]               ply_event_loop_stop_watching_fd:removing destination for fd 11
[ply-event-loop.c:784]               ply_event_loop_stop_watching_fd:no more destinations remaing for fd 11, removing source
[ply-terminal.c:679]                            ply_terminal_close:stop watching SIGWINCH signal
[ply-terminal.c:683]                            ply_terminal_close:setting buffered input
[main.c:1216]                           on_boot_splash_idle:quitting program
[main.c:1144]                                  quit_program:cleaning up devices
[ply-device-manager.c:521]                       ply_device_manager_free:freeing device manager
[ply-device-manager.c:422]                                    free_seats:removing seats
[main.c:957]                               on_seat_removed:no longer listening for keystrokes
[main.c:961]                               on_seat_removed:no longer listening for escape
[main.c:965]                               on_seat_removed:no longer listening for backspace
[main.c:969]                               on_seat_removed:no longer listening for enter
[ply-seat.c:307]                           free_pixel_displays:freeing 1 pixel displays
[ply-seat.c:328]                            free_text_displays:freeing 1 text displays
[main.c:1147]                                  quit_program:exiting event loop
[ply-boot-server.c:350]          ply_boot_connection_on_quit_complete:quit complete
[main.c:2245]                                          main:exited event loop
[ply-boot-splash.c:406]                          ply_boot_splash_free:freeing splash
[main.c:2255]                                          main:freeing terminal session
[main.c:2261]                                          main:exiting with code 0

更新 initramfs

在进行以上任何更改之后,请运行以下命令:

sudo update-initramfs -u -k all

谢谢你的回答。但是我已经做过了! - kashish
@kashish 我会把答案留在这里,这样其他人就不会再重复发帖了。我会更深入地挖掘并尽力回忆我还做了什么... - WinEunuuchs2Unix