Upgraden van je linux distributie mini-HOWTO
Greg
Louis
glouis@dynamicro.on.ca
Vertaald door: Ellen
Bokhorst
bokkie@nl.linux.org
v1.2, 9 maart 2002
1996, 2002
Dynamicro Consulting Limited
Hints en tips over het upgraden van de ene naar de andere Linux distributie.
Dit is versie 1.2, 09-03-2002.
BELANGRIJK!!! Disclaimer en Copyright
De procedure die in dit document wordt gebruikt om te proberen je
van een handleiding te voorzien is als zodanig gevaarlijk voor de
programma's en gegevens die op je computer zijn opgeslagen. Je
voert een dergelijke procedure geheel op eigen risico uit. De stappen
die in dit document zijn beschreven, werkte voor de auteur; er
is geen garantie dat ze voor jou ook zullen werken, noch de garantie dat je
ze kunt proberen te volgen zonder ernstige schade aan de programma's en/of
data op je computer. Je bent geheel op jezelf aangewezen bij elk gebruik
dat je maakt van de hierin gepresenteerde informatie, en de auteur
zal niet op energelei wijze aansprakelijk kunnen worden gesteld
voor de schade of het ongemak in wat voor zin dan ook dat je kunt
hebben van het gebruik van dit document.
Dit document is auteursrechtelijk beschermd © 1996, 2000
Dynamicro Consulting Limited, en wordt uitgegeven onder de voorwaarden
van de GNU General Public Licentie. Dit betekent voornamelijk dat je
het naar wens mag kopiëren en aanpassen, maar anderen niet kunt
beletten ditzelfde te doen.
Opmerkingen en vragen kunnen naar de auteur worden gestuurd. Vooral welkom
voor gebruik in toekomstige revisies zijn verslagen van succesvolle
upgrades van complexe systemen.
Wijzigingen sinds versie 1.1
Naar docbook geconverteerd
Wat verouderde informatie gecorrigeerd
De historie sectie toegevoegd
Toegevoegd Zoltán Hidvégi's suggestie over mtime en ctime.
Bedankt Zoltán!
Toegevoegd sectie Erkenningen
Introductie
Hoe je linux box laten sneuvelen en reïncarneren!
Het doel van dit document is tips te bieden als hulp bij het verwijderen
en herinstalleren van een Linux systeem. Het is in geen enkele zin een
onfeilbaar middel, maar ik hoop dat het zal dienen als een indicatie,
waar je aan moet denken, en de volgorde waarin te handelen.
Het zou mij van hulp zijn geweest, als iemand anders
iets dergelijks eerder had geschreven toen ik mijn eerste upgrade
uitvoerde; dus ik hoop het het jou van hulp zal zijn, als je een
linux machine opnieuw wilt opbouwen.
Beschouw het echter niet als heilig.
Zelfs de namen van directory's in dit document kunnen anders
zijn dan die jij moet gebruiken; een aantal mensen maakt bijvoorbeeld
gebruik van /usr/home in plaats van /home; anderen noemen het /u, en
een aantal plaatst hun gebruikers zelfs onder /usr
zelf! Ik kan niet specificiek zijn over je systeem, dus ik heb de namen
gebruikt zoals ze op mijn systeem voorkomen.
Je zult ook bemerken dat ik gebruik maak van Slackware distributies, en
dat ik veronderstel dat je voldoende RAM en harddiskruimte hebt om de
broncode van een linux kernel te installeren en je eigen kernel te
bouwen. Als je systeem er anders uitziet, zullen een aantal van mijn
aanbevelingen niet van toepassing zijn; maar ik hoop dat je de algemene
uiteenzetting kunt gebruiken bij het opnieuw opzetten van je systeem.
Waarom zou iemand dat willen doen?
Goede vraag! Doe het niet als het mogelijk te vermijden is!
(Dat is de allerbelangrijkste aanbeveling in dit document!!!). Toen
deze leidraad voor het eerst werd geschreven, waren er niet veel mensen
met harddisks die groot genoeg waren om twee hele Linux installaties
te herbergen. Tegenwoordig is dat niet meer zo ongewoon.
Bouw je nieuwe systeem in een aparte partitie (of groep partities)
opnieuw op als je ook maar enigszins kan, waarbij je de oude intact laat
totdat je tevreden bent met de nieuwe precies zoals je het wilt.
Als je het kunt voorkomen om het oude systeem af te breken om ruimte te
maken voor het nieuwe systeem, voorkom dit dan!!
Maar er zijn keren dat je geen keuze hebt.
(Deze voorbeelden zijn een beetje gedateerd, maar ze dienen ter illustratie)
Toen ik bijvoorbeeld een 4Gb harddisk installeerde bemerkte ik
dat Slackware 2.0 vintage linux niet wist dat een harddisk een grotere
capaciteit kon hebben dan 2Gb, en raakte het hopeloos in de war.
Dus moest ik upgraden naar de
toen huidige Slackware 2.3. Die upgrade was een harde ervaring, en deels
daarom schrijf ik deze notities op. Ik deed zo ongeveer
alles fout, en alleen goed geluk en het feit dat ik een andere draaiende
Linux box naast me had, voorkwam een ramp.
Nog een voorbeeld: ik bemerkte dat het samenstellen van een werkende a.out
linuxkernel in de 1.3 serie met een kant-en-klare Slackware 2.3
installatie me niet lukte
(een andere machine, niet die ik eerder verprutste).
Ik waagde de sprong, kocht Slackware 3.0 op CDROM en converteerde het naar ELF.
Dit keer ging de herinstallatie beter, dankzij de eerdere bittere ervaring,
en het diende als grondlegger voor de meeste idee¨n die ik je hier van de
hand doe.
Moet je je systeem afbreken om het weer opnieuw op te bouwen?
Zie hiervoor. Als je het je kunt permitteren je nieuwe systeem samen te stellen
op een disk met lege ruimte, doe dit dan! In de rest van dit document wordt
er echter van uitgegaan dat dit een van die keren is dat die optie niet
beschikbaar is; je moet of ter plaatse bovenop het bestaande systeem
een herinstallatie uitvoeren of je moet de gevolgen onder ogen zien en
je systeem vanaf het begin af aan opnieuw opbouwen.
Vreemd genoeg is dat laatste veiliger. Als je bovenop een bestaand linux
systeem een installatie uitvoert, bestaat de kans dat je oude en nieuwe
binaire bestanden, oude en nieuwe configuratiebestanden en gewoonlijk een
rommeltje om te beheren doorelkaar krijgt. Het systeem opschonen
en dan alleen terugzetten wat je nu nodig hebt is drastisch, maar een
effectieve manier om een zuiver resultaat te krijgen. (Uiteraard hebben
we het hier over het installeren van een geheel nieuwe linux distributie,
niet over het upgraden van één of twee packages! De beste
manier om een volledige herinstallatie te voorkomen is, precies, de
individuele programma's -- vooral gcc en library's, en binutils recent
te houden. Als hetgeen je gebruikt redelijk up-to-date is, en je kunt
dit zo houden, zonodig zo nu en dan door compilatie van nieuwe code, dan
is een massale upgrade niet nodig.)
Hoeveel tijd neemt het in beslag?
Hangt er uiteraard vanaf hoe complex je systeem is. Maar ik schat in
dat ik voor een succesvolle upgrade (dat andere? -- niet aan mij vragen! :)
ongeveer tien uur kwijt was aan het maken van backups, zes uur
aan het weer opbouwen van het systeem tot aan het punt waar ik
logins kon activeren, en nog een halve dag daaromtrent voor het terugzetten
van de minder kritieke bestanden. Naarmate de tijd verstreek bleef ik
kleine dingen ontdekken die nog steeds niet zo zijn zoals ik ze werkelijk
hebben wil -- ik zal dit corrigeren zodra ik ze tegenkom -- maar
over het geheel zou twintig uur genoeg moeten zijn voor een redelijk
complexe heropbouw. Misschien minder als je
een herinstallatie vanaf harddisk uitvoert (ik gebruikte een CDROM) of meer
als je vanaf diskettes moet installeren.
Misschien minder als je een snelle Pentium hebt,
meer als het een 386'r is. 't Is maar om je een idee te geven.
Dat waren de slechtere tijden. Met de nu snellere disks en snellere
machines en CD-writers gaat het allemaal wat beter. Mijn notebook
werd in december 2002 gestolen en toen er
een nieuwe kwam, was ik na ongeveer zever uur werk klaar en was het vrijwel
compleet, ondanks dat ik het oude systeem kwijtraakte zonder de kans
te hebben gehad de laatste wijzigingen te bewaren.
Tot zover de introductie. Zodra je hebt besloten dat de klus moet
worden geklaard, kun je in dit document lezen hoe je het kunt doen.
Wapen jezelf met vastberadenheid en Jolt of iets dergelijks en:
Schrijf alles op wat je doet
Het is van groot belang dat je bijhoudt wat je hebt gedaan tijdens
het proces waarbij je de voorbereiding en uitvoering van de
omschakeling uitvoert.
Vooral van belang is een lijst met backups die je zult gaan maken
als voorbereiding op de vernietiging van je bestaande systeem.
Maak een volledige backup van het bestaande systeem
Over het algemeen genomen, worden grote backups weggeschreven op media
welke sequentieel toegankelijk is. Je zult deze volledige backup vast
niet willen gebruiken voor het terugzetten van een veelbetekenend aantal
bestanden; het bevat te veel bestanden welke je niet wilt.
Je kunt beter kleine
backups maken van individuele segmenten waarvan je weet dat je ze in
z'n geheel terug gaat zetten. Ik zal hier later veel voorbeelden
van geven.
Waarom zou je dan beginnen met een volledige backup? Twee basisredenen:
ten eerste zal in geval van een rampzalig falen bij de installatie
van het nieuwe systeem, er geen enkele manier zijn met minimale moeite
terug te keren naar het aanvangspunt.
Ten tweede, ongeacht hoe zorgvuldig je de nieuwe installatie
voorbereidt, bestaat een zeer grote kans dat één of
twee belangrijke bestanden over het hoofd zullen worden gezien.
In dat geval zal de onhandigheid bij het herstellen van die één
of twee bestanden vanaf de volledige backup voorkeur hebben boven het
ongemak van het zonder deze bestanden te moeten doen.
Om tijd en ruimte te besparen, zou je alleen van die bestanden een backup
kunnen maken waarvan de mtime of ctime recenter is dan de datum van de
oorspronkelijke installatie, als je het distributiemedium van je
oude linux versie nog hebt.
Maak op één of twee diskettes een backup van /etc
inclusief subdirectory's
Dit is het andere uiterste: je gaat deze bestanden niet terugzetten (voor
het overgrote deel in elk geval);
je gaat ze vergelijken met de nieuwe bestanden die worden
aangemaakt tijdens de installatie. Waarom? Omdat in de nieuwe bestanden
gegevens kunnen staan die niet in de oude bestanden stond, of waarbij
de oude gegevens op een andere manier worden uitgedrukt.
Wijzigingen in protocollen, toevoegingen van nieuwe tools, of de
implementatie van nieuwe features in bestaande tools kunnen allen
wijzigingen in de opmaak van configuratiebestanden en opstartscripts
in de /etc structuur met zich meebrengen, en zeer waarschijnlijk
moet je de oude gegevens in deze bestanden bewerken om de nieuwe
formaten te behouden en voordeel te hebben van de verbeteringen.
Maak aparte backups van elke groep bestanden die je wilt behouden.
Dit is het meest variabele deel van het werk, en het enige wat ik werkelijk kan
doen als hulp is beschrijven hoe ik het op mijn systeem deed, in de hoop
dat het als een grove leidraad zal dienen. Voornamelijk dien je elke
directory te bekijken met daarin:
bestanden die geen onderdeel uitmaken van je standaard linux installatie,
of
bestanden die echt nieuwer zijn dan de bestanden die je zult installeren
wanneer je de nieuwe linux installatie uitvoert.
en alleen die bestanden apart houdt die je wilt overbrengen op het nieuwe
systeem.
(Een andere mogelijke strategie is een backup te maken van alle bestanden
waarbij de mtime of ctime recenter is dan de dag van de vorige linux
installatie, zoals hiervoor genoemd en die terug te zetten. Als je dat
doet, moet je er rekening mee houden dat de nieuwe linux distributie
wellicht versies bevat van een aantal bestanden die nieuwer zijn dan
die je hebt bewaard.)
In mijn geval maakte ik een .tgz bestand op het backupmedium voor alle
bestanden in
/usr/lib/rn
/usr/lib/smail
/usr/lib/trn (de rest van /usr/lib wordt opnieuw
geïnstalleerd)
/usr/local/src
/usr/local/bin
/usr/local/lib
/usr/local/lpfont
/usr/local/man
/usr/local/sbin
/usr/local/thot (andere /usr/local bestanden had
ik niet nodig)
/usr/openwin
/usr/src/lilo-17 (omdat mijn nieuwe Slackware nog steeds
was voorzien van versie 16)
/usr/src/linux-1.2.13 (omdat ik wat aanpassingen had
gemaakt)
/usr/X11R6/lib/X11/app-defaults
/usr/X11R6/lib/X11/initrc (de rest van XFree86 werd
opnieuw geïnstalleerd)
/var/named
/var/openwin
/var/texfonts
Mijn machine was relatief eenvoudig in die zin dat er geen spoolbestanden
waren om me zorgen om te maken. Ik heb geen newsspool op deze box, en
aangezien er slechts twee gebruikers zijn, was het 't eenvoudigst alle
mail te lezen voordat het systeem zou worden afgesloten. Anders zou
op het laatste moment nog een backup moeten worden gemaakt van de
/var/spool directory's. (en uiteraard ook van de news library en
site directory's!)
Bereid root- en bootdiskettes voor de nieuwe installatie voor
Met een beetje geluk, is in je nieuwe package een opstartbare CD opgenomen
en is deze stap niet nodig.
Als je geen cd-romstation hebt of er niet van kunt
booten, dan zijn details over het aanmaken van de diskettes te vinden
in de installatiehandleiding van je distributie.
Formatteer diskettes voor de tijdelijke kernel en de uiteindelijke
compilatie.
Je hebt twee diskettes nodig, éé voor elk.
Als je hier eenmaal mee klaar bent, is het grote moment aangebroken.
De volgende stap verwijdert het systeem voor productie.
Belet logins en maak een backup van /root en /home.
Dit is het laatste wat op het oude systeem moet gebeuren voordat je het
gaat verwijderen, om de meest bijgewekte gebruikers- en rootinformatie
over te brengen. Om logins te beletten, geef je gewoon de opdracht
"getting ready for upgrade" >/etc/nologin (uiteraard als root).
Boot met de boot- en rootdiskettes van de nieuwe installatie.
Of als je die mogelijkheid hebt, met de installatie-CD zelf.
Verwijder de linux partities met fdisk en maak ze opnieuw aan.
In de installatiehandleiding zal worden uitgelegd hoe je dit doet. Hiermee
zal het oude systeem worden verwijderd. Van nu af aan ben je afhankelijk van
de kwaliteit van de backups die je in de eerdere stappen hebt gemaakt!
Je bent gewaarschuwd!
Start de nieuwe linux installatie.
Er zijn reeds verscheidene goede documenten waarin dit wordt beschreven,
dus ga ik hier niet in detail op in. Ga verder met waar het nieuwe systeem
van de harddisk kan booten.
Zorg ondertussen ook dat je een diskette hebt waarmee je kunt booten,
aangezien de kernel die de linux setup installeert, moet worden vervangen
en tijdens dat proces ongelukken kunnen gebeuren. Zorg ervoor dat je
de ontwikkelaarspackages en de kernelbroncode installeert.
Zet de configuratiegegevens terug in de /etc/directory en
subdirectory's daarvan.
Zoals hiervoor beschreven kun je niet zomaar alle oude bestanden in /etc
terugzetten en daarna verwachten dat alles juist werkt.
Met een aantal bestanden kun je dat wel doen; bijvoorbeeld met /etc/XF86Config
(zolang je dezelfde versie van XFree86 gebruikt met dezelfde videohardware
in de nieuwe installatie als in de oude installatie). Voor het overgrote deel
echter kun je het beste diff gebruiken om de oude en nieuwe bestanden
voor het kopiëren met elkaar te vergelijken. Kijk vooral uit voor
belangrijke wijzigingen in de bestanden in /etc/rc.d en dergelijke, wat
in zou kunnen houden dat je de oude configuratie terug moet brengen door
deze bestanden handmatig te wijzigen, in plaats van het kopiëren van
de oude rc-scripts vanaf je backup. Start het systeem opnieuw op als je
hiermee klaar bent.
Configureer en compileer de linux kernel.
Zelfs als je dit niet beslist hoeft te doen om een kernel te verkrijgen
die je hardware ondersteunt, is dit het wel waard om het te doen om
een kernel te krijgen die geen massa's drivers bevat voor zaken die
waarmee je machine niet is uitgerust. En nog belangrijker, om een
goed begrip te krijgen van hoe je configuratie-opties van invloed zijn
op het functioneren van je systeem!
Aangezien linux blijft uitbreiden, is de mogelijkheid voor
distributieverkopers om een kernel te configureren die voor iedereen voldoet
zeer beperkt geworden. Zie de Kernel HOWTO voor details hoe je dit doet;
het lijkt in eerste instantie gecompliceerd, maar het valt uiteindelijk
wel mee; doe het gewoon stap voor stap.
Installeer de gecompileerde kernel eerst op een diskette; zodra je daar
goed mee kunt booten, installeer je het op de harddisk. Start lilo op
als je daar gebruik van maakt en start de computer opnieuw op.
Zet de bestanden terug van de backup die je eerder aanmaakte.
Een aantal binary's moet wellicht opnieuw vanuit de directory's met broncode
worden geïnstalleerd; ik moest dit bijvoorbeeld doen met lilo, omdat
mijn versie nieuwer was dan die van de Slackware installatie en ik had
geen moeite gedaan de binary in /sbin te bewaren. Controleer de
teruggezette programma's en bevestig daarvan het bestaan en de juistheid
van configuratiebestanden, library's enzovoort. In een aantal gevallen
moet je wellicht wat zaken in een specifieke volgorde terugplaatsen;
je hebt toch wel notities gemaakt tijdens de backup? ;-)
Kijk de systeembeveiliging nog eens na.
Toen ik dit schreef was deze stap van belang, maar niet kritiek;
het Internet was zelfs in 1996 een vriendelijker plaats dan het tegenwoordig
is. Als je vanaf je machine toegang hebt tot het Internet, is deze stap
volkomen noodzakelijk, en er zijn volledige boeken aan gewijd om dit
op orde te krijgen; ik kan hier niets meer doen dan een paar
basisaanwijzingen bieden:
Controleer bestandspermissies en directorypermissies om er zeker van te
zijn dat de toegang ertoe noch te beperkt noch te makkelijk is. Ik vind
dat Slackware neigt naar een meer open omgeving dan ik graag wil, dus
wijzig ik de permissie 755 voor binary's in 711 in de ../bin directory's
en dergelijke. Of zelfs in 700 voor de bestanden in .../sbin.
Speciale aandacht is nodig als je ftp, telnet of webserver hebt
getransporteerd; maar als je die draaide, dan hebt je dat vast reeds
overdacht. :)
Kijk in /etc/inetd.conf of /etc/xinetd.conf en zorg dat je geen Internet
services actief hebt die je niet nodig hebt. Doorloop met hetzelfde
doel ook de bootscripts in /etc/rc.d en dergelijke. Controleer je
firewall rules als je box een Internet gateway is of toegang heeft tot
Internet.
Activeer logins.
Nog even en je bent waarschijnlijk details aan
het opschonen; maar de bulk van het werk is klaar. Veel plezier!
Sorry, maar nogmaals:
GEBRUIK DEZE INFORMATIE OP EIGEN RISICO!
(Zie de disclaimer aan het begin van dit document.)
Erkenningen
Met dank voor de bijdragen aan deze mini-HOWTO aangeboden door
Zoltán Hidvégi; en voor de motivatie mij wat dichter bij de moderne
praktijk te brengen, aan Steve Sanfratello, auteur van de rpmupgrade-HOWTO.