Pour l'un de mes laboratoires, j'ai besoin de maintenir des systèmes de fichiers cohérents. Donc, je ne veux pas que des modifications soient écrites dans le système de fichiers après l'arrêt du système. Actuellement, je maintiens une image du système d'exploitation et je la copie manuellement une fois la session de laboratoire terminée.
J'essaie de comprendre s'il existe une implémentation open source de Deep Freeze logiciel pour les systèmes basés sur Fedora. J'essaie de maintenir un système de fichiers cohérent afin que toutes les modifications apportées soient perdues lors du redémarrage du système.
À partir de ce lien, je vois qu'il existe des logiciels similaires à Deep freeze, cependant, ils sont disponibles pour les systèmes basés sur Debian. Je suis également tombé sur des partitions LVM auxquelles je ne comprenais pas grand-chose.
Suggérez-moi un logiciel pouvant être utilisé dans les systèmes basés sur Fedora ou une autre meilleure solution.
Réponse acceptée :
Vous pouvez configurer aufs sur la partition racine et avoir l'image d'origine en lecture seule et toutes les modifications sont stockées dans la RAM. De cette façon, les étudiants peuvent apporter les modifications qu'ils souhaitent (même en tant que root), après un redémarrage, un état système propre et bien défini est restauré.
J'ai fait exactement cette configuration en utilisant Debian, mais la même chose devrait également être possible sans trop de modifications sur Fedora. Comme les clients fonctionnaient sans disque, j'ai utilisé le démarrage PXE. Voici les étapes de base, les instructions sont principalement tirées du démarrage sans disque de Debian Linux via dhcp/pxe/nfs/tftp/aufs et de l'installation de Debian à l'aide du démarrage réseau.
Le serveur de démarrage PXE a l'adresse IP 192.168.1.10 et il sert également de serveur TFTP
et NFS. Il utilise aufs et le système de fichiers racine est monté en lecture seule. En raison
de l'aufs, les clients ont un accès en écriture. Toutes les modifications résident en mémoire et sont
effacées au redémarrage.
Installer les packages nécessaires
apt-get install isc-dhcp-server tftp-hpa nfs-kernel-server debootstrap syslinux
Configurer le serveur DHCP pour servir une image de démarrage 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
Ceci configure DHCP pour utiliser le serveur TFTP sur l'adresse 192.168.1.10
et chargez l'image de démarrage PXE pxelinux.0
.
Configurer le serveur TFTP
mkdir /srv/tftp
Configurer le serveur NFS.
Le système de fichiers racine est monté en lecture seule via NFS.
mkdir /srv/nfsroot
cat >/etc/exports <<EOF
/srv/nfsroot 192.168.1.10/24(ro,no_root_squash,no_subtree_check)
EOF
Remplir le répertoire NFS avec une installation Debian
debootstrap stable /srv/nfsroot <mirror>
# e.g.
debootstrap stable /srv/nfsroot
http://ftp.sunet.se/pub/Linux/distributions/debian/
Installez le noyau et les outils initramfs :
chroot /srv/nfsroot apt-get update
chroot /srv/nfsroot apt-get install initramfs-tools linux-image-amd64
Configurez son initramfs pour générer des initrds de démarrage NFS :
sed 's/BOOT=local/BOOT=nfs/'
-i /srv/nfsroot/etc/initramfs-tools/initramfs.conf
Charger le aufs
modules :
echo aufs >> /srv/nfsroot/etc/initramfs-tools/modules
Configurer 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
Rendre le fichier exécutable :
chmod +x /srv/nfsroot/etc/initramfs-tools/scripts/init-bottom/aufs
Générer initrd :
chroot /srv/nfsroot update-initramfs -k $(uname -r) -u
Faites attention si le noyau de l'hôte et le chroot ne correspondent pas. Remplacez $(uname -r)
avec le bon noyau si nécessaire.
Copiez l'initrd généré, l'image du noyau et le chargeur de démarrage PXE à la racine TFTP et
créez un dossier pour la configuration 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
Le fichier pxelinux.0
est le programme d'amorçage PXELINUX.
Configurer le chargeur de démarrage :
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
Modifier le mot de passe racine
chroot /srv/nfsroot passwd root
Redémarrer les services
invoke-rc.d isc-dhcp-server restart
invoke-rc.d tftpd-hpa restart
exportfs -ra