[Grml] mk.sh

Kyle Sebion kyle at kylesebion.com
Sat May 31 21:19:29 CEST 2025


I'm glad I could help some. Must have been meant to be because I got very
lucky when I found the command to create the .iso file. That was the first
time I've created a .iso file like that. And yeah, testing outside a vm is
quite time consuming, even with good sight. I'll try to think of a better
way to do it.

On Sat, May 31, 2025, 11:34 John G. Heim <jheim at math.wisc.edu> wrote:

> 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/2884285d/attachment-0001.html>


More information about the Grml mailing list