[FreeBSD] geen nieuwe generic na buildworld

Pagina: 1
Acties:
  • 391 views sinds 30-01-2008
  • Reageer

  • madwoody
  • Registratie: Augustus 2001
  • Laatst online: 26-01 12:44

madwoody

Connection reset by ME

Topicstarter
Ik ben een upgrade aan het doen van FreeBSD release 5.4 naar release 6.0. Het probleem is dat ik geen nieuwe GENERIC file heb om een nieuwe kernel mee te compilen. Alleen de oude GENERIC file van freebsd 5.4 staat er nog op.

Ik heb eerst met cvsup alle sources binnen gehaald met de volgende config
code:
1
2
3
4
5
6
7
*default host=cvsup3.nl.FreeBSD.org
*default base=/usr
*default prefix=/usr
*default release=cvs tag=RELENG_6
*default delete use-rel-suffix
src-all
ports-all tag=.
Vervolgens ben ik naar /usr/src gegaan en heb de UPDATING gelezen waar ook instond dat het FreeBSD release 6 was. Daarna heb ik een buildworld gedaan
code:
1
make buildworld


Daarna moest ik volgens de UPDATING file make kernel KERNCONF=YOUR_KERNEL_HERE doen maar de GENERIC die ik heb die staat in /usr/src/sys/i386/conf is de oude en pikt ie niet. Ik weet zeker dat het de oude is omdat ook de datum van vorig jaar er nog in staat. De directory heeft echter wel de laatste datum.

Iemand enig idee hoe ik aan een nieuwe generic kom? Of heb ik nog meer fout gedaan :)

Specs: Game/LANBak FTP/Gameserver Unix Server Visit http://www.gamesfm.nl


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Helpt mergemaster draaien?

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • madwoody
  • Registratie: Augustus 2001
  • Laatst online: 26-01 12:44

madwoody

Connection reset by ME

Topicstarter
zal eens proberen. Mergemaster staat hier wat later in de UPDATING beschreven (nadat de kernel geinstalleerd is)

Gaat niet echt goed:
code:
1
2
3
4
5
6
*** Error code 1

Stop in /usr/src/etc.

  *** FATAL ERROR: Cannot 'cd' to /usr/src/etc and install files to
      the temproot environment

[ Voor 45% gewijzigd door madwoody op 10-02-2006 02:11 ]

Specs: Game/LANBak FTP/Gameserver Unix Server Visit http://www.gamesfm.nl


Verwijderd

Allereerst: je update nu naar 6-STABLE en niet naar 6.0-RELEASE. De laatstgenoemde heeft namelijk de tag RELENG_6_0.
Verder maak je ook wat fouten in de updateprocedure. Wellicht heb je je oude source (src) directory niet verwijderd. Als je de nieuwe souce ophaalt, zal ook de kernel config worden geupdate (mits nieuwer qua datum).

De juiste updateprocedure is als volgt:

cd /usr/src
rm -rf *
cd /usr/obj
rm -rf *
cvsup <world-cvsup-file>
cd /usr/src
make buildworld
make buildkernel KERNCONF=GENERIC
make installkernel KERNCONF=GENERIC
<reboot in single user mode>
cd /usr/src
mergemaster -p
make installworld
mergemaster

Vooral het gedeelte met mergemaster is even doorbijten. Je /etc/group en /etc/master.passwd wil je wellicht backuppen, je kunt ook voor "merge" kiezen bij deze twee. De rest kun je eventueel gewoon installen (dus overschrijven) mits je geen wijzigingen hebt aangebracht aan de oude bestanden die je wilt behouden.

Succes :)

[ Voor 17% gewijzigd door Verwijderd op 10-02-2006 02:12 ]


  • madwoody
  • Registratie: Augustus 2001
  • Laatst online: 26-01 12:44

madwoody

Connection reset by ME

Topicstarter
Klopt, ik heb de oude src niet weggegooit want dat kwam niet in mijn howto voor, verder is het idd de bedoeling dat ik stable ga draaien maar ben weer eens door de war op dit tijdstip. Ik ga het even overnieuw proberen

Specs: Game/LANBak FTP/Gameserver Unix Server Visit http://www.gamesfm.nl


Verwijderd

Een stap-voor-stap tutorial vind je hier:
http://www.fluffles.net/tutorials/freebsd/upgrading

  • madwoody
  • Registratie: Augustus 2001
  • Laatst online: 26-01 12:44

madwoody

Connection reset by ME

Topicstarter
Mja, het lukt nog steeds niet. Ik heb dus zoals je zei /usr/src en usr/obj totaal verwijderd. Daarna nog ff gekeken of deze echt leeg was en dat was het geval. Nu heb ik alles weer gedaan en sources overnieuw binnengehaald en aan de datums te zien van /usr/src/sys/i386/conf zag ik alweer dat de datums niet klopte.
code:
1
2
3
4
5
6
7
8
9
10
11
12
morpheusII# ls -lah
total 60
drwxr-xr-x   2 root  wheel   512B Feb  9 22:41 .
drwxr-xr-x  14 root  wheel   512B Feb  9 22:41 ..
-rw-r--r--   1 root  wheel    13B Jun 20  2005 .cvsignore
-rw-r--r--   1 root  wheel   372B Oct 28 21:21 DEFAULTS
-rw-r--r--   1 root  wheel   9.9K Jan 23 15:19 GENERIC
-rw-r--r--   1 root  wheel   1.7K Jan 14  2005 GENERIC.hints
-rw-r--r--   1 root  wheel   120B Feb 27  2003 Makefile
-rw-r--r--   1 root  wheel    33K Dec 14 01:52 NOTES
-rw-r--r--   1 root  wheel   1.7K Nov  8 23:28 PAE
-rw-r--r--   1 root  wheel   322B Sep 18 05:37 SMP


In de GENERIC configuration file staat wel bovenaan dit:
# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.429.2.5 2006/01/23 14:19:36 marius Exp $

Maar als ik dus vervolgens de kernel wil gaan builden gaat het weer mis:

code:
1
2
3
4
5
6
7
8
morpheusII# make buildkernel KERNCONF=/usr/src/sys/i386/conf/GENERIC
ERROR: Missing kernel configuration file(s) (/usr/src/sys/i386/conf/GENERIC).
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
Ik heb eigenlijk geen idee wat ik nu fout doe want volg precies de howto die je stuurde.

Specs: Game/LANBak FTP/Gameserver Unix Server Visit http://www.gamesfm.nl


  • begintmeta
  • Registratie: November 2001
  • Niet online

begintmeta

Moderator General Chat
Waarom zou je de KERNCONF willen definieren, die is toch default volgens de GENERIC definitie van je configuratie. Verder hoef je vziw het pad niet aan de configuratienaam toe te voegen.

probeer eerst maar een
code:
1
2
3
cd /usr/src
make update
make buildworld

(voor make update moet je wel cvsup hebben geinstalleerd en definities in de make.conf zetten)

Je kunt voor het gemak een eigen aangepast configuratiebestand (evt op basis van GENERIC in b.v. /root/kernels/hostnaam-kernel opslaan, en die dan in /etc/make.conf definieren en ook naar de je achitectuur betreffende "conf" directory symlinken.

Maar het belangrijkste dus: definieer alleen de naam van het configuratiebestand, in jouw geval dus:

code:
1
make buildkernel KERNCONF=GENERIC

[ Voor 3% gewijzigd door begintmeta op 10-02-2006 19:20 ]


  • madwoody
  • Registratie: Augustus 2001
  • Laatst online: 26-01 12:44

madwoody

Connection reset by ME

Topicstarter
Volgens mij hij issie nu bezig nadat ik in de directory /usr/src make buildkernel KERNCONF=GENERIC deed. Ik maak wel een eigen kernel als dit uiteindelijk gelukt is :)

Specs: Game/LANBak FTP/Gameserver Unix Server Visit http://www.gamesfm.nl


  • madwoody
  • Registratie: Augustus 2001
  • Laatst online: 26-01 12:44

madwoody

Connection reset by ME

Topicstarter
Het is wel een moeizame bevalling zeg :P

Ik heb nu de kernel geinstalleerd en gereboot in single mode alleen de directory /usr/src bestaat niet dus kan er geen mergemaster draaien :| Wat nu?

Specs: Game/LANBak FTP/Gameserver Unix Server Visit http://www.gamesfm.nl


  • begintmeta
  • Registratie: November 2001
  • Niet online

begintmeta

Moderator General Chat
/usr/src zou moeten bestaan. je moet hoe dan ook de sources installeren. (het beste met cvs) Draai in ieder geval ook een
code:
1
make buildworld


Dan heb je ook wel een mergemaster om uit te voeren.

De instructies om te updaten staan trouwens ook in /usr/src/Makefile dus:

code:
1
less /usr/src/makefile


en lees het commentaar aan het begin van dat bestand

:) 't gaat je wel lukken.

  • madwoody
  • Registratie: Augustus 2001
  • Laatst online: 26-01 12:44

madwoody

Connection reset by ME

Topicstarter
Ben alweer een stapje verder. In de link die Babe gaf stond niet dat je eerst moest mounten :D

Specs: Game/LANBak FTP/Gameserver Unix Server Visit http://www.gamesfm.nl


  • madwoody
  • Registratie: Augustus 2001
  • Laatst online: 26-01 12:44

madwoody

Connection reset by ME

Topicstarter
It's over :( Hij crashte tijdens make installworld en hing compleet. Daarna kon ik in single user mode niet meer mounten en kreeg ik steeds deze error:
code:
1
exec format error. Binary Files not executetable
. Wordt denk ik een reinstall. Ieder geval bedankt voor de hulp

Specs: Game/LANBak FTP/Gameserver Unix Server Visit http://www.gamesfm.nl


Verwijderd

madwoody, ik heb het gevoel dat je m'n tutorial niet helemaal exact hebt gevolgd. Zo probeerde je KERNCONF=/usr/src/sys/i386/GENERIC te draaien, terwijl de tutorial spreekt over KERNCONF=MYKERNEL ofwel gewoon de naam; exclusief het pad!

De datums zijn in orde. Sommige bestanden zijn gewoon niet gewijzigd. Maar de datum van GENERIC lijkt helemaal in orde.

Daarnaast: heb je wel
code:
1
make installworld KERNCONF=GENERIC

gedraaid? Zo niet, dan werk je dus met een oude kernel en als je dan make installworld doet dan zit je dus met een oude kernel op een nieuw systeem.

Waar je wel gelijk in hebt, is het mounten van de filesystems na het booten in single user mode. Dat moet met:

mount -w /
mount -w /usr
mount -w /var

Dat zal ik gelijk toevoegen aan mijn tutorial. :)

Graag hoor ik wel even van je of het klopt dat je geen make installkernel hebt gedraaid. Maar ik vrees dat je inderdaad aan een reinstall moet denken, want ik als het klopt dat je nu een oude kernel draait met een half-nieuwe world dan weet ik niet zo gauw hoe je dat moet oplossen. Tenzij je een nieuwe generic kernel voor 6.0-RELEASE van iemand kunt krijgen (en ik draai AMD64).

  • Michael
  • Registratie: Maart 2000
  • Laatst online: 20-01 19:22
Verwijderd schreef op vrijdag 10 februari 2006 @ 02:11:
Verder maak je ook wat fouten in de updateprocedure. Wellicht heb je je oude source (src) directory niet verwijderd. Als je de nieuwe souce ophaalt, zal ook de kernel config worden geupdate (mits nieuwer qua datum).

De juiste updateprocedure is als volgt:

cd /usr/src
rm -rf *
cd /usr/obj
rm -rf *
cvsup <world-cvsup-file>
cd /usr/src
make buildworld
make buildkernel KERNCONF=GENERIC
make installkernel KERNCONF=GENERIC
<reboot in single user mode>
cd /usr/src
mergemaster -p
make installworld
mergemaster
Even een paar opmerkingen over deze methode:
  • /usr/src directory verwijderen is natuurlijk niet nodig
  • als je /usr/obj verwijderd, vergeet dan niet chflags -R noschg /usr/obj
  • KERNCONF=GENERIC is niet nodig, default is generic
  • "mergemaster -p" is niet de juiste manier om het te starten, "cd /usr/src/usr.sbin/mergemaster && ./mergemaster -p" wel. (anders draai je een oude mergemaster.
Als je gewoon http://www.freebsd.org/doc/en/books/handbook/makeworld.html doorloopt, komt alles goed

[ Voor 41% gewijzigd door Michael op 11-02-2006 13:46 ]


Verwijderd

Michael schreef op zaterdag 11 februari 2006 @ 13:17:
[...]


Even een paar opmerkingen over deze methode:
  • /usr/src directory verwijderen is natuurlijk niet nodig
  • als je /usr/obj verwijderd, vergeet dan niet chflags -R noschg /usr/obj
  • KERNCONF=GENERIC is niet nodig, default is generic
  • "mergemaster -p" is niet de juiste manier om het te starten, "cd /usr/src/usr.sbin/mergemaster && ./mergemaster -p" wel. (anders draai je een oude mergemaster.
Als je gewoon http://www.freebsd.org/doc/en/books/handbook/makeworld.html doorloopt, komt alles goed
1) /usr/src leegmaken raad ik wel aan. In mijn geval mislukte een make buildworld. Nadat ik de /usr/src directory leegmaakte en opnieuw cvsup world draaide, werkte het zonder problemen. Kennelijk kunnen oude bestanden toch conflicteren. En omdat je die oude bestanden toch niet nodig hebt raad ik aan dat je de directory gewoon leeghaalt.

2) waarom chflags draaien?

3) GENERIC is default, maar meestal wil je wat aan je kernel config veranderen. Mijn tutorial ging daar wel vanuit, vandaar dat ik KERNCONF=MYKERNEL hanteer. Zo leer je dat ook gebruiken, want een GENERIC kernel vind ik niet zo sexy. :)

4) mergemaster -p kan prima. Het handboek zegt hierover:
If your old version of mergemaster does not support -p, use the new version in the source tree when running for the first time:
Dit impliceert dat je het 'nieuwe' mergemaster script alleen nodig hebt als je reeds geinstalleerde versie van mergemaster geen -p mode ondersteunt.

  • Michael
  • Registratie: Maart 2000
  • Laatst online: 20-01 19:22
Verwijderd schreef op maandag 13 februari 2006 @ 06:13:
[...]

1) /usr/src leegmaken raad ik wel aan. In mijn geval mislukte een make buildworld. Nadat ik de /usr/src directory leegmaakte en opnieuw cvsup world draaide, werkte het zonder problemen. Kennelijk kunnen oude bestanden toch conflicteren. En omdat je die oude bestanden toch niet nodig hebt raad ik aan dat je de directory gewoon leeghaalt.
Het idee van cvsup is dat je niet heel de source tree overnieuw hoeft te downloaden, maar alleen de diff's. Dit doen je dan teniet door alles weg te gooien. Als het cvsup'en ervoor zorgt dat je src dir 'corrupt' raakt, dan zit het probleem ergens anders. Daarnaast, als je toch heel de source tree overnieuw wilt downloaden, dan is cvsup niet de meest efficiente manier hiervoor.
2) waarom chflags draaien?
Sommige files in /usr/obj hebben (of hadden in oudere freebsd versies) flags waardoor je de bestanden niet zomaar kan verwijderen. Daarom kan je het best al die flags even van alle files in /usr/obj verwijderen. Of het tegenwoordig nog steeds nodig is durf ik niet 100% te zeggen.
3) GENERIC is default, maar meestal wil je wat aan je kernel config veranderen. Mijn tutorial ging daar wel vanuit, vandaar dat ik KERNCONF=MYKERNEL hanteer. Zo leer je dat ook gebruiken, want een GENERIC kernel vind ik niet zo sexy. :)
Meestal wordt inderdaad een custom kernel config gebruikt, dus daar heb je gelijk in :-) Het voordeel overigens van de generic kernel te gebruiken + loadable modules is dat je de freebsd binary update kan gebruiken, al heb ik er zelf ook nog nooit meegespeeld.
4) mergemaster -p kan prima. Het handboek zegt hierover:

[...]

Dit impliceert dat je het 'nieuwe' mergemaster script alleen nodig hebt als je reeds geinstalleerde versie van mergemaster geen -p mode ondersteunt.
Goed punt! :-)

Verwijderd

Michael schreef op maandag 13 februari 2006 @ 08:48:
[...]

Het idee van cvsup is dat je niet heel de source tree overnieuw hoeft te downloaden, maar alleen de diff's. Dit doen je dan teniet door alles weg te gooien. Als het cvsup'en ervoor zorgt dat je src dir 'corrupt' raakt, dan zit het probleem ergens anders. Daarnaast, als je toch heel de source tree overnieuw wilt downloaden, dan is cvsup niet de meest efficiente manier hiervoor.
Wat is dan wel efficienter volgens jou? CVSUP voor de portstree is zeker handig omdat hij dan alleen de gewijzigde bestanden overhaalt. Maar toen ik zelf wilde upgraden kwam ik in de problemen omdat ik een oude soucetree had, en dat kennelijk toch problemen gaf. Op irc.freenode.org ##freebsd (waar overigens ook FreeBSD devs zitten), kreeg ik het advies om altijd /usr/src en /usr/obj te legen als ik naar een andere release tag overging, dus b.v. RELENG_5 naar RELENG_6. En omdat het upgraden van FreeBSD toch al niet zo'n eenvoudige zaak is speel ik wat dit betreft liever op safe. :)
Sommige files in /usr/obj hebben (of hadden in oudere freebsd versies) flags waardoor je de bestanden niet zomaar kan verwijderen. Daarom kan je het best al die flags even van alle files in /usr/obj verwijderen. Of het tegenwoordig nog steeds nodig is durf ik niet 100% te zeggen.
De laatste keren dat ik upgraden was /usr/obj ook echt leeg, na een "rm -rf /usr/obj/*". Meestal doe ik zelf nog even "ls" om te kijken of de directory ook echt leeg is.
Meestal wordt inderdaad een custom kernel config gebruikt, dus daar heb je gelijk in :-) Het voordeel overigens van de generic kernel te gebruiken + loadable modules is dat je de freebsd binary update kan gebruiken, al heb ik er zelf ook nog nooit meegespeeld.
Binary upgrade wordt volgens mij niet echt hartelijk aangeraden. Alhoewel het wel stukken makkelijker lijkt. Ik weet ook niet hoe het zit met configuratiebestanden, of die ook worden meegenomen en hoe dat zit met wijzigingen (zoals /etc/master.passwd). Wat dat betreft zou het FreeBSD project wel een nieuwe installer en makkelijker updater kunnen gebruiken. Iets wat "gewoon werkt".

  • madwoody
  • Registratie: Augustus 2001
  • Laatst online: 26-01 12:44

madwoody

Connection reset by ME

Topicstarter
Verwijderd schreef op zaterdag 11 februari 2006 @ 03:27:
madwoody, ik heb het gevoel dat je m'n tutorial niet helemaal exact hebt gevolgd. Zo probeerde je KERNCONF=/usr/src/sys/i386/GENERIC te draaien, terwijl de tutorial spreekt over KERNCONF=MYKERNEL ofwel gewoon de naam; exclusief het pad!

De datums zijn in orde. Sommige bestanden zijn gewoon niet gewijzigd. Maar de datum van GENERIC lijkt helemaal in orde.

Daarnaast: heb je wel
code:
1
make installworld KERNCONF=GENERIC

gedraaid? Zo niet, dan werk je dus met een oude kernel en als je dan make installworld doet dan zit je dus met een oude kernel op een nieuw systeem.

Waar je wel gelijk in hebt, is het mounten van de filesystems na het booten in single user mode. Dat moet met:

mount -w /
mount -w /usr
mount -w /var

Dat zal ik gelijk toevoegen aan mijn tutorial. :)

Graag hoor ik wel even van je of het klopt dat je geen make installkernel hebt gedraaid. Maar ik vrees dat je inderdaad aan een reinstall moet denken, want ik als het klopt dat je nu een oude kernel draait met een half-nieuwe world dan weet ik niet zo gauw hoe je dat moet oplossen. Tenzij je een nieuwe generic kernel voor 6.0-RELEASE van iemand kunt krijgen (en ik draai AMD64).
Ik heb geen pad gebruikt Babe, maar dus gedaan zoals in je tutorial stond exclusief het pad. Ik heb geen idee waarom het is fout gegaan. Ik was zo dichtbij :(

trouwens, in het freebsd handboek stond dat mounten iets anders. zo iets:
code:
1
2
3
4
# fsck -p
# mount -u /
# mount -a -t ufs
# swapon -a
Dus heb het op die manier gemount of is dat misschien de fout die ik gemaakt heb?

[ Voor 10% gewijzigd door madwoody op 15-02-2006 01:05 ]

Specs: Game/LANBak FTP/Gameserver Unix Server Visit http://www.gamesfm.nl

Pagina: 1