[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Can grub be made to talk?



Hello Martin,

I absolutely hate what I call "press and pray" in which
the silent world prevails and you count button presses in the
silence and hope and pray that nothing weird happens.
GRUB can't be made to talk, but it can play songs using its
play command. So you can have it play a different tune for each
boot entry.

There are basically two ways to do that:
1. Use a custom /boot/grub/grub.cfg that include 'play' commands with an
argument that differ for each boot entry.
I have done that in EFI3M that works only if booted in EFI mode:
https://github.com/DidierSpaier/EFI3M.

You need to insert the play GRUB module before using the 'play' command:
insmod grub

Quoting the README:
-------------------
As shown EFI3M also allows the user to easily customize the boot menu,
modifying the label of a boot entry (how it is displayed), hiding it,
reordering the boot entries, setting the delay before auto boot.

To help the visually impaired, the boot menu optionally plays a sound at
startup, a tune of n sounds when starting the boot entry number n, and
specific tunes for reboot and halt
------------------
The menu of EFI3M is fully accessible with speech.

2. Run update-grub or grub-mkconfig as usual, but write a script to post
process grub.cfg to provide similar features.
I didn't do that yet, it's in my TODO list but far from the top.

Also, at least you can set the default boot entry in /etc/default/grub
There are numbered from 0.

You can also if installed run as root grub-emu from a console (not a
graphical terminal). It will display a preview of what will be the real
GRUB menu at boot time, accessible with speech through espeakup and
fenrir (do not try in a graphical terminal, Orca can't read it).

Failing speech, I know grub can be configured to work
through a serial port if one exists at the time grub is needed.
Is there a good document anywhere dealing with all these
issues?

Just type:
info grub

To use a serial console, you can edit grub.cfg to
include before the boot entries these commands:
serial
terminal_input --append serial
terminal_output --append serial

The 'serial' GRUB command takes optional parameters, the default are:
port 0
speed 9600 bauds
8 data bits
stop bit
parity none

Good luck,

Didier


Reply to: