Skip to main content
Topic: help: silent boot (Read 1532 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

help: silent boot

my aim is to achieve complete silent boot all the way to the x session, is this possible?

i tried using plymouth with handmade scripts, using the --quiet dinit option, redirecting the output over to console=tty2, etc., but those either: A- break all of the ttys altogether (since tty1 doesnt appear in the first place) or B- work, but only partly

a simple guide could really be appreciated in this matter

Re: help: silent boot

Reply #1
It sounds like a lovely project!  Let us know how it goes.

Re: help: silent boot

Reply #2
my aim is to achieve complete silent boot all the way to the x session, is this possible?
With dinit I don't know?
With openrc I can say yes because your post inspired me to try and I just achieved it.
But it's not simple. If you (or anyone) requests as such I'll explain how I did it.

But one thing I can say, regardless of init, is you'll also need to change the initramfs.
/usr/lib/initcpio/init_functions gets put into the initramfs image and needs changing thus:
Code: [Select]
--- a/init_functions	2025-07-02 17:06:51.452227433 +0100
+++ b/init_functions 2025-07-02 17:04:00.175983326 +0100
@@ -302,7 +302,7 @@
     fi
 
     msg ":: performing fsck on '$1'"
-    fsck -Ta -C"$FSCK_FD" "$device" -- ${forcefsck+-f}
+    fsck -Ta -C"$FSCK_FD" "$device" -- ${forcefsck+-f} >/dev/null
 }
 
 fsck_root() {
And then
Code: [Select]
sudo mkinitcpio -p linux
This would have to be repeated whenever the package mkinitcpio is updated.
I'm just about to add a patch for it to my system of automatically patched packages.



Re: help: silent boot

Reply #3
the least "hacky" way to achieve this is by installing plymouth and making it work with dinit, like such:

appending quiet and splash as a kernel parameter in (/etc/default/grub):

Code: [Select]
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet splash"

regenerating the grub config (the following command is bios-specific afaik):

Code: [Select]
sudo grub-mkconfig -o /boot/grub/grub.cfg

adding plymouth to the (/etc/mkinitcpio.conf) hooks:

Code: [Select]
HOOKS=(base udev plymouth autodetect microcode modconf kms keyboard keymap consolefont block filesystems fsck)

making a dinit service (/etc/dinit.d/plymouth-quit) to quit plymouth in boot:

Code: [Select]
type = scripted
command = /usr/bin/plymouth quit --retain-splash
after = elogind
before = tty1

enabling it:

Code: [Select]
sudo dinitctl enable plymouth-quit

writing a custom shutdown hook for dinit (/etc/dinit/shutdown-hook) which calls plymouth on shutdown/reboot, and making it executable with chmod +x:

Code: [Select]
#!/bin/sh

/usr/bin/plymouthd --mode=shutdown --attach-to-session
/usr/bin/plymouth show-splash

if [ -x /lib/dinit/shutdown-hook ]; then
/lib/dinit/shutdown-hook
fi

then setting up the default theme and regenerating the initframfs:

Code: [Select]
sudo plymouth-set-default-theme -R spinner

---

however, this has two caveats:
1. the pre-shutdown messages would still appear before plymouth
2. agetty/login will not appear and tty switching will be impossible, so this will render the system unusable unless you setup autologin on tty1:

Code: [Select]
GETTY_ARGS="--skip-login --nonewline --noissue --autologin [USER] --noclear"

also, switching to tty2/3/etc in that case is buggy (you will need to switch then press any key for the tty to appear)

---

would appreciate if anyone knowledgeable pinpoints the issues, all of this is extremely duct-taped

Re: help: silent boot

Reply #4
Well good luck with it.
I'm not sure why your tty's aren't working but autologin on one of them is requisite unless using a display manager.

Re: help: silent boot

Reply #5
I had a play with Plymouth. I had a similar issue as you I think?

The only way I could get it to work was by using
Code: [Select]
plymouth quit
in /etc/rc.local
Otherwise Plymouth never lets go. I can hit escape and see that openrc has started all the services but tty1  which should have auto loged in and started X is unresponsive. Trying to switch tty does nothing.
Tried it using sddm as well but it was the same.
This might be down to my Nvidia GPU though ? I read it's a bit sketchy with Plymouth.

Using plymouth quit it works but it's a bit "Blink and you'll miss it" so I have uninstalled it as I prefer the black screen until X.


Re: help: silent boot

Reply #6
plymouth support seems to be a total mess so i entirely gave up on the idea, unfortunately...

Re: help: silent boot

Reply #7
my aim is to achieve complete silent boot all the way to the x session, is this possible?
 ...
a simple guide could really be appreciated in this matter

Silent Boot can be easily implemented without Plymouth, but you have to change not only one but three files.

/etc/default/grub
Code: [Select]
vt.global_cursor_default=0 console=tty2

Lines 149 and 160 in /etc/grub.d/10_linux
Code: [Select]
# echo	'$(echo "$message" | grub_quote)'

/etc/issue
Code: [Select]
sudo -i
clear > /etc/issue
exit

Afterwards:
Code: [Select]
mkinitcpio -P
update-grub

"Wer alles kann, macht nichts richtig"

Artix USE="runit openrc slim openbox lxde gtk2 qt4 qt5 qt6 conky
-gtk3 -gtk4 -adwaita{cursors,themes,icons} -gnome3 -kde -plasma -wayland "

 

Re: help: silent boot

Reply #8
Code: [Select]
vt.global_cursor_default=0 console=tty2

console=tty2 breaks tty entirely and will render the machine unusable (i dont use a display manager)

Re: help: silent boot

Reply #9
console=tty2 breaks tty entirely and will render the machine unusable (i dont use a display manager)

The changes only suppress the screen output, so without a display manager you have to select a login TTY manually.

"Wer alles kann, macht nichts richtig"

Artix USE="runit openrc slim openbox lxde gtk2 qt4 qt5 qt6 conky
-gtk3 -gtk4 -adwaita{cursors,themes,icons} -gnome3 -kde -plasma -wayland "