Cross-plaform upgrade 8.4 i386 na 10.3 amd64

Miroslav Lachman 000.fbsd at quip.cz
Tue Sep 20 03:27:41 CEST 2016


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


More information about the Users-l mailing list