Skip to content
dswd edited this page Mar 26, 2014 · 19 revisions
  1. Download CorePlus.iso

     $> wget http://distro.ibiblio.org/tinycorelinux/5.x/x86/release/CorePlus-current.iso
    
  2. Create an empty qcow2 drive

     $> qemu-img create -f qcow2 tinycore.qcow2 10G
    
  3. Boot TinyCore

     $> kvm -hda tinycore.qcow2 -cdrom CorePlus-current.iso -boot d -m 200
    
  • Select default boot mode
  1. Install TinyCore
  • Select installer from bottom menu
  • 1st screen: "Frugal", "Whole disk", "sda"
  • 2nd screen: "ext4"
  • 3rd screen: "kmap=qwertz/de-latin1-nodeadkeys superuser"
  • 4th screen: "Core only", "Non-US keyboard layout support"
  • Shutdown TinyCore after installation
  1. Boot installed system

     $> kvm -hda tinycore.qcow2 -m 1000
    
  2. Prepare build environment

     KVM:$> cd /root; sudo su tc
     KVM:$> tce-load -wi compiletc perl5 autoconf automake openssl-1.0.0-dev linux-kernel-sources-env
     KVM:$> linux-kernel-sources-env.sh
    
  3. Build OpenVSwitch extension

     KVM:$> cd /root; sudo su tc
     KVM:$> wget http://openvswitch.org/releases/openvswitch-1.9.3.tar.gz
     KVM:$> tar -xzvf openvswitch-1.9.3.tar.gz
     KVM:$> cd openvswitch-1.9.3
     KVM:$> ./boot.sh
     KVM:$> ./configure --with-linux=/lib/modules/`uname -r`/build
     KVM:$> make
     KVM:$> mkdir /root/openvswitch
     KVM:$> make DESTDIR=/root/openvswitch PREFIX=/ install
     KVM:$> sudo make modules_install
     KVM:$> cd /root/openvswitch
     KVM:$> mkdir -p lib/modules/`uname -r`/extra/
     KVM:$> cp -a /lib/modules/`uname -r`/extra/*.ko lib/modules/`uname -r`/extra/
     KVM:$> cd /root
     KVM:$> tce-load -wi squashfs-tools-4.x
     KVM:$> wget http://tcztools.googlecode.com/hg/tcztools.tcz
     KVM:$> tce-load -i tcztools
     KVM:$> cd /root; sudo su
     KVM:$> echo /mnt/sda1/tce > /opt/.tce_dir
     KVM:$> cat > openvswitch.tcz.info <<EOF
     Title:          openvswitch.tcz
     Description:    openvswitch
     Version:        1.9.3
     Author:         Many
     Original-site:  http://www.openvswitch.org
     Copying-policy: Apache 2.0
     Size:           ----
     Extension_by:   [NAME]
     Comments:       Built for TC 5.2
     EOF
     KVM:$> tcz-pack openvswitch
     KVM:$> cd /root; sudo su tc
     KVM:$> tce-load -wi dropbear
     KVM:$> scp openvswitch.tcz* /mnt/sda1/tce/optional/openvswitch.tcz* USER@HOST:PATH
    
  4. Build bridge-utils extension

     KVM:$> cd /root; sudo su tc
     KVM:$> wget http://sourceforge.net/projects/bridge/files/bridge/bridge-utils-1.5.tar.gz
     KVM:$> tar-xzvf bridge-utils-1.5.tar.gz
     KVM:$> cd bridge-utils-1.5
     KVM:$> sed -i 's/<linux\/if.h>/<linux\/if.h>\n#include <linux\/in6.h>/g' libbridge/libbridge.h
     KVM:$> autoconf
     KVM:$> ./configure
     KVM:$> make
     KVM:$> mkdir -p /root/bridge-utils
     KVM:$> make DESTDIR=/root/bridge-utils install
     KVM:$> cd /root
     KVM:$> cat > bridge-utils.tcz.info <<EOF
     Title:          bridge-utils.tcz
     Description:    bridge-utils
     Version:        1.5
     Author:         Many
     Original-site:  http://sourceforge.net/projects/bridge
     Copying-policy: GPL 2.0
     Size:           ----
     Extension_by:   [NAME]
     EOF
     KVM:$> tcz-pack bridge-utils
     KVM:$> scp bridge-utils.tcz* /mnt/sda1/tce/optional/bridge-utils.tcz* USER@HOST:PATH
    
  5. Build tunctl extension

     KVM:$> cd /root; sudo su tc
     KVM:$> wget http://downloads.sourceforge.net/project/tunctl/tunctl/1.5/tunctl-1.5.tar.gz
     KVM:$> tar-xzvf tunctl-1.5.tar.gz
     KVM:$> cd tunctl-1.5
     KVM:$> touch tunctl.8
     KVM:$> make
     KVM:$> mkdir -p /root/tunctl
     KVM:$> make DESTDIR=/root/tunctl install
     KVM:$> cd /root
     KVM:$> cat > tunctl.tcz.info <<EOF
     Title:          tunctl.tcz
     Description:    tunctl
     Version:        1.5
     Author:         Many
     Original-site:  http://sourceforge.net/projects/tunctl
     Copying-policy: GPL 2.0
     Size:           ----
     Extension_by:   [NAME]
     EOF
     KVM:$> tcz-pack tunctl
     KVM:$> scp tunctl.tcz* /mnt/sda1/tce/optional/tunctl.tcz* USER@HOST:PATH
    
  6. Create a new qcow2 image

     $> qemu-img create -f qcow2 openvswitch.qcow2 100M
    
  7. Boot TinyCore

     $> kvm -hda openvswitch.qcow2 -cdrom CorePlus-current.iso -boot d -m 200
    
  • Select default boot mode
  1. Install TinyCore
  • Select installer from bottom menu
  • 1st screen: "Frugal", "Whole disk", "sda"
  • 2nd screen: "ext4"
  • 3rd screen: "kmap=qwertz/de-latin1-nodeadkeys superuser"
  • 4th screen: "Core only", "Non-US keyboard layout support"
  • Shutdown TinyCore after installation
  1. Boot installed system

     $> kvm -hda openvswitch.qcow2 -m 100
    
  2. Install some usefull packets

     KVM:$> cd /root; sudo su tc
     KVM:$> tce-load -wi nano dropear openssl-1.0.0 net-tools ipv6-3.8.13-tinycore
     KVM:$> scp USER@HOST:PATH/{openvswitch,bridge-utils,tunctl}.tcz* /mnt/sda1/tce/optional
     KVM:$> echo >> /mnt/sda1/tce/onboot.lst <<EOF
     tunctl.tcz
     bridge-utils.tcz
     openvswitch.tcz
     EOF
    
  3. Create a startup script

     KVM:$> cat > /opt/localboot.sh <<EOF
     #!/bin/sh
     # put other system startup commands here
     modprobe openvswitch
     modprobe 8021q
     modprobe ipv6
     export PATH="$PATH:/usr/local/sbin:/usr/local/bin"
     if ! [ -f /usr/local/etc/openvswitch/conf.db ]; then
       ovsdb-tool create
     fi
     ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,manager_options --private-key=db:SSL,private_key --certificate=db:SSL,certificate --bootstrap-ca-cert=db:SSL,ca_cert --pidfile --detach
     ovs-vsctl --no-wait init
     ovs-vswitchd --pidfile --detach
     sysctl -w net.ipv4.ip_forward=1
     sysctl -w net.ipv6.conf.all.forwarding=1
     if ! $(ovs-vsctl list-br | fgrep br0 >/dev/null); then
       ovs-vsctl add-br br0
       for path in /proc/sys/net/ipv4/conf/eth*; do
         iface=$(basename $path)
         ovs-vsctl add-port br0 $iface
       done
       ovs-vsctl set-controller br0 ptcp:6633
     fi
     EOF
     filetool.sh -b
     halt
    
  4. Compress the image

     $> qemu-img convert -c -O qcow2 openvswitch.qcow2 openvswitch-compressed.qcow2