1

Всем ДВС, слакварщики! Однажды, долгим зимним вечером, поставил я Arch на посмотреть. Ну, а там -- всякие плюшки и красивости, вроде обсуждаемого здесь Plymouth. И вот, погуглив, не нашел я в Сети материала, который бы рассказал, что да как делать, чтобы получить искомое. Увидел, что на SBo присутствует пакет, поставил и начал разбираться, как его запустить. Скажу сразу, задачу можно решать по-разному: все зависит от желания, возможностей и наличия времени. Ну что ж, начнем.

0. Подготовка.
Для успешной работы Plymouth нужен initrd с ранней активацией KMS или framebuffer. Все знают, что в дистрибутиве есть два ядра -- huge и generic. Первое монстрообразно и предназначено в основном для ремонтных работ. Оно способно загружаться без initrd, включает в себя поддержку максимального количества устройств, драйверы которых есть в ядре, умеет и загружать модули сторонних драйверов. Второе -- намного компактнее, включает в себя только самое необходимое, требует для успешной загрузки initrd и предназначено для обычного использования. Особо заострять внимание на создании initrd для этого ядра я не буду, но основные моменты надо прояснить.

0.1.

 Консоль: root
[root@linuxforum.ru ~]#
# /usr/share/mkinitrd/mkinitrd_command_generator.sh -l /boot/vmlinuz-generic >> /etc/lilo.conf # Создаем пункт меню для Lilo
# /usr/share/mkinitrd/mkinitrd_command_generator.sh -c /boot/vmlinuz-generic >> /etc/mkinitrd.conf # Создаем базовый конфигурационный файл для mkinitrd
# mkinitrd -F # Собираем базовый initrd
# lilo # Сохраняем новую конфигурацию загрузчика

Подразумевается, что пакет kernel-generic установлен. После проделанного выше можно перезагрузиться с ядром generic, хотя это и необязательно.

0.2 Нужно изменить в /etc/mkinitrd.conf значение параметра CLEAR_TREE на 0, чтобы при сборке нового initrd каталог /boot/initrd_tree не очищался: с этим деревом еще предстоит поработать.

0.3 Теперь надо добавить в initrd ранний запуск KMS/framebuffer. Для этого с помощью lspci смотрим, каким модулем ядра поддерживается видекарта:

 Консоль: root
[root@linuxforum.ru ~]# lspci -knns 00:02.0
00:02.0 VGA compatible controller [0300]: Intel Corporation 3rd Gen Core processor Graphics Controller [8086:0166] (rev 09)
    Subsystem: Lenovo 3rd Gen Core processor Graphics Controller [17aa:3902]
    Kernel driver in use: i915
    Kernel modules: i915

Видим, что в данном случае работа встроенного видеоядра обеспечивается модулем i915. Но тут вам не Arch, и с добавлением в initrd этого модуля ранний запуск не заработает, потому что у модуля есть зависимости. Поэтому смотрим, кто от кого зависит и добавляем всех причастных (Ну, почти всех, кроме тех, кто, в моем случае, за дискретное видео отвечает):

+ открыть спойлер

 Консоль: root
[root@linuxforum.ru ~]# # lsmod
Module                  Size  Used by
...
i915                 4108288  12
i2c_algo_bit           20480  2 i915,nouveau
drm_buddy              20480  1 i915
video                  77824  3 ideapad_laptop,i915,nouveau
ttm                   110592  3 drm_ttm_helper,i915,nouveau
drm_display_helper    229376  2 i915,nouveau
cec                    86016  2 drm_display_helper,i915
intel_gtt              28672  2 intel_agp,i915
...

Можно, конечно, положить этих товарищей напрямую в initrd-tree в правильные места, но проще и лучше вписать их в /etc/mkinitrd.conf, в строку MODULE_LIST, через двоеточия. Теперь можно снова собрать initrd, скомандовать lilo, перезагрузиться в только что созданный initrd, передав ядру параметр rescue и убедиться в существовании /dev/fb0. Теперь, чтобы не перезагружаться, монтируем корневой раздел -- mount -r /dev/root /mnt и даем команду exit. На этом подготовка завершена.

1. Установка и настройка.

1.1 Устанавливаем собственно plymouth:

 Консоль: root
[root@linuxforum.ru ~]# sbopkg -i plymouth

1.2 Теперь c помощью входящего в состав пакета /usr/libexec/plymouth/plymouth-generate-initrd создаем в /boot образ initrd-plymouth.img, распаковываем его:

 Консоль:
# mkdir -pv /boot/initrd-plymouth
# cd /boot/initrd-plymouth
# gzip -cdkS .img ../initrd-plymouth.img | cpio -i .
И теперь нужно раскидать файлы из этого initrd в initrd-tree. Бинарники -- в initrd_tree/{bin,sbin}, библиотеки -- в initrd_tree/lib{,64}, остальное -- по соответствующим местам. Бибилотеки нужно скопировать только те, которых в initrd-tree нет. Снова собираем свой initrd командой mkinitrd -F, не забываем скомандовать lilo и перезагружаемся в новый initrd.

1.3. Теперь начинается самый сок  ab Нам нужно пропатчить initrd-tree/init и rc-скрипты /etc/rd.d/rc.{6,M,S}, и, возможно, пересобрать ядро (тут уж на вкус и цвет  ag )

1.3.1. Патчим:

+ full_initrd.patch
diff -urN initrd-tree/command_line initrd-tree-nodebug/command_line
--- initrd-tree/command_line    2023-11-03 14:55:30.931000000 +0300
+++ initrd-tree-nodebug/command_line    2023-11-03 10:30:55.379000000 +0300
@@ -1 +1 @@
-/sbin/mkinitrd -c -s /boot/initrd-tree -F
+/sbin/mkinitrd -F
File initrd-tree/dev/console is a character special file while file initrd-tree-nodebug/dev/console is a character special file
File initrd-tree/dev/null is a character special file while file initrd-tree-nodebug/dev/null is a character special file
File initrd-tree/dev/ram is a block special file while file initrd-tree-nodebug/dev/ram is a block special file
File initrd-tree/dev/ram0 is a block special file while file initrd-tree-nodebug/dev/ram0 is a block special file
File initrd-tree/dev/ram1 is a block special file while file initrd-tree-nodebug/dev/ram1 is a block special file
File initrd-tree/dev/ram10 is a block special file while file initrd-tree-nodebug/dev/ram10 is a block special file
File initrd-tree/dev/ram11 is a block special file while file initrd-tree-nodebug/dev/ram11 is a block special file
File initrd-tree/dev/ram12 is a block special file while file initrd-tree-nodebug/dev/ram12 is a block special file
File initrd-tree/dev/ram13 is a block special file while file initrd-tree-nodebug/dev/ram13 is a block special file
File initrd-tree/dev/ram14 is a block special file while file initrd-tree-nodebug/dev/ram14 is a block special file
File initrd-tree/dev/ram15 is a block special file while file initrd-tree-nodebug/dev/ram15 is a block special file
File initrd-tree/dev/ram2 is a block special file while file initrd-tree-nodebug/dev/ram2 is a block special file
File initrd-tree/dev/ram3 is a block special file while file initrd-tree-nodebug/dev/ram3 is a block special file
File initrd-tree/dev/ram4 is a block special file while file initrd-tree-nodebug/dev/ram4 is a block special file
File initrd-tree/dev/ram5 is a block special file while file initrd-tree-nodebug/dev/ram5 is a block special file
File initrd-tree/dev/ram6 is a block special file while file initrd-tree-nodebug/dev/ram6 is a block special file
File initrd-tree/dev/ram7 is a block special file while file initrd-tree-nodebug/dev/ram7 is a block special file
File initrd-tree/dev/ram8 is a block special file while file initrd-tree-nodebug/dev/ram8 is a block special file
File initrd-tree/dev/ram9 is a block special file while file initrd-tree-nodebug/dev/ram9 is a block special file
File initrd-tree/dev/random is a character special file while file initrd-tree-nodebug/dev/random is a character special file
File initrd-tree/dev/sda is a block special file while file initrd-tree-nodebug/dev/sda is a block special file
File initrd-tree/dev/sda1 is a block special file while file initrd-tree-nodebug/dev/sda1 is a block special file
File initrd-tree/dev/sda2 is a block special file while file initrd-tree-nodebug/dev/sda2 is a block special file
File initrd-tree/dev/sr0 is a block special file while file initrd-tree-nodebug/dev/sr0 is a block special file
File initrd-tree/dev/systty is a character special file while file initrd-tree-nodebug/dev/systty is a character special file
File initrd-tree/dev/tty1 is a character special file while file initrd-tree-nodebug/dev/tty1 is a character special file
File initrd-tree/dev/tty2 is a character special file while file initrd-tree-nodebug/dev/tty2 is a character special file
File initrd-tree/dev/tty3 is a character special file while file initrd-tree-nodebug/dev/tty3 is a character special file
File initrd-tree/dev/tty4 is a character special file while file initrd-tree-nodebug/dev/tty4 is a character special file
File initrd-tree/dev/urandom is a character special file while file initrd-tree-nodebug/dev/urandom is a character special file
diff -urN initrd-tree/init initrd-tree-nodebug/init
--- initrd-tree/init    2022-01-26 23:33:29.000000000 +0300
+++ initrd-tree-nodebug/init    2023-11-03 10:30:21.274000000 +0300
@@ -94,7 +94,7 @@
 if grep devtmpfs /proc/filesystems 1>/dev/null 2>/dev/null ; then
   DEVTMPFS=1
   mount -n devtmpfs /dev -t devtmpfs -o size=8M
-fi    
+fi
 
 # Parse command line
 for ARG in $(cat /proc/cmdline); do
@@ -135,6 +135,9 @@
     waitforroot=*|rootdelay=*)
       WAIT=$(echo $ARG | cut -f2 -d=)
     ;;
+    quiet)
+      QUIET=1
+    ;;
   esac
 done
 
@@ -152,25 +155,42 @@
 if [ ! -d /lib/modules/$(uname -r) ]; then
   echo "No kernel modules found for Linux $(uname -r)."
 elif [ -x ./load_kernel_modules ]; then # use load_kernel_modules script:
-  echo "${INITRD}:  Loading kernel modules from initrd image:"
+  if [ ${QUIET} = "" ]; then
+    echo "${INITRD}:  Loading kernel modules from initrd image:"
+    ARG="-v"
+  else
+    ARG="-q"
+  fi
   . ./load_kernel_modules
 else # load modules (if any) in order:
   if ls /lib/modules/$(uname -r)/*.*o 1> /dev/null 2> /dev/null ; then
-    echo "${INITRD}:  Loading kernel modules from initrd image:"
+    if [ ${QUIET} = "" ]; then
+      echo "${INITRD}:  Loading kernel modules from initrd image:"
+    fi
     for module in /lib/modules/$(uname -r)/*.*o ; do
-      /sbin/modprobe $module
+      /sbin/modprobe $ARG $module
     done
     unset module
   fi
 fi
 
+# Run plymouthd:
+if [ -x ./start_plymouthd ]; then
+  if [ ${QUIET} = "" ]; then
+    echo "${INITRD}: Starting plymouthd: "
+  fi
+  . ./start_plymouthd
+fi
+
 # Sometimes the devices need extra time to be available.
 # A root filesystem on USB is a good example of that.
 sleep $WAIT
 
 # Load a custom keyboard mapping:
 if [ -n "$KEYMAP" ]; then
-  echo "${INITRD}:  Loading '$KEYMAP' keyboard mapping:"
+  if [ ${QUIET} = "" ]; then
+    echo "${INITRD}:  Loading '$KEYMAP' keyboard mapping:"
+  fi
   tar xzOf /etc/keymaps.tar.gz ${KEYMAP}.bmap | loadkmap
 fi
 
@@ -304,7 +324,7 @@
     umount -l /mountkey
     rmdir /mountkey 2>/dev/null
   fi
-  
+
   # Resume state from swap
   if [ "$RESUMEDEV" != "" ]; then
     # Find resume device if a label or UUID was given:
@@ -323,7 +343,10 @@
   /sbin/udevadm settle --timeout=10
   echo 0x0100 > /proc/sys/kernel/real-root-dev
   mount -o ro${ROOTFLAGS:+,$ROOTFLAGS} -t $ROOTFS $ROOTDEV /mnt
-  
+
+  # Tell plymouthd that rootfs is mounted read-only now:
+  plymouth --newroot=/mnt
+
   if [ ! -r /mnt/sbin/init ]; then
     echo "ERROR:  No /sbin/init found on rootdev (or not mounted).  Trouble ahead."
     echo "        You can try to fix it. Type 'exit' when things are done." 
@@ -356,5 +379,9 @@
 mount -o move /run /mnt/run
 
 [ "$DEVTMPFS" = "1" ] && mount -o move /dev /mnt/dev
-echo "${INITRD}:  exiting"
+
+if [ ${QUIET} = "" ]; then
+ echo "${INITRD}:  exiting"
+fi
+
 exec switch_root /mnt $INIT $RUNLEVEL
Binary files initrd-tree/lib64/librt-2.33.so and initrd-tree-nodebug/lib64/librt-2.33.so differ
Binary files initrd-tree/lib64/librt.so.1 and initrd-tree-nodebug/lib64/librt.so.1 differ
diff -urN initrd-tree/load_kernel_modules initrd-tree-nodebug/load_kernel_modules
--- initrd-tree/load_kernel_modules    2023-11-03 14:55:33.336000000 +0300
+++ initrd-tree-nodebug/load_kernel_modules    2023-11-03 10:27:19.176000000 +0300
@@ -1,20 +1,22 @@
+#!/bin/ash
+
 # This is a script used to load the kernel modules.
 # To use it, chmod it 755, and then add the insmod
 # lines needed to load your modules, like this:
 
-modprobe -v jbd2
-modprobe -v mbcache
-modprobe -v ext4
-modprobe -v i2c-core
-modprobe -v sysimgblt
-modprobe -v sysfillrect
-modprobe -v syscopyarea
-modprobe -v fb_sys_fops
-modprobe -v agpgart
-modprobe -v drm
-modprobe -v drm_kms_helper
-modprobe -v ttm
-modprobe -v drm_ttm_helper
-modprobe -v qxl
-modprobe -v intel-gtt
-modprobe -v intel-agp
+modprobe $ARG jbd2
+modprobe $ARG mbcache
+modprobe $ARG ext4
+modprobe $ARG i2c-core
+modprobe $ARG sysimgblt
+modprobe $ARG sysfillrect
+modprobe $ARG syscopyarea
+modprobe $ARG fb_sys_fops
+modprobe $ARG agpgart
+modprobe $ARG drm
+modprobe $ARG drm_kms_helper
+modprobe $ARG ttm
+modprobe $ARG drm_ttm_helper
+modprobe $ARG qxl
+modprobe $ARG intel-gtt
+modprobe $ARG intel-agp
diff -urN initrd-tree/start_plymouthd initrd-tree-nodebug/start_plymouthd
--- initrd-tree/start_plymouthd    1970-01-01 03:00:00.000000000 +0300
+++ initrd-tree-nodebug/start_plymouthd    2023-11-02 23:59:53.618000000 +0300
@@ -0,0 +1,11 @@
+#!/bin/ash
+
+# This script runs both plymouth and its daemon
+if [ -x /usr/sbin/plymouthd ]; then
+  plymouthd \
+    --pid-file=/run/plymouthd.pid
+fi
+
+if [ -x /usr/bin/plymouth ]; then
+  /usr/bin/plymouth --show-splash &
+fi
Binary files initrd-tree/usr/bin/plymouth and initrd-tree-nodebug/usr/bin/plymouth differ
Binary files initrd-tree/usr/bin/yes and initrd-tree-nodebug/usr/bin/yes differ
Binary files initrd-tree/usr/lib64/libdrm.so and initrd-tree-nodebug/usr/lib64/libdrm.so differ
Binary files initrd-tree/usr/lib64/libdrm.so.2 and initrd-tree-nodebug/usr/lib64/libdrm.so.2 differ
Binary files initrd-tree/usr/lib64/libdrm.so.2.4.0 and initrd-tree-nodebug/usr/lib64/libdrm.so.2.4.0 differ
Binary files initrd-tree/usr/lib64/libply-splash-core.so and initrd-tree-nodebug/usr/lib64/libply-splash-core.so differ
Binary files initrd-tree/usr/lib64/libply-splash-core.so.4 and initrd-tree-nodebug/usr/lib64/libply-splash-core.so.4 differ
Binary files initrd-tree/usr/lib64/libply-splash-core.so.4.0.0 and initrd-tree-nodebug/usr/lib64/libply-splash-core.so.4.0.0 differ
Binary files initrd-tree/usr/lib64/libply-splash-graphics.so and initrd-tree-nodebug/usr/lib64/libply-splash-graphics.so differ
Binary files initrd-tree/usr/lib64/libply-splash-graphics.so.4 and initrd-tree-nodebug/usr/lib64/libply-splash-graphics.so.4 differ
Binary files initrd-tree/usr/lib64/libply-splash-graphics.so.4.0.0 and initrd-tree-nodebug/usr/lib64/libply-splash-graphics.so.4.0.0 differ
Binary files initrd-tree/usr/lib64/libply.so and initrd-tree-nodebug/usr/lib64/libply.so differ
Binary files initrd-tree/usr/lib64/libply.so.4 and initrd-tree-nodebug/usr/lib64/libply.so.4 differ
Binary files initrd-tree/usr/lib64/libply.so.4.0.0 and initrd-tree-nodebug/usr/lib64/libply.so.4.0.0 differ
Binary files initrd-tree/usr/lib64/libpng16.so and initrd-tree-nodebug/usr/lib64/libpng16.so differ
Binary files initrd-tree/usr/lib64/libpng16.so.16 and initrd-tree-nodebug/usr/lib64/libpng16.so.16 differ
Binary files initrd-tree/usr/lib64/libpng16.so.16.37.0 and initrd-tree-nodebug/usr/lib64/libpng16.so.16.37.0 differ
Binary files initrd-tree/usr/lib64/plymouth/details.so and initrd-tree-nodebug/usr/lib64/plymouth/details.so differ
Binary files initrd-tree/usr/lib64/plymouth/renderers/drm.so and initrd-tree-nodebug/usr/lib64/plymouth/renderers/drm.so differ
Binary files initrd-tree/usr/lib64/plymouth/renderers/frame-buffer.so and initrd-tree-nodebug/usr/lib64/plymouth/renderers/frame-buffer.so differ
Binary files initrd-tree/usr/lib64/plymouth/text.so and initrd-tree-nodebug/usr/lib64/plymouth/text.so differ
Binary files initrd-tree/usr/lib64/plymouth/two-step.so and initrd-tree-nodebug/usr/lib64/plymouth/two-step.so differ
Binary files initrd-tree/usr/sbin/plymouthd and initrd-tree-nodebug/usr/sbin/plymouthd differ
diff -urN initrd-tree/usr/share/plymouth/plymouthd.defaults initrd-tree-nodebug/usr/share/plymouth/plymouthd.defaults
--- initrd-tree/usr/share/plymouth/plymouthd.defaults    1970-01-01 03:00:00.000000000 +0300
+++ initrd-tree-nodebug/usr/share/plymouth/plymouthd.defaults    2023-11-02 00:17:14.000000000 +0300
@@ -0,0 +1,6 @@
+# Distribution defaults. Changes to this file will get overwritten during
+# upgrades.
+[Daemon]
+Theme=spinner
+ShowDelay=5
+DeviceTimeout=5
diff -urN initrd-tree/usr/share/plymouth/themes/details/details.plymouth initrd-tree-nodebug/usr/share/plymouth/themes/details/details.plymouth
--- initrd-tree/usr/share/plymouth/themes/details/details.plymouth    1970-01-01 03:00:00.000000000 +0300
+++ initrd-tree-nodebug/usr/share/plymouth/themes/details/details.plymouth    2023-11-02 00:17:21.000000000 +0300
@@ -0,0 +1,4 @@
+[Plymouth Theme]
+Name=Details
+Description=Verbose fallback theme
+ModuleName=details
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0001.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0001.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0002.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0002.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0003.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0003.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0004.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0004.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0005.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0005.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0006.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0006.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0007.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0007.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0008.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0008.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0009.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0009.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0010.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0010.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0011.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0011.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0012.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0012.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0013.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0013.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0014.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0014.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0015.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0015.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0016.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0016.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0017.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0017.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0018.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0018.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0019.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0019.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0020.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0020.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0021.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0021.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0022.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0022.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0023.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0023.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0024.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0024.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0025.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0025.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0026.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0026.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0027.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0027.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0028.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0028.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0029.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0029.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0030.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0030.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0031.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0031.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0032.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0032.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0033.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0033.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0034.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0034.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0035.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0035.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/animation-0036.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/animation-0036.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/background-tile.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/background-tile.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/box.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/box.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/bullet.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/bullet.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/entry.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/entry.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/lock.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/lock.png differ
diff -urN initrd-tree/usr/share/plymouth/themes/spinner/spinner.plymouth initrd-tree-nodebug/usr/share/plymouth/themes/spinner/spinner.plymouth
--- initrd-tree/usr/share/plymouth/themes/spinner/spinner.plymouth    1970-01-01 03:00:00.000000000 +0300
+++ initrd-tree-nodebug/usr/share/plymouth/themes/spinner/spinner.plymouth    2023-11-02 00:17:21.000000000 +0300
@@ -0,0 +1,13 @@
+[Plymouth Theme]
+Name=Spinner
+Description=A theme designed by jimmac that features a simple spinner.
+ModuleName=two-step
+
+[two-step]
+ImageDir=/usr/share/plymouth/themes/spinner
+HorizontalAlignment=.5
+VerticalAlignment=.75
+Transition=none
+TransitionDuration=0.0
+BackgroundStartColor=0x202020
+BackgroundEndColor=0x202020
Binary files initrd-tree/usr/share/plymouth/themes/spinner/throbber-0001.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/throbber-0001.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/throbber-0002.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/throbber-0002.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/throbber-0003.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/throbber-0003.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/throbber-0004.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/throbber-0004.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/throbber-0005.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/throbber-0005.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/throbber-0006.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/throbber-0006.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/throbber-0007.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/throbber-0007.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/throbber-0008.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/throbber-0008.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/throbber-0009.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/throbber-0009.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/throbber-0010.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/throbber-0010.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/throbber-0011.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/throbber-0011.png differ
Binary files initrd-tree/usr/share/plymouth/themes/spinner/throbber-0012.png and initrd-tree-nodebug/usr/share/plymouth/themes/spinner/throbber-0012.png differ
diff -urN initrd-tree/usr/share/plymouth/themes/text/text.plymouth initrd-tree-nodebug/usr/share/plymouth/themes/text/text.plymouth
--- initrd-tree/usr/share/plymouth/themes/text/text.plymouth    1970-01-01 03:00:00.000000000 +0300
+++ initrd-tree-nodebug/usr/share/plymouth/themes/text/text.plymouth    2023-11-02 00:17:21.000000000 +0300
@@ -0,0 +1,4 @@
+[Plymouth Theme]
+Name=Text
+Description=Text mode theme with a 3 box countdown
+ModuleName=text
+ rc.M.patch
--- rc.M_orig    2021-11-12 21:52:01.000000000 +0300
+++ rc.M_plymouth    2023-11-03 00:21:54.442000000 +0300
@@ -420,4 +420,7 @@
   /etc/rc.d/rc.local
 fi
 
+# End plymouth batch:
+/usr/bin/plymouth --quit
+
 # All done.
+ rc.S.patch
--- rc.S_orig    2022-01-28 01:32:52.000000000 +0300
+++ rc.S_plymouth    2023-11-03 00:56:16.490000000 +0300
@@ -251,6 +251,8 @@
   if grep -q ' / f2fs ' /proc/mounts ; then
     echo "Remounting root device with read-write enabled."
     /sbin/mount -w -v -n -o remount /
+    # Tell plymouth to knew that rootfs was remounted read-write:
+    /usr/bin/plymouth --sysinit
   elif [ ! $READWRITE = yes ]; then
     # Check the root filesystem:
     RETVAL=0

А вот rc.6.patch предлагаю создать самостоятельно  bx

1.3.2. Ядро пересобирать, в принципе, необязательно, но я пересобрал, потому что дистрибутивное ядро собрано с CONFIG_X86_VERBOSE_BOOTUP=y, CONFIG_EARLY_PRINTK=y и оно при загрузке выводит нечто вроде

early console in decompress_kernel
Decompressing Linux... Parsing ELF... done.
Booting the kernel.

Ну и LILO добавляет свои 5 копеек  ab

P.S. Написанное справедливо для Slackware-15.0, для -current и будущих релизов может и не работать.

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580

2

yars,
гладко было на бумаге:

Q=""
if [ $Q = "" ]
  then echo Empty
fi

Это так не работает... Когда в Q пусто, получится:

if [ = "" ]

и [ обматерит за синтаксис bx
Потому или

if [ "$Q" = "" ]

или как диды завещали (в кавычках или без):

if [ x$Q = x ]