第 123 回
東京エリア Debian 勉強会

Debian GNU/kFreeBSD における Jail 構築を試してみたNorimitsu Sugimoto (杉本 典充)
dictoss@live.jp

2015-02-21

アジェンダ

自己紹介

Debian とは
Debian Ports と Debian GNU/kFreeBSD
Debian におけるコンテナ環境の構築方法
Debian GNU/kFreeBSD をホストとした Jail 環境の構築
おわりに参考資料
質疑応答

自己紹介

Norimitsu Sugimoto (杉本 典充)
dictoss@live.jp
Twitter: @dictoss
Debian 使って 10 年以上、FreeBSD 使って 5 年以上
Debian GNU/kFreeBSD が気になっておりウォッチ中
仕事はソフトウェア開発者をやってますDebian とは

Debian Project (https://www.debian.org/)
Free なユニバーサルオペレーティングシステムを目指しているFree の定義 ＝ Debian フリーソフトウェアガイドライ
ン (DFSG)
各国の Debian Developer を中心として運営している
apt というパッケージングシステムをもつ (パッケージは.deb ファイル)
日本での普及活動は Debian JP が行っており、勉強会を開催している

Debian Ports と Debian GNU/kFreeBSD
Debian Ports
https://www.debian.org/ports/
様々な CPU アーキテクチャやカーネルに移植させるプ
ロジェクト
公式リリースと非公式リリースのものがある

Debian GNU/kFreeBSD
https://wiki.debian.org/Debian GNU/kFreeBSD
FreeBSD カーネルをもつ Debian であり、linux カーネル以外でそれなりに動くものは初めて
Debian でのアーキテクチャ名は
kfreebsd-i386,kfreebsd-amd64
2011 年、Debian 6(squeeze) でテクノロジープレビューとしてリリース
2015 年?、Debian 8(jessie) では Drop されたため非公式版に出戻りになったDebian におけるコンテナ環境の構築方法
debootstrap コマンドを使うと debian の最小ディレクト
リツリーを取得できる# apt-get install debootstrap# debootstrap –arch=[arch] [release] [dir]http://ftp.jp.debian.org/debian# chroot [dir] を実行するとコンテナ環境に入れる

CrossDebootstrap という方法で異なる CPU 向けのコンテナを作れる# apt-get install qemu binfmt-support qemu-user-static# debootstrap –foreign –arch=[arch] [release] [dir]http://ftp.jp.debian.org/debian# cp /usr/bin/qemu-[arch]-static /[dir]/usr/bin/# chroot [dir]# /debootstrap/debootstrap –second-stage

Debian GNU/kFreeBSD をホストとした Jail 環境の構築 (1)ホスト環境Debian GNU/kFreeBSD unstable amd64
FreeBSD-10.1 kernel (10.1 svn274115-2)

ネットワーク環境
ホストとコンテナが同一ネットワーク (192.168.?.0/24)

コンテナ環境# apt-get install freebsd-utils# which jail → /usr/sbin/jail
ただし、現状 jexec、jls コマンドがない
Jail 環境の起動、停止を管理するパッケージが現状ないDebian GNU/kFreeBSD をホストとした Jail 環境の構築 (2)Debian GNU/kFreeBSD の self 環境でコンテナをつくる先に紹介した debootstrap でディレクトリツリーを作成
コンテナの中の以下ファイルは書き換えておく/etc/resolv.conf, /etc/hostname

一度 chroot で入り、apt-get install openssh-server;
passwd; adduser user; passwd user;
Jail 起動スクリプト (mount 処理など) を実行
https://wiki.debian.org/Debian GNU/kFreeBSD/Jails
少し使いやすいよう修正しました (IP alias, jail コマン
ドの引数)

ssh ログインすると、Jail 環境の中へ入れますkfreebsd-amd64、kfreebsd-i386 の ssh ログインまで動作を確認
コンテナの停止はコンテナ内で以下コマンドを実行# sh /etc/init.d/rc 0

Debian GNU/kFreeBSD をホストとした Jail 環境の構築 (3)FreeBSD 10.1-RELEASE 環境のコンテナをつくる# wgethttp://ftp.jaist.ac.jp/pub/FreeBSD/releases/amd64/amd64/10.
RELEASE/base.txz# tar xvf base.txz# ls
COPYRIGHT bin dev lib media proc root sys usrbase.txz boot etc libexec mnt rescue sbin tmp var# vi etc/rc.conf
sshd enable=”YES”
Jail 起動スクリプト (mount 処理など) を実行
ssh ログインすると、Jail 環境の中へ入れます
コンテナの停止はコンテナ内で以下コマンドを実行# sh /etc/rc.shutdownDebian GNU/kFreeBSD をホストとした Jail 環境の構築 (4)FreeBSD の Linux バイナリ互換機能で linux-i386 をコンテナ環境で動作するか確かめる# debootstrap –foreign –arch=i386 squeeze [dir]http://ftp.jp.debian.org/debian# sysctl で linux バージョンをあわせます# vi /etc/sysctl.conf
compat.linux.osrelease=2.6.32# sysctl -p /etc/sysctl.conf
compat.linux.osrelease: 2.6.16 → 2.6.32# chroot [dir] → コンテナ環境には入れる# /debootstrap/debootstrap –second-stage/debootstrap/debootstrap: 478: cannot create//test-dev-null: Operation not supported E: Cannot
install into target ’/’ mounted with noexec or nodev
現状ではうまく動かないおわりに

Debian GNU/kFreeBSD で Jail 環境を試してみました
Debian GNU/kFreeBSD on FreeBSD を試したい方は以下をお試しください/usr/ports/sysutils/debootstrap
過去に FreeBSD-8.3-RELEASE 上で squeeze を動かしていたことがあります

皆さんも Debian GNU/kFreeBSD を使ってあげてください参考情報

Debian/kFreeBSD で jail を使うhttp://hachulog.blogspot.jp/2011/11/debiankfreebsdjail.html
Debian GNU kFreeBSD Jails
https://wiki.debian.org/Debian GNU/kFreeBSD/Jails質疑応答

みなさまいかがでしたか