FreeBSD en Solid State Apparaten
Terug |  |

# 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

Terug | Begin |
Een bestandssysteem uit het niets opbouwen |  |