freebsd i rekompilacja

jeden z prostszych problemów do rozwiązania w momencie gdy pracujecie z FreeBSD zainstalowanym kiedyś na za małym dysku, jest rekompilowanie systemu. chodzi oczywiście o przestrzeń dyskową.

w moim przypadku starusieński system który zaczął jeszcze jako i386 w okolicach chyba wersji 6 na dysku 20GB w którymś momencie doszedł do ściany i w okolicach 11 dalej się tak nie dało. w międzyczasie maszyna fizyczna zamieniła się w wirtualną, więc dodanie dysku nie stanowi już problemu.

no dobrze, ale jak przekompilować system?

po pierwsze, trzeba oczywiście zamontować system plików gdzieś - w moim przypadku jest to /home (poniżej /etc/fstab):

/dev/da1p1      /home           ufs     rw      0       0

po drugie, trzeba poszczególnym etapom budowania systemu przekazać, gdzie się proces ma odbywać. robi się to przez zmienną środowiskową. zatem trzy etapy kompilacji - buildworld, kernel i installworld robimy w ten sposób:

env MAKEOBJDIRPREFIX=/home/build make -j4 buildworld
env MAKEOBJDIRPREFIX=/home/build make -j4 kernel KERNCONF=server
env MAKEOBJDIRPREFIX=/home/build make -j4 installworld

oczywiście potem już tradycyjnie dosyć robimy:

mergemaster -FiU

…i:

reload

problem rozwiązany. trzeba tylko pamiętać, żeby wywalić potem zawartość /home/build oraz /usr/obj.