[Grml] mk.sh

John G. Heim jheim at math.wisc.edu
Sat May 31 18:33:43 CEST 2025


I made an ISO file with your script, posted it on my web site, and 
somebody on the blind sysadmins list has already used it to rescue a 
down server. It works for him, he got speech during boot.

I am mostly testing on a laptop so maybe it's just that one machine. I 
As i said, i also tried it on my desktop early on and didn't get speech. 
But testing it on my desktop is a PITA because I have to reboot my 
desktop with every test iteration. It's hard to test even on my laptop 
because it takes a long time to try a modification, recreate the iso 
file, write it to a thumb drive, put the thumb drive in the laptop, and 
reboot the laptop. Each testing cycle takes like 15 minutes. Plus then 
if i don't get speech, i can't figure out what is wrong with speech. I 
have to ssh in and if that doesn't work for some reason, I've wasted 15 
minutes.

But like i said, it works in a VM and it works for this other guy. I 
think we are due for some bad weather here in Wisconsin over the next 
few days. I'll just take my time and get back to you if i figure 
anything out.

No matter what, we are way better off than before you wrote the script. 
I tried many times over the years to rebuild the GRML iso with the 
hardware synth drivers loaded by default. I could easily enough figure 
out how to take apart the GRML iso but I could never figure out how to 
put it back together agin. I was always trying to resquas the file 
system and put that back in there. I didn't even notice you weren't 
doing that until you pointed it out. But I don't think that was where I 
was failing anyway. I think I was failing to rebuild a ISO from the iso 
file system. That's hard.

PS: We got into a bit of a discussion about hardware synths on one of 
the lists i am on for blind sys admins and seems like nobody still has 
their hardware synth but me. Man, I don't know though. That seems 
dangerous to me. I would not want to rely on software speech when the 
chips are down.





On 5/29/25 9:01 PM, Kyle Sebion wrote:
>
>     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.
>
> Close. Nothing is resquashed. The unsquashed fs is used for collecting 
> packages and generating a new initramfs, then deleted.
>
>     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.
>
> If speakup_soft isn't loaded, then I'd guess something wrong happened 
> during 
> https://github.com/KyleSebion/grml-espeakup/blob/7d66206cccaadf9b7dd3864744664a40037726b2/mk.sh#L60 
> <https://urldefense.com/v3/__https://github.com/KyleSebion/grml-espeakup/blob/7d66206cccaadf9b7dd3864744664a40037726b2/mk.sh*L60__;Iw!!Mak6IKo!MqwfPPZFyi3KaXuLWXbkkqGKRSo2ryK-cn2Ksj8b76e69jieC2zJwKaY4kJpng5Nmo6hR4nJ5sLdl68NVQ$> 
> (systemctl enable --now espeakup).
> What do systemctl status espeakup and journalctl -ab0 -u espeakup show?
>
>     I don't think there is any reason to make the speakup_ltlk driver
>     a special case.
>
> I did that to reduce the scope of my testing.
>
>     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
>
> That sounds fine. Just make sure to adhere to the GPL2 license: 
> https://github.com/KyleSebion/grml-espeakup/blob/main/LICENSE 
> <https://urldefense.com/v3/__https://github.com/KyleSebion/grml-espeakup/blob/main/LICENSE__;!!Mak6IKo!MqwfPPZFyi3KaXuLWXbkkqGKRSo2ryK-cn2Ksj8b76e69jieC2zJwKaY4kJpng5Nmo6hR4nJ5sJ9FBRegg$>.
>
> On Sat, May 24, 2025 at 1:04 PM John G. Heim <jheim at math.wisc.edu> wrote:
>
>     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$>
>>
>     _______________________________________________
>     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!MqwfPPZFyi3KaXuLWXbkkqGKRSo2ryK-cn2Ksj8b76e69jieC2zJwKaY4kJpng5Nmo6hR4nJ5sJp0sqyOA$>
>     join #grml on irc.freenode.org
>     <https://urldefense.com/v3/__http://irc.freenode.org__;!!Mak6IKo!MqwfPPZFyi3KaXuLWXbkkqGKRSo2ryK-cn2Ksj8b76e69jieC2zJwKaY4kJpng5Nmo6hR4nJ5sIyAMUXYQ$>
>     grml-devel-blog: http://blog.grml.org/
>     <https://urldefense.com/v3/__http://blog.grml.org/__;!!Mak6IKo!MqwfPPZFyi3KaXuLWXbkkqGKRSo2ryK-cn2Ksj8b76e69jieC2zJwKaY4kJpng5Nmo6hR4nJ5sL1DKtewA$>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.mur.at/pipermail/grml/attachments/20250531/5b7ab512/attachment-0001.html>


More information about the Grml mailing list