Differences between revisions 32 and 33
Revision 32 as of 2012-07-08 13:47:11
Size: 9247
Comment:
Revision 33 as of 2012-07-08 14:06:01
Size: 10054
Comment:
Deletions are marked like this. Additions are marked like this.
Line 205: Line 205:
 * After successfully debootstrap you should see a message like '' I: Base system installed successfully.''. Stay in the chroot environment and configure the new system:
  * Set hostname: {{{echo "raspy" > /etc/hostname }}}
  * Remove wrong udev rules for network interfaces {{{ rm /etc/udev/rules.d/70-persistent-net.rules }}}
  * Add a Debian repository to sources.list and install some packages
{{{
echo "deb http://ftp.de.debian.org/debian squeeze main" > /etc/apt/sources.list
apt-get update
apt-get install ntpdate
}}}
  * Maybe configure network (/etc/network/interfaces) and dns (/etc/resolv.conf) :
Line 212: Line 223:
 ROOT_PATH=/mnt/raspberry_root BOOT_PATH=/mnt/raspberry_boot rpi-update  # this is needed because rpi-update complains if no start.elf etc is found
 for file in start.elf bootcode.elf loader.bin kernel.img ; do touch /mnt/raspberry_boot/$file; done
 ROOT_PATH=/mnt/raspberry_root BOOT_PATH=/mnt/raspberry_boot ./rpi-update

howto build the build environment

Sid

  • install cowbuilder / git-buildpackage / debootstrap

 apt-get install cowbuilder git-buildpackage debootstrap 
  • Create cowbuilder image

 sudo cowbuilder --create --basepath=/var/cache/pbuilder/base-sid.cow --mirror http://ftp.de.debian.org/debian --distribution sid 
  • Try to login (and out if it works):

 sudo cowbuilder --login --basepath=/var/cache/pbuilder/base-sid.cow 
  • Configure git-build-package in ~/.gbp.conf (fetch Guido's gbp.conf and change the keyid)

wget https://honk.sigxcpu.org/piki/projects/git-buildpackage/gbp.conf
mv gbp.conf ~/.gbp.conf 
  • Now you can build your stuff from a git-import-orig / git-import-dsc created git repository. (wah, hennr, is gar nicht so kompliziert :P).

mschmi@proxmox-mschmi:~/hennr/flare$ git branch
* master
  upstream
mschmi@proxmox-mschmi:~/hennr/flare$ git-pbuilder 
WARNING: not invoked by git-buildpackage.
W: /home/mschmi/.pbuilderrc does not exist
I: using cowbuilder as pbuilder

Ubuntu Oneiric Ocelot

  • install cowbuilder / git-buildpackage / debootstrap from Sid so debootstrap know about the newest Ubuntu version

 apt-get install cowbuilder git-buildpackage debootstrap 
  • Fetch the release archive keys

 wget http://ftp.halifax.rwth-aachen.de/ubuntu/project/ubuntu-archive-keyring.gpg
 sudo cp ubuntu-archive-keyring.gpg /usr/share/keyrings/

  • Create a Ubuntu Oneiric Ocelot image :

sudo cowbuilder --create --basepath=/var/cache/pbuilder/base-oneiric.cow --mirror http://ftp.halifax.rwth-aachen.de/ubuntu/ --distribution oneiric --components "main universe" --debootstrapopts --keyring=/usr/share/keyrings/ubuntu-archive-keyring.gpg

Schmierzettel for jboss-packaging

Notiz

* Im Master fehlen: antlr, aopalliance * Im Master zuviel: apache-xmlsec, commons-logging, console, log4j, sun-servlet, xml-apis (allerdings alles nur component-info.xml, keine jars in den Verzeichnissen)

package jbosass5

  • Importing the new upstream tarball to the branch "upstream_jboss.org"

 $ git-import-orig --upstream-branch=upstream_jboss.org --debian-branch=upstream_jboss.org --upstream-tag=upstream_jboss.org/5.1.0.GA --upstream-version=5.1.0.GA ../jboss-5.1.0.GA-src.tar.gz 
  • Checkout branch "upstream", merge the "upstream_jboss.org" and move the thirdparty/ directory out (we need this later :-) )

 git checkout upstream
 git merge upstream_jboss.org
 cp thirdparty/ ../
 git rm -r thirdparty 

  • Tag the "upstream_jboss.org" and "upstream"
     Wissenschon'
  • Merge upstream to master and build package
     git checkout master
     git merge upstream
     git-buildpackage

package jbosass5-libs

  • Rename and pack the copied thirdparty-directory

 mkdir jbossas-libs
 mv thirdparty jbossas-libs/libs
 tar -czf jbossas5-libs_5.1.0.GA.tar.gz jbossas-libs/
  • Import the tarball to the branch "upstream_jboss.org"

git-import-orig --debian-branch=upstream_jboss.org --upstream-branch=upstream_jboss.org  --upstream-tag=upstream_jboss.org/5.1.0.GA --upstream-version=5.1.0.GA ../jbossas5-libs_5.1.0.GA.tar.gz 
  • Merge "upstream_jboss.org" to "upstream"

 git checkout upstream
 git merge upstream_jboss.org

Using usbfoo on Debian

What is USBfoo?

 aptitude install gcc-avr dfu-programmer avr-libc 

Connection hardware

  • Solder a bridge on the backside of the board to set the power supply mode.
  • Insert an usb cable and connect to the host
  • dmesg says

 [20622.464064] usb 3-1: new full speed USB device using uhci_hcd and address 10
 [20622.642160] usb 3-1: New USB device found, idVendor=03eb, idProduct=2ffa
 [20622.642169] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
 [20622.642176] usb 3-1: Product: AT90USB162 DFU
 [20622.642180] usb 3-1: Manufacturer: ATMEL
 [20622.642185] usb 3-1: SerialNumber: 1.0.5
 [20622.642421] usb 3-1: configuration #1 chosen from 1 choice

Compile software, program and run

  • Create a small program.c :

#include <avr/io.h>

int main (void) {
  /* set data direction register d to output */
  DDRD = 0xff;

  /* set port d to 0x00 this activates the red led on the board */
  PORTD = 0x00;

  /* loop until reset */
  while(1) { 
     /* narf! */
  }
  
  /* this will never reached */
  return 0
}
  • Compile with avr-gcc

 avr-gcc -Wall -mmcu=at90usb162 program.c -o program 

  • Create a HEX to flash into the device

 avr-objcopy program -O ihex program.hex 

  • Flash into the device (think about permissions, sudo...):

dfu-programmer at90usb162 erase
dfu-programmer at90usb162 flash program.hex
  • After the flashing press the reset button and your program runs (red led on)
  • To reprogram bring usbfoo in programming mode: press reset, press hwb, release reset, release hwb. Now you should see the same dmesg message as before.

tuxdroid

Monitoring

  • Start with a minimal Debian squeeze installation.
  • Install Apache2 and MySQL. Set a MySQL root password during installation.

apt-get install --no-install-recommends mysql-server apache2 libapache2-mod-php5 php5-suhosin 
  • Install Icinga and the idoutils (for Icinga Data Out

apt-get install icinga icinga-idoutils --no-install-recommends 
  • Set a password for icingaadmin during installation. Let debconf configure apache2 for icinga. During configuration of icinga-idoutils you asked for yout MySQL admin password. Set an ido database password.

Building own Debian image for Raspberry Pi

The Raspberry Pi is a small ARM computer (http://raspberrypi.org). It boots only from a fat partition of a SD card.

  • Create two partions on a SD card:
    • for firmware and bootloader: size 100MB, partition type 0b WIN95 Fat32
    • for root file system: as many you want, partition type 83 Linux
  • Format both partions and mount them (here is /dev/sdx the sdcard):

 mkdosfs -F32 /dev/sdx1
 mkfs.ext4 /dev/sdx2
 mkdir /mnt/raspberry_root
 mkdir /mnt/raspberry_boot
 mount /dev/sdx1 /mnt/raspberry_boot
 mount /dev/sdx2 /mnt/raspberry_root
  • Now lets install a basic Debian with debootstrap.

 debootstrap --foreign --arch=armel squeeze /mnt/raspberry_root/
  • Because of the different architecture (laptop amd64, raspberry arm) we cannot chroot into the new system. Qemu to the rescue!Install a static qemu version an copy the binary to the new rootfs:

apt-get install qemu-user-static
cp /usr/bin/qemu-arm-static /mnt/raspberry_root/usr/bin/
  • Now we can run the second stage of debootrap installing:

chroot /mnt/raspberry_root/
cd /debootstrap
./debootstrap --second-stage
  • After successfully debootstrap you should see a message like I: Base system installed successfully.. Stay in the chroot environment and configure the new system:

    • Set hostname: echo "raspy" > /etc/hostname 

    • Remove wrong udev rules for network interfaces  rm /etc/udev/rules.d/70-persistent-net.rules 

    • Add a Debian repository to sources.list and install some packages

echo "deb http://ftp.de.debian.org/debian squeeze main" > /etc/apt/sources.list
apt-get update
apt-get install ntpdate 

  • Maybe configure network (/etc/network/interfaces) and dns (/etc/resolv.conf) :
  • Now lets populate the boot partition. As mentioned here: http://elinux.org/RPi_Advanced_Setup#Setting_up_the_boot_partition we need some files. As i understand it works like this: The GPU reads it's firmware (start.elf, bootcode.bin, loader.bin) from the sdcard and then loads the kernel (kernel.img) with some configuration (cmdline.txt).

    • We can ether use the automatic rpi-firmware update from https://github.com/Hexxeh/rpi-update or fetch them from the offical Github Repository.

    • rpi-update: Downloads also the kernel modules and the propritary Broadcom tools. I used the installation from the host system to the sdcard:

 wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update
 chmod +x rpi-update
 # this is needed because rpi-update complains if no start.elf etc is found
 for file in start.elf bootcode.elf loader.bin kernel.img ; do touch  /mnt/raspberry_boot/$file; done
 ROOT_PATH=/mnt/raspberry_root BOOT_PATH=/mnt/raspberry_boot ./rpi-update
  • Fetch them from the official Github repository

cd /mnt/raspberry_boot
wget https://github.com/raspberrypi/firmware/blob/master/boot/start.elf?raw=true
wget https://github.com/raspberrypi/firmware/blob/master/boot/bootcode.bin?raw=true
wget https://github.com/raspberrypi/firmware/blob/master/boot/loader.bin?raw=true
wget https://github.com/raspberrypi/firmware/blob/master/boot/kernel.img?raw=true
  • Add a cmdline.txt with the following content (stolen from a wiki without exactly understanding):

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait
  • Finally put the sdcard in your raspberry and power on! You should end up with a runnig Debian system :-). But now hit ctrl+alt+del on the Raspberry put the card back in the reader an configure all the important stuff in the rootfs (hostname, network, root password etc)