5. Systeemstragiën voor kleine en alleen-lezen omgevingen.

In Paragraaf 3 werd erop gewezen dat het bestandssysteem /var zoals geconstrueerd door /etc/rc.d/var en de aanwezigheid van een hoofdbestandssysteem dat alleen gelezen kan worden problemen veroorzaakt met veel alledaagse softwarepakketten die door FreeBSD gebruikt worden. In dit artikel zullen suggesties voor het succesvol draaien van cron, syslog, ports-installaties en de webserver Apache worden gegeven.

5.1. cron

Tijdens het opstarten wordt /var bevolkt door /etc/rc.d/var dat de lijst van /etc/mtree/BSD.var.dist gebruikt, dus cron, cron/tabs, at, en nog wat andere standaardmappen worden aangemaakt.

Dit lost echter nog niet het probleem van het behouden van cron-tabellen na het opnieuw opstarten op. Wanneer het systeem opnieuw opstart, zal het bestandssysteem /var dat in het geheugen staat verdwijnen en zullen alle cron-tabellen die er in stonden ook verdwijnen. Daarom is een oplossing hiervoor het aanmaken van cron-tabellen voor de gebruikers die ze nodig hebben, uw bestandssysteem / als lezen-schrijven aan te koppelen en die cron-tabellen naar een veilige plaats zoals /etc/tabs te kopiëren en een regel aan het einde van /etc/rc.initdiskless toe te voegen die deze cron-tabellen naar /var/cron/tabs kopieert nadat die map is aangemaakt tijdens de syseeminitialisatie. U moet misschien ook een regel toevoegen die de modi en toestemmingen van de mappen die u aanmaakt en de bestanden die u met etc/rc.initdiskless kopieert verandert.

5.2. syslog

syslog.conf specificeert de plaats van bepaalde logbestanden die in /var/log bestaan. Deze bestanden worden niet door /etc/rc.d/var tijdens de systeeminitialisatie aangemaakt. Daarom dient u ergens na de sectie die de mappen in /var aanmaakt in /etc/rc.d/var iets als het volgende toevoegen:

# touch /var/log/security /var/log/maillog /var/log/cron /var/log/messages
# chmod 0644 /var/log/*

5.3. Ports installeren

Voordat de veranderingen die nodig zijn om succesvol de portsboom te gebruiken besproken worden, is een herinnering ten aanzien van de alleen-lezen-natuur van uw bestandssystemen op het flash-medium op zijn plaats. Aangezien ze alleen-lezen zijn, dient u ze tijdelijk als lezen-schrijven aan te koppelen waarbij de koppelsyntaxis zoals getoond in Paragraaf 3 wordt gebruikt. U dient deze bestandssystemen altijd als alleen-lezen te herkoppelen als u klaar bent met enig onderhoud - onnodige schrijfacties naar het flash-medium kunnen de levensduur ervan aanzienlijk verkorten.

Om het mogelijk te maken om een portsmap binnen te gaan en succesvol make install uit te voeren, moeten we een pakketmap op een bestandssysteem aanmaken dat niet geheugengebaseerd is en dat onze pakketten tussen herstarts bijhoudt. Omdat het toch nodig is om uw bestandssystemen als lezen-schrijven te koppelen voor het installeren van een pakket, is het zinnig om aan te nemen dat een gebied op het flash-medium ook gebruikt kan worden om pakketinformatie naar te schrijven.

Maak als eerste een map aan voor de pakketdatabase. Dit is normaliter /var/db/pkg, maar we kunnen het daar niet plaatsen aangezien het telkens als het systeem wordt opgestart zal verdwijnen.

# mkdir /etc/pkg

Voeg nu een regel aan /etc/rc.d/var toe die de map /etc/pkg aan /var/db/pkg koppelt. Een voorbeeld:

# ln -s /etc/pkg /var/db/pkg

Nu zal telkens wanneer u uw bestandssystemen als lezen-schrijven aankoppelt en een pakket installeert, make install werken, en zal de pakketinformatie succesvol naar /etc/pkg worden geschreven (omdat het bestandssysteem op dat moment als lezen-schrijven is aangekoppeld) wat altijd als /var/db/pkg beschikbaar is voor het besturingssysteem.

5.4. Apache Web Server

Opmerking: De stappen in deze sectie zijn alleen nodig indien Apache is ingesteld om de pid- of loginformatie buiten /var te schrijven. Standaard houdt Apache het pid-bestand in /var/run/httpd.pid en de logbestanden in /var/log.

Er wordt nu aangenomen dat Apache de logbestanden in een map apache_log_map buiten /var bewaart. Wanneer deze map op een alleen-lezen bestandssysteem staat, zal Apache geen logbestanden kunnen opslaan, en kan het werkproblemen hebben. Indien dit zo is, is het noodzakelijk om een nieuwe map aan de lijst met mappen in /etc/rc.d/var die in /var worden aangemaakt toe te voegen, en om apache_log_map aan /var/log/apache te koppelen. Het is ook nodig om de toestemmingen en eigenaarschappen van deze nieuwe map in te stellen.

Voeg eerst de map log/apache toe aan de lijst van mappen die in /etc/rc.d/var aangemaakt moeten worden.

Voeg ten tweede deze commando's toe aan /etc/rc.d/var na de sectie die mappen aanmaakt:

# chmod 0774 /var/log/apache
# chown nobody:nobody /var/log/apache

Verwijder als laatste de bestaande map apache_log_map en vervang het door een koppeling:

# rm -rf apache_log_map
# ln -s /var/log/apache apache_log_map