Per uno dei miei laboratori, devo mantenere file system coerenti. Quindi, non voglio che le modifiche vengano scritte sul file system dopo l'arresto del sistema. Attualmente sto conservando un'immagine del sistema operativo e la sto copiando manualmente al termine della sessione di laboratorio.
Sto cercando di capire se esiste un'implementazione open source di Deep Freeze software per sistemi basati su Fedora. Sto cercando di mantenere un file system coerente in modo che tutte le modifiche apportate vadano perse al riavvio del sistema.
Da questo link, vedo che ci sono software simili a Deep freeze, tuttavia sono disponibili per sistemi basati su Debian. Mi sono anche imbattuto in partizioni LVM che non capivo molto.
Suggeriscimi del software che può essere utilizzato nei sistemi basati su Fedora o qualche altra soluzione migliore.
Risposta accettata:
È possibile impostare aufs sulla partizione di root e avere l'immagine originale di sola lettura e tutte le modifiche vengono archiviate nella RAM. In questo modo gli studenti possono apportare le modifiche che vogliono (anche come root), dopo un riavvio viene ripristinato uno stato di sistema pulito e ben definito.
Ho eseguito esattamente questa configurazione utilizzando Debian, ma lo stesso dovrebbe essere possibile senza troppe modifiche anche su Fedora. Poiché i client erano in esecuzione senza disco, ho usato l'avvio PXE. Ecco i passaggi di base, le istruzioni sono principalmente tratte dall'avvio di Debian Linux senza disco tramite dhcp/pxe/nfs/tftp/aufs e dall'installazione di Debian utilizzando l'avvio di rete.
Il server di avvio PXE ha l'indirizzo IP 192.168.1.10 e funge anche da server TFTP
e NFS. Usa aufs e il filesystem di root è montato in sola lettura. A causa
degli aufs che i clienti hanno accesso in scrittura. Tutte le modifiche risiedono in memoria e vengono
cancellate al riavvio.
Installa i pacchetti necessari
apt-get install isc-dhcp-server tftp-hpa nfs-kernel-server debootstrap syslinux
Configura il server DHCP per servire un'immagine di avvio PXE
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
Questo configura DHCP per utilizzare il server TFTP sull'indirizzo 192.168.1.10
e carica l'immagine di avvio PXE pxelinux.0
.
Configura server TFTP
mkdir /srv/tftp
Configura il server NFS.
Il file system radice viene montato in sola lettura tramite NFS.
mkdir /srv/nfsroot
cat >/etc/exports <<EOF
/srv/nfsroot 192.168.1.10/24(ro,no_root_squash,no_subtree_check)
EOF
Popolare la directory NFS con un'installazione Debian
debootstrap stable /srv/nfsroot <mirror>
# e.g.
debootstrap stable /srv/nfsroot
http://ftp.sunet.se/pub/Linux/distributions/debian/
Installa gli strumenti kernel e initramfs:
chroot /srv/nfsroot apt-get update
chroot /srv/nfsroot apt-get install initramfs-tools linux-image-amd64
Configura il suo initramfs per generare initrds di avvio NFS:
sed 's/BOOT=local/BOOT=nfs/'
-i /srv/nfsroot/etc/initramfs-tools/initramfs.conf
Carica il aufs
modulo:
echo aufs >> /srv/nfsroot/etc/initramfs-tools/modules
Configura 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
Rendi eseguibile il file:
chmod +x /srv/nfsroot/etc/initramfs-tools/scripts/init-bottom/aufs
Genera initrd:
chroot /srv/nfsroot update-initramfs -k $(uname -r) -u
Fai attenzione se il kernel dell'host e il chroot non corrispondono. Sostituisci $(uname -r)
con il kernel corretto, se necessario.
Copia initrd generato, immagine del kernel e bootloader PXE nella radice TFTP e
crea una cartella per la configurazione 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
Il file pxelinux.0
è il programma di bootstrap di PXELINUX.
Configura caricatore di avvio:
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
Cambia la password di root
chroot /srv/nfsroot passwd root
Riavvia i servizi
invoke-rc.d isc-dhcp-server restart
invoke-rc.d tftpd-hpa restart
exportfs -ra