public inbox for speakup@linux-speakup.org
 help / color / mirror / Atom feed
* initrd question
@  Gregory Nowak
   ` Doug Sutherland
  0 siblings, 1 reply; 7+ messages in thread
From: Gregory Nowak @  UTC (permalink / raw)
  To: speakup

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi all.

Is it possible to include the speech-dispatcher/speechd-up/espeak
binaries in an initrd, so that one has speech almost as early as with
a hardware synth? If this is doable, and will provide speech
significantly earlier in the boot process, (especially if I were to
build alsa into the kernel itself), then could someone familiar with
how to work with initrds please describe the steps I would need to
take in order to accomplish this on a debian system? Thanks in
advance.

Greg


- -- 
web site: http://www.romuald.net.eu.org
gpg public key: http://www.romuald.net.eu.org/pubkey.asc
skype: gregn1
(authorization required, add me to your contacts list first)

- --
Free domains: http://www.eu.org/ or mail dns-manager@EU.org
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFGjeQX7s9z/XlyUyARAtZJAJsEs5IuKsVNNL1tODFuILRKiiljIwCg20ih
Cnptvy/Qt0IqIUggn6103Cw=
=q68h
-----END PGP SIGNATURE-----


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: initrd question
   initrd question Gregory Nowak
@  ` Doug Sutherland
     ` Gregory Nowak
  0 siblings, 1 reply; 7+ messages in thread
From: Doug Sutherland @  UTC (permalink / raw)
  To: Speakup is a screen review system for Linux.

Greg,

This is an interesting question. Many embedded linux systems
use initrd as the permanent root file system loaded from flash.
What you are proposing should be possible, since relatively 
speaking you have gobs of memory to work with. Check 
out this big blue document on the topic

http://www.ibm.com/developerworks/linux/library/l-initrd.html

This useful too:
http://www.faqs.org/docs/evms/x3834.html

You'd need a large ramdisk to fit all that in there, but in 
theory at least it seems feasible. There is kernel parameter
initrd= where you can specify memory address and the 
ramdisk size, for example

initrd=0xa1500000,8M root=/dev/ram

  -- Doug




----- Original Message ----- 
From: "Gregory Nowak" <greg@romuald.net.eu.org>
To: <speakup@braille.uwo.ca>
Sent: Friday, July 06, 2007 1:41 AM
Subject: initrd question


> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Hi all.
> 
> Is it possible to include the speech-dispatcher/speechd-up/espeak
> binaries in an initrd, so that one has speech almost as early as with
> a hardware synth? If this is doable, and will provide speech
> significantly earlier in the boot process, (especially if I were to
> build alsa into the kernel itself), then could someone familiar with
> how to work with initrds please describe the steps I would need to
> take in order to accomplish this on a debian system? Thanks in
> advance.
> 
> Greg
> 
> 
> - -- 
> web site: http://www.romuald.net.eu.org
> gpg public key: http://www.romuald.net.eu.org/pubkey.asc
> skype: gregn1
> (authorization required, add me to your contacts list first)
> 
> - --
> Free domains: http://www.eu.org/ or mail dns-manager@EU.org
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.6 (GNU/Linux)
> 
> iD8DBQFGjeQX7s9z/XlyUyARAtZJAJsEs5IuKsVNNL1tODFuILRKiiljIwCg20ih
> Cnptvy/Qt0IqIUggn6103Cw=
> =q68h
> -----END PGP SIGNATURE-----
> 
> _______________________________________________
> Speakup mailing list
> Speakup@braille.uwo.ca
> http://speech.braille.uwo.ca/mailman/listinfo/speakup


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: initrd question
   ` Doug Sutherland
@    ` Gregory Nowak
       ` Doug Sutherland
  0 siblings, 1 reply; 7+ messages in thread
From: Gregory Nowak @  UTC (permalink / raw)
  To: Speakup is a screen review system for Linux.

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Thanks for the info Doug, I'll take a look at it. What concerns me the
most is whether speechd-up and speech-dispatcher are staticly built or
not. I already know that the espeak binary is staticly
linked I think, and being able to use play or aplay would eliminate the need for
libportaudio. My other concern is the amount of dependencies that the
speech-dispatcher debian package seems to have.

The other thing I wasn't sure about was what libraries I'd need to
copy over to have everything (I.E. speech-dispatcher and alsa)
working. My main goal after all would be to install a minimal
distribution (even just the debian base system would be too big), the
single purpose of which would be to boot, restore alsa parameters,
start speech-dispatcher/speechd-up, load up support for the
chipset/hard drive, and hand off control to the root fs, with software
speech already running, and speaking things such as e2fsck running,
and the rest of the boot process up until login and beyond of
course. I'm not even going to throw compiling all sound card modules
into the mix, the initial job of having this work would be hard enough
as it is with just knowing what sound card is going to be used.

I guess the other question to ask is would the initial amount of ram
required for something like this, be a good enough of a trade off to
have speech early enough in the boot process to hear the system on the
hd booting, but potentially not early enough to hear kernel panics?
Since the initrd ram does get released though, that may not be a big
deal with the amount of ram your typical pc has these days.

Some food for thought I guess. If I have time to work on this, and if
I manage to pull it off, I'll definitely post the steps for getting it
done. Of course, if someone else has the time, and wants to beat me to
it, feel free.

Greg



On Fri, Jul 06, 2007 at 10:31:48PM -0500, Doug Sutherland wrote:
> Greg,
> 
> This is an interesting question. Many embedded linux systems
> use initrd as the permanent root file system loaded from flash.
> What you are proposing should be possible, since relatively 
> speaking you have gobs of memory to work with. Check 
> out this big blue document on the topic
> 
> http://www.ibm.com/developerworks/linux/library/l-initrd.html
> 
> This useful too:
> http://www.faqs.org/docs/evms/x3834.html
> 
> You'd need a large ramdisk to fit all that in there, but in 
> theory at least it seems feasible. There is kernel parameter
> initrd= where you can specify memory address and the 
> ramdisk size, for example
> 
> initrd=0xa1500000,8M root=/dev/ram
> 
>   -- Doug
> 
> 
> 
> 

- -- 
web site: http://www.romuald.net.eu.org
gpg public key: http://www.romuald.net.eu.org/pubkey.asc
skype: gregn1
(authorization required, add me to your contacts list first)

- --
Free domains: http://www.eu.org/ or mail dns-manager@EU.org
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFGjxzH7s9z/XlyUyARAoZmAJ9SlnZgRGd4me8PvDJryw6MxTiJxgCfdOfp
rCg1f2F2Nrf14uZE9kBmFhI=
=U9T2
-----END PGP SIGNATURE-----


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: initrd question
       ` Doug Sutherland
@        ` Gregory Nowak
           ` Doug Sutherland
         ` Doug Sutherland
  1 sibling, 1 reply; 7+ messages in thread
From: Gregory Nowak @  UTC (permalink / raw)
  To: Speakup is a screen review system for Linux.

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Sat, Jul 07, 2007 at 02:07:55AM -0500, Doug Sutherland wrote:
> Well that's all kernel stuff, but it would be best to include
> them all. What is a linux install disk? It's a ramdisk with 
> generic kernel. That's the kind of kernel you want. It 
> makes no sense to make it specific to your machine, 
> you want a ramdisk that will boot on anything.

I only meant this for the initial stage to get things working. Once
that is done, it would be best of course to include support for all
sound cards, that would be trivial compared to the rest of the
process. I have played with creating ramdisks before, so I'm familiar
with the basics. I've also built alsa from source, but never looked at
it. If ./configure, make, make install worked, which they always did,
I just moved on, and never bothered looking at the results, because I
didn't need to, and because I wasn't interested.

Greg


- -- 
web site: http://www.romuald.net.eu.org
gpg public key: http://www.romuald.net.eu.org/pubkey.asc
skype: gregn1
(authorization required, add me to your contacts list first)

- --
Free domains: http://www.eu.org/ or mail dns-manager@EU.org
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFGjzNm7s9z/XlyUyARAur5AJ4tdkOlyFIEAnKuwJeFkJXdhfI1PACgwpoi
AGWKJMhoFzBGDTAKG9MFyAQ=
=mQ6i
-----END PGP SIGNATURE-----


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: initrd question
     ` Gregory Nowak
@      ` Doug Sutherland
         ` Gregory Nowak
         ` Doug Sutherland
  0 siblings, 2 replies; 7+ messages in thread
From: Doug Sutherland @  UTC (permalink / raw)
  To: Speakup is a screen review system for Linux.

Greg,

> What concerns me the most is whether speechd-up 
> and speech-dispatcher are staticly built or  not.

You control this with compiler options -static and -shared.
You can determine this easily by checking the makefiles,
and change it if it's not the way you need it to be.

> My other concern is the amount of dependencies that the
> speech-dispatcher debian package seems to have.

I think you need to mess around with source if you want 
to achieve this goal. Build from source, examine the 
makefiles, and you'll know soon enough the dependencies.

> The other thing I wasn't sure about was what libraries I'd need to
> copy over to have everything (I.E. speech-dispatcher and alsa)
> working. 

This too becomes clear when building from source. I was
building alsa from source before it was included in kernel.
Now, the device drivers are in the kernel, but the libraries
are not, so alsa-driver is already done, you need the 
alsa-lib and alsa-conf. Alsa is a project, so there are many
things that may be available, the relevent question is what
is the minimal you need for your ramdisk. Don't think in 
terms of packages, build the core and check if what you
need works, add what's missing, there you'll find your 
dependencies. 

> My main goal after all would be to install a minimal
> distribution (even just the debian base system would be too big), the
> single purpose of which would be to boot, restore alsa parameters,
> start speech-dispatcher/speechd-up, load up support for the
> chipset/hard drive, and hand off control to the root fs, with software
> speech already running, and speaking things such as e2fsck running,
> and the rest of the boot process up until login and beyond of
> course.

Yeah, that's the best way to think of it. Rather than trying
to work on ramdisk first, work on the minimal distribution.
I would recommend make a partition to experiment with 
and build the minimal system there, once you have the 
various parts working it will be easy to determine how 
much space is required etc. Even if for some reason you
were not able to get it working as ramdisk you'd have a 
good rescue partition and could put that on all machines,
and also make a bootable iso file.

Handing off control to the real root fs is done with 
pivot root, which was designed for exactly this purpose.

> I'm not even going to throw compiling all sound card modules
> into the mix, the initial job of having this work would be hard enough
> as it is with just knowing what sound card is going to be used.

Well that's all kernel stuff, but it would be best to include
them all. What is a linux install disk? It's a ramdisk with 
generic kernel. That's the kind of kernel you want. It 
makes no sense to make it specific to your machine, 
you want a ramdisk that will boot on anything. That work
is already done, you can find a kernel set up that way, 
or use the config from one.
 
> I guess the other question to ask is would the initial amount of ram
> required for something like this, be a good enough of a trade off to
> have speech early enough in the boot process to hear the system on the
> hd booting but potentially not early enough to hear kernel panics?

The kernel cannot panic. Your alsa is a kernel driver. 
If it panics no sound. The annoying thing is that console 
output is available. Food for thought, if the goal is to be 
able to determine what went wrong, then a completely 
different approach would be to work on trapping that 
console output and putting it somewhere. Compared to
what you're proposing that is far less complex. Unix
was designed to be used from serial console. There 
must be a way to grab that output and log it somewhere
so you can find out what happened before you were 
able to hear it.

> Since the initrd ram does get released though, that may not be a big
> deal with the amount of ram your typical pc has these days.

Yeah, I have 1GB RAM and the entire linux system 
barely dents that.

If you really want to do this I would recommend looking
at the buildroot project. It builds root filesystems for 
booting linux from flash on embedded systems. It uses
uclibc instead of gcc since the latter is a huge beast. It
would be worth exploring exactly what and how this 
buildroot does what it does to better approach this 
problem. It might even be worthwhile actually using the
uclibc since you're talking ramdisk, you don't have 
anywhere near the constraints of embedded, in most 
cases there the entire root fs is within 4MB of flash.
How hard that might be depends on how much of 
glibc the speech dispatcher and such used. 

http://buildroot.uclibc.org/

Note the links on the page also to related sites. 
Busybox is one executable that provides trimmer 
versions of many of the linux tools. You'll find that
on most ramdisks, and there are trimmed c libs
(uclibc) and dhcp (udhcp) etc.

  -- Doug


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: initrd question
       ` Doug Sutherland
         ` Gregory Nowak
@        ` Doug Sutherland
  1 sibling, 0 replies; 7+ messages in thread
From: Doug Sutherland @  UTC (permalink / raw)
  To: Speakup is a screen review system for Linux.

I meant to say, buildroot uses uclibc instead of glibc.
Buildroot makes a ramdisk image identical to what 
you are trying to achieve but for different reasons ...

> If you really want to do this I would recommend looking
> at the buildroot project. It builds root filesystems for 
> booting linux from flash on embedded systems. It uses
> uclibc instead of gcc since the latter is a huge beast.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: initrd question
         ` Gregory Nowak
@          ` Doug Sutherland
  0 siblings, 0 replies; 7+ messages in thread
From: Doug Sutherland @  UTC (permalink / raw)
  To: Speakup is a screen review system for Linux.

Greg,

Consider this: an embedded linux system loads a ramdisk
image built using buildroot, and its root fs is in ram and 
stays there. They have alsa up and running in seconds. 
Alsa is easy because it's in the kernel and can even be 
statically included in the kernel. The applications are more
difficult, but surely doable unless there is some weird 
limit to ramdisk size. Ram is way faster than disk, and 
flash on embedded is way slower than disk. Maybe 
some day we'll all be running huge ramdisks. If we had
enough memory, why not? It would be fast. As long as
my critical files, not the system but data, are on disk 
then who cares if the root fs is corrupted,  in fact, to 
reboot an embedded linux system you press a button, 
and voila, two seconds later you're whole root fs is 
brand new, just as it was because the buildroot makes 
a nice image that loads into ram on boot.  Another 
related interesting tool is uboot bootloader, another 
embedded tool but may be relevant here. With the
uboot, you can  use command line args to load a 
ramdisk. Now if only uboot could talk hehe.

  -- Doug


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~ UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
 initrd question Gregory Nowak
 ` Doug Sutherland
   ` Gregory Nowak
     ` Doug Sutherland
       ` Gregory Nowak
         ` Doug Sutherland
       ` Doug Sutherland

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).