[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