[http://freeengineer.org/learnUNIXin10minutes.html Learn UNIX in 10 Minutes] is a quick overview of the most commonly used Linux commands.

[http://freeengineer.org/learnUNIXin10minutes.html Learn UNIX in 10 Minutes] is a quick overview of the most commonly used Linux commands.

+

+

[http://lifehacker.com/5935869/top-10-tools-that-are-better-in-the-command-line?utm_campaign=socialflow_lifehacker_twitter&utm_source=lifehacker_twitter&utm_medium=socialflow Top 10 Tools] is a nice summary of 10 of the most useful Linux commands.

=== Quick Tips ===

=== Quick Tips ===

Line 35:

Line 52:

| Kernel Debug Info

| Kernel Debug Info

|}

|}

+

+

=== Connecting to RHIT wifi ===

+

+

Use these settings for connecting to the Rose-Hulman wireless network:

+

+

* '''SSID:''' RHIT-1X

+

* '''Security:''' WPA & WPA2 Enterprise

+

* Leave "anonymous identity" blank

+

* '''CA Certificate''': (None)

+

* '''PEAP version''': Version 0

+

* '''Inner authentication''': MSCHAPv2

+

* Use your Rose username and password

=== bash ===

=== bash ===

Line 149:

Line 178:

host$ '''cd ~'''

host$ '''cd ~'''

host$ '''sudo umount dfs-home'''

host$ '''sudo umount dfs-home'''

+

+

=== debugfs ===

+

+

'''debugfs''' looks like a handy way to look into the kernel. These notes are based on the example [https://groups.google.com/forum/#!msg/beagleboard/bGZcCHwHwrI/CXHJ0WOBpV0J here].

+

+

beagle$ '''cd /'''

+

beagle$ '''mkdir debugfs'''

+

beagle$ '''mount -t debugfs none debugfs'''

+

+

Then explore...

+

+

bone$ '''cd debugfs; ls -F'''

+

asoc/ gpio mmc0/ pm_debug/ sched_features vram

+

bdi/ hid/ musb/ regdump testmode wakeup_sources

+

clock/ memblock/ omap_mux/ regulator/ usb/

+

+

beagle$ ''' cd debugfs; ls -F'''

+

asoc/ clock/ hid/ omapdss/ sched_features usb/

+

bdi/ gpio mmc0/ pm_debug/ tracing/ vram

=== Tool chain work flows ===

=== Tool chain work flows ===

Line 248:

Line 296:

It takes about 5 minutes to dd a 4G card, 1.2 minutes for md5 and bzip2 takes about 23 minutes.

It takes about 5 minutes to dd a 4G card, 1.2 minutes for md5 and bzip2 takes about 23 minutes.

+

+

It looks like the 7z compression is becoming popular. Use it via

+

host$ ''' 7za a FIE2011.img.7z IFE2011.img

+

+

It took 16 minutes. The file size is 454M compared to 628M. Wow, faster and smaller.

=== CSSE's Linux reference page ===

=== CSSE's Linux reference page ===

Line 261:

Line 314:

In order to get your system to point to our mirror, please copy and paste this rather lengthy command into a terminal:

In order to get your system to point to our mirror, please copy and paste this rather lengthy command into a terminal:

−

host$ '''sudo cp /etc/apt/sources.list{,.old} && \'''

+

host$ '''sudo cp /etc/apt/sources.list{,.old} && \

−

host$ '''sudo sh -c '\

+

sudo sh -c '\

'''. /etc/lsb-release &&'''

'''. /etc/lsb-release &&'''

'''echo "'''

'''echo "'''

Line 293:

Line 346:

== Set up on the BeagleBoard ==

== Set up on the BeagleBoard ==

+

+

=== Setup stuff on github ===

+

If you've cloned the course github site ([EBC Exercise 05 Getting Exercise Support Materials]]) you will find set up things in '''exercises/setup'''. '''install.sh''' is a list of various things I to to a fresh SD card to 'move in'. For example, the bone will mount a filesystem on the host computer if it's connected via USB. You can turn this off and have the eithernet over USB run at boot time with:

The green dot in the S column says the package is installed. libncurses5-dev isn't installed. Install it with:

host$ sudo apt-get install libncurses5-dev

And now your make should work.

byobu - A Screen Manager

For years Unix has had screen which is a screen manager. byobu is wrapper for screen that puts a nice face on it. You can run byobu on your host computer and on the Beagle. With byobu you can start a long running program (bitbake for example) in one terminal and detach from the terminal and the program will keeping running in the background. Using byobu you can later attach to the program (possibly from another terminal) and see how the program is progressing.

You'll see a command prompt. You'll also see some status information on the bottom two lines. Type Ctrl-A ? for help. Type Ctrl-A Ctrl-D to detach from the session. Running byobu again will reattach you to the session. Try running byobu in two windows at the same time. You should see the same session in both.

Hmmm.... I had to reinstall and it doesn't seem to be working now.

Finding what opkg installed

Once you've run opkg, how do you know what's been installed? Take a look in /var/lib/opkg/info or /usr/lib/opkg/info. The files that end in .list contain a list of what's been installed.

Backing up an SD card with dd

Here's the command I use to backup an SD card. I use System:Administration:Disk Utility to figure out the path to the card. In this case it's /dev/sdc

The script makes a backup of the updates file and replaces it with links to our mirror. The $DISTRIB_CODENAME is replaced by whatever distro you are running (eg. lucid, maverick, natty etc.). I wish I could take credit for it, but it was a joint effort with Mike McLeish :-)

More tips

GigaMegaBlog has some nice tips for the BeagleBone, many of which apply to the -xM.

Windows

Most of the work is done under Linux; however there are some handy Windows-based tools.

Serial Port

SecureCRT is a good program that gives you both access to a serial port and is also an ssh client. Rose has a license for SecureCRT.

Notepad++

Set up on the BeagleBoard

Setup stuff on github

If you've cloned the course github site ([EBC Exercise 05 Getting Exercise Support Materials]]) you will find set up things in exercises/setup. install.sh is a list of various things I to to a fresh SD card to 'move in'. For example, the bone will mount a filesystem on the host computer if it's connected via USB. You can turn this off and have the eithernet over USB run at boot time with:

Installing Ubuntu

The first link references a Ubuntu wiki which details how to install a netbook edition of Ubuntu on ARM/OMAP processor-based systems. It is not beagle-specific. This image runs a little slowly, but not much slower than the SPEd image.

The second link references instructions for installing another image. This image is very minimal, and doesn't have a gui. There are instructions for installing a gui, which I did, with good success. As far as I can tell, even with the gui, this is the fastest image so far.

Installing Always Innovating's Super Jumbo

Always Innovating works with branded products and services companies that are looking to deliver great touch devices as part of their offerings. They have published a free SD card image for the BeagleBoard that runs Angstrom, Android, Ubuntu, and ChromiumOS. Here's a video showing what it can do.

I've put a copy of the compressed image on my DFS site. Feal free to play with it. Here's a wiki that shows how to switch between OS's on the fly.

Resizing an SD card partition via the Beagle

The following is a slick way to boot the Beagle so it isn't using the SD, then repartition the SD card. It came from [1]

Jason Kridner says ...
I got a related question from Mark about how to perform the partition
resizing, so I figured I'd address that here. I don't believe you'd
be able to resize a mounted partition and that this operation would
require another file system to mount. Because this image does not
have the ramdisk, I downloaded the one used being shipped with the xM
boards today [2].

Sharing Laptop Internet Connection with BeagleBoard

Option 1 - Using Ubuntu Network Connections GUI

In Ubuntu, go to System -> Preferences -> Network Connections

On the 'Wired' tab, select 'Auto eth0' and click 'Edit' (Note: name may be other than 'eth0'. If nothing exists in this list, then make sure there is not an entry starting with 'auto eth0' in your /etc/network/interfaces file; such an entry prevents Network Manager from managing that interface.)

Click the 'IPv4 Settings' tab and change 'Method' to 'Shared to other computers'

Click apply

Restart Ubuntu

Connect the BeagleBoard to the laptop with the crossover Ethernet cable

Boot the BeagleBoard - if Ubuntu was already running and the Ethernet cable was already plugged in, the BeagleBoard should automatically get assigned an IP address and you should be able to access the Internet on the BeagleBoard via the laptop's wireless connection

Option 2 - Modifying Things Yourself (DHCP Server)

This will setup a DHCP server on the host machine that will listen to the Ethernet port and assign an IP address to the BeagleBoard when it is connected with an Ethernet crossover cable. The host machine will then act as a router using NAT to send packets out the wifi interface.
A number of steps were taken from the Ubuntu Community Documentation.
Notes:

'eth0' will refer to the internal interface (connected to the BeagleBoard) and 'wlan0' will refer to the external interface (connected to the Internet). Your interface names may differ.

A number of configuration files are changed. It's a good idea to save a backup copy of these before modifying them.

On the host machine, configure eth0 for a static IP:

host$ sudo ifconfig eth0 192.168.1.13

If you don't want to configure this after every boot, add an entry to /etc/network/interfaces with the following:

To avoid having to setup the IP tables after every boot, save the IP tables

host$ sudo iptables-save | sudo tee /etc/iptables.sav

And add the following command to /etc/rc.local (or other appropriate file for your distribution) to be run at boot

iptables-restore < /etc/iptables.sav

IP forwarding needs to be enabled:

host$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

To make sure this is set after rebooting, add these lines to /etc/sysctl.conf:

net.ipv4.conf.default.forwarding=1
net.ipv4.conf.all.forwarding=1

Install the DHCP server software

host$ sudo apt-get install dhcp3-server

And edit the configuration file /etc/dhcp3/dhcpd.conf (comment out any already existing lines other than "ddns-update-style none;")

#Added for DHCP with BeagleBoard
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.13; #<--This must match the IP address you statically set for eth0
option domain-name-servers 137.112.4.196,137.112.5.28,137.112.12.11; #<--Rose-Hulman's DNS servers (according to my laptop, at least)
option domain-name "rose-hulman.edu";
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.14 192.168.1.14; #<--You can specify a larger range; I used this to force my BeagleBoard to always have the same IP so I could add an entry for that IP in /etc/hosts
}

You may need to edit /etc/default/dhcp3-server to specify the interface for the DHCP server

INTERFACES="eth0"

Then restart the DHCP server service

host$ sudo service dhcp3-server restart

You may need to reboot your host machine, and it may be necessary to run the command above to restart the DHCP server every time you boot (I'm not sure if it starts appropriately at boot).

Now connect the BeagleBoard to the host machine with a crossover Ethernet cable and boot the Beagle. After booting, run 'ifconfig' to see if the Beagle was assigned an IP address. If it does not have an IP address, try running the command 'dhclient usb0'.

Once the Beagle does have an IP address, try

beagle$ ping -c 3 -W 10 www.google.com

to test if the setup is working correctly. If it complains about a bad name, the DNS servers are incorrect; try pinging a specific IP such as 8.8.8.8 to see if packets get through (though unless you want to rely on all IP addresses, you will need to get some DNS servers that work).

Option 3 - Manual Routing, Static Beagle IP

This will setup the routing on Ubuntu (sending all eth0 traffic out wlan0). It will then set a static IP address on the BeagleBoard (so you can stick an entry for your BeagleBoard in /etc/hosts for convenience). The key difference from Option 2 is that the DHCP server in that option supplied the BeagleBoard with DNS servers. In this option, we add a script that gives the BeagleBoard some static DNS server addresses every time it boots.

First, follow through the steps in Option 2 right up until it starts talking about installing the DHCP server. Instead of installing the DHCP server, do the following.

On your BeagleBoard, add the following entry to /etc/network/interfaces (comment out any pre-existing entries regarding 'usb0')

After booting, the BeagleBoard is now configured with a static IP address and knows the gateway for all its traffic is the address of your host machine. The last thing to do is to make sure your BeagleBoard knows what DNS servers to use. This information is stored in the /etc/resolv.conf file. You could add it manually every time after boot, but we'll make a script to do it at boot instead.

On your BeagleBoard, navigate to the /etc/rc5.d/ directory. In this directory, create a file named S99<name> where <name> can be anything you prefer. My file was named S99SetRoseHulmanNameServers. Add the following inside that file:

That should be it. Assuming all cables are connected properly and you have a WiFi connection on the host machine, after booting the BeagleBoard should have a usable Internet connection.

Using u-boot to specify a MAC address at boot

The BeagleBoard has a problem where Linux will randomly select a MAC address at boot. In order to get around this, one blogger provides a patch to enable a kernel command line parameter to set a MAC address. Below is one way to apply, your mileage may vary.

Make sure your kernel compiles and boots.

Grab the patch, and open it with gedit

Open .../git/drivers/net/usb/smsc95xx.c

Go to line 64-ish, and look for a place to insert the first code with plus signs preceding each line. Remove the plus signs.

Go to 656-ish, and repeat for the other block of code.

Save and re-compile.

Install the new kernel as normal.

Edit the kernel command line. There are two ways to do this:

Edit the uBoot source and recompile

Go to u-boot, and edit ../include/configs/omap3_beagle.h

Change mmcargs, nandargs, and ramargs to include a parameter for "ethaddr=...", where ... is your MAC address.

Rename an External Storage Device

I ran out of space on my Linux (Ubuntu) partition, so I opted to do all my development on an external hard drive. This works just fine, except that the drive is labeled "Expansion Drive" and the space in there causes problems in some of the setup scripts. It is possible to add an entry in /etc/fstab that mounts the device with a certain name, but this is very cumbersome, for many reasons. Instead, I used this [1] very helpful guide to change the label on my external drive.

Setup a USB Wireless Device on Beagle

The device I used to setup a wireless connection on the Beagle Board was the Linksys Compact Wireless-G USB Network Adapter with SpeedBooster.

I first opened the wpa_supplicant.conf file to setup my networks:

beagle$ cd /etc
beagle$ gedit wpa_supplicant.conf &

This file is filled with numerous examples of possible wireless configurations for you to basically fill in. After looking at the examples, I scrolled down to the bottom of the page and set up two networks: one for home and one for school. Here are examples of my setup networks:

For the network examples above,the quotation marks actually belong there but replace the Your.... areas with your corresponding information. No <space> before the first quotation mark.When finished editing save and exit this file.
The information for the RHIT school network was found here:RHLUG

Now you must specify that this is the file to use for the wireless device:

beagle$ cd network
beagle$ gedit interfaces &

This file will display all of the different types of Internet connections you have setup.
To use the wpa_supplicant.conf file, scroll down to around line 42 of the code and uncomment the configuration for wpasupplicant. After doing this make sure all of the above lines mentioning anything about wlan0 are commented out. Return back to where it says "iface wlan0 inet dhcp" that you uncommented around line 42.
Add "auto wlan0" above this line, make sure the line "wpa-conf /etc/wpa_supplicant.conf" is uncommented below the iface line, and change the wpa-driver line below that line to wext. So after all of that the code in this file for the wireless device should be the following:

NOTE: the auto wlan0 command in this file means that this device will load at boot time. You can take the time in here now to comment out any interfaces you don't use like auto usb0 to make these devices not load at boot time, which will increase the speed at which you boot up.
Save and exit this file

Once you have finished this you can either restart the Beagle Board or:

beagle$ cd
beagle$ /etc/init.d/networking restart

I've found that a lot of the time the interface doesn't receive an IP address when it boots up. If you run ifconfig in the terminal you should see your wireless device connected to a network. If it is connected but no IP address I do the following:

beagle$ ifdown wlan0
# it will report messages here and then
beagle$ ifup wlan0
# more messages and it should report connecting and having an IP address

This ifdown ifup method has worked every time for me so far but if anyone can find a way to prevent having to do this almost every time please feel free to edit this

Run this git command to get access to this repository. (It took about 2 minutes at 6:20am.) Line 21 shows the hash tag for the build.

ANGSTROM_REPO_ID=24805033b1205acc35f8b4d75cc42f8b9c2a1b38

If we pull from this tag we will have the same files as were used to generate the SD image. So do the following

host$ git checkout 24805033b1205acc35f8b4d75cc42f8b9c2a1b38

This takes about 10 seconds.

Fixing Problems

Kernel Boot Problems

Here is a link with some suggestions of what to do if your kernel isn't booting properly.

Serial port garbage

If you are having trouble with garbage on the console, this might help. Sometimes the serial port times out. Most of the time it just generates some junk which can be cleared with CTRL-U or backspace. However, if it happens at the login prompt then getty thinks the terminal is 7-bit with parity (rather than 8-bit raw). If this happens and you continue to login the whole session appears to be scrambled - if you press CTRL-D you can login again provided you don't stop typing... :]
I have simply added the following two lines to root's .profile: