Vytahnul jsem tenhle 6 let stary e-mail, jen tak pro zajimavost. Dnes jsem tenhle typ upgrade provedl (nejprve ve virtualboxu a pak na produkcnim stroji). V minulosti jsem se tomu vzdycky nejak vyhnul tim upgradem na rozdelenem gmirroru.

info nize

Dan Lukes wrote on 11/25/2010 23:02:
On 11/25/10 22:33, Miroslav Lachman:

Mimochodem, cross-architecture (i386 -> amd64) remote upgrade je
neco, o
cem bych si s nekym rad prumluvil ...

V mem pripade, kde pouzivam gmirror bych mozna rozlozil gmirror

Ano, to by slo - dokonce i bez gmirroru, pokud mas na disku dost
nealokovaneho mista (nebo si pomuzes tim /tmp, jak navrhujes - pokud ho
ovsem mas samostatny).

Ja bych ale zase radeji jednokolovy postup (jeden reboot, plus maximalen
druhy az bude hotovo naprosto vsechno, tj. vcetne reinstalace vsech portu).

Vlastne mam v tehle chvili jediny hlavni problem - a tim je

/libexec/ld-elf.so.1

Mohl bych te poprosit o rozvinuti toho problemu s ld-elf.so.1? Zda se, ze jsem tenhle problem nepotkal.

Ten na zivem systemu nelze aktualizovat a soucasne ho nelze "pres
restart" ponechat neaktualizovany.

Me se ho poradilo prepsat bez problemu a na beh aktualniho systemu to nemelo zadny mnou viditelny vliv.

Az budu mit cas, coz ted nemam, musim nastudovat, jak presne vlastne
system loaduje soubory, a zejmena, kde se bere toto jmeno a cesta. Pak
bych mohl an bezicim systemu udelat kopii tohoto klicoveho souboru,
zmenit systemove nastaveni tak, aby se zacal pouzivat ten - a pak bych
uz mohl puvodni aktualizovat aniz by to melo fatalni nasledky.

Ostatni knihovny a binary bych uz nejak vyresil ...

Muj postup byl nasledujici a obnaselo to dva rebooty, z toho ten druhy byl jen pro jistotu po reinstalaci vsech portu.

1) na buildserveru jsem si "nainstaloval" cisty system do prazdneho adresare a ten zabalil do tar archivu (make installkernel a make installworld bez make distribution)

2) do druheho archivu jsem si zabalil nektere soubory z make distribuition (/etc/rc.d/, /etc/periodic a asi 10 dalsich "dulezitych" - dalo by se urcite vyresit lepe)

3) tar archivy jsem si nahral na upgradovany i386 stroj

4) zaloha 32bit rescue - bude se hodit:
   mv /rescue /resc32

5) povypinat lokalni sluzby

6) Povolit zapis bootsektoru na disk sysctl kern.geom.debugflags=16

7) Rozbalit archivy
   cd / && tar xvf 10.3_release-dist.tgz (nejprve soubory do /etc/)
   tar xvf 10.3_release.tgz

8) Zapsat novy bootcode
   /resc32/gpart bootcode -b /boot/boot mirror/gm0s1

9) Reboot
   /resc32/reboot

Po rebootu system normalne nabehne, hlasi se jako 10.3 amd64

Jen tak pro jistotu jsem v tomhle bode udelal jeste:
make installkernel
make installworld
make delete-old
mergemaster

/usr/src a /usr/obj se mountuje pres NFS z buildserveru, kde jsem vytvarel i ten puvodni tar, takze installkernel a installworld je vazne duplicitni a stacilo by delete-old a mergemaster

A pak zbyva jen provest upgrade vsech portu

Jako prvni /usr/local/sbin/pkg-static install -f pkg


Nejdriv jsem si to cele nasimuloval ve VirtualBoxu, kam jsem si prekopiroval system vcetne baliku z toho produkcniho stroje. A kdyz jsem tam odladil par drobnosti a tvarilo se to funkcne, tak jsem to udelal i na produkcnim stroji - to byl posledni, ktery bezel na i386. :)

Asi uz v dnesni dobe tuhle informaci nikdo nevyuzije, ale chtel jsem si to zkratka vyzkouset a dopadlo to dobre.

Mirek
--
FreeBSD mailing list (users-l@freebsd.cz)
http://www.freebsd.cz/listserv/listinfo/users-l

Odpovedet emailem