概要
モチベーション
研究室に10人~20人の学生さんがいるとする.
学生さんなので毎年人が入れ替わる.
そんな状況下で,各PCにubuntuをインストールし必要なソフトウエアをインストールし実験などが恙なく行われるようにメンテナンスし続けることは煩雑すぎて嫌である.
LTSPはサーバ側でOSイメージを持ちネットワーク経由で各PCにOSイメージを配布し起動するものとなる.
システムの一括管理が出来て楽そう,ということで導入している.
LTSPにまつわる情報
各PCはクライアント(client)となりますが,その形態はthin clientとfat clientがある.thin clientはOS起動後,ソフトを使ったりする処理をサーバ側で行うものでfat clientは各PC自身で処理を行うものである.
またサーバの実現の仕方(サーブの仕方)?としては,chrootを使ったものとchrootlessなものがある(公式).
以前はchrootが推奨されていたが18.04からchrootlessが推奨になっている.
更にクライアントの管理としては18.04からepoptesが利用できるようになった.
これはクライアントの電源の情報・画面の取得などができるものである.
本ページでは説明省略.
前提
当研究室のシステム構成はこのようなものを使っている.
ここで関係のある部分は以下のとおり.
- LTSPサーバ
- Ubuntu Desktop 18.04
- chrootless
- NICは1枚
- 各PC
- PXE boot可(でないとLTSPのクライアントになれない.biosで設定)
- dns, dhcpサーバ
- 既にあるdns, dhcpサーバを利用.
- ユーザ認証
- 既にあるldapサーバを利用
dns, dhcpサーバを外部に持つことが一番通常と違うと思われる.たぶん普通はLTSPサーバインストール時に用意・設定されるdns, dhcpを使用することになる(dnsmasq, systemd-resolv?).
また本ページで記載しているIPは全部適当(頭脳乱数により生成)
dns, dhcpサーバおよびユーザ認証について
既に設定されているサーバを使用するため,ここでは各サーバの構築方法などは説明しない.
準備
LTSPサーバの準備
Ubuntu Desktop 18.04をインストール.ユーザが使用するであろう通常のDesktopとして設定.
- 利用ソフトウエアのインストール
- nfsなどシステム利用のためのものからchromeやvimなどのアプリケーションまで
- homeディレクトリをNFSで外部からマウントしたい場合,LTSPサーバではマウントしないよう設定
- クライアントではlts.confの中のfstabに関する項目でマウントするので大丈夫
- 認証の設定
- ldap認証できるようにしておく
- その他
- ntp,システムアップデート,etc.
LTSPサーバ構築
インストール
インストールとepoptesがクライアント管理するための設定
$ sudo add-apt-repository --yes ppa:ts.sch.gr
$ sudo apt update
$ sudo apt install --yes --install-recommends ltsp-server-standalone ltsp-client epoptes
$ sudo gpasswd -a ${SUDO_USER:-$USER} epoptes
初期イメージ作成
$ sudo ltsp-update-image --cleanup /
作られるディレクトリ・ファイル
- /opt/ltsp/images/
- /var/lib/tftpboot/
- /etc/nbd-server/conf.d/swap.conf
- /etc/nbd-server/conf.d/ltsp_amd64.conf
設定ファイル作成
$ sudo ltsp-config dnsmasq --overwrite
$ sudo ltsp-config lts.conf
作られるディレクトリ・ファイル
- /etc/dnsmasq.d/ltsp-server-dnsmasq.conf
- /var/lib/tftpboot/ltsp/[arch]/lts.conf
- 最近のPCだと
- /var/lib/tftpboot/ltsp/amd64/lts.conf
- 最近のPCだと
dnsmasqの設定
- 対象ファイル
- /etc/dnsmasq.conf
- /etc/dnsmasq.d/ltsp-server-dnsmasq.conf
- 編集アプローチ
- dns, dhcp機能を全部offに
- tftp機能のみ有効に
ファイルの編集
- dnsの無効
- port=0
- dhcpサーバ無効
- dhcp-*** を全部コメントアウト
dhcpサーバの設定
現在利用しているdhcpサーバの設定ファイルを編集.
クライアントにipが割り振られる時,PXEブートするのか,PXEブートするならOSファイルを配布するLTSPサーバのIPは何かを設定する.
- 対象ファイル
- /etc/dhcp/dhcpd.conf
- 対象のsubnetの中に記載
- 例は関係する一部を抜粋
subnet .... {
next-server 192.168.0.10; # LTSPサーバ(tftpサーバ)のIPを記載
if substring( option vendor-class-identifier,0,9 ) = "PXEClient" {
filename "/ltsp/amd64/pxelinux.0"
}
}
resolv.conf
- 対象ファイル
- /etc/systemd/resolv.conf
DNS=192.168.0.20 # DNSサーバのIP.例では192.168.0.20
Domain=my.local.ac.jp # 自分のところのドメイン名
lts.conf
クライアントをどのように起動するかの設定.
詳しくはこちら.
- 対象ファイル
- /var/lib/tftpboot/[arch]/lts.conf
[default]
LTSP_FATCLIENT=True # fat clientで起動
TIMEZONE="Asia/Tokyo"
CUPS_SERVER=192.168.0.30 # cupsを使っているならcupsサーバのIPかFQDN
LDM_PASSWORD_HASH=True # 画面ロックできるようになる
XKBLAYOUT=jp
# fstabの設定
# 例ではhomeディレクトリをサーブするhome-serverとsamba用(/sambaをサーブ)のsamba-serverがある
# IPで指定でもいいが例では名前で指定.
CONFIGURE_FSTAB=True # fstabの設定
FSTAB_0="home-server:/home /home nfs4 _netdev,auto 0 0"
FSTAB_1="samba-server:/samba /samba nfs4 _netdev,auto 0 0"
NBD_SWAP=True
[MACアドレス] # 固有のMACアドレスを書くことで,そのPCのみの設定が可
LTSP_FATCLIENT=false
# その他,[ラベル名]などでグルーピングもできる
# LIKE指定を使う.
[Lab]
X_MODE_0 = 1024x768
[01:23:45:67:89]
LIKE=Lab