Again, we need to download from the LiveCD:
umount -v /media/amiga sudo mkdir /media/lfs sudo mount -v -t ext3 /dev/disk/by-label/amiga /media/lfs cd /media/lfs/sources mkdir audio chmod -v a+wt audio cd audio wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.21.tar.bz2 wget ftp://ftp.alsa-project.org/pub/plugins/alsa-plugins-1.0.21.tar.bz2 wget ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.21.tar.bz2 wget http://www.linuxfromscratch.org/patches/blfs/svn/alsa-utils-1.0.21-no_xmlto-1.patch wget http://www.linuxfromscratch.org/blfs/downloads/svn/blfs-bootscripts-20090302.tar.bz2
I'm downloading the BLFS bootscripts again, just incase we didn't grab them when doing the network install. We'll adopt the same approach as for the network and documentation software:
cd /sources/audio tar -jxvf /sources/audio/alsa-lib-1.0.21.tar.bz2
The [alsa-lib-1.0.21.tar.bz2] contains Alsa's libraries, and is absolutely essential to what follows. These are the core pieces of software that let programs, inlcuding alsa programs that we are about to install, access the ALSA drivers that we activated in the Kernel configuration earlier.
cd alsa-lib-1.0.21 ./configure --enable-static
The [enable-static] option presumably makes static instead of dynamic libraries. Someone is going to have to take the time to explain that to me in the future.
make $CORES_TO_USE make install install -v -m644 -D doc/asoundrc.txt /usr/share/doc/alsa-lib-1.0.21/asoundrc.txt make doc install -v -d -m755 /usr/share/doc/alsa-1.0.21/html install -v -m644 doc/doxygen/html/* /usr/share/doc/alsa-1.0.21/html cd .. rm -rvf alsa-lib-1.0.21
tar -jxvf /sources/audio/alsa-plugins-1.0.21.tar.bz2
In [alsa-plugins-1.0.21.tar.bz2] there are several add on libraries that seem to mostly assist in making alsa interact with other sound software in Linux. We are only going to be using alsa, and not pulseaudio or jack, so these may not be necessary. There is a huge gulf between 'may not be necessary' and 'actually not necessary' filled with nightmarish problem solving, so I am just going to install these anyway.
cd alsa-plugins-1.0.21 ./configure make $CORES_TO_USE make install install -v -m755 -d /usr/share/doc/alsa-plugins-1.0.21 install -v -m644 doc/{README*,*.txt} /usr/share/doc/alsa-plugins-1.0.21 cd .. rm -rvf alsa-plugins-1.0.21
tar -jxvf /sources/audio/alsa-utils-1.0.21.tar.bz2
We now need to actually have some programs to configure the sound card settings, and more importantly at this stage, test to see if it is working. The [alsa-utils-1.0.21.tar.bz2] package achieves this.
cd alsa-utils-1.0.21 patch -Np1 -i /sources/audio/alsa-utils-1.0.21-no_xmlto-1.patch
BLFS contains precisely no information about why we want to apply this patch, but given the name it is probably something to do with stopping some xml documentation being produced.
./configure make $CORES_TO_USE make install cd .. rm -rvf alsa-utils-1.0.21
We now need to do some setup work so that alsa will work when we restart. The first thing to do is to install a script from BLFS which starts up alsa on boot.
tar -xjvf /sources/audio/blfs-bootscripts-20090302.tar.bz2 cd blfs-bootscripts-20090302 make install-alsa cd .. rm -rvf blfs-bootscripts-20090302
We also need to create the file which stores the settings (volume and stuff):
touch /etc/asound.state
And we need to fill it with the current settings:
alsactl store
Finally, udev needs a rule to tell it to reload the settings file we just made when it detects a soundcard at boot time. Not exactly sure what the difference is between this and the BLFS bootscript we just installed.
cat > /etc/udev/rules.d/40-alsa.rules << "EOF" # /etc/udev/rules.d/40-alsa.rules # When a sound device is detected, restore the volume settings KERNEL=="controlC[0-9]*", ACTION=="add", RUN+="/usr/sbin/alsactl restore %n" EOF chmod -v 644 /etc/udev/rules.d/40-alsa.rules
What you then have to do is run the control program to activate your speakers. It is fairly self explanatory to use.
alsamixer
You can test the installation has worked by running:
speaker-test
If that does not work (and it did for me) then I can only suggest going back to the kernel configuration and making double sure that your hardware is supported in the kernel you have built. If in doubt, activate everything and try it then.
And, now for the wonder command that makes all of that into an executable script (apart from the last two commands):
sudo cat > install_alsa.sh << "ARSE" cd /sources/audio tar -jxvf /sources/audio/alsa-lib-1.0.21.tar.bz2 cd alsa-lib-1.0.21 ./configure --enable-static && make $CORES_TO_USE make install && install -v -m644 -D doc/asoundrc.txt /usr/share/doc/alsa-lib-1.0.21/asoundrc.txt make doc install -v -d -m755 /usr/share/doc/alsa-1.0.21/html install -v -m644 doc/doxygen/html/* /usr/share/doc/alsa-1.0.21/html cd .. rm -rvf alsa-lib-1.0.21 tar -jxvf /sources/audio/alsa-plugins-1.0.21.tar.bz2 cd alsa-plugins-1.0.21 ./configure make $CORES_TO_USE make install install -v -m755 -d /usr/share/doc/alsa-plugins-1.0.21 install -v -m644 doc/{README*,*.txt} /usr/share/doc/alsa-plugins-1.0.21 cd .. rm -rvf alsa-plugins-1.0.21 tar -jxvf /sources/audio/alsa-utils-1.0.21.tar.bz2 cd alsa-utils-1.0.21 patch -Np1 -i /sources/audio/alsa-utils-1.0.21-no_xmlto-1.patch ./configure make $CORES_TO_USE make install cd .. rm -rvf alsa-utils-1.0.21 tar -xjvf /sources/audio/blfs-bootscripts-20090302.tar.bz2 cd blfs-bootscripts-20090302 make install-alsa cd .. rm -rvf blfs-bootscripts-20090302 touch /etc/asound.state alsactl store cat > /etc/udev/rules.d/40-alsa.rules << "EOF" # /etc/udev/rules.d/40-alsa.rules # When a sound device is detected, restore the volume settings KERNEL=="controlC[0-9]*", ACTION=="add", RUN+="/usr/sbin/alsactl restore %n" EOF chmod -v 644 /etc/udev/rules.d/40-alsa.rules ARSE chmod +x ./install_alsa.sh sudo mv ./install_alsa.sh /media/lfs/root
No comments:
Post a Comment