[Grml] mk.sh

John G. Heim jheim at math.wisc.edu
Sat May 24 20:03:06 CEST 2025


Ah ha!

I see that your script does the whole thing of copying the iso to an 
updateable file system on disk, extracts the squashed file system, 
modifies it, and then resquashes the file system and recreates the iso. 
I didn't know you could do that last step all in one swoop -- which is 
pretty cool. That is actually where I always got stuck trying to do this 
myself in the past. That xorriso command to regen the iso must have 20 
settings.

Anyway, I also see that just documenting the process so others can 
replicate it is not practical. I was hoping GRML had some kind of hook 
for customization that I was unaware of.

I generated an iso file for grml and my synth that uses the speakup_ltlk 
driver. It works. So that's great.

But the software speech iso did not work on either a laptop or on my 
desktop. They booted into GRML just fine but the software speech driver, 
speakup_soft, was not loaded and there was no speech. Weird thing is 
that the same ISO worked in a virtual machine. I booted a vm with the 
same iso and it came up talking. So that's strange.

Volume is fine, btw, that doesn't really matter.

I am wondering what you want to do next. I made some modifications to 
the script to make it a little more friendly and more generalized. I 
don't think there is any reason to make the speakup_ltlk driver a 
special case. If the user specifies anything but software speech via the 
speakup_soft driver, it should just add the speakup module dependency to 
initramfs, generate a new initramfs, then overwrite the old initramfs 
with the new. With that change, which is actually a simplification, the 
script works for all hardware synths, not just the ltlk. Pseudo code:


if driver is 'soft' then

   generate isofiles/scripts/grml.sh

fi

add speakup module to initramfs


Note that following the above pseudo code, the software speech module, 
speakup_soft, would be added to the initramfs. But that's good. because 
even if everything else goes wrong, to get speech after the boot is 
finished, you only have to type 'espeakup' instead of 'modprobe 
speakup_soft; espeakup'. It's not a huge improvement but it's not 
nothin' either.

I also made it so it checks if the packages the script depends on are 
already installed so it doesn't try to install them again.

And then I wrote some code to generate a name for the resulting iso 
file. If you start with something like grml-full-2025.05-amd64.iso you 
end up with something like ltlk-full-2025.05-amd64.iso.

It might be better to end up with something like 
grml-ltlk-full-2025.05-amd64.iso. But during testing, I had too many 
files starting with "grml-" and I got tired of ffilling the tab completion.

How about if I put the modified script on my web site at  the Math Dept 
at the University of Wisconsin? I'll be responsible for documenting, 
publishing, and maintaining it. That way it can help more than just me. 
Oh, how about if I rename it grml2speak? That way it fits into the grml2* fa

https://people.math.wisc.edu/~jheim/GRML/grml2speak





On 5/11/25 12:19 AM, Kyle Sebion wrote:
> Hi John,
> I made a script that sets up espeakup in a grml .iso file: 
> https://github.com/KyleSebion/grml-espeakup/blob/main/mk.sh 
> <https://urldefense.com/v3/__https://github.com/KyleSebion/grml-espeakup/blob/main/mk.sh__;!!Mak6IKo!KRveEP_wSmqkGWjfMoJnuOGc6lW7lEHbwRT5N4XpDK8qH8tNxfcT3cyjCO3wR-YiS5miNMSyPbipyT0jCQ$>
> It isn't a very long script, so it shouldn't be hard to verify that it 
> isn't doing anything malicious.
> To use it, boot grml, download the grml .iso you want to use and the 
> script, then run: ./mk.sh <grml.iso>
> It will create espeakup.iso.
> You might need to make tweaks based on the hardware you boot 
> espeakup.iso on.
> I did do a fair amount of testing though (tested using 4x different 
> grml .iso files with espeakup.iso as a cd/dvd in a vm and with 
> espeakup.iso written to a usb drive and booted on my hardware).
> You might also want to change the volume I set with amixer (I cranked 
> it to max because my speakers aren't very loud).
> You probably know this already, but screen reading won't start until 
> some time after boot finishes.
>
> I might look into getting speakup_ltlk working.
> That is a bit more work because the initramfs doesn't contain it, yet.
> Could be fun, though, because, since I don't have the proper hardware 
> for it, I'd probably set up some other hardware so that I have a good 
> idea if it is working.
>
>
>
> On Sat, May 10, 2025 at 3:04 PM <tommym2006 at gmail.com> wrote:
>
>     Hi,
>     Some other dependencies for software speech would be:
>     The espeak-ng package sound hardware configured and volume set to
>     3/4 volume
>     for Mastre and PCM options.
>
>     I don't know how hard this would be to do, the Debian installer
>     has this
>     functionality and if there's a way you could look at this you'd
>     have a place
>     to look as their install has had this for a few versions now working
>     properly.
>
>     Tom
>
>     -----Original Message-----
>     From: Grml <grml-bounces at ml.grml.org> On Behalf Of John G. Heim
>     Sent: Friday, May 9, 2025 1:23 PM
>     To: grml at ml.grml.org
>     Subject: Re: [Grml] Customizing GRML to start speech as early as
>     possible
>
>
>     On 5/9/25 11:32 AM, Michael Prokop wrote:
>     > * John G. Heim [Wed May 07, 2025 at 01:42:23PM -0500]:
>     >> On 5/7/25 12:14 PM, Michael Prokop wrote:
>     >>> To clarify the situation: for *you* only "modprobe speakup" is
>     >>> relevant, or do you use any of the specific modules like
>     >>> speakup_dectlk?
>     >>>
>     >>> Do *you* need anything other than just "modprobe speakup_soft" or
>     >>> alike to get it working/useful for your situation?
>
>
>     Personally, I would need the following:
>
>     1. Kernel module speakup
>
>     2. Kernel module speakup_ltlk
>
>     3. kernel module speakup_soft
>
>     4. espeakup program/package
>
>
>     The espeakup program has to be running for the kernel to access a
>     text
>     to speech engine for software speech.
>
>
>
>     >> I mostly use the Litetalk driver, speakup_ltlk. But to use a
>     hardware
>     >> synth,
>     >> you have to have a machine with a serial port. This is another
>     reason
>     >> supporting hardware speech synths is more work than it is
>     worth. My blind
>     >> friends say the machines they work on do not have serial ports. So
>     >> far, that
>     >> has not been a problem for me. Even my desktop has a serial
>     port. When I
>     >> ordered the mobo, I just made sure it had a serial port header
>     block.
>     > Alright, And you don't need anything extra like espeakup or alike,
>     > but that might be relevant for users without hardware like yours?
>
>
>     For most users, this would be sufficient:
>
>     1. Kernel module speakup
>
>     2. Kernel module speakup_soft
>
>     3. Espeakup program/package
>
>
>     >> BTW, if you are interested, I'll be giving a talk a week from
>     today
>     >> on being
>     >> a blind systems admin to the Campus Research Computing Consortium
>     >> (https://carcc.org
>     <https://urldefense.com/v3/__https://carcc.org__;!!Mak6IKo!KRveEP_wSmqkGWjfMoJnuOGc6lW7lEHbwRT5N4XpDK8qH8tNxfcT3cyjCO3wR-YiS5miNMSyPbjP_dtPvg$>).
>     Meeting details below. I will probably mention
>     >> GRML but
>     >> I won't spend a lot of time on it since i have so much to cover.
>     > That sounds interesting. :) Did I understand the date/timezone
>     > right, that your zoom meeting starts at 12:00 PM in ET (Eastern
>     > Time), corresponding to 6:00 PM AKA 18:00 CEST?
>     >
>
>     I am pretty sure it is at 1:00 Eastern. It is confusing though. The
>     meeting was created by somebody in the Central time sone so that's
>     why
>     it says 12:00. That's his time but it's 1:00 PM Eastern. I'll send
>     the
>     organizer an email just to be absolutely sure
>
>     I am starting to think those people who say the entire planet should
>     have one time zone are on to something. If I have to get used to
>     3:00 AM
>     being lunch time, so be it.
>
>
>
>     _______________________________________________
>     Grml mailing list - Grml at ml.grml.org
>     https://lists.mur.at/mailman/listinfo/grml
>     <https://urldefense.com/v3/__https://lists.mur.at/mailman/listinfo/grml__;!!Mak6IKo!KRveEP_wSmqkGWjfMoJnuOGc6lW7lEHbwRT5N4XpDK8qH8tNxfcT3cyjCO3wR-YiS5miNMSyPbhstMPDMw$>
>     join #grml on irc.freenode.org
>     <https://urldefense.com/v3/__http://irc.freenode.org__;!!Mak6IKo!KRveEP_wSmqkGWjfMoJnuOGc6lW7lEHbwRT5N4XpDK8qH8tNxfcT3cyjCO3wR-YiS5miNMSyPbhf2s-evA$>
>     grml-devel-blog: http://blog.grml.org/
>     <https://urldefense.com/v3/__http://blog.grml.org/__;!!Mak6IKo!KRveEP_wSmqkGWjfMoJnuOGc6lW7lEHbwRT5N4XpDK8qH8tNxfcT3cyjCO3wR-YiS5miNMSyPbj2Y6uRBA$>
>
>     _______________________________________________
>     Grml mailing list - Grml at ml.grml.org
>     https://lists.mur.at/mailman/listinfo/grml
>     <https://urldefense.com/v3/__https://lists.mur.at/mailman/listinfo/grml__;!!Mak6IKo!KRveEP_wSmqkGWjfMoJnuOGc6lW7lEHbwRT5N4XpDK8qH8tNxfcT3cyjCO3wR-YiS5miNMSyPbhstMPDMw$>
>     join #grml on irc.freenode.org
>     <https://urldefense.com/v3/__http://irc.freenode.org__;!!Mak6IKo!KRveEP_wSmqkGWjfMoJnuOGc6lW7lEHbwRT5N4XpDK8qH8tNxfcT3cyjCO3wR-YiS5miNMSyPbhf2s-evA$>
>     grml-devel-blog: http://blog.grml.org/
>     <https://urldefense.com/v3/__http://blog.grml.org/__;!!Mak6IKo!KRveEP_wSmqkGWjfMoJnuOGc6lW7lEHbwRT5N4XpDK8qH8tNxfcT3cyjCO3wR-YiS5miNMSyPbj2Y6uRBA$>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.mur.at/pipermail/grml/attachments/20250524/46aeacf1/attachment-0001.html>


More information about the Grml mailing list