私のラボの1つでは、一貫したファイルシステムを維持する必要があります。したがって、システムのシャットダウン後にファイルシステムに変更を書き込みたくありません。現在、オペレーティングシステムのイメージを維持しており、ラボセッションの終了後に手動でコピーしています。
Deep Freezeのオープンソース実装があるかどうかを調べようとしています Fedoraベースのシステム用のソフトウェア。システムの再起動時に行われた変更が失われるように、一貫性のあるファイルシステムを維持しようとしています。
このリンクから、ディープフリーズに似たソフトウェアがあることがわかりますが、Debianベースのシステムで利用できます。また、あまり理解していないLVMパーティションに出くわしました。
Fedoraベースのシステムまたは他のより良いソリューションで使用できるソフトウェアをいくつか提案してください。
承認された回答:
ルートパーティションにaufsを設定し、元のイメージを読み取り専用にし、すべての変更をRAMに保存することができます。そうすれば、生徒は(rootとしても)好きな変更を加えることができ、再起動後、明確に定義されたクリーンなシステム状態が復元されます。
私はDebianを使用してこのセットアップを正確に行いましたが、Fedoraでもあまり変更を加えなくても同じことが可能であるはずです。クライアントはディスクレスで実行されていたため、PXEブートを使用しました。基本的な手順は次のとおりです。手順は主に、dhcp / pxe / nfs / tftp /aufsを介してディスクレスDebianLinuxを起動し、ネットワークブートを使用してDebianをインストールすることから取得されます。
PXEブートサーバーのIPアドレスは192.168.1.10で、TFTP
およびNFSサーバーとしても機能します。 aufsを使用し、ルートファイルシステムは読み取り専用でマウントされます。
aufsにより、クライアントは書き込みアクセス権を持っています。すべての変更はメモリに常駐し、
再起動時に消去されます。
必要なパッケージをインストールする
apt-get install isc-dhcp-server tftp-hpa nfs-kernel-server debootstrap syslinux
PXEブートイメージを提供するようにDHCPサーバーを構成する
cat >/etc/dhcp/dhcpd.conf <<EOF
next-server 192.168.1.10; # address of the TFTP server
allow bootp;
allow booting;
subnet 192.168.1.0 netmask 255.255.255.0 {
# clients get a dynamic IP address
range dynamic-bootp 192.168.1.20 192.168.1.254;
filename "pxelinux.0";
option domain-name-servers 192.168.0.10;
option broadcast-address 192.168.1.255;
option routers 192.168.0.10;
}
EOF
これにより、アドレス192.168.1.10
でTFTPサーバーを使用するようにDHCPが構成されます。 PXEブートイメージpxelinux.0
をロードします 。
TFTPサーバーの構成
mkdir /srv/tftp
NFSサーバーを構成します。
ルートファイルシステムは、NFSを介して読み取り専用でマウントされます。
mkdir /srv/nfsroot
cat >/etc/exports <<EOF
/srv/nfsroot 192.168.1.10/24(ro,no_root_squash,no_subtree_check)
EOF
NFSディレクトリにDebianインストールを追加
debootstrap stable /srv/nfsroot <mirror>
# e.g.
debootstrap stable /srv/nfsroot
http://ftp.sunet.se/pub/Linux/distributions/debian/
カーネルとinitramfsツールをインストールします:
chroot /srv/nfsroot apt-get update
chroot /srv/nfsroot apt-get install initramfs-tools linux-image-amd64
NFSブートinitrdを生成するようにinitramfsを構成します:
sed 's/BOOT=local/BOOT=nfs/'
-i /srv/nfsroot/etc/initramfs-tools/initramfs.conf
aufs
をロードします モジュール:
echo aufs >> /srv/nfsroot/etc/initramfs-tools/modules
aufs
を構成します :
cat >/srv/nfsroot/etc/initramfs-tools/scripts/init-bottom/aufs <<EOF
modprobe aufs
mkdir /ro /rw /aufs
mount -t tmpfs tmpfs /rw -o noatime,mode=0755
mount --move $rootmnt /ro
mount -t aufs aufs /aufs -o noatime,dirs=/rw:/ro=ro
mkdir -p /aufs/rw /aufs/ro
mount --move /ro /aufs/ro
mount --move /rw /aufs/rw
mount --move /aufs /root
exit 0
EOF
ファイルを実行可能にします:
chmod +x /srv/nfsroot/etc/initramfs-tools/scripts/init-bottom/aufs
initrdを生成します:
chroot /srv/nfsroot update-initramfs -k $(uname -r) -u
ホストのカーネルとchrootが一致しないかどうかに注意してください。 $(uname -r)
を置き換えます 必要に応じて正しいカーネルを使用します。
生成されたinitrd、カーネルイメージ、およびPXEブートローダーをTFTPルートにコピーし、
PXE構成用のフォルダーを作成します。
cp /srv/nfsroot/boot/initrd.img-* /srv/tftp/
cp /srv/nfsroot/boot/vmlinuz-* /srv/tftp/
cp /usr/lib/syslinux/pxelinux.0 /srv/tftp/
mkdir /srv/tftp/pxelinux.cfg
ファイルpxelinux.0
PXELINUXブートストラッププログラムです。
ブートローダーの構成:
cat >/srv/tftp/pxelinux.cfg/default <<EOF
default Debian
prompt 1
timeout 10
label Debian
kernel vmlinuz-2.6.32-5-amd64 # <- use correct version!
append ro initrd=initrd.img-2.6.32-5-amd64 root=/dev/nfs ip=dhcp
nfsroot=192.168.1.10:/srv/nfsroot
EOF
rootパスワードの変更
chroot /srv/nfsroot passwd root
サービスを再開する
invoke-rc.d isc-dhcp-server restart
invoke-rc.d tftpd-hpa restart
exportfs -ra