In mijn eerste artikel over de Beaglbone Black heb ik besproken hoe ik deze mini computer heb opgezet. Daar draait nu de meest recente versie van het Linux Angstrom Distribution systeem op.

 

De microSD kaart die we daarvoor hebben gebruikt hebben we niet meer nodig en kunnen we formatteren.
Op de SD kaart staan 2 partities. Vanuit Windows ben ik er niet in geslaagd de eerste partitie van ongeveer 70MB te verwijderen.
Daarom maar de grove middelen toegepast en vanuit de command line (als administrator opstarten) volgende commando's uitgevoerd:

1. Diskpart
2. List Disk
3. Select Disk 2 (Wijzig 2 met het nummer dat overeen komt met de SD kaart)
4. clean
5. create partition primary
6. active
7. format fs=fat32 quick
8. assign
9. exit

De SD kaart kunnen we echter nog niet in de beaglebone plaatsen. Als een SD kaart aanwezig is zal de beaglebone steeds van daar proberen te booten, wat mislukt, daar de kaart leeg is. Daarom heb ik de microSD in een externe USB adapter geplaatst. Momenteel moet ik die wel eerst loskoppelen als een reboot wordt uitgevoerd.
Een voordeel van deze werkwijze is wel dat ik zo snel een backup van de microSD kaart kan nemen.

Als het toestel op het netwerk is aangesloten kunnen we via SSH (met putty bijvoorbeeld) een connectie maken.We kunnen het root paswoord dat leeg is aanpassen:
root@beaglebone:~# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

Wil je dat de datum in tijd goed staat na een stroomonderbreking, dan voeg je best een NTP server toe aan de config.
Om kosten te sparen zit er namelijk geen batterij en een RTC (Real Time Clock) op de Beaglebone.

Internet access is dan wel noodzakelijk, of een NTP server die in je LAN zit:

In de cron van root zit standaard dit commando:
30 * * * *    /usr/bin/ntpdate-sync silent

Dit wil zeggen dat elke 30 minuten er een poging wordt gedaan om de datum en tijd te corrigeren.

De config bij mij ziet er zo uit:

root@beaglebone:~# cat /etc/default/ntpdate
# Configuration script used by ntpdate-sync script

NTPSERVERS="pool.ntp.org"

# Set to "yes" to write time to hardware clock on success
UPDATE_HWCLOCK="no"

Het beheer van software pakketten gebeurd met behulp van opkg.
Met het command "opkg update" kun je die lijst up-to-date maken.

root@beaglebone:~# opkg update

Het commando opkg heeft verschillende opties:

beaglebone:~$ opkg --help
opkg: unrecognized option '--help'
opkg must have one sub-command argument
usage: opkg [options...] sub-command [arguments...]
where sub-command is one of:

Package Manipulation:
        update                  Update list of available packages
        upgrade                 Upgrade installed packages
        install <pkgs>          Install package(s)
        configure <pkgs>        Configure unpacked package(s)
        remove <pkgs|regexp>    Remove package(s)
        flag <flag> <pkgs>      Flag package(s)
         <flag>=hold|noprune|user|ok|installed|unpacked (one per invocation)

Informational Commands:
        list                    List available packages
        list-installed          List installed packages
        list-upgradable         List installed and upgradable packages
        list-changed-conffiles  List user modified configuration files
        files <pkg>             List files belonging to <pkg>
        search <file|regexp>    List package providing <file>
        info [pkg|regexp]       Display all info for <pkg>
        status [pkg|regexp]     Display all status for <pkg>
        download <pkg>          Download <pkg> to current directory
        compare-versions <v1> <op> <v2>
                            compare versions using <= < > >= = << >>
        print-architecture      List installable package architectures
        depends [-A] [pkgname|pat]+
        whatdepends [-A] [pkgname|pat]+
        whatdependsrec [-A] [pkgname|pat]+
        whatrecommends[-A] [pkgname|pat]+
        whatsuggests[-A] [pkgname|pat]+
        whatprovides [-A] [pkgname|pat]+
        whatconflicts [-A] [pkgname|pat]+
        whatreplaces [-A] [pkgname|pat]+

Options:
        -A                      Query all packages not just those installed
        -V[<level>]             Set verbosity level to <level>.
        --verbosity[=<level>]   Verbosity levels:
                                        0 errors only
                                        1 normal messages (default)
                                        2 informative messages
                                        3 debug
                                        4 debug level 2
        -f <conf_file>          Use <conf_file> as the opkg configuration file
        --conf <conf_file>
        --cache <directory>     Use a package cache
        -d <dest_name>          Use <dest_name> as the the root directory for
        --dest <dest_name>      package installation, removal, upgrading.
                                <dest_name> should be a defined dest name from
                                the configuration file, (but can also be a
                                directory name in a pinch).
        -o <dir>                Use <dir> as the root directory for
        --offline-root <dir>    offline installation of packages.
        --add-arch <arch>:<prio>        Register architecture with given priority
        --add-dest <name>:<path>        Register destination with given path
        --prefer-arch-to-version                Use the architecture priority package rather
                                        than the higher version one if more
                                        than one candidate is found.

Force Options:
        --force-depends         Install/remove despite failed dependencies
        --force-maintainer      Overwrite preexisting config files
        --force-reinstall       Reinstall package(s)
        --force-overwrite       Overwrite files from other package(s)
        --force-downgrade       Allow opkg to downgrade packages
        --force-space           Disable free space checks
        --force-postinstall     Run postinstall scripts even in offline mode
        --force-remove  Remove package even if prerm script fails
        --noaction              No action -- test only
        --download-only No action -- download only
        --nodeps                Do not follow dependencies
        --force-removal-of-dependent-packages
                                Remove package and all dependencies
        --autoremove            Remove packages that were installed
                                automatically to satisfy dependencies
        -t                      Specify tmp-dir.
        --tmp-dir               Specify tmp-dir.

 regexp could be something like 'pkgname*' '*file*' or similar
 e.g. opkg info 'libstd*' or opkg search '*libop*' or opkg remove 'libncur*'

Een programma dat ik persoonlijk zeer handig vind het ssh-keygen. Met dit programma kun je een SSH sleutel genereren. SSH sleutels zijn handig als je graag zonder paswoord op een systeem wil aanloggen.

Even controleren welk pakket we nodig hebben:

root@beaglebone:~# opkg list | grep keygen
openssh-keygen - 6.0p1-r6.9 - Secure rlogin/rsh/rcp/telnet replacement

Download en installeer openssh-keygen:
root@beaglebone:~# opkg install openssh-keygen
Installing openssh-keygen (6.0p1-r6.9) to root...
Downloading http://feeds.angstrom-distribution.org/feeds/v2012.12/ipk/eglibc/armv7a-vfp-neon/base/openssh-keygen_6.0p1-r6.9_armv7a-vfp-n                                                         eon.ipk.
Configuring openssh-keygen.

OK, nu kunnen we een SSH sleutel aanmaken:
root@beaglebone:~# ssh-keygen -t rsa

De configuratie over de SSH sleutel voor root is terug vinden onder /home/root/.ssh

Maar eigenlijk is het beter om de SSH sleutel aan te maken voor je eigen login.
Met het commando "useradd -m <user_name> kun je een login aanmaken.
Daarna kun je met "passwd <user_name> het paswoord instellen.
Nu kun je aanloggen met die naam. Met het commando "su - <user_name>" kun je van gebruiker veranderen.
Probeer dus steeds eerst als een normale gebruiker aan te loggen. Als je administratieve taken moet uitvoeren, kun je met het commando "su -" root worden. Om het met Windows te vergelijken: root onder Linux is wat in Windows de "Administrator" is.

 In een volgend artikel gaan de de Beaglebone gebruiken waarvoor hij echt voor gemaakt is: hardware aanspreken.
Zo kun je bijvoorbeeld eenvoudig met de beaglebone een temperatuur sensor maken.