<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <p>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.<br>
    </p>
    <p>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.</p>
    <p>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.</p>
    <p>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.<br>
    </p>
    <p>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.<br>
    </p>
    <p><br>
    </p>
    <p><br>
    </p>
    <p><br>
    </p>
    <p><br>
    </p>
    <div class="moz-cite-prefix">On 5/29/25 9:01 PM, Kyle Sebion wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:CA+D-UrV6ZcB4U6jsVKjUTJcQXEmyRzPLscNWk+nMSW2iQR=06A@mail.gmail.com">
      
      <div dir="ltr">
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">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.</blockquote>
        <div>Close. Nothing is resquashed. The unsquashed fs is used for
          collecting packages and generating a new initramfs, then
          deleted.</div>
        <div><br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">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.</blockquote>
        <div>If speakup_soft isn't loaded, then I'd guess something
          wrong happened during <a href="https://urldefense.com/v3/__https://github.com/KyleSebion/grml-espeakup/blob/7d66206cccaadf9b7dd3864744664a40037726b2/mk.sh*L60__;Iw!!Mak6IKo!MqwfPPZFyi3KaXuLWXbkkqGKRSo2ryK-cn2Ksj8b76e69jieC2zJwKaY4kJpng5Nmo6hR4nJ5sLdl68NVQ$" moz-do-not-send="true">https://github.com/KyleSebion/grml-espeakup/blob/7d66206cccaadf9b7dd3864744664a40037726b2/mk.sh#L60</a>
          (systemctl enable --now espeakup).</div>
        <div>What do <font face="monospace">systemctl status espeakup</font>
          and <font face="monospace">journalctl -ab0 -u espeakup</font>
          show?</div>
        <div><br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">I
          don't think there is any reason to make the speakup_ltlk
          driver a special case.</blockquote>
        <div>I did that to reduce the scope of my testing.</div>
        <div><br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">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</blockquote>
        <div>That sounds fine. Just make sure to adhere to the GPL2
          license: <a href="https://urldefense.com/v3/__https://github.com/KyleSebion/grml-espeakup/blob/main/LICENSE__;!!Mak6IKo!MqwfPPZFyi3KaXuLWXbkkqGKRSo2ryK-cn2Ksj8b76e69jieC2zJwKaY4kJpng5Nmo6hR4nJ5sJ9FBRegg$" moz-do-not-send="true">https://github.com/KyleSebion/grml-espeakup/blob/main/LICENSE</a>.</div>
        <br>
        <div class="gmail_quote gmail_quote_container">
          <div dir="ltr" class="gmail_attr">On Sat, May 24, 2025 at
            1:04 PM John G. Heim <<a href="mailto:jheim@math.wisc.edu" moz-do-not-send="true" class="moz-txt-link-freetext">jheim@math.wisc.edu</a>>
            wrote:<br>
          </div>
          <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
            <div>
              <p>Ah ha!</p>
              <p>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.<br>
              </p>
              <p>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. <br>
              </p>
              <p>I generated an iso file for grml and my synth that uses
                the speakup_ltlk driver. It works. So that's great.</p>
              <p>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.<br>
              </p>
              <p>Volume is fine, btw, that doesn't really matter.</p>
              <p>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:</p>
              <p><br>
              </p>
              <p>if driver is 'soft' then</p>
              <p>  generate isofiles/scripts/grml.sh</p>
              <p>fi</p>
              <p> add speakup module to initramfs</p>
              <p><br>
              </p>
              <p>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.<br>
              </p>
              <p>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.</p>
              <p>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.</p>
              <p>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.</p>
              <p>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<br>
              </p>
              <p><a href="https://people.math.wisc.edu/~jheim/GRML/grml2speak" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">https://people.math.wisc.edu/~jheim/GRML/grml2speak</a></p>
              <p><br>
              </p>
              <p><br>
              </p>
              <p><br>
              </p>
              <p><br>
              </p>
              <div>On 5/11/25 12:19 AM, Kyle Sebion wrote:<br>
              </div>
              <blockquote type="cite">
                <div dir="ltr">Hi John,
                  <div>I made a script that sets up espeakup in a grml
                    .iso file: <a href="https://urldefense.com/v3/__https://github.com/KyleSebion/grml-espeakup/blob/main/mk.sh__;!!Mak6IKo!KRveEP_wSmqkGWjfMoJnuOGc6lW7lEHbwRT5N4XpDK8qH8tNxfcT3cyjCO3wR-YiS5miNMSyPbipyT0jCQ$" target="_blank" moz-do-not-send="true">https://github.com/KyleSebion/grml-espeakup/blob/main/mk.sh</a></div>
                  <div>It isn't a very long script, so it shouldn't be
                    hard to verify that it isn't doing anything
                    malicious.</div>
                  <div>To use it, boot grml, download the grml .iso you
                    want to use and the script, then run: ./mk.sh
                    <grml.iso></div>
                  <div>It will create espeakup.iso.</div>
                  <div>You might need to make tweaks based on the
                    hardware you boot espeakup.iso on.</div>
                  <div>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).</div>
                  <div>You might also want to change the volume I set
                    with amixer (I cranked it to max because my speakers
                    aren't very loud).</div>
                  <div>You probably know this already, but screen
                    reading won't start until some time after boot
                    finishes.</div>
                  <div><br>
                  </div>
                  <div>I might look into getting speakup_ltlk working.</div>
                  <div>That is a bit more work because the initramfs
                    doesn't contain it, yet.</div>
                  <div>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.</div>
                  <div><br>
                  </div>
                  <div><br>
                  </div>
                </div>
                <br>
                <div class="gmail_quote">
                  <div dir="ltr" class="gmail_attr">On Sat, May 10, 2025
                    at 3:04 PM <<a href="mailto:tommym2006@gmail.com" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">tommym2006@gmail.com</a>>
                    wrote:<br>
                  </div>
                  <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi,<br>
                    Some other dependencies for software speech would
                    be:<br>
                    The espeak-ng package sound hardware configured and
                    volume set to 3/4 volume<br>
                    for Mastre and PCM options.<br>
                    <br>
                    I don't know how hard this would be to do, the
                    Debian installer has this<br>
                    functionality and if there's a way you could look at
                    this you'd have a place<br>
                    to look as their install has had this for a few
                    versions now working<br>
                    properly.<br>
                    <br>
                    Tom<br>
                    <br>
                    -----Original Message-----<br>
                    From: Grml <<a href="mailto:grml-bounces@ml.grml.org" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">grml-bounces@ml.grml.org</a>>
                    On Behalf Of John G. Heim<br>
                    Sent: Friday, May 9, 2025 1:23 PM<br>
                    To: <a href="mailto:grml@ml.grml.org" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">grml@ml.grml.org</a><br>
                    Subject: Re: [Grml] Customizing GRML to start speech
                    as early as possible<br>
                    <br>
                    <br>
                    On 5/9/25 11:32 AM, Michael Prokop wrote:<br>
                    > * John G. Heim [Wed May 07, 2025 at 01:42:23PM
                    -0500]:<br>
                    >> On 5/7/25 12:14 PM, Michael Prokop wrote:<br>
                    >>> To clarify the situation: for *you*
                    only "modprobe speakup" is<br>
                    >>> relevant, or do you use any of the
                    specific modules like<br>
                    >>> speakup_dectlk?<br>
                    >>><br>
                    >>> Do *you* need anything other than just
                    "modprobe speakup_soft" or<br>
                    >>> alike to get it working/useful for your
                    situation?<br>
                    <br>
                    <br>
                    Personally, I would need the following:<br>
                    <br>
                    1. Kernel module speakup<br>
                    <br>
                    2. Kernel module speakup_ltlk<br>
                    <br>
                    3. kernel module speakup_soft<br>
                    <br>
                    4. espeakup program/package<br>
                    <br>
                    <br>
                    The espeakup program has to be running for the
                    kernel to access a text <br>
                    to speech engine for software speech.<br>
                    <br>
                    <br>
                    <br>
                    >> I mostly use the Litetalk driver,
                    speakup_ltlk. But to use a hardware <br>
                    >> synth,<br>
                    >> you have to have a machine with a serial
                    port. This is another reason<br>
                    >> supporting hardware speech synths is more
                    work than it is worth. My blind<br>
                    >> friends say the machines they work on do
                    not have serial ports. So <br>
                    >> far, that<br>
                    >> has not been a problem for me. Even my
                    desktop has a serial port. When I<br>
                    >> ordered the mobo, I just made sure it had a
                    serial port header block.<br>
                    > Alright, And you don't need anything extra like
                    espeakup or alike,<br>
                    > but that might be relevant for users without
                    hardware like yours?<br>
                    <br>
                    <br>
                    For most users, this would be sufficient:<br>
                    <br>
                    1. Kernel module speakup<br>
                    <br>
                    2. Kernel module speakup_soft<br>
                    <br>
                    3. Espeakup program/package<br>
                    <br>
                    <br>
                    >> BTW, if you are interested, I'll be giving
                    a talk a week from today <br>
                    >> on being<br>
                    >> a blind systems admin to the Campus
                    Research Computing Consortium<br>
                    >> (<a href="https://urldefense.com/v3/__https://carcc.org__;!!Mak6IKo!KRveEP_wSmqkGWjfMoJnuOGc6lW7lEHbwRT5N4XpDK8qH8tNxfcT3cyjCO3wR-YiS5miNMSyPbjP_dtPvg$" rel="noreferrer" target="_blank" moz-do-not-send="true">https://carcc.org</a>).
                    Meeting details below. I will probably mention <br>
                    >> GRML but<br>
                    >> I won't spend a lot of time on it since i
                    have so much to cover.<br>
                    > That sounds interesting. :) Did I understand
                    the date/timezone<br>
                    > right, that your zoom meeting starts at 12:00
                    PM in ET (Eastern<br>
                    > Time), corresponding to 6:00 PM AKA 18:00 CEST?<br>
                    ><br>
                    <br>
                    I am pretty sure it is at 1:00 Eastern. It is
                    confusing though. The <br>
                    meeting was created by somebody in the Central time
                    sone so that's why <br>
                    it says 12:00. That's his time but it's 1:00 PM
                    Eastern. I'll send the <br>
                    organizer an email just to be absolutely sure<br>
                    <br>
                    I am starting to think those people who say the
                    entire planet should <br>
                    have one time zone are on to something. If I have to
                    get used to 3:00 AM <br>
                    being lunch time, so be it.<br>
                    <br>
                    <br>
                    <br>
                    _______________________________________________<br>
                    Grml mailing list - <a href="mailto:Grml@ml.grml.org" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">Grml@ml.grml.org</a><br>
                    <a href="https://urldefense.com/v3/__https://lists.mur.at/mailman/listinfo/grml__;!!Mak6IKo!KRveEP_wSmqkGWjfMoJnuOGc6lW7lEHbwRT5N4XpDK8qH8tNxfcT3cyjCO3wR-YiS5miNMSyPbhstMPDMw$" rel="noreferrer" target="_blank" moz-do-not-send="true">https://lists.mur.at/mailman/listinfo/grml</a><br>
                    join #grml on <a href="https://urldefense.com/v3/__http://irc.freenode.org__;!!Mak6IKo!KRveEP_wSmqkGWjfMoJnuOGc6lW7lEHbwRT5N4XpDK8qH8tNxfcT3cyjCO3wR-YiS5miNMSyPbhf2s-evA$" rel="noreferrer" target="_blank" moz-do-not-send="true">irc.freenode.org</a><br>
                    grml-devel-blog: <a href="https://urldefense.com/v3/__http://blog.grml.org/__;!!Mak6IKo!KRveEP_wSmqkGWjfMoJnuOGc6lW7lEHbwRT5N4XpDK8qH8tNxfcT3cyjCO3wR-YiS5miNMSyPbj2Y6uRBA$" rel="noreferrer" target="_blank" moz-do-not-send="true">http://blog.grml.org/</a><br>
                    <br>
                    _______________________________________________<br>
                    Grml mailing list - <a href="mailto:Grml@ml.grml.org" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">Grml@ml.grml.org</a><br>
                    <a href="https://urldefense.com/v3/__https://lists.mur.at/mailman/listinfo/grml__;!!Mak6IKo!KRveEP_wSmqkGWjfMoJnuOGc6lW7lEHbwRT5N4XpDK8qH8tNxfcT3cyjCO3wR-YiS5miNMSyPbhstMPDMw$" rel="noreferrer" target="_blank" moz-do-not-send="true">https://lists.mur.at/mailman/listinfo/grml</a><br>
                    join #grml on <a href="https://urldefense.com/v3/__http://irc.freenode.org__;!!Mak6IKo!KRveEP_wSmqkGWjfMoJnuOGc6lW7lEHbwRT5N4XpDK8qH8tNxfcT3cyjCO3wR-YiS5miNMSyPbhf2s-evA$" rel="noreferrer" target="_blank" moz-do-not-send="true">irc.freenode.org</a><br>
                    grml-devel-blog: <a href="https://urldefense.com/v3/__http://blog.grml.org/__;!!Mak6IKo!KRveEP_wSmqkGWjfMoJnuOGc6lW7lEHbwRT5N4XpDK8qH8tNxfcT3cyjCO3wR-YiS5miNMSyPbj2Y6uRBA$" rel="noreferrer" target="_blank" moz-do-not-send="true">http://blog.grml.org/</a><br>
                  </blockquote>
                </div>
              </blockquote>
            </div>
            _______________________________________________<br>
            Grml mailing list - <a href="mailto:Grml@ml.grml.org" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">Grml@ml.grml.org</a><br>
            <a href="https://urldefense.com/v3/__https://lists.mur.at/mailman/listinfo/grml__;!!Mak6IKo!MqwfPPZFyi3KaXuLWXbkkqGKRSo2ryK-cn2Ksj8b76e69jieC2zJwKaY4kJpng5Nmo6hR4nJ5sJp0sqyOA$" rel="noreferrer" target="_blank" moz-do-not-send="true">https://lists.mur.at/mailman/listinfo/grml</a><br>
            join #grml on <a href="https://urldefense.com/v3/__http://irc.freenode.org__;!!Mak6IKo!MqwfPPZFyi3KaXuLWXbkkqGKRSo2ryK-cn2Ksj8b76e69jieC2zJwKaY4kJpng5Nmo6hR4nJ5sIyAMUXYQ$" rel="noreferrer" target="_blank" moz-do-not-send="true">irc.freenode.org</a><br>
            grml-devel-blog: <a href="https://urldefense.com/v3/__http://blog.grml.org/__;!!Mak6IKo!MqwfPPZFyi3KaXuLWXbkkqGKRSo2ryK-cn2Ksj8b76e69jieC2zJwKaY4kJpng5Nmo6hR4nJ5sL1DKtewA$" rel="noreferrer" target="_blank" moz-do-not-send="true">http://blog.grml.org/</a><br>
          </blockquote>
        </div>
      </div>
    </blockquote>
  </body>
</html>