Debian GNU/kFreeBSD in a FreeBSD Jail
I've been a FreeBSD user for quite some time, going back to 3.3 or so, and for the last serveral years have also been working a lot with Ubuntu Linux. So when I ran across Debian GNU/kFreeBSD, which provides a Debian environment on top of a FreeBSD kernel, I was somewhat intrigued. It got even more interesting when I found a tutorial on setting up GNU/kFreeBSD in a jail. The notion of having a Debian environment on my home FreeBSD server without having to get something like VirtualBox running was just too good to pass up.
I got it running fairly decently, but along the way ran into some small problems - and thought I'd jot down what they were and what the fixes were.
FreeBSD Update
At first, I was using FreeBSD 8.2-RELEASE, and used debootstrap
to install Debian Squeeze, as the tutorial showed. Once inside the jail, things sort of worked, but most commands, aptitude
especially, would die with:
User defined signal 1
It turns out you need a newer kernel than 8.2 to run kFreeBSD in a chroot, as is mentioned in the FAQ. I upgraded my FreeBSD kernel/world to 8.3-PRERELEASE (2012-02-22), and the "signal 1" problem went away.
Debian Update
The next problem was that aptitude
would still die, with:
Uncaught exception: Unable to read from stdin: Operation not permitted
After reading about this bug in cwidget, it seemed an upgrade to Wheezy was needed to fix the problem - and sure enough that problem went away.
kbdcontrol and /dev/console
The upgrade to Wheezy didn't go entirely smoothly, mainly due to the kbdcontrol
package (required by sysvinit
) being unable to access /dev/console
in the jail. I wasn't worried about keeping things in the jail isolated for security reasons, so I went ahead and added /dev/console
on-the-fly to the running jail by running outside the jail:
devfs -m /jails/debian/dev rule add path 'console*' unhide
devfs -m /jails/debian/dev rule applyset
After that, the kbdcontrol
package was able to be upgraded, and I seem to have a Wheezy FreeBSD jail now. Very cool.
UPDATE: A followup talks more about the actual file changes made to run as an ezjail