[TH] Zmiana architektury i686 -> x86_64 [długie]

Piotr Pawłow pp w siedziba.pl
Sob, 29 Lis 2008, 22:01:17 CET


Witam,
> Ostatnio przenosiłem system z 32 do 64 bit i większość pakietów była
> odinstalowywana  i instalowana z --nodeps --nofollow.

Ponieważ mamy weekend postanowiłem również spróbować przenosin. Mam 2 dyski w 
raidzie, więc wypiąłem jednego z raida, żeby na wszelki wypadek mieć do czego 
wrócić :)

Przyjąłem nieco inną strategię.

Na początek zaktualizowałem wszystkie pakiety do najnowszych wersji. Potem 
dopisałem do /etc/rpm/platform linię "x86_64-.*" (zapewne 
wystarczyłoby "x86_64-pld-linux", ale to nie istotne). Następnie ściągnąłem z 
FTP-a kernel w wersji x86_64 i zainstalowałem.

Tu miałem drobną niespodziankę, bo geninitrd powiedział:

geninitrd: ERROR: RAID devices not found for "/dev/md1", check your 
configuration!

Wrzuciłem komunikat w google i znalazłem poradę, żeby zamienić w 
skrypcie "/sbin/mdadm -v --examine[...]" na "/sbin/mdadm -v --detail[...]", 
co też uczyniłem. Geninitrd zadziałał, zrestartowałem, i uruchomiłem na nowym 
kernelu.

Następnie ściągnąłem z FTP-a i zainstalowałem poniższy zestaw pakietów:

beecrypt-4.1.2-8.x86_64.rpm
bzip2-libs-1.0.5-5.x86_64.rpm
db4.7-4.7.25-4.x86_64.rpm
elfutils-libelf-0.137-1.x86_64.rpm
glibc-2.9-1.x86_64.rpm
keyutils-libs-1.2-2.x86_64.rpm
libmagic-4.26-3.x86_64.rpm
libselinux-2.0.65-2.x86_64.rpm
libxml2-2.7.2-3.x86_64.rpm
ncurses-5.7-2.x86_64.rpm
openssl-0.9.8i-4.x86_64.rpm
ossp-uuid-1.6.2-5.x86_64.rpm
pcre-7.8-2.x86_64.rpm
poldek-0.30-0.20080820.23.8.x86_64.rpm
poldek-libs-0.30-0.20080820.23.8.x86_64.rpm
popt-1.14-1.x86_64.rpm
readline-5.2-2.x86_64.rpm
rpm-lib-4.5-8.x86_64.rpm
zlib-1.2.3-5.x86_64.rpm

Spróbowałem uruchomić poldka, ale nie ruszył, bo brakowało wpisów w ld.so.conf 
dla katalogów */lib64. Dopisałem je i odpaliłem ldconfig. Poldek zadziałał, i 
ściągnął listę pakietów dla x86_64.

Mogłem zapewne zrobić wszystko w jednym kroku, dopisując do "starego" poldka 
źródło pakietów x86_64, ale "ręczna" metoda wydała mi się bezpieczniejsza. 
Nawet jakby coś nie wyszło, to zepsułbym tylko poldka i rpm-a, resztę systemu 
miałbym nadal działającą.

"Nowym" poldkiem zainstalowałem - z pewną nieśmiałością - 64-bitowego basha, i 
jak zobaczyłem że działa, zacząłem myśleć jakby tu hurtowo zainstalować całą 
resztę pakietów w wersjach 64-bitowych.

W tym celu napisałem taki skrypt:
http://pp.siedziba.pl/tmp/install_64bit.pl

Funkcja pset() buduje listę pakietów, które występują w wersji i[3456]86, a 
nie występują w wersji x86_64. Funkcja try_reinstall() próbuje 
wykonać "poldek --reinstall" na liście pakietów, usuwając z listy pakiety 
których poldek nie znalazł i próbując ponownie.

Skrypt najpierw próbuje zainstalować pakiety x86_64 w dokładnie tych samych 
wersjach co x86, a jeśli coś zostanie to próbuje ponownie bez numerów wersji. 
Na koniec wypisuje co pozostało jedynie w 32-bitowej wersji.

W moim przypadku do ręcznego przeinstalowania zostały pakiety Perla (były 
między nimi zależności, z którymi poldek sobie nie poradził), SysVinit 
(którego w repo nie było, więc zamieniłem na upstart-SysVinit), i garść mniej 
istotnych drobiazgów. Po uporządkowaniu perla i SysVinit odpaliłem poldka, i 
usunąłem całą resztę przez "uninstall *.i686".

X-y po restarcie od razu nie wstały. Trzeba było zmienić w /etc/X11/xorg.conf 
ModulePath na:
    ModulePath      "/usr/lib64/xorg/modules"

KDE również nie wstało. Musiałem zmienić wszystkie lib na lib64 
w /etc/qt/qtrc. Pliku /etc/qt/qt_plugins_3.3rc nie modyfikowałem, właściwe 
wpisy pojawiły się w nim automagicznie.

Od paru godzin testuję efekt migracji. Ogólnie jestem zadowolony i wszystko 
działa, poza jednym: VirtualBox zawiesza komputer na twardo przy uruchamianiu 
maszyny wirtualnej. Akurat na tym mi bardzo zależało, żeby móc uruchamiać 
64-bitowe wirtualne maszyny. Mam jednak nadzieję, że jakoś ten problem 
zwalczę.

Pozdrawiam


Więcej informacji o liście dyskusyjnej pld-users-pl