Skip to content

Latest commit

 

History

History
110 lines (73 loc) · 4 KB

chroot.mdwn

File metadata and controls

110 lines (73 loc) · 4 KB

[[!meta title="Making git rootfs development iterations faster"]]

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 [email protected]: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 [email protected]: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|acknowledgements]]. :)

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 [email protected]
export [email protected]

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|testing]] and test binary.hybrid.iso.