In Paragraaf 3, “Het rc
-deelsysteem en alleen-lezen
bestandssystemen” 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.
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.
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/*
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, “Het rc
-deelsysteem en alleen-lezen
bestandssystemen” 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.
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