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
.