Fork me on GitHub

chroot for building (running Debian Live)

Webconverger relies on Debian Live to put the ISO together. Please create an Unstable sid-chroot like so in ~/debian:

cd ~/debian
sudo debootstrap sid sid-root http://cdn.debian.net/debian/

debootstrap is available in other Linux distros like Archlinux.

Then sudo chroot ~/debian/sid-root, and apt-get install as follows:

apt-get install live-build git make sudo squashfs-tools syslinux genisoimage librsvg2-bin

Clone a copy of https://github.com/Webconverger/Debian-Live-config into root's home directory like so:

git clone git://github.com/Webconverger/Debian-Live-config.git /root
cd
make

the Webconverger chroot within the build chroot

The Makefile should clone the Webconverger chroot from a read only github URL set in the Makefile

Your remotes should look like:

origin git://github.com/Webconverger/webc.git (fetch)
origin git@github.com:Webconverger/webc.git (push)

So you can make an authenticated push outside the chroot from the host system.

If you are not yet a Trusted Contributor to the opensource project, please publish your work via a github fork of webc. Once forking you need to setup the pushurl, like so:

git remote set-url --push origin git@github.com:YOUR_USERNAME/webc.git

Please try contribute your changes back to webc by doing a Pull Request. All contributions become copyrighted Webconverger and MIT licensed and thanked. :)

Handy shortcuts

Next I've created a few aliases to help me navigate around that structure. These binds are of course personal preferences like Quake or Starcraft hotkeys.

To enter the chroot and add/remove packages for example. c; apt-get update && apt-get install something

alias c="sudo chroot ~/debian/sid-root/root/webconverger/chroot"

To build the ISO, I enter: b; make

alias b="sudo chroot ~/debian/sid-root"

i gets me to the top level directory so I can do work from my host system.

alias i="cd ~/debian/sid-root/root/webconverger"

Whenever I drop out of the chroot, I run up to push the change up to github.

up() {
    cd ~/debian/sid-root/root/webconverger/chroot
    git push
}

Update: With upgrade the flow is to push to a branch before merging to master, since master is automatically used by install users and it's extremely important that it remains stable.

Keeping your git user configuration in the the chroot

x220:~$ grep GIT ~/.bashrc
export GIT_AUTHOR_NAME="Your Name"
export GIT_COMMITTER_NAME="Your Name"
export GIT_COMMITTER_EMAIL=you@example.com
export GIT_AUTHOR_EMAIL=you@example.com

Have a link like this in your /etc/sudoers

Defaults    env_keep+=SSH_AUTH_SOCK,env_keep+=GIT_*

So when you run sudo chroot, it should have your basic git settings.

Work flow

If you can think of optimisations, please let me know! Lets assume for example I'm tweaking https://github.com/Webconverger/webc/blob/master/etc/webc/webc.conf.

First I go, c which chroots me into webc rootfs. I make an edit. I add and commit than change, otherwise git-fs will not pick up that change. Then I exit the terminal and drop back in the host system.

Then I go b to get into the Debian sid-chroot with Debian Live build script. I run make and builds the ISO.

Once the ISO is built I launch Virtualbox and test binary.hybrid.iso.