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

In Paragraaf 3 werd erop gewezen dat het bestandssysteem /var zoals geconstrueerd door /etc/rc.diskless2 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

In /etc/rc.diskless2 staat een variabele genaamd var_dirs. Deze variabele bestaat uit een met spaties afgebakende lijst van mappen die binnen /var aangemaakt zullen worden nadat het als een geheugenbestandssysteem is aangekoppeld. cron en cron/tabs staan niet in deze lijst, en zonder deze mappen zal cron klagen. Door cron, cron/tabs, en misschien zelfs at en at/jobs als elementen van deze variabele toe te voegen, wordt het makkelijker om de daemons cron(8) en at(1) te draaien.

Dit lost echter nog steeds 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.diskless2 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.diskless2 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.diskless2 tijdens de systeeminitialisatie aangemaakt. Daarom dient u ergens na de sectie die de mappen in /var aanmaakt in /etc/rc.diskless2 iets als het volgende toevoegen:

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

U moet ook de logmap toevoegen aan de lijst van mappen die /etc/rc.diskless2 aanmaakt.

5.3. ports-installatie

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.diskless2 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

Apache houdt pid-bestanden en logs in apache_install/logs. Aangezien deze map ongetwijfeld op een bestandssysteem staat dat alleen gelezen kan worden, zal dit niet werken. Het is nodig om een nieuwe map aan de lijst van mappen die in /var aangemaakt moeten worden toe te voegen in /etc/rc.diskless2 en om apache_install/logs 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.diskless2 aangemaakt moeten worden.

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

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

Verwijder als laatste de bestaande map apache_install/logs en vervang het door een koppeling:

# rm -rf (apache_installatie)/logs
# ln -s /var/log/apache (apache_installatie)/logs

Deze en andere documenten kunnen worden gedownload van ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Lees voor vragen over FreeBSD de documentatie alvorens contact te zoeken <questions@FreeBSD.org>.
Vragen over deze documentatie kunnen per e-mail naar <doc@FreeBSD.org>.