Blandrake 8.2 for visual impaired (blind)

by Hans Schou 2002

  1. Introduction
  2. Requirements
  3. Boot up sequence
  4. Adding files to cdrom
  5. Patch for install2.pm
  6. Configuring floppy disk
  7. Post, Install brltty

Introduction
- we won't help you anymore!

This article describes how a blind can install Mandrake Linux all by him self. The end product is a bootable cdrom where a braille driver is loaded before the user gets any question and then the user is able to answer all the questions by himself.

Before you jump in and try installing Linux for the first time you might after all want to have an experienced Linux installer by your side. Your helper does not need to be seeing person.

The purpose with this description is that blind people no more needs to get help from seeing people. Now you have to help yourself! :-)

Requirements

Here is a list of the requirements needed for building a Blandrake 8.2 cdrom.

  1. A Mandrake 8.2 install cd. Labeled number 1.
  2. brltty-3.0-2.i386.rpm or newer.
  3. A running Mandrake Linux installation. Other Linux distributions could also be used.
  4. A cdrom recorder.
  5. A blank floppy disk for testing.

How to get brltty loaded

One major problem is to get brltty loaded to let a blind see what is going on. The first problem is that there is no room for the brltty driver on the floppy disk and then it has to be on the cdrom.

During boot of the install cdrom a file system is being loaded. It is located in /Mandrake/base/mdkinst_install2.bz2 and is a good place for the brltty driver to be placed. The binary brltty driver is easy to get.

Boot up sequence

With a proper configured cdrom the boot up sequence will occour as described below, assuming that a floppy disk is being used.

  1. Turn power on.
  2. Loading boot sector from floppy.
  3. Loading syslinux, which will load and prompt syslinux.cfg.
  4. Loading file system image into RAM.
  5. Loading vmlinuz - the kernel on the floppy.
  6. Running stage 1 install from the RAM file system and detecting cdrom.
  7. Mount and load /Mandrake/base/mdkinst_install2.bz2. This is the file system where brltty is stored.
  8. Running /usr/bin/runinstall2 which is the second stage install script.
  9. A patch in install2.pl will load the brltty driver just after mouse has been detected.
  10. brltty is running and you will be prompted for what language you want to use.

Adding files to cdrom

brltty needs about 700KB which there is no room for on the floppy disk. Instead brltty has been added to the cdrom in the ram disk which is loaded during install. By default the brltty program would be located in /sbin/brltty but it is more convenient to have it in /usr/sbin/brltty when it is on the ram disk.

Mount the ram disk and add brltty:

mkdir mdkinst_stage2
cat Mandrake/base/mdkinst_stage2.bz2 | bzip2 -d > mdkinst_stage2.fs
mount -o loop mdkinst_stage2.fs mdkinst_stage2
cp -af /sbin/brltty mdkinst_stage2/usr/sbin/
cp -af /etc/brltty.conf mdkinst_stage2/usr/etc/
cp -af /etc/brltty mdkinst_stage2/usr/etc/
cp -af /lib/brltty mdkinst_stage2/lib/
umount mdkinst_stage2
cat mdkinst_stage2.fs | bzip2 -c > Mandrake/base/mdkinst_stage2.bz2

Patch for install2.pm

To let brltty start up during install there must be a patch in mdkinst_stage2/usr/bin/perl-install/install2.pm . brltty needs to started before the first interactive question which is about the language you want to use. As the install script probes for serial ports which will interfer with brltty, it has to be started after the serial ports has been probed.

devfs is not started at this point so there is no /dev/vcsa. mknod has to be used to fix this.

eval { ($o->{mouse}, @{$o->{wacom} = []}) = mouse::detect() } unless $o->{nomouseprobe} || $o->{mouse};

if (my ($brlttyarg) = cat_("/proc/cmdline") =~ /brltty=(\S*)/) {
    my ($brldrv,$brldev,$brltxt) = split(",", $brlttyarg);
    system("mknod /dev/vcsa c 7 128");
    my $brlstart = "/usr/sbin/brltty -b $brldrv -d $brldev -t /usr/etc/brltty/$brltxt";
    log::l("Starting: $brlstart");
    system("$brlstart &");
    push @{$o->{default_packages}}, "brltty";
}

$o->{lang} = lang::set($o->{lang}) if $o->{lang} ne 'en_US';

Configuring floppy disk

Brltty supports many different braille displays where most of them can be detected automaticly. For those displays which can not be detected it is needed to specify some parameters for the start up of brltty. Special parameters is also needed to support other languages than english.

The paramters is by first hand only needed for the installation. As the cdrom is expected to be a generally recorded cdrom the configuration must be done with a floppy disk. This can be done by the blind person himself, either on an existing system running Linux or DOS.

Copy the floppy image from the cdrom to a floppy.

$ mount /dev/cdrom /mnt/cdrom
$ cat /mnt/cdrom/images/cdrom.img > /dev/fd0

On the floppy change syslinux.cfg with an entry which signal brltty to start. The parameters to brltty must be delimited with a ',' as space will not do. The parameters followed by 'append' is one single line.

label lt
  kernel vmlinuz
  append initrd=cdrom.rdz ramdisk_size=32000 root=/dev/ram3
     automatic=method:cdrom console=ttyS0,9600
     brltty=lt,/dev/ttyS0,text.us.tbl text

The syntax for loading brltty is the same as used with KNOPPIX, see www.knopper.net , knoppix-cheatcodes.txt .

There can be several blocks like the above can be added as long they have a different label. Change 'default' at the top of the file to label which should be run by default.

Post, Install brltty

Installing brltty on the system is not yet solved. On Mandrake which is using devfs, brltty has to be started after devfs is started and we want to start brltty is soon as possible. This can be done in /etc/rc.sysinit in the section just after devfs. The devfs block start with the comment: # Try to get devfsd. This could be added default in Mandrake like:


  fi
fi

# If brltty exist start it
[ -e /sbin/brltty ] && /sbin/brltty

# Ah, the user wasn't fast enought to press an 'i', so we just

The above require that /etc/brltty/brltty.conf is configured properly acording to what is written in syslinux.cfg on the floppy disk.