Any tutorials for cross compiling Ubuntu distro for BB?

I'm a hardware guy but I want to understand the software side of
things also. I spent the last two days reading a bunch of material. So
far I managed to partition and boot Angstrom from an SD Card. I also
decided that I'm going to use the CodeSourcery G++ Lite for ARM
toolchain to compile Ubuntu.

I need a step by step tutorial that tells me what source files need to
be downloaded and how to actually compile the source and prepare it
for the SD Card. Does such a tutorial exist?

hope this is good enough…
http://elinux.org/BeagleBoardBeginners

–vinay

Ubuntu is a very large project and I doubt they would think of building it from source on a Beagleboard.
  There are ready to install images on http://rcn-ee.net/deb/rootfs and installation instructions on
http://elinux.org/BeagleBoardUbuntu
Regards
Sid.

-- Sid.
Sid Boyce ... Hamradio License G3VBV, Licensed Private Pilot
Emeritus IBM/Amdahl Mainframes and Sun/Fujitsu Servers Tech Support
Senior Staff Specialist, Cricket Coach
Microsoft Windows Free Zone - Linux used for all Computing Tasks

Part of my problem is that I don't know what questions to ask. So let
me try again...

We have a guy that has taken ubuntu and customized it for our needs.
Stripped it down small enough that it fits into NAND yet it has all
the drivers we need for our peripherals. He wrote up some instructions
on how to take his boot and rootfs images and put them on an SD Card.
I managed to follow his instructions to get his os booted from the SD
Card and also ran a script he wrote to push it to NAND. I also did
this same thing using a build of Angstrom and following another
tutorial. So I think I have an understanding of how the system boots.

Now I'm trying to take it a step further. I have the source files from
our guy and I want to compile them. Essentially I want to build the
image that he is supplying us. This is just a step in me learning how
to modify any files I want to modify and building my own OS for the
BeagleBoard.

From what I have read so far the recommended toolchain to use is
CodeSourcery. However, it seems that all the tutorials are using
Angstrom and another toolchain such as OpenEmbed.

So I am looking for a tutorial that will give me a crash course on
compiling using CodeSourcery. I would like to start with source files
that are ready to run on the BeagleBoard and then add and subtract
drivers and programs that I need. I have developed my own Hardware
which I am waiting to receive any day now. There are lots of features
that the beagleboard has that I have removed such as the DVI and
Ethernet and there are a few others that I have added. So eventually I
want to be able to do everything I would need to do to customize the
OS to work with my hardware. Right now I'm am just trying to take baby
steps and work with known good source code and with the BeagleBoard
Rev C4 hardware.

Any guidance is greatly appreciated.

Part of my problem is that I don't know what questions to ask. So let
me try again...

We have a guy that has taken ubuntu and customized it for our needs.
Stripped it down small enough that it fits into NAND yet it has all
the drivers we need for our peripherals. He wrote up some instructions
on how to take his boot and rootfs images and put them on an SD Card.
I managed to follow his instructions to get his os booted from the SD
Card and also ran a script he wrote to push it to NAND. I also did
this same thing using a build of Angstrom and following another
tutorial. So I think I have an understanding of how the system boots.

Now I'm trying to take it a step further. I have the source files from
our guy and I want to compile them. Essentially I want to build the
image that he is supplying us. This is just a step in me learning how
to modify any files I want to modify and building my own OS for the
BeagleBoard.

From what I have read so far the recommended toolchain to use is
CodeSourcery. However, it seems that all the tutorials are using
Angstrom and another toolchain such as OpenEmbed.

Maybe because that is most of use are using Angstrom and OpenEmbedded
derived systems?

Philip

From what I have read so far the recommended toolchain to use is
CodeSourcery. However, it seems that all the tutorials are using
Angstrom and another toolchain such as OpenEmbed.

Typically the term "toolchain" refers to the cross compiler toolchain.
This is the collection of utilities required to compile software on one
system (the host) so that the generated binaries can be run on another
system (the target, re: BeagleBoard).

Angstrom and OpenEmbedded are build environments. They are designed to
allow developers to create custom distributions based on Linux and GNU
software (plus 3rd party utilities in many cases) that are specific to a
target system. A "target system" would be more like an Android-based
handheld device or a Qt-and-OpenGL based set top box. Angstrom and
OpenEmbedded are designed to allow very fine tuning of your
distribution, but you have to understand a bit about what your target
system really needs to make the best use of them.

Angstrom and OpenEmbedded are not used to build Ubuntu (well, at least
not that I know of). Ubuntu is a general purpose distribution. It can
be used for hardware platforms such as BeagleBoard but it requires a
different approach to creating the target system, much of which may
depend on post-installation configuration (whereas Angstrom and
OpenEmbedded are often best used in pre-compilation configuration).

So I am looking for a tutorial that will give me a crash course on
compiling using CodeSourcery. I would like to start with source files
that are ready to run on the BeagleBoard and then add and subtract
drivers and programs that I need.

You probably aren't going to compile on the BeagleBoard using
CodeSourcery. You compile on your Linux desktop. The typical scenario
is to compile on your desktop, copy to the SD card and boot.

Adding and subtracting drivers typically involves modifying the Linux
kernel configuration file, something you usually do using the Linux
kernel configuration system (make menuconfig within the Linux kernel
source tree). When using Angstrom or OpenEmbedded a typical work flow
would be to create your Linux kernel configuration using the Linux
kernel source code (outside of Angstrom or OpenEmbedded), then integrate
that configuration into a "recipe" for use with Angstrom or
OpenEmbedded. This integration very often relies on the addition of
custom patches for very specific hardware. There are many examples of
this in the linux tree of Angstrom.

Programs are another matter. Since you're using Ubuntu you would add and
subtract programs from the *running* system using Ubuntu's package
management system that points to an ARM-based application repository.
Alternatively, you can cross compile applications and then copy them to
the root file system manually, either before you package it for
placement on the SD card or after its on the SD card by booting the
system and copying the files using a network connection.

I have developed my own Hardware
which I am waiting to receive any day now. There are lots of features
that the beagleboard has that I have removed such as the DVI and
Ethernet and there are a few others that I have added.
So eventually I
want to be able to do everything I would need to do to customize the
OS to work with my hardware. Right now I'm am just trying to take baby
steps and work with known good source code and with the BeagleBoard
Rev C4 hardware.

You're approach is common and many users start with an Ubuntu,
Angstrom-built or similar distribution. However, without hard disks and
network connections and with the need to strip the distribution down
considerably you often find you spend less time focusing on the product
requirements. Angstrom has a web-based customization utility
(Narcissus) that permits users to create their own custom distribution
by selecting packages, letting Narcissus perform the build, and then
downloading the resulting image file for placement on the SD card.

Personally, I prefer to approach from the other direction: using
Buildroot to generate a minimal environment and then start adding
pieces. If for no other reason it gives me a better feeling that only
what I asked for is on there, though Narcissus also helps in this area.

Which approach you take is probably a religious argument more than a
technical one. Either will work. You just have to become familiar with
the steps involved with each.

Any guidance is greatly appreciated.

Not sure if that helps. Hope it does.

Bzzzzt, wrong. Angstrom is a distribution, OE is a build environment. Which you would have known if you had bothered to open up http://www.angstrom-distribution.org/ and read it.

Well, aren't you sweet for pointing that out.

I stand corrected.