Für eines meiner Labs muss ich konsistente Dateisysteme verwalten. Ich möchte also nicht, dass nach dem Herunterfahren des Systems Änderungen in das Dateisystem geschrieben werden. Derzeit verwalte ich ein Betriebssystem-Image und kopiere es manuell, nachdem die Lab-Sitzung beendet ist.
Ich versuche herauszufinden, ob es eine Open-Source-Implementierung von Deep Freeze gibt Software für Fedora-basierte Systeme. Ich versuche, ein konsistentes Dateisystem beizubehalten, sodass alle vorgenommenen Änderungen verloren gehen, wenn das System neu gestartet wird.
Aus diesem Link sehe ich, dass es ähnliche Software wie Deep Freeze gibt, sie sind jedoch für Debian-basierte Systeme verfügbar. Ich bin auch auf LVM-Partitionen gestoßen, von denen ich nicht viel verstand.
Schlagen Sie mir eine Software vor, die in Fedora-basierten Systemen verwendet werden kann, oder eine andere bessere Lösung.
Akzeptierte Antwort:
Sie könnten aufs auf der Root-Partition einrichten und das Original-Image nur lesen lassen und alle Änderungen im RAM speichern. Auf diese Weise können die Schüler beliebige Änderungen vornehmen (auch als Root), nach einem Neustart wird ein sauberer, wohldefinierter Systemzustand wiederhergestellt.
Ich habe genau dieses Setup mit Debian durchgeführt, aber das gleiche sollte ohne zu viele Änderungen auch auf Fedora möglich sein. Da die Clients ohne Festplatte liefen, habe ich PXE-Boot verwendet. Hier sind die grundlegenden Schritte, die Anweisungen stammen hauptsächlich aus dem plattenlosen Debian-Linux-Booten über dhcp/pxe/nfs/tftp/aufs und dem Installieren von Debian über das Netzwerkbooten.
Der PXE-Bootserver hat die IP-Adresse 192.168.1.10 und dient auch als TFTP
- und NFS-Server. Es verwendet aufs und das Root-Dateisystem wird schreibgeschützt gemountet. Aufgrund
des aufs haben die Clients schreibenden Zugriff. Alle Änderungen befinden sich im Arbeitsspeicher und werden
beim Neustart gelöscht.
Installieren Sie die erforderlichen Pakete
apt-get install isc-dhcp-server tftp-hpa nfs-kernel-server debootstrap syslinux
Konfigurieren Sie den DHCP-Server, um ein PXE-Boot-Image bereitzustellen
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
Dadurch wird DHCP so konfiguriert, dass der TFTP-Server an der Adresse 192.168.1.10
verwendet wird und laden Sie das PXE-Boot-Image pxelinux.0
.
TFTP-Server konfigurieren
mkdir /srv/tftp
NFS-Server konfigurieren.
Das Root-Dateisystem wird nur lesend über NFS gemountet.
mkdir /srv/nfsroot
cat >/etc/exports <<EOF
/srv/nfsroot 192.168.1.10/24(ro,no_root_squash,no_subtree_check)
EOF
Füllen Sie das NFS-Verzeichnis mit einer Debian-Installation
debootstrap stable /srv/nfsroot <mirror>
# e.g.
debootstrap stable /srv/nfsroot
http://ftp.sunet.se/pub/Linux/distributions/debian/
Kernel- und initramfs-Tools installieren:
chroot /srv/nfsroot apt-get update
chroot /srv/nfsroot apt-get install initramfs-tools linux-image-amd64
Konfigurieren Sie seine initramfs, um NFS-bootende initrds zu generieren:
sed 's/BOOT=local/BOOT=nfs/'
-i /srv/nfsroot/etc/initramfs-tools/initramfs.conf
Laden Sie den aufs
Modul:
echo aufs >> /srv/nfsroot/etc/initramfs-tools/modules
aufs
konfigurieren :
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
Machen Sie die Datei ausführbar:
chmod +x /srv/nfsroot/etc/initramfs-tools/scripts/init-bottom/aufs
Initrd generieren:
chroot /srv/nfsroot update-initramfs -k $(uname -r) -u
Achten Sie darauf, ob der Kernel des Hosts und die Chroot nicht übereinstimmen. Ersetzen Sie $(uname -r)
ggf. mit dem richtigen Kernel.
Kopieren Sie die generierte initrd, das Kernel-Image und den PXE-Bootloader in das TFTP-Stammverzeichnis und
erstellen Sie einen Ordner für die PXE-Konfiguration:
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
Die Datei pxelinux.0
ist das Bootstrap-Programm von PXELINUX.
Bootloader konfigurieren:
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-Passwort ändern
chroot /srv/nfsroot passwd root
Dienste neu starten
invoke-rc.d isc-dhcp-server restart
invoke-rc.d tftpd-hpa restart
exportfs -ra