概要
- 研究室のシステム構成
- LTSP(公式のページ)
-
Ubuntu 24.04/22.04/20.04 LTS上でのLTSPサーバ構築 : fat / thin clientの管理
- ベースとなるところ.24.04から少し変わり同じ手順では上手く行かなくなった.
- LTSP開発側が対応することで本手順のように(2026/06/29時点)しなくても出来るようになるかも?
更新履歴
モチベーション
研究室に10人~20人の学生さんがいるとする.
学生さんなので毎年人が入れ替わる.
そんな状況下で,各PCにubuntuをインストールし必要なソフトウエアをインストールし実験などが恙なく行われるようにメンテナンスし続けることは煩雑すぎて嫌である.
LTSPはサーバ側でOSイメージを持ちネットワーク経由で各PCにOSイメージを配布し起動するものとなる.
システムの一括管理が出来て楽そう,ということで導入している.
前ver.からのモチベーション
Ubuntu24.04から少しシステムが変わったらしい.そのため,2026/06/29時点では公式ページに書いてある通りにやっても動かない.
また公式PPAページもまだなく,Ubuntuのリポジトリ経由でのインストールのみになっている.
特にUbuntu26.04から起動時の初期RAMファイルシステムイメージの作成方法が変わった(?)ようで,
- 24.04まで: initramfs-tools使用
- 26.04から: dracut使用
となっている(dracutは上位ツールっぽい?)
dracutが関わってくると初期イメージでの起動時に変なことになる.
よってとりあえずの工夫として,dracutを使わずinitramfs-toolsを使う,ということをした.
あとepoptesがまだ使えないとか,ldap関係をsssdでやろうとすると上手く行かないのでnscdでやろうとかも出てくる(ldap関係は違う話なのでここではしていない).
本ページは2026/06/29時点で動かすための手順で将来的にはいらなくなる情報かも.
LTSPにまつわる情報
clientも十分な能力もっているので基本clientで作業した方がいいよね,となっている(参考).
そのため,以下の使用方法が基本らしい.
- fat client
- chrootless
- chroot, VM wareのイメージも利用できるが,chrootlessが推奨.
前提
当研究室のシステム構成はこのようなものを使っている.
ここで関係のある部分は以下のとおり.
- LTSPサーバ
- Ubuntu Desktop 26.04
- chrootless
- NICは1枚
- 各PC
- PXE boot可(でないとLTSPのクライアントになれない.biosで設定)
- dns, dhcpサーバ
- 既にあるdns, dhcpサーバを利用.
- ユーザ認証
- 既にあるldapサーバを利用
- sssdだと上手く行かない?
- nscdなど利用
- 既にあるldapサーバを利用
dns, dhcpサーバを外部に持つことが一番通常と違うと思われる.たぶん普通はLTSPサーバインストール時に用意・設定されるdns, dhcpを使用することになる(dnsmasq, systemd-resolv?).
また本ページで記載しているIPは全部適当(頭脳乱数により生成)
- dnsとかdhcp
- 192.168.0.5
- LTSPサーバ
- 192.168.0.10
dns, dhcpサーバおよびユーザ認証について
既に設定されているサーバを使用するため,ここでは各サーバの構築方法などは説明しない.
準備
LTSPサーバの準備
Ubuntu Desktopをインストール.ユーザが使用するであろう通常のDesktopとして設定.
- 利用ソフトウエアのインストール
- nfsなどシステム利用のためのものからchromeやvimなどのアプリケーションまで
- homeディレクトリをNFSで外部からマウントしたい場合,LTSPサーバではマウントしないよう設定
- fatクライアントではlts.confの中のfstabに関する項目でマウントするので大丈夫
- 認証の設定
- ldap認証できるようにしておく
- その他
- ntp,システムアップデート,etc.
dhcpサーバでの追加設定
現在利用しているdhcpサーバの設定ファイルを編集.
クライアントにipが割り振られる時,PXEブートするのか,PXEブートするならOSファイルを配布するLTSPサーバのIPは何かを設定する.
- 対象コンピュータ
- DHCPサーバ
- 対象ファイル
- /etc/dhcp/dhcpd.conf
- 例は関係する一部を抜粋
- 前後の一般的な設定は'....'で表現
....
option space ipxe;
option ipxe-encap-opts code 175 = encapsulate ipxe;
option ipxe.menu code 39 = unsigned integer 8;
option ipxe.no-pxedhcp code 176 = unsigned integer 8;
option arch code 93 = unsigned integer 16;
subnet .... {
option ipxe.no-pxedhcp 1;
next-server 192.168.0.10; # LTSPサーバ(tftpサーバ)のIPを記載
if exists ipxe.menu {
filename "ltsp/ltsp.ipxe";
} elsif option arch = 00:00 {
filename "ltsp/undionly.kpxe";
} elsif option arch = 00:07 {
filename "ltsp/snponly.efi";
} elsif option arch = 00:09 {
filename "ltsp/snponly.efi";
} else {
filename "ltsp/unmatched-client";
}
....
}
LTSPサーバ構築
以下,LTSPサーバ上での作業.
インストール
インストールとepoptesがクライアント管理するための設定
sudo apt update -y && apt install --install-recommends ltsp ipxe dnsmasq nfs-kernel-server openssh-server squashfs-tools ethtool net-tools -y
dracutのあ割にinitramfs利用.dracutはremoveしようとしても「もうない」と言われるかも.
sudo apt install initramfs-tools
sudo apt remove dracut
dnsmasqの設定
$ sudo ltsp dnsmasq --proxy-dhcp=0 --real-dhcp=0
$ sudo systemctl restart dnsmasq
注意: NIC1枚で外部にDHCPサーバを持つ場合のコマンド.
ltsp.confの設定
ファイル準備
$ sudo install -m 0660 -g sudo /usr/share/ltsp/common/ltsp/ltsp.conf /etc/ltsp/ltsp.conf
設定
- 対象ファイル
- /etc/ltsp/ltsp.conf
[server]
[common]
[client]
DNS_SERVER=192.168.0.5 # DNSサーバのIPアドレス.これがないとfstabなどで名前解決できない.
# fstabの設定
# 例ではhomeディレクトリをサーブするhome-serverとsamba用(/sambaをサーブ)のsamba-serverがある
# IPで指定でもいいが例では名前で指定.
FSTAB_0="home-server:/home /home nfs4 _netdev,auto 0 0"
FSTAB_1="samba-server:/samba /samba nfs4 _netdev,auto 0 0"
fstabの設定について
LTSPサーバの/etc/fstabでなくlts.confの中で設定する理由
chrootlessによりLTSPサーバの環境 = クライアントの環境として構築できる.そのためLTSPサーバの/etc/fstabに記入することで,クライアントでも同じようにNFSマウントが行われる.しかし敢えてLTSPサーバではfstabを使わない.
理由:
homeディレクトリをhome-serverによりNFSマウントする状況を考える.
home-serverを再起動した時,NFSマウントしているPCがハングアップする可能性がある.
- もし,LTSPサーバがhomeディレクトリをマウントしていた場合,LTSPサーバもハングアップしてしまう.管理者がいないと復旧できない.
- もし,LTSPサーバがhomeディレクトリをマウントしていない場合,クライアントのみハングアップするので,クライアントのみ強制再起動すれば直る.管理者がいなくても復旧できる.
よって,LTSPサーバの/etc/fstabでhomeディレクトリをマウントせず,lts.confの中でfstab設定するようにする.
初期イメージ作成
sudo ltsp image /,,/boot,subdir=boot,,/opt,subdir=opt;sudo ltsp ipxe;sudo ltsp nfs;sudo ltsp initrd
クライアントの設定
クライアントのBIOSでPXEブート(ネットワークブート)を有効・起動順位を適正に設定.
クライアントの起動
ちゃんとLTSPクライアントとして起動しているか確認
運用
システムアップデート・ソフトウエア追加など変更があった場合
- LTSPサーバ自体に変更を適用する
- アップデート or ソフトウエア追加など
- 変更したLTSPサーバをもとにクライアント用OSイメージを作成
sudo ltsp image /,,/boot,subdir=boot,,/opt,subdir=opt;sudo ltsp ipxe;sudo ltsp nfs;sudo ltsp initrd
クライアントを再起動して新しいOSイメージでブートさせると完了.
ltsp.confを編集
- ltsp.confを編集
- bootイメージを再作成
sudo ltsp initrd
その他
SurfaceのLTSPブート
- 確認対象
- Surface Go
- USB Type-C Ethernet/USBアダプター
- デフォルトでmoduleを読み込んでいないようで起動せず往生した.
- module名
- cdc_ether
- r8152
設定
- module 'cdc_ether, r8152'を組み込む.
- 組み込んだmoduleを有効にする.
- イメージ作成する.
$ sudo echo 'cdc_ether' >> /etc/initramfs-tools/modules
$ sudo echo 'r8152' >> /etc/initramfs-tools/modules
$ sudo update-initramfs -u
$ sudo ltsp image /;sudo ltsp ipxe;sudo ltsp nfs;sudo ltsp initrd