皆さま初めまして。田向と申します。今回から数回にわたり,
前回まで,
第8回で,lxc-create
を紹介しました。作成したいコンテナに応じて,-t
オプションでテンプレートディレクトリ/usr/
)
/usr/share/lxc/templates$ wc * 387 1220 10789 lxc-alpine 486 1708 13533 lxc-altlinux 331 1170 10253 lxc-archlinux 376 1337 9446 lxc-busybox 922 3741 28932 lxc-centos 335 1248 10150 lxc-cirros 459 1507 12158 lxc-debian 587 1987 17427 lxc-download 1424 6455 47200 lxc-fedora 821 3203 27808 lxc-gentoo 490 1725 13961 lxc-openmandriva 433 1528 13705 lxc-opensuse 839 3850 35445 lxc-oracle 389 1601 11837 lxc-plamo 275 921 6851 lxc-sshd 809 2937 24273 lxc-ubuntu 406 1584 12401 lxc-ubuntu-cloud 9769 37722 306169 合計
テンプレートの中身については,lxc-plamo
)
Plamoテンプレートや他のテンプレートの全体は,
Plamoテンプレートの内部紹介
テンプレートは,
テンプレートは,
- コンテナを作成するためにインストールする資材
(パッケージ) をダウンロードする部分 - コンテナのルートファイルシステムにパッケージをインストールする部分
- 作成したコンテナ内の設定ファイルなどをコンテナ向けに調整する部分
- コンテナの設定ファイル
( config
)を作成する部分
これらを順に説明してきます。
パッケージのダウンロード
まず,
Plamo Linuxインストーラには,plamo
ディレクトリとcontrib
ディレクトリがあり,plamo
ディレクトリには,
00_
base - Plamo Linuxの動作に必須のカーネルや基本コマンド,
設定ファイルなど。すべての環境でインストールする必要があります。 01_
minimum - ALSAやGCC,
Perl, Pythonなど, Xなしでも使える重要コマンド集。サーバなどのコンソール環境で使う場合は, ここまででたいてい間に合うはずです。 02_
x11 - X11とXに必須のパッケージ群。ウィンドウマネージャはtwmのみです。
03_
xclassics - GNOMEで使われていたEsounDサウンドサーバや,
伝統的なXプロトコルレベルでプロセス間通信を行うソフトウェア, AfterstepやQvwmなどの伝統的なウィンドウマネージャ, CannaやFreeWnn, Kinput2などの伝統的なFEPやIM (インプットメソッド) システム。ここまでインストールすれば, 古き良きワークステーション相当の環境になるはずです。 04_
xapps - 最近のGUI環境の主流になっているGTK環境と主にGTKベースなアプリケーション群。
05_
ext - XfceとKDEが共通に利用する,
PulseAudioなどの機能拡張用ライブラリを中心としたアプリケーション群。iBusやuim, SCIMなどの最近のインプットメソッドも含みます。 06_
xfce - シンプルながら高機能なXfceデスクトップ環境。
07_
kde - 多機能なKDEデスクトップ環境。
08_
tex - TeXの統合パッケージであるTeX Live。
09_
kernel - Linuxカーネルのソースコード。
10_
lof - Office用統合ツールであるLibreOffice。
これらのカテゴリのうち,00_
はPlamo Linuxの動作に必須,01_
はほぼ必須の環境で,02_
以降は必要に応じて取捨選択可能です。
一方,contrib
ディレクトリには,
カテゴリ | 含まれる内容 |
---|---|
AVtool | オーディオ&ビジュアルツールパッケージ |
DB | データベース関連パッケージ |
Devel | 開発向けパッケージ |
Education | 教育用 |
Emacs | Emacs関連パッケージ |
Hamradio | アマチュア無線関連パッケージ |
Haskell | Haskell |
Kernel | Linuxカーネルパッケージ |
Library | ライブラリ関連パッケージ |
MUA | MUA |
Network |
ネットワーク関連パッケージ |
Python | Python関連パッケージ |
Texlive2010 | Tex Live 2010パッケージ |
Texttool | テキスト処理関連パッケージ |
Utilities | ユーティリティパッケージ |
VLC | VLCメディアプレーヤーパッケージ |
Virtualization | 仮想化関連パッケージ |
X11 | X11関連パッケージ |
これらのパッケージは,
DLSCHEME
- ダウンロードスキーム。
http
またはftp
を指定します。デフォルトはhttp
です。 MIRRORSRV
- ミラーサーバを指定します。デフォルトは
www.
です。ring. or. jp MIRRORPATH
- インストーラのパスを指定します。デフォルトは
/pub/
です。linux/ Plamo
仮に,plamo
ディレクトリ以下とcontrib
ディレクトリ以下のカテゴリをすべてインストールする場合,
CATEGORIES
- ダウンロードする
plamo
ディレクトリ以下のカテゴリを指定します。デフォルトは00_
とbase 01_
です。minimum EXTRACTGRS
- ダウンロードする
contrib
ディレクトリ以下のカテゴリを指定します。デフォルトは指定なし,つまりダウンロードしません。 IGNOREPKGS
- 上記のカテゴリ内のパッケージのうち,
ダウンロード対象から除外するパッケージを指定します。デフォルトは grub
,kernel
,lilo
,linux_
,firmware microcode_
,ctl cpufreqd
,cpufrequtils
およびgpm
です。 ADDONPKGS
- 上記のカテゴリに含まれていないパッケージで,
ピンポイントでダウンロードするパッケージを指定します。デフォルトは contrib/
です。Hamradio/{morse,qrq}
これらの変数は,
パッケージをダウンロードする関数download_
)
download_
関数
download_plamo() {
# check the mini plamo was not already downloaded
if ! mkdir -p $ptcache ; then
echo "Failed to create '$ptcache' directory."
return 1
fi
# download a mini plamo into a cache
echo "Downloading Plamo-$release minimal..."
cd $ptcache
case $DLSCHEME in http) depth=2 ;; ftp) depth=3 ;; esac
rej=${IGNOREPKGS%% *} ; [ -n "$rej" ] && rej="$rej-*"
if [ `echo $IGNOREPKGS | wc -w` -gt 1 ] ; then
for p in ${IGNOREPKGS#* } ; do rej="$rej,$p-*" ; done
fi
for i in $CATEGORIES ; do
wget -nv -e robots=off -r -l $depth -nd -A .tgz,.txz -R "$rej" \
-I $MIRRORPATH/Plamo-$release/$arch/plamo/$i \
-X $MIRRORPATH/Plamo-$release/$arch/plamo/$i/old \
$DLSCHEME://$MIRRORSRV$MIRRORPATH/Plamo-$release/$arch/plamo/$i
if [ $? -ne 0 ] ; then
echo "Failed to download the rootfs, aborting."
return 1
fi
done
for i in $EXTRACTGRS ; do
wget -nv -e robots=off -r -l $depth -nd -A .tgz,.txz -R "$rej" \
-I $MIRRORPATH/Plamo-$release/$arch/contrib/$i \
-X $MIRRORPATH/Plamo-$release/$arch/contrib/$i/old \
$DLSCHEME://$MIRRORSRV$MIRRORPATH/Plamo-$release/$arch/contrib/$i
if [ $? -ne 0 ] ; then
echo "Failed to download the rootfs, aborting."
return 1
fi
done
for p in $ADDONPKGS ; do
wget -nv -e robots=off -r -l $depth -nd -A "`basename $p`-*" \
-I $MIRRORPATH/Plamo-$release/$arch/`dirname $p` \
-X $MIRRORPATH/Plamo-$release/$arch/`dirname $p`/old \
$DLSCHEME://$MIRRORSRV$MIRRORPATH/Plamo-$release/$arch/`dirname $p`
if [ $? -ne 0 ] ; then
echo "Failed to download the rootfs, aborting."
return 1
fi
done
mv $ptcache $dlcache
echo "Download complete."
return 0
}
Plamo Linuxインストーラ内のカテゴリは,wget
コマンドを使ってパッケージを再帰的に取得しています。他のテンプレートにおいても,download_<テンプレート名>
のような関数名になっているので,