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
.