[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