From ec03993515be63918ead242989467a4562f083ab Mon Sep 17 00:00:00 2001 From: "R. Steve McKown" Date: Tue, 15 Dec 2009 13:01:14 -0700 Subject: [PATCH] Add in our OSS website page content. --- in/aptrepo.md | 57 ++++++++++++++++++++++ in/cp210x.md | 32 +++++++++++++ in/firmware.md | 14 ++++++ in/git-utils.md | 27 +++++++++++ in/index.md | 40 ++++++++-------- in/msp430.md | 18 +++++++ in/oss-web.md | 9 ++++ in/ovzbpc.md | 108 ++++++++++++++++++++++++++++++++++++++++++ in/style/default.tmpl | 2 +- in/style/sitemap.tmpl | 2 +- in/tinyos.md | 22 +++++++++ in/tinyospkgs.md | 102 +++++++++++++++++++++++++++++++++++++++ in/tmicore.md | 16 +++++++ in/webber.conf | 2 +- in/webber.md | 12 +++++ 15 files changed, 440 insertions(+), 23 deletions(-) create mode 100644 in/aptrepo.md create mode 100644 in/cp210x.md create mode 100644 in/firmware.md create mode 100644 in/git-utils.md create mode 100644 in/msp430.md create mode 100644 in/oss-web.md create mode 100644 in/ovzbpc.md create mode 100644 in/tinyos.md create mode 100644 in/tinyospkgs.md create mode 100644 in/tmicore.md create mode 100644 in/webber.md diff --git a/in/aptrepo.md b/in/aptrepo.md new file mode 100644 index 0000000..95f905b --- /dev/null +++ b/in/aptrepo.md @@ -0,0 +1,57 @@ +title: APT Repository +linktitle: aptrepo +parent: TOP +ctime: 2009-12-10 + +Repositories: [[aptrepo]]. + +# Introduction + +TMI maintains an APT repository containing some of the code available from this +website. We use this repository in-house, and it is fairly well tested on 32 +and 64 bit Intel and AMD based workstations running Ubuntu Hardy and Ubuntu +Karmic. + +# How to use + +## Step 1 - Add the backports repository + +Ubuntu Hardy users need to activate the hardy-backports repository to use our +`cp210x-module-dkms` package. Ubuntu Karmic users can skip this step. Note, +you can also activate hardy-backports from the GUI. + + sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak + cat <<+EOF+ | sudo tee -a /etc/apt/sources.list + deb http://us.archive.ubuntu.com/ubuntu hardy-backports main restricted universe multiverse + +EOF+ + +## Step 2 - Adding the TMI repository to sources.list.d + + cat <<+EOF+ | sudo tee /etc/apt/sources.list.d/tmi.list + # TMI repository + deb http://repo.titaniummirror.com/ubuntu hardy main + deb-src http://repo.titaniummirror.com/ubuntu hardy main + +EOF+ + sudo apt-get update + +## Step 2 - Adding the TMI package key + +When you issued `apt-get update` above, you saw a key warning. We solve this +by installing a package from the TMI repository that contains our packaging +key. + + sudo apt-get install --yes --allow-unauthenticated tmi-keyring + +You should now verify the installed key. Run the `sudo apt-key list | less` +and look for the following two lines, ensuring your output matches that below: + + pub 1024D/E9BE0373 2009-12-08 + uid TMI Packages + +## Step 3 - Install packages + +You can now install packages from the TMI repository. For example: + +* Install our [[cp210x]] driver: `sudo apt-get install cp210x-module-dkms` + +* Install our [[tinyos]] development suite: `sudo apt-get install tinyos` diff --git a/in/cp210x.md b/in/cp210x.md new file mode 100644 index 0000000..e3ac958 --- /dev/null +++ b/in/cp210x.md @@ -0,0 +1,32 @@ +title: CP210X +linktitle: cp210x +parent: TOP +ctime: 2009-12-10 + +Repositories: [cp210x](http://repo/gitweb/?p=cp210x.git;a=summary), [[aptrepo]]. + +# A USB to UART chip + +[Silicon Labs](http://www.silabs.com) sells a single-chip USB to UART bridge, +the [cp210x](http://www.silabs.com/products/interface/usbtouart/Pages/default.aspx). +For windows platforms, Silicon Labs offers manufacturing support, in the form +of a DLL and a small utility, to set the various USB descriptor fields, port +configurations, etc. They also offer a DLL and example programs showing how +to manipulate the GPIO pins available on the cp2103 part. + +With approval from Silicon Labs, TMI has modified their reference Linux driver +to support all of the features their Windows DLLs and utilities provide. This +is accomplished via extended ioctl() calls from the kernel cp210x driver, and +various utilities and sample code. This code is really invaluable for those +working on hardware device designs using the cp2103. The code is released +under the GPLv2. + +TMI sent the modified code back to Silicon Labs, who supposedly had someone +in-house (or contracted) who regularly works with the maintainer of the cp210x +(formerly cp2101) driver in the mainline Linux kernel. That was over a year +ago, and the code hasn't shown up. We will be working with the maintainer +directly to get this code available. In the mean time, it is available +[as source](http://repo/gitweb/?p=cp210x.git;a=summary) and from our +[[aptrepo]]. The `cp210x-module-dkms` package in the APT repository has been +tested on Ubuntu Hardy and Karmic systems with both 32 and 64 bit x86 +(Intel/AMD) processors. diff --git a/in/firmware.md b/in/firmware.md new file mode 100644 index 0000000..fcc13b0 --- /dev/null +++ b/in/firmware.md @@ -0,0 +1,14 @@ +title: Router Firmware +linktitle: firmware +parent: TOP +ctime: 2006-02-13 + +Tarball: [gpl](http://www.titaniummirror.com/gpl). + +TMI has developed a fault tolerant internetworking platform composed of a set +of proprietary cluster, event and web management applications running atop a +GNU/Linux open source platform core. Essentially, the core represents a +customized Linux distribution geared specifically for network appliances. TMI's +proprietary code does not link with any GPL components of the core. Some +minor changes have been made to the core components. Those changes are +available [here](http://www.titaniummirror.com/gpl). diff --git a/in/git-utils.md b/in/git-utils.md new file mode 100644 index 0000000..31e8f22 --- /dev/null +++ b/in/git-utils.md @@ -0,0 +1,27 @@ +title: GIT Utilities +linktitle: git-utils +parent: TOP +ctime: 2009-12-10 + +Repositories: [git-utils](TBD). + +# GIT + +Read about [GIT](http://git-scm.com) here. + +# Utilities + +Over time, TMI is starting to collect a number of small utilities for git. +These are available from our [git-utils](TBD) repository. Each utility has +a man page describing its operation, so we'll only highlight the basics here. + +* git-empty-branch. Create an empty branch in a local git repository. + +* git-local. Store local branches temporarily in a shared git repository, + probably hosted on a server used by the local development team. git-local + offers upload, download, remove and list operations. + +* git-publish-branch. A shell version of a ruby script created by William + Morgan. See his [git utilities page](http://git-wt-commit.rubyforge.org). + This has been a locally popular utility, and we did not want to see ruby + effectively become yet another pre-requisite for git. diff --git a/in/index.md b/in/index.md index 6bc179a..a4e999e 100644 --- a/in/index.md +++ b/in/index.md @@ -1,21 +1,21 @@ -title: Webber -ctime: 2009-06-24 +title: Our OSS Projects +linktitle: TOP +ctime: 2009-12-15 -* [[overview]] -* [[pageformat]] -* [[configuration]] - * [[commandline]] - * [[inheritance]] -* [[plugins]] - * [[read_rst]] - * [[read_markdown]] - * [[read_html]] - * [[read_copyonly]] (e.g. images) - * [[link]] - * [[hierarchy]] - * [[template_mako]] - * [[skeleton]] -* [[hooks]] -* [[functions]] -* [[macros]] -* [[templates]] +# Introduction + +[Titanium Mirror, Inc.](http://www.titaniummirror.com) (TMI) is a successful +small business in part because we have can leverage the development work of +other talented professionals who have opted to release the product of their +labors as Open Source Software (OSS). Over time, we have made our own changes +to support our business and customers. We publish our work to this website in +case others find our contributions useful. + +Of course, we make an effort to contribute patches to the relevant upstream +maintainers. But it takes time for patches to migrate upstream, and there is +no guarantee that something we find useful is general enough to be incorporated +into an upstream project. For these reasons, we publish this website. + +# The Projects + +Select a project to browse from the Navigation panel on the left. diff --git a/in/msp430.md b/in/msp430.md new file mode 100644 index 0000000..d342112 --- /dev/null +++ b/in/msp430.md @@ -0,0 +1,18 @@ +title: MSP430 +linktitle: msp430 +parent: TOP +ctime: 2008-01-03 + +Repositories: +[msp430-binutils](http://repo/gitweb/?p=msp430-binutils.git;a=summary), +[msp430-gcc](http://repo/gitweb/?p=msp430-gcc.git;a=summary), +[msp430-libc](http://repo/gitweb/?p=msp430-libc.git;a=summary), +[[aptrepo]]. + +TMI maintains an msp430 toolchain, including [[Ubuntu packages|aptrepo]], which +work with newer members of the msp430 family, such as the popular +MSP430F2618 part and is properly patched for use in +[[TinyOS]] development. The official TinyOS distribution +provides an older msp430 toolchain that does not support some of the newer +msp430 parts. The msp430 toolchain is composed of: binutils, gnu compiler, +and libc. diff --git a/in/oss-web.md b/in/oss-web.md new file mode 100644 index 0000000..6b4da20 --- /dev/null +++ b/in/oss-web.md @@ -0,0 +1,9 @@ +title: OSS Website Code +linktitle: oss-web +parent: TOP +ctime: 2009-12-15 + +Repositories: [oss-web](http://repo/gitweb/?p=oss-web.git;a=summary). + +This website is statically generated using [[Webber]] from the source code +link above. diff --git a/in/ovzbpc.md b/in/ovzbpc.md new file mode 100644 index 0000000..abfc7c1 --- /dev/null +++ b/in/ovzbpc.md @@ -0,0 +1,108 @@ +title: OpenVZ + BackupPC +linktitle: ovzbpc +parent: TOP +ctime: 2008-06-09 + +Repositories: [backuppc](http://repo/gitweb/?p=backuppc.git;a=tree), +[ovz](http://repo/gitweb/?p=ovz.git;a=tree), +[esata](http://repo/gitweb/?p=esata.git;a=tree). + +# OpenVZ + +TMI hosts its compute resources on DELL PE1800 servers configured as a cluster +of [OpenVZ](http://www.openvz.org) Hardware Nodes (HN's), which host multiple +OpenVZ Virtual Environments (VE's). Open VZ VE's are virtual machines +virtualized at the operating system. The downside is that all VE's must be +Linux instances capable of running on the OpenVZ kernel. The upside is that +far more OS virtualized instances can reside on a given set of hardware +compared to virtualizers like VMWare and Xen, which (para-)virtualize hardware. + +# BackupPC + +TMI uses [BackupPC](http://backuppc.sourceforge.net) for backup services across +our company, including notebooks, workstations and servers (OpenVZ VE's). We +are especially happy with BackupPC and how it is integrated into our server +environment. Each HN is backed up as a separate host, but none of the data +for any VE's it may be hosting. Each VE is also backed up, each as a separate +host. Our HN's use LVM, and our add-on scripts allow for backup of any VE with +minimal downtime. The scripts actually shut down the VE, create a snapshot of +the HN volume on which the VE's filesystem is stored, restarts the VE, +completes the over-the-net BackupPC backup operation, then removes the snapshot. +By shutting down the VE, we ensure the integrity of the backup without +requiring application specific tools like database hotcopy scripts. By using +LVM, the VE downtime is typically less than 90 seconds. We backup every system +every evening. + +# Off-site backups + +BackupPC maintains an on-disk archive of de-duplicated backups for all hosts. +We maintain off-site backups by cloning the BackupPC archive to removable +eSATA disks. For fastest recovery, we run BackupPC in a VE within our +server infrastructure, so what we clone to an external disk is the entire +BackupPC VE filesystem. We also keep a second partition on each removable +disk, which contains, essentially, our HN operating system. eSATA connections +make this backup operation very fast. And because a human must connect an +external drive prior to the backup, that person can also provide the necessary +key that allows the external drive filesystems to be cryptographically secure. +We clone the BackupPC archive once per week, and rotate several external +drives through the off-site location. + +# Recovery + +A word about recovery: great. This combination of technologies allows the +recovery of any system, directory, or file stored within the BackupPC archive +over the network. The data need not be recovered to the same machine from +which it was backed up, nor does it need to be placed in the same directory. +Restore operations are done via a web interface, and the interface does not +have to be accessed from the machine to which the data are to be restored. + +Disaster recovery is also a big plus. The entire TMI infrastructure can be +reconstructed onto new hardware from just one off-site archive drive. + +# TMI code + +TMI maintains a number of code repositories containing scripts, etc. for +integrating OpenVZ and BackupPC. Please be aware that these are formulated +somewhat specifically for our environment. But if you have a similar setup, +they should be usable with minimal massaging. Someday, someone here will take +the time to merge this stuff into a single repo and document it better. + +# BackupPC scripts + +The [BackupPC scripts repository](http://repo/gitweb/?p=backuppc.git;a=tree) +includes: + +* BackupPC_ovz. Installed on an HN, it allows BackupPC to backup from and + restore to any VE hosted on any HN in the cluster. When VE's are migrated + between HN's, the backup configuration does not need to change. + +* Holger Parplies' BackupPC_verifyPool. + +* See the [README](http://repo/gitweb/?p=backuppc.git;a=blob;f=README;hb=HEAD) + in the repository for more information. + +# OpenVZ scripts + +The [OpenVZ scripts repository](http://repo/gitweb/?p=ovz.git;a=tree) +includes: + +* bpcdump. Similar in concept to vzdump. Although fairly general in nature, + we use it only for backing up the BackupPC VE, whose filesystem is on a + private LVM LV (logical volume), to an eSATA drive. + +* bpcbackup. A script that runs from crontab on one or more HN's to launch + the bpcdump program. Since all our HN's are configured the same, each has + an eSATA port and can be used to perform a backup of the BackupPC VE. + +* See the [README.recover](http://repo/gitweb/?p=ovz.git;a=blob;f=README.recover;hb=HEAD) + file for mroe information. + +# eSATA scripts + +The [eSATA scripts repository](http://repo/gitweb/?p=esata.git;a=tree) +contains the esata script, which wraps the `scsiadd` utility for properly +handling esternal drives on the Dell PE1800 and PE1900 platforms. Newer +hardware and better Linux kernel support should someday make scripts like this +unnecessary. See the included +[README](http://repo/gitweb/?p=esata.git;a=blob;f=README;hb=HEAD) file for +more information. diff --git a/in/style/default.tmpl b/in/style/default.tmpl index 298e24f..aa2f691 100644 --- a/in/style/default.tmpl +++ b/in/style/default.tmpl @@ -79,7 +79,7 @@ ${self.contents()}

Navigation

    -% for level, part_of_path, current, page, link in get_sidemenu('Webber'): +% for level, part_of_path, current, page, link in get_sidemenu('TOP'): % if current:
  • % else: diff --git a/in/style/sitemap.tmpl b/in/style/sitemap.tmpl index 3d19274..e60cfbf 100644 --- a/in/style/sitemap.tmpl +++ b/in/style/sitemap.tmpl @@ -3,7 +3,7 @@ <%def name="contents()">\ ${body} <% - site = get_sitemap("Webber", True) + site = get_sitemap("TOP", True) %>
      % for level, page, link in site: diff --git a/in/tinyos.md b/in/tinyos.md new file mode 100644 index 0000000..1046095 --- /dev/null +++ b/in/tinyos.md @@ -0,0 +1,22 @@ +title: TinyOS +linktitle: tinyos +parent: TOP +ctime: 2009-12-07 + +Repositories: [tinyos](http://repo/gitweb/?p=tmi/tinyos-2.x.git;a=summary), +[[aptrepo]]. + +TMI uses [TinyOS](http://www.tinyos.net) for various data acquisition +applications, and we maintain a modified tree that supports certain features +not available in the official tree. We maintain a +[repository](http://repo/gitweb/?p=tmi/tinyos-2.x.git;a=summary) containing +our TinyOS tree, in which we also maintain a cogent patchset against the +official tree. + +* Current patchset tag: patchset/2.1.0-3 +* Build from official release tag: tinyos/2.1.0 +* View the patchset [here](http://repo/gitweb/?p=tmi/tinyos-2.x.git;a=shortlog;h=refs/tags/patchset/2.1.0-3). + +Our TinyOS requires a newer [[msp430]] toolchain. A complete TinyOS +development environment including a newer toolchain is available for +installation from our [[APT repository|aptrepo]]. diff --git a/in/tinyospkgs.md b/in/tinyospkgs.md new file mode 100644 index 0000000..b24ef4b --- /dev/null +++ b/in/tinyospkgs.md @@ -0,0 +1,102 @@ +title: TinyOS Packages +linktitle: tinyospkgs +parent: aptrepo +ctime: 2009-12-10 + +Repositories: [tinyos](http://repo/gitweb/?p=tmi/tinyos-2.x.git;a=summary), +[[aptrepo]]. + +## Package versioning + +The TinyOS packages are built from the TMI +[TinyOS repository](http://repo/gitweb/?p=tmi/tinyos-2.x.git;a=summary). The +package version number is of the form `tosver-tmiver`, where `tosver` is the +official TinyOS release version on which the code is based, and `tmiver` is the +version of the modifications applied by TMI. + +These version numbers are present in the +[repository](http://repo/gitweb/?p=tmi/tinyos-2.x.git;a=summary) in the form +of release and patchset tags. For example, the code from which package version +`2.1.0-3` is built is tagged `release/2.1.0-3`. This code is based on the +upstream version `2.1.0`, which is tagged in the repository as `tinyos/2.1.0`. +A clean patchset is tagged `patchset/2.1.0-3`, where the commits between these +two tags represent a clean set of patches that apply the TMI modifications to +the upstream version. + +## Git/CVS issues + +Because CVS and git tags are fundamentally incompatible, we cannot guarantee +that a git repo using `git-cvs` and tracking the upstream CVS repository will +result in the exact same checkout tree state at each tag. We resolve this +issue as follows: + +* TMI tracks the upstream CVS in a git mirror repository updated periodically + via a script using `git-cvsimport`. + +* When TMI wants to rebase its local modifications on a newer version of + upstream TinyOS, it pulls changes in from this mirror git repo into the + [TMI TinyOS repository](http://repo/gitweb/?p=tmi/tinyos-2.x.git;a=summary) + onto the `upstream` branch. Release tags, such as `release_tinyos_2_1_0_0` + from CVS are also pulled. + +* In git, a new release branch is created at the release tag. In this example, + release tag `release_tinyos_2_1_0_0` is the branch point for the new branch + `release/2.1.0`. + +* The tag `tinyos/2.1.0` is the tag of git tree along the `release/2.1.0` + branch where the checkout of git at `tinyos/2.1.0` exactly matches the + checkout of upstream CVS at `release_tinyos_2_1_0_0`. + +** If the git and CVS tags checkout trees that match at tag + `release_tinyos_2_1_0_0`, then `tinyos/2.1.0` tags that same commit. + +** If the git and CVS checkouts diverge, then the first commit along the new + `release/2.1.0` branch contains the changes necessary to sync git with CVS + at the release tag. This is accomplished by using `git_load_dirs`. This + new commit to the release branch is tagged `tinyos/2.1.0`. + +## Multiple source trees + +TMI TinyOS packages allow for the installation of multiple TinyOS source trees. +This allows us to maintain older programs built against older versions of +TinyOS while simultaneously working on new applications. It also allows us to +compile code against the official TinyOS releases in addition to the TMI +enhanced releases. + +This is accomplished by altering how TinyOS source is installed. The standard +convention is for the TinyOS source tree to be installed on a development +workstation at `/opt/tinyos-2.x`. The TMI packages install the source trees +at `/opt/tinyos/VER`. For example, the official TinyOS 2.0.2.2 source tree +would install at `/opt/tinyos/2.0.2.2`, and the TMI enhanced TinyOS 2.1.0-3 +tree installs at `/opt/tinyos/2.1.0-3`. A sourceable script, +`/opt/tinyos/tinyos.sh`, is used to set which source tree is used by the +TinyOS development tools and build system. The script is also sourced in +the user's profile to provide persistence of settings across logins and reboots. + +Each TinyOS source tree has its own package. Here are the currently available +trees as of this writing: + + $ sudo apt-cache search tinyos-source + tinyos-source - TinyOS source meta package + tinyos-source-2.0.1 - TinyOS source code tree + tinyos-source-2.0.2.2 - TinyOS source code tree + tinyos-source-2.1.0 - TinyOS source code tree + tinyos-source-2.1.0-3 - TinyOS source code tree + +At least one tree must be installed, and the latest tree is installed each time +the tinyos packages are installed or upgraded. However, the developer may +keep multiple trees installed if necessary. The APT package upgrade +mechanisms work properly. + +## Installing TinyOS + +To install TinyOS, perform the steps above to configure the TMI repository on +the workstation, then type: + + sudo apt-get install tinyos + +By default, the latest TinyOS source tree, with TMI enhancements, and the TMI +[[msp430]] toolchain are installed. At this point, additional tinyos source +trees may be installed as required. For example: + + sudo apt-get install tinyos-source-2.1.0 diff --git a/in/tmicore.md b/in/tmicore.md new file mode 100644 index 0000000..cadbaa5 --- /dev/null +++ b/in/tmicore.md @@ -0,0 +1,16 @@ +title: TMIcore +linktitle: tmicore +parent: TOP +ctime: 2009-12-02 + +Repositories: [tmicore](TBD). + +TMI has developed an [[msp430]] target board for low power data acquisition. +Its design is not complete yet, but it is (SOON) available under an open +source license. The design was created using [Eagle](http://www.cadsoft.de). + +We call our target board TMIcore. In actuality, the board shown in the design +is the TMIrws board, which contains at its core the TMIcore design. The PCB +design shows where it can be 'cut' to build a stand-alone TMIcore board. +The full TMIrws board is the heart of a solar powered remote weather station +that reports its observations to an internet server via the cellular network. diff --git a/in/webber.conf b/in/webber.conf index 4fb923a..f97ec64 100644 --- a/in/webber.conf +++ b/in/webber.conf @@ -1,5 +1,5 @@ template: default -subtitle: "Webber" +subtitle: "OSS" main_url: "www.holgerschurig.de/projects/webber" date_format: "%Y-%m-%d %H:%M:%S" input_encoding: "iso-8859-1" diff --git a/in/webber.md b/in/webber.md new file mode 100644 index 0000000..3269915 --- /dev/null +++ b/in/webber.md @@ -0,0 +1,12 @@ +title: Webber +linktitle: webber +parent: TOP +ctime: 2009-12-15 + +Repositories: [webber](http://repo/gitweb/?p=webber.git;a=summary). + +[Webber](http://gitorious.org/webber) is a great static website generator +written in Python by +[Holger Schurig](http://www.holgerschurig.de/projects/webber/). We maintain +a [local copy](http://repo/gitweb/?p=webber.git;a=summary) of his repository +with a few changes. This website is built using webber; see [[oss-web]]. -- 2.39.2