はじめに
この文書は、授業環境での均一な授業環境提供のため、LTSP1の力を借りてみることを検討し、実装を試みている最中のものです。
案外LTSPの日本語資料が少ない気がする(あっても古い)ので、現状というものを知るいい機会になると思います。
VagrantとVirtualBoxによる手元練習環境の構築
実際に動かしている環境は別にありますが、まずはミニマム環境でどの程度できるかを確認してみることにしましょう。使っているものは以下のものです。
- MacBook Pro(2012mid, macOS High Sierra)
- Vagrant 2.0
- VirtualBox 5.1.30
もちろん適当なターミナルなどは必要なので用意しておきましょう。標準でもいいですが、私はiTerm2を使ってます。また、実際の運用環境もそうですが、サーバもクライアントもamd64です。
$ mkdir -pv ~/tmp/ltsp
$ cd ~/tmp/ltsp
$ vagrant init ubuntu/xenial64
$ vi Vagrantfile
で、パラメータの書き換えと仕込みを行います。
--- Vagrantfile.dist 2017-10-19 03:31:04.000000000 +0900
+++ Vagrantfile 2017-10-19 03:38:24.000000000 +0900
@@ -32,7 +32,7 @@
# Create a private network, which allows host-only access to the machine
# using a specific IP.
- # config.vm.network "private_network", ip: "192.168.33.10"
+ config.vm.network "private_network", ip: "192.168.33.10"
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
@@ -67,4 +67,11 @@
# apt-get update
# apt-get install -y apache2
# SHELL
+ config.vm.provision :shell, inline: <<-SHELL
+ locale-gen ja_JP.UTF-8 UTF-8
+ timedatectl set-timezone Asia/Tokyo
+ cp -vf /vagrant/sources.list /etc/apt/
+ cp -vf /vagrant/99proxy /etc/apt/apt.conf.d/
+ apt-get update
+ SHELL
end
ネットワークに関しては、プライベートネットワーク(VirtualBox的には「ホストオンリーアダプター」)を準備するようにしてます、IPは適当というかデフォルトをとりあえずそのまま使ってます。
また、ロケールの生成とタイムゾーンの設定を行っていますが、これは後ほど行うLTSPクライアントイメージ作成の中でタイムゾーン設定ファイルの配置に起因するエラーを回避するためのものです。というかこうしないと時計が9時間ぐらい狂うことになるので結局やらざるを得ませんが。
sources.list
は国内ミラーを使うための差し替え、99proxy
はプロキシサーバーをapt
で使うための設定で、とりあえず以下のコードになっています。
deb http://jp.archive.ubuntu.com/ubuntu xenial main restricted
deb-src http://jp.archive.ubuntu.com/ubuntu xenial main restricted
deb http://jp.archive.ubuntu.com/ubuntu xenial-updates main restricted
deb-src http://jp.archive.ubuntu.com/ubuntu xenial-updates main restricted
deb http://jp.archive.ubuntu.com/ubuntu xenial universe
deb-src http://jp.archive.ubuntu.com/ubuntu xenial universe
deb http://jp.archive.ubuntu.com/ubuntu xenial-updates universe
deb-src http://jp.archive.ubuntu.com/ubuntu xenial-updates universe
deb http://jp.archive.ubuntu.com/ubuntu xenial multiverse
deb-src http://jp.archive.ubuntu.com/ubuntu xenial multiverse
deb http://jp.archive.ubuntu.com/ubuntu xenial-updates multiverse
deb-src http://jp.archive.ubuntu.com/ubuntu xenial-updates multiverse
deb http://jp.archive.ubuntu.com/ubuntu xenial-backports main restricted universe multiverse
deb-src http://jp.archive.ubuntu.com/ubuntu xenial-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu xenial-security main restricted
deb-src http://security.ubuntu.com/ubuntu xenial-security main restricted
deb http://security.ubuntu.com/ubuntu xenial-security universe
deb-src http://security.ubuntu.com/ubuntu xenial-security universe
deb http://security.ubuntu.com/ubuntu xenial-security multiverse
sedでs;//archive;//jp.archive;
しただけです。コメントは削除してますので、プロビジョニングのシェルコードでもいじれる簡単なお仕事。
Acquire::http::proxy "http://192.168.1.249:3128/";
プロキシがあるなら使おうというところですので、適当なアドレス、ポートに差し替えてください。無いなら該当コードをコメントアウトしておけばいいでしょう。
Vagrant VMの起動
これでマシンを作れますので、起動しておきます。
$ vagrant up && vagrant status
...
Current machine states:
default running (virtualbox)
The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.
まずは無事に動きました。ではログインしてからLTSPの構築を行います。
# Vagrantfileにてリポジトリキャッシュを更新してるのでいきなり入れてます
$ sudo apt install -y ltsp-server-standalone
LTSP用 クライアントイメージの構築
LTSPのツールとしてインストールされるltsp-build-client
を使ってイメージの構築を行います。
$ sudo ltsp-build-client --mirror=http://jp.archive.ubuntu.com/ubuntu/ \
--http-proxy=http://192.168.1.249:3128/
--locale=ja_JP.UTF-8
この作業は少し時間がかかるので、その間にネットワーク周りの下調べをしておきます。
VirtualBoxの内部ネットワークについて
Vagrantにてプライベートネットワーク(private_network
)を有効にしていますが、これはVirtualBoxにおいてはホストオンリーアダプターというインターフェースのもとで成立しています。これはVirtualBox側で覗き込むとわかります。

この場合はvboxnet0というアダプターが選択されているのがわかりますね。
同じネットワーク上にVMを用意すれば、LTSPの提供するDHCPサーバーでアドレスの割当やらをしてくれることになります。今のうちに作っておきましょうか。
低スペックでも動くか確認したいので、とりあえずメモリ1GBのLTSP Clientを作成します。仮想ハードディスクは本来のLTSPであれば不要のはずですが、予定としてホームを各自のPCで保有するというのを想定しているので作ってます、4GBで設定してますがお好みで。


VM作成後、設定を開き、ネットワークアダプタの設定をLTSP用Vagrant VMと同じものにしておきましょう(ホストオンリーのvboxnet0)。

LTSPクライアントを起動してみると…
さて、とりあえずイメージ生成ができたでしょうか?できてるなら、初期設定のままだと、パス /opt/ltsp/images/amd64.img
でできています。
ためしに動かしてみましょう。VirtualBoxのマネージャー画面から、作成しておいたLTSP Client VMを起動します。
初回起動の際はインストール用のディスクは?と聞かれますが、不要なのでキャンセルして進めます。
BIOS画面になりますが、ここですからずF12
キーを押します。MacであればFn+F12の場合もあるので要注意。
これで起動方法が選べますので、LANブートのためにl
を押します。これでDHCPでアドレスを取得して…

くれねー という具合になってしまいます。
この理由は次のお話にて。
-
Linux Terminal Server Project ↩