Aktualizace FreeBSD 9.1 na 10.1

Jelikož nemusí být aktualizace z FreeBSD 9.1 na 10.1 úplně triviální záležitostí, připravili jsme pro Vás návod, jak bezpečně přejít na aktuální verzi (díky patří uživateli @kijonkad). 

Prvně můžeme doporučit využít služby Snapshot TEĎ, kterou získáte naprostou jistotu, že se můžete vrátit do předchozího stavu VPS, i kdyby se Vám aktualizace nepodařila. Přeci jenom se nejedná o triviální postup, takže může dojít k poničení konfigurace. Za pár korun budete mít tedy určitě méně potu na čele.

Celkový update může zabrat i několik hodin (např. 4 hodiny) v závislosti na výkonu VPS - primárně na počtu procesorů. Nezbývá tedy než začít (Snapshot TEĎ už máte určitě hotový, že?):

  1. Kontrola aktuální verze příkazem uname -a, který vypíše něco jako "FreeBSD freebsd 9.1-RELEASE-p22 FreeBSD 9.1-RELEASE-p22";
  2. Instalace bezpečnostních aktualizací příkazem freebsd-update fetch, která nejspíš vypíše "FreeBSD 9.1-RELEASE-p22 HAS PASSED ITS END-OF-LIFE DATE";
  3. Pokud by se přeci jenom nějaké updaty objevily, stačí je nainstalovat příkazem freebsd-update install;
  4. Zahájení upgradu na novější verzi a merge konfiguračních souborů příkazem freebsd-update upgrade -r 10.1-RELEASE;
  5. Systém se zeptá na "The following components of FreeBSD do not seem to be installed: world/doc. Does this look reasonable (y/n)?" Stačí potvrdit y;
  6. Dále přijde otázka na sloučení konfiguračních souborů "The following file could not be merged automatically: /etc/ssh/ssh_config Press Enter to edit this file in vi and resolve the conflicts
    manually...". Doporučujeme ponechat PermitRootLogin yes, abyste se po restartu dostali přes SSH do konzole. Každopádně i tak můžete využít KVM, takže by nebylo vše ztraceno;
  7. Pokud ještě přijdou nějaké dotazy typu "Does this look reasonable (y/n)?", většinou stačí potvrdit y. Samozřejmě záleží na balíčcích, které máte nainstalované na VPS, doporučujeme tedy každou otázku potvrdit dle svého uvážení;
  8. Nyní přichází tricky-part. Potřebujeme získat portmaster, ale ten se nedaří nainstalovat a ani nejde refresh repozitáře. Můžeme vyzkoušet příkazem pkg upgrade. Pokračujeme tedy příkazy: portsnap fetch, po jeho dokončení portsnap extract a následně cd /usr/ports/ports-mgmt/pkg && make clean install;
  9. Měli bychom se dostat do bodu, kdy nám systém vypíše "pkg-static: PACKAGESITE in pkg.conf is no longer supported.  Convert to the new repository style.  See pkg.conf(5)";
  10. Přesuneme tedy konfiguraci do tmp adresáře příkazem mv /usr/local/etc/pkg.conf /tmp a pokračujeme make clean install. Sice dostaneme upozornění, ale pokračujeme příkazy make deinstall, následně make reinstall a nakonec pkg upgrade. Máme připravenou novou verzi pkg, takže stačí jen nainstalovat pkg install portmaster;
  11. Po instalaci ještě spustíme echo 'WITH_PKGNG=yes' >> /etc/make.conf;
  12. Nyní nás čeká migrace nejnovějšího balíčkového systému, tedy pkg2ng;
  13. Systém v tomto kroku sice upozorní, že bychom měli restartovat, ale to my ještě nechceme, zadáme pouze příkaz freebsd-update install;
  14. Nyní musíme editovat soubor příkazem vi /etc/rc.conf a vyměnit zařízení "re" za "xn". Vznikne tedy místo řádku "ifconfig_re0='inet 193.150.13.253 netmask 255.255.255.0' " upravený řádek "ifconfig_xn0='inet 193.150.13.253 netmask 255.255.255.0' ", samozřejmě s přidělenou IP adresou, která tam původně byla zadána;
  15. Stejně tak musíme ještě upravit příkazem vi /etc/fstab rozdělení oddílů. Z původního "/dev/ad0p2 / ufs rw 1 1" a "/dev/ad0p3 none swap sw 0 0" přepíšeme názvy oddílů na "/dev/ada0p2 / ufs rw 1 1" a "/dev/ada0p3 none swap sw 0 0";
  16. Konečně jsme se dostali k rebootu, takže stačí dát prsty křížem (pro ty, co si neudělali Snapshot TEĎ) a zadat reboot;
  17. Po úspěšném rebootu ještěš doladíme pár věcí. Nejprve spustíme freebsd-update install;
  18. Jelikož se změnilo ABI (Application Binary Interfaces), musíme přeinstalovat balíčky příkazem pkg-static upgrade -f. Na všechny otázky "proceed" stačí potvrdit y;
  19. Pokud používáte bash, přidejte do /etc/fstab položku "fdesc /dev/fd fdescfs rw 0 0". Pokud jste ještě nepoužili bash a chcete používat, tak použijte mount -t fdescfs fdesc /dev/fd;
  20. Čeká nás poslední časově náročná část překomplilování nainstalované port aplikace: portmaster -afG. Všechny předchozí verze se nemusíme bát smazat potvrzením y;
  21. Zbývá naposledy pustit freebsd-update install a konečně restartovat systém do hotové nové verze: reboot.
  22. Případně ještě můžeme po rebootu zkontrolovat aktuální verzi příkazem uname -a.

Návod jsme testovali a vše proběhlo v pořádku.